7장. TCP와 UDP
1. 신뢰성 있는 통신 TCP TCP : End-to-End 간의 신뢰성 있는 데이터 통신을 보장.
1.1 신뢰성 있는 통신을 위한 TCP 계층 4 트랜스포트 계층 프로토콜 End-to-End 송수신 프로그램 간의 통신 연결지향형의 신뢰성 있는 데이터 송수신을 보장 연결제어, 오류제어, 시퀀스제어, 흐름제어 수행 TCP는 패킷을 전송하기 위해 하위 IP를 이용
TCP와 UDP의 공통점 : End-to-End 통신 프로토콜 주요 기능 신뢰성 있는 전송 예) Ftp같이 신뢰성 있는 통신이 요구되는 경우 신뢰성이 보장되지 않음 예) 인터넷폰, 화상회의와 같은 실시간 통신이 요구되는 경우 상세 기능 연결제어, 오류제어, 흐름제어, 시퀀스제어를 함 (신뢰성) 연결제어, 오류제어, 흐름제어, 시퀀스 제어를 하지 않음. (비신뢰성) 연결 연결 지향적 (CO) (연결설정 → 데이터송수신 → 연결해제) 비연결 지향적 (CL) (연결설정 없이, 상대편 주소를 실어 전달) 공통점 TCP와 UDP의 공통점 : End-to-End 통신 프로토콜
1.3 TCP 제공의 서비스 연결 지향성 완전 신뢰성 점대점 통신 전이중 통신 스트림 인터페이스 신뢰성 있는 연결시작 완전한 연결 종료
1.4 호스트와 라우터 프로토콜 하위 IP가 Source로부터 Destination까지의 전달을 지원 ◑ TCP: 신뢰성 있는 연결지향형의 End-to-End 통신 프로토콜 하위 IP가 Source로부터 Destination까지의 전달을 지원 ◑ 질문: 라우터에 TCP 프로토콜이 필요하지 않는 이유는?
1.5 TCP 세그먼트 형식 ◑ CODE BITS(6비트): URG(긴급 데이터), ACK(ACK NUMBER), PSH(Push Data), RST(연결리셋), SYN(연결설정), FIN(연결해제)
1.6 UDP 세그먼트 형식 참고) TCP의 연결설정 및 해제 작업은 오버헤드가 큰 작업이나 한 번의 연결을 통해 많은 양의 통신이 유지되는 경우에는 TCP의 오버헤드는 별로 문제 되지 않는다.
1.7 Port 란? 구현측면에서 보면 응용 프로그램의 입출력 메세지 큐 ◑ IP 주소는 네트워크 상의 해당 컴퓨터를 지칭하고, Port 주소는 컴퓨터 내의 특정 응용 프로그램(프로세스)을 지칭.
1.8 TCP 프로토콜: 연결설정 오류제어방식, 윈도우 크기 등의 통신환경 설정을 위한 서비스 ◑ 연결 설정 : 3-Way Handshaking 방식 ☞ Animation 20_1 ◑ 질문: 3-Way Handshaking의 연결설정을 하는 이유는? 오류제어방식, 윈도우 크기 등의 통신환경 설정을 위한 서비스 Negotiation을 위해 TCP 헤더의 option 필드에 이를 실어 조정함.
1.9 TCP 프로토콜: 연결해제 ☞ Animation 20_2 양방향의 신뢰성 있는 통신을 보장하기 위해; 우아한 종료 ◑ 연결해제: 3-Way 혹은 4-Way Handshaking 방식 ☞ Animation 20_2 ◑ 질문: 연결해제 시 양방향 연결해제를 하는 이유는? 양방향의 신뢰성 있는 통신을 보장하기 위해; 우아한 종료
1.10 TCP 프로토콜: 오류제어 패킷 전송을 보증하기 위해 TCP는 ACK와 재전송 기법을 사용. 재전송 : 동일한 세그먼트를 다시 전송하는 동작 오류제어 : Selective-repeat 방식, Adaptive Timer 이용 12
■ 오류제어 방식 비교
1.11 TCP 프로토콜: 흐름제어 크기를 알리고, 송신자는 윈도우 크기 내의 데이터를 전송함.
1.13 정체제어(congestion control) 1.12 TCP 프로토콜: 시퀀스제어 ◑ 각 패킷에 일련번호를 사용하여 순서대로 조합, 중복 및 소실 검사 1.13 정체제어(congestion control) ◑ 정체: 데이터의 폭주로 과도한 전송지연이 발생하는 상황 ◑ 메시지가 손실될 때마다, TCP는 정체제어를 시작함. ◑ 정체제어: 정체가 발생하면 전송량을 급속히 감소시킨 후 천천히 늘려감. 만약 응낙이 손실 없이 도착하면 TCP는 앞서 보냈던 데이터의 두 배로 증가하여 전송함. TCP는 수신자 수신창의 절반을 전송할 때까지 지수적 증가를 계속하다 그 후에는 증가율을 감소시킨다. (Slow Start 기법)
1.14 TCP 프로토콜의 구현: 슬라이딩 윈도우 프로토콜 ◑ 메시지 큐(=Port): TX/RX 큐가 짝을 이룸. Circular Queue 구조를 가짐. ◑ 윈도우: ACK를 받지 않은 상태 에서 동시에 전송가능한 패킷 그룹 ◑ ACK 수신시 윈도우는 이동하 게 되고, 우측 경계는 ACK를 받은 패킷들, 왼쪽 경계는 전송 해야할 패킷임. ◑ 우측 경계 ACK 받은 패킷 버퍼 에는 상위 응용계층의 전송 패 킷들로 채워짐. ◑ 슬라이딩 윈도우 프로토콜: 기본동작, 오류제어, 흐름제어 숙지 ! ☞ 기본동작: Animation 20_3, 흐름제어: Animation 20_4, 오류제어 및 시퀀스제어: Animation 20_5