본문으로 바로가기

[K.Knock]TCP연결(3way)/해제(4way)

category Study/network 2017. 5. 25. 08:50

TCP는 연결형 서비스를 지원한다.


여기서 연결형 서비스란 통신 이전에 연결을 성립하는것이다. 

그렇다면 TCP는 어떻게 연결을 성립할까?


SYN은 'SYNchronize sequence numbers(동기화)'의 약자이고

ACK는 'ACKnowledgment(승인)'의 약자이다.



3way handshaking(연결)


1. SYN

클라이언트는 서버에 접속을 요청하는 SYN 패킷을 보낸다. 이 때 클라이언트는 SYN을 보내고 SYN/ACK응답을 기다리는 SYN_SENT상태가 된다.


2. SYN+ACK

서버는 SYN요청을 받고 클라이언트에게 요청을 수락한다는 ACK와 SYN flag가 설정된 패킷을 발송하고 클라이언트가 ACK로 다시 서버로 응답하기를 기다린다. 이때 서버는 SYN_RECEIVED상태가 된다.


3. ACK

클라이언트는 서버에게 ACK를 보내고 이루부터는 연결이 이루어진다. 이때 서버의 상태는 ESTABLISHED이다.



4way handshaking(종료)


1. FIN

 클라이언트가 연결을 종료하겠다는 FIN플래그를 전송한다.

2. ACK

 서버는 확인메시지를 보내고 통신이 끝날 때까지 기다리는데 이 상태가 TIME_WAIT

3. FIN

 서버가 통신이 끝났으면 연결이 종료되었다고 클라이언트에게 FIN플래그를 전송한다.

4. ACK

 클라이언트는 확인했다는 메시지를 보낸다.


여기서 2.ACK가 먼저 클라이언트에게 도착해야하고 3.FIN가 그 다음에 도착해야하나 패킷유실이나 지연으로 인해 3.FIN이 먼저도착하는 현상을 대비하여 클라이언트가 FIN을 수신하더라도 일정시간(DEFAULT=240s)동안 세션을 남겨놓고 잉여패킷을 기다리는 "TIME_WAIT"과정을 거치게 된다.


'Study > network' 카테고리의 다른 글

[K.Knock]패킷이란?  (0) 2017.05.30
[K.Knock]와이어샤크 사용법  (0) 2017.05.25
[K.Knock]TCP&UDP  (0) 2017.05.25
ARP attack  (0) 2017.05.24
[K.Knock]사설/공용 네트워크  (0) 2017.05.23