October 13, 2020
참고도서: 컴퓨터 네트워킹 : 하향식 접근. 7판. James F. Kurose , Keith W.Ross 지음
연결지향형(Connection-oriented) 서비스이다.전이중(full-duplex) 서비스라고 하기도 한다.점대점(point-to-point) 연결이다.TCP 연결은 3-way handshake 로 이루어진다.
TCP의 전송 버퍼(send buffer)에 전송할 데이터를 저장하게 되는데, 프로세스가 직접 데이터를 버퍼에 넣는 것이 아니라 소켓을 거쳐서 저장한다.Maximum Segment Size(MSS) 라고 하는데, 이 최대 크기는 TCP 세그먼트의 전체 크기를 의미하는 것이 아니라 payload의 크기를 의미한다.ARQ(Automatic Repeat Request)를 지원하기 때문에 패킷이 항상 순서에 맞추어서 도착하고 Byte Stream을 통해 바이트 단위로 전달되므로 메세지에 국한되지 않고(No message boundaries) 비교적 자유롭게 데이터를 송신한다.TCP 세그먼트의 헤더에 포함되는 값들은 다음과 같은 목적을 가진다.
출발지 포트번호, 목적지 포트번호 : 상위 계층 어플리케이션으로부터 다중화와 역다중화를 수행하기 위해 사용된다.순서번호(Sequence number), 확인응답번호(Acknowledge number) : ARQ를 사용하기 위해 사용된다.수신 윈도우(Recieve window) : Flow Control에 사용된다. 수신자가 받으려는 바이트의 크기를 나타내는데 사용된다.헤더길이(Header length) : TCP 헤더의 길이를 나타내기 위해 사용된다.옵션(Option) : 기타 다른 기능들을 지원하기 위해 사용된다.패딩(Padding) : 일반적으로 헤더 길이가 4의 배수가 되어야 하는데, 옵션과 같은 가변적인 요소들 때문에 4의 배수가 안된다면, padding 에 쓰레기 값들을 넣어서 길이를 4의 배수로 맞춘다.플래그(Flag) : 6개의 상태를 나타내기 위해 사용된다.URG: 이 비트가 1이 되면, 해당 세그먼트는 상위 계층에 의해 ‘긴급’ 으로 설정된 세그먼트라는 것을 의미한다.ACK : 이 비트가 1이 되면, 해당 세그먼트의 확인 응답 팔드의 값이 유효하다는 것을 의미한다.PSH : 이 비트가 1이 되면, 해당 세그먼트는 목적지에 도착하자마자 곧바로 상위 계층에 전달해야하는 세그먼트라는 것을 의미한다.RST, SYN, FIN : 이 비트emfdms 연셜을 설정하고 해제하기 위해 사용된다.긴급 데이터 포인터(Urgent data pointer) : URG 포인터에 의해 지정된 긴급 데이터의 마지막 바이트 위치를 가르킨다.