개발/network

[TCP] TCP 세션 연결/해제 과정(TCP 3/4-way handshaking)

smile-haha 2022. 12. 22. 01:25
반응형

🎈TCP 3-way handshaking

TCP/IP프로토콜을 이용해서 통신을 하는 응용프로그램이 데이터를 전송하기 전에 먼저 정확한 전송을 보장하기 위해 상대방 컴퓨터와 사전에 세션을 수립하는 과정. TCP의 연결을 초기화 할 때 사용.

 

 ① client에서 웹서버로 연결을 최초시도시 먼저 SYN 패킷을 보낸다

 ② SYN 패킷을 보낸 클라이언트는 SYN-SENT 상태가 된다

 ④ server에서 CLOSED는 port가 닫혀잇는 상태를 뜻하고, 포트가 서비스 가능한 상태인 LISTEN 상태로 만들어 주어야 한다

 ⑤ LISTEN상태에서 클라이언트로부터 SYN 패킷을 받으면 이에 대한 응답으로 SYN+ACK 패킷을 클라이언트로 보낸다

 ⑥ server로부터 SYN+ACK 패킷을 받으면, 클라이언트는 ESTABLISHED상태로 변하게 되면서 연결을 확인한다

 ⑦ 클라이언트는 server에 대한 응답으로 ACK 패킷을 보낸다

 ⑧ server는 이 ACK 패킷을 받고 해당 클라이언트 IP에 대한 포트 ESTABLISHED상태로 전환

 ⑨ 이로써 server와 클라이언트의 TCP 3 way handshaking 과정을 마치게 된다

 

🎈TCP 4-way handshaking

세션을 종료하기 위해 수행되는 절차

① 클라이언트에서 서버와의 연결 종료를 위해 서버에 FIN 패킷을 보내고 FIN_WAIT1 상태가 된다

(반대로 서버에서 먼저 끊을 수 도 있습니다.)

② 서버는 클라이언트로부터 FIN을 받고 응답 패킷 ACK을 보냅니다. 상태는 CLOSE_WAIT가 된다

③ 서버가 통신이 끝나면, 즉 연결을 종료할 준비가 되면 클라이언트에게 FIN패킷을 보내고 LAST_WAIT 상태가 된다

④ 클라이언트는 확인 패킷 ACK을 보내고 TIME_WAIT 상태가 된다

반응형

'개발 > network' 카테고리의 다른 글

[netstat] 네트워크 상태 확인 (window 10)  (2) 2022.12.22
[telnet] window 10 텔넷 이용하기  (0) 2022.12.22
[telnet] 방화벽 port 해제 확인  (0) 2022.12.21