My Own Style

반응형

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)


와이어샤크예제1

와이어샤크예제2

와이어샤크예제3



반응형

이 글을 공유합시다

facebook twitter googleplus kakaoTalk kakaostory naver band