Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
Tags
- DES 알고리즘
- 컴퓨터 네트워크
- 대체 암호화
- 파이썬
- 나동빈
- 백준
- ZOAC 2
- 동적 계획 알고리즘
- 욱제는 효도쟁이야!!
- 한빛미디어
- 사과 담기 게임
- 거스름돈
- 통나무 건너기
- 위치 암호화
- 구현
- Pop
- 5와 6의 차이
- 전자 메일
- Greedy
- 그리디 알고리즘
- 세탁소 사장 동혁
- 2 + 1 세일
- 시저 암호화
- 키워드 암호화
- 문자 변환표
- 소가 길을 건너간 이유3
- JoCoding
- 코딩 테스트
- 비연결형 통신
- 컬럼 암호화
Archives
- Today
- Total
주니어로서의 백 걸음, 개발자로서의 한 걸음
TCP 프로토콜 & 전송계층(UDP) 본문
전송 계층
- 수신지에 신뢰할 수 있는 데이터를 전송하기 위해 필요한 계층
- 전송된 데이터의 수신지가 어떤 애플리케이션인지 식별
💡네트워크 계층에서 IP주소를 통해 수신지까지 도착하면 전송 계층에서는 수신지의 어떤 애플리케이션에 데이터를 전달할지 포트번호를 통해서 식별한다.
전송 계층의 기능
전송 계층은 데이터링크 계층과 유사
- 데이터링크 계층은 물리적으로 1:1 연결된 호스트 사이의 전송
- 전송 계층은 논리적으로 1:1 연결된 호스트 사이의 전송
전송 계층의 주요 기능
- 흐름제어 : 수신 호스트가 슬라이딩 윈도우 프로토콜의 윈도 하단 값을 조정
- 오류제어: 데이터 변형과 분실 : 재전송에 의한 오류 제어 기능에 의해 복구
- 분할과 병합
- 분할: 데이터를 전송하기 전에 적합한 크기로 나누는 과정
- 병합: 수신 프로세스가 수신한 데이터를 원래 크기로 다시 모으는 과정
- 서비스 프리미티브: 전송 계층 사용자가 전송 계층 서비스를 사용하기 위한 인터페이스
전송 계층 설계 시 고려 사항
멀티플렉싱
- 상방향 멀티플렉싱
- 다수의 전송 계층 연결에 대해 하부 네트워크 계층에서 연결이 하나 생성
- 네트워크 계층에서 만들어지는 가상 회선 연결의 개수를 줄일 수 있다.
- 하방향 멀티플렉싱
- 하나의 전송 연결 설정을 의미하는 포트에 다수의 가상 회선을 할당
- 전송 속도를 높이고 데이터의 특성에 따라 개별 가상 회선을 할당하여 효과적 통신
전송 계층의 통신 방식
연결형 통신(TCP)와 비연결형 통신(UDP)
TCP 주요 기능
- 연결형 서비스를 제공
- 전이중 방식의 양방향 가상 회선을 제공
- 신뢰성 있는 데이터 전송을 보장
TCP 헤더 구조
- TCP는 데이터를 세그먼트라는 블록단위로 분할하여 전송
- IP헤더와 유사하게, Options과 Padding은 생략이 가능하다.
TCP 프로토콜의 특징
혼잡제어
ECN기능 : 라우터가 송신 프로세스에 명시적으로 혼잡 발생을 알려주어 송신 프로세스 스스로 트래픽을 완화하는 기술
- ECE : 네트워크 트래픽이 많아질 때, 라우터가 송신 프로세스에게 명시적으로 혼잡을 알리기 위해 사용
- CWR : ECE 비트를 수신한 송신 프로세스가 전송 윈도우 크기를 줄였음을 통지함
캡슐화 : IP헤더에 캡슐화되어 데이터링크 계층으로 전달됨
포트번호
- TCP와 UDP가 상위 계층에 제공하는 주소 표현 방식
- Well-known 포트 : 인터넷에서 많이 사용하는 포트 번호
TCP 프로토콜을 이용한 데이터 전송
TCP 프로토콜 : 전이중 방식의 양방향 통신을 지원
- 전송 데이터와 응답 데이터를 함께 전송하는 피기배킹 기능을 사용
- 데이터 전송시 연결 설정, 데이터 전송, 연결 해제라는 3단계를 순차적으로 진행
연결 설정
- 3단계 설정 Three-Way Handshake 방식
- A 프로세스가 전송 할 데이터가 없을 때 연결하는 방식
- SYN(Synchronize Sequence Numbers)
- 송신자는 수신자에게 SYN 패킷을 보낸다.
- SYN 패킷은 송신자의 초기 시퀀스 번호를 포함한다.
- 송신자는 SYN을 보내고, SYN-SENT 상태로 변경된다.
- SYN-ACK(Synchronize-Acknowledge)
- 수신자는 SYN 패킷을 받으면, 송신자에게 ACK와 SYN을 함께 보낸다.
- ACK는 송신자의 시퀀스 번호에 1을 더한 값으로 초기화된다.
- SYN-ACK 패킷은 수신자의 초기 시퀀스 번호를 포함한다.
- 수신자는 SYN-RECEIVED 상태로 변경된다.
- ACK(Acknowledge)
- 송신자는 SYN-ACK 패킷을 받으면, ACK를 수신자에게 보낸다.
- ACK 패킷은 송신자의 시퀀스 번호에 1을 더한 값으로 초기화된다.
- 송신자는 ESTABLISHED 상태로 변경된다.
연결 설정 단계에서 윈도우 크기를 결정
데이터 전송
- 정상적인 데이터 전송
- 앞의 그림에서 A 프로세스가 전송할 데이터가 있다고 가정하여 데이터 전송을 수행
- 송신자는 데이터를 패킷으로 분할하고, 패킷들에 일련 번호(Sequence Number)를 부여, ACK 번호를 설정
- 송신자는 패킷들에 TCP 헤더 정보와 함께 일련 번호, ACK 번호 등의 정보를 포함하여 전송
- 수신자는 패킷을 수신후, 일련 번호, ACK 번호를 확인
- 수신자는 일련 번호와 ACK 번호를 포함한 정보를 ACK 패킷으로 송신자에게 전송
- 송신자는 ACK 패킷을 받은 후, 다음 패킷 전송(이러한 과정 반복)
- 모든 패킷이 전송되면, 송신자와 수신자 모두 데이터 전송이 완료된 것으로 판단.
데이터 전송 오류
- A 프로세스가 TCP 세그먼트 세 개를 연속으로 전송, 이 중 세 번째 세그먼트에 오류가 발생했다고 가정한 경우
연결 해제
- 연결을 해제하고자 하는 쪽에서 FIN 플래그를 지정해 요구
- 양쪽 프로세스의 동의 하에 진행됨
- 송신자가 연결을 종료하겠다는 FIN 패킷을 전송
- 수신자는 FIN 패킷을 받은 후, ACK 패킷을 송신자에게 전송한다. 이때 수신자는 아직 송신할 데이터가 남아있을 수 있으므로, 연결은 아직 유지된다.
- 수신자가 모든 데이터를 전송다면, 자신도 연결을 종료하겠다는 FIN 패킷을 송신자에게 전송
- 송신자는 FIN 패킷을 받은 후 , ACK 패킷을 수신자에게 전송. 만약 아직 송신자가 보내지 않은 데이터가 있다면, 해당 데이터를 전송.
- 수신자는 송신자의 ACK 패킷을 받은 후, 연결 종료. 이때 수신자는 모든 데이터를 수신한 것을 확인하기 위해 송신자에게 ACK 패킷을 전송.
- 송신자는 수신자의 ACK 패킷을 받은 후, 연결을 완전히 종료한다. 이때 송신자는 모든 데이터가 안전하게 전송되었다는 것을 확인하기 위해 일정 시간동안 대기. 만약 수신자로부터 ACK 패킷을 받지 못한 경우, 송신자는 FIN 패킷을 다시 전송하여 연결을 완전히 종료
TCP 혼잡 제어 방식 : AIMD(Additive Increase / Multiplicative Decrease)
- 패킷을 하나씩 보내고 문제가 없으면 윈도우의 크기를 1씩 증가시키면서 전송
- 전송에 실패하면 윈도우의 크기를 반으로 줄인다.
- 진입 초기에는 대역폭을 충분히 활용하지 못 함
TCP 혼잡 제어 방식 : Slow Start
- AIMD 방식은 제대로 된 속도가 나오기까지 오랜 시간이 걸림
- Slow Start는 윈도우 크기를 1, 2, 4, 8과 같이 지수적으로 증가시키다가, 혼잡이 감지되면 윈도우 크기를 1로 줄이는 방식
- 특정 임계점을 넘어가면 AIMD 방식을 통해 선형적으로 윈도우를 증가시킴
TCP 혼잡 제어 방식
- 빠른 재전송
- 기존의 데이터 전송 오류는 송신 프로세스의 타임아웃 기능에만 의존
- 송신 프로세스가 3번 이상의 중복된 승인 번호를 받으면, 타이머가 만료되기 이전에 즉각적으로 해당 번호에 해당하는 데이터를 전송
- 해당 번호의 데이터를 정상적으로 수신하고나면, 오류제어방식에 따라 어떤 패킷을 보내야 하는지 알림
2. TCP Tahoe
- Slow Start를 사용한 혼잡 제어 정책의 초기 버전
- Slow Start 임계점을 만나면 AIMD방식을 사용
- ACK Duplicated나 Timeout이 발생하면 네트워크에 혼잡이 발생했다고 판단하고, 임계점과 윈도우를 수정
3. TCP Reno
- TCP Tahoe와 유사하게 Slow Start로 시작하여 임계점을 넘어서면 AIMD 방식을 사용
- 단, ACK Duplicated와 Timeout을 구분한다.
- ACK Duplicated의 경우 윈도우를 반으로 줄이고, 임계점을 줄어든 윈도우의 값으로 정한다.
- Timeout의 경우 윈도우를 1로 줄이고, 임계점은 그대로 둔다.
UDP 프로토콜
UDP 헤더 구조
- 프로토콜의 오버헤드가 작은 편임
- Source / Destination Port : 송수신 프로세스에 할당된 네트워크 포트 번호
- Length : 프로토콜 헤더를 포함한 UDP 데이터그램의 전체 크기
- Checksum : 프로토콜 헤더와 데이터에 대한 체크섬 값을 제공
UDP의 데이터그램 전송
- 비연결형 서비스를 이용하여 데이터그램을 전송
- 흐름 제어 기능이 없어 버퍼 오버플로우에 의한 데이터 분실 오류가 발생할 수 있음
- 오류 유형
- 데이터가 목적지에 도착하지 못하는 데이터그램 분실
- 데이터그램의 도착 순서가 바뀌는 도착 순서 변경
- UDP에서의 데이터그램 분실
- 데이터의 순서 번호 기능이 없음
UDP에서의 데이터그램 도착 순서 변경
- 데이터의 순서 번호 기능이 없음
'대학 전공 수업 > 컴퓨터 네트워크' 카테고리의 다른 글
암호화와 네트워크 보안 (1) | 2023.05.20 |
---|---|
BLUETOOTH 개요 & 전자메일 (0) | 2023.05.19 |
IPv6 프로토콜 (0) | 2023.04.30 |