2013년 11월 27일 수요일

TCP 4 way handshake





네 방향 핸드셰이크란? 

TCP 기반의 통신은 맨 처음 데이터를 송/수신 하기위해 세 방향 핸드셰이크 절차를 수행한다.
송/수신 이전에 세션을 확립하는 절차이다.

네 방향 핸드셰이크는 세션을 종료하기 위해 수행하는 절차이다.



< 3 way handshake >



세 방향 핸드셰이크 과정에서는 SYN/ACK 플래그가 사용되었다. 

SYN = Synchronization
ACK = Acknowledgment




< 4 way handshake >


하지만 네 방향 핸드셰이크 과정에서는 FIN/ACK 플래그를 사용하게 된다. 

FIN = Finish
ACK = Acknowledgment



= = = = = = = = = = = = = = = = = = = =



1.  Client - > Server 연결 종료 요청






클라이언트는 [클라이언트 -> 서버] 방향으로 연결 종료를 위해 
TCP 제어 플래그에 FIN/ACK를 설정한 패킷을 전송 한다.

데이터 전송? = X
데이터 수신? = O

이 상태를 FIN_WAIT-1 상태 라고 한다.



= = = = = = = = = = = = = = = = = = = =



2. Server -> Client 확인 응답 
Server - > Client 연결 종료 요청



< Server -> Client 확인 응답 >





< Server -> Client 연결 종료 요청 >


클라이언트로 부터 연결 요청을 받은 서버는 
확인 응답으로 ACK 플래그를 설정하여 전송을 하게 되고


서버는 클라이언트로 보낼 데이터가 더이상 남아 있지 않으면 
서버->클라이언트 방향의 세션 종료를 요청하는 플래그가 설정된 패킷을 전송한다.

데이터 송신 = X
데이터 수신 = O

이 상태를 FIN_WAIT-2 라고 한다.





4가지 절차를 모두 수행하게 되면 클라이언트는
아직 도착하지 않은 느린 데이터를 위해 일정 시간 동안 
연결 종료를 하지 않고 포트를 개방 한 상태로 남아있게 된다.

이 상태를 TIME_WAIT 이라 한다.







[출처] TCP - 4 way handshake|작성자 육육

댓글 없음:

댓글 쓰기