TCP three-way handshake 란?
TCP 는 Connection-Oriented (연결 지향) 프로토콜 입니다.
이 말은 프로토콜에 의해 연속적으로 패킷의 상태 정보를 확인하고 유지하는 것을 기본으로
한다고 생각할 수 있습니다.
따라서, 장치간의 데이터를 전송하기 전에 "연결"에 관련하여 세션을 수립하는 과정은 중요합니다.
해당 절차는 tcp 의 논리적인 접속을 성립(establish)하기 위해서 필수적인데
해당 스펙에 관해서는
rfc793 (https://www.ietf.org/rfc/rfc793.txt) 문서의 "basic 3-Way Handshake for Connection Synchronization" 과
rfc675 (https://tools.ietf.org/html/rfc675) 문서의 "4.3.2 ESTABLISHING A CONNECTION"에서 확인가능합니다.
간단히 그림으로 살펴보면 다음과 같습니다.
(1) Client 는 Server 에 접속 요청 메시지(SYN)를 전송하고 SYN_SENT 상태가 됩니다.
(2) Server 는 SYN 요청을 받고 Client 에 요청을 수락(SYN+ACK) 하고 SYN_RECEIVED 상태가 됩니다.
(3) client 는 server 에게 수락 확인 (ACK)를 보내고 server 는 ESTABLISHED 상태가 됩니다.
여기에서 소켓 프로그래밍을 생각해 봤을 때,
호출되는 함수와 리턴 상황에 대해 추가적으로 그림에 표시하여 놓았습니다.
참고하시면 좋을 것 같네요.
해당 과정은 양쪽 모두 상대편에 대한 sequence number 를 가지고
데이터를 전송할 준비가 되었으며, 신뢰성있는 연결을 보장하는 과정입니다.
위의 그림에서 알파벳에 해당하는 sequence number 에 대하여 하기에 패킷에 표현하여 놓았습니다.
참고하시어 three-way handshake 와 seq num / ack num 의 관계에 대해 정리해보시는 것도 좋을 것 같습니다.
(client - 192.168.10.4)
(server - 192.168.10.124)
link local address(IPv4 링크로컬주소) 개념 및 사용법 정리 (0) | 2018.12.24 |
---|---|
TCP 4 way handshake 내용 정리 (2) | 2018.12.22 |
DHCP 연결과정 정리 (0) | 2018.12.12 |
유니캐스트(unicast), 브로드캐스트(broadcast), 멀티캐스트(multicast) (0) | 2018.11.18 |
arp 패킷의 원리와 이해 (4) | 2018.11.17 |