Network
[네트워크] TCP의 연결과 종료 : 3-way-handshake & 4-way-handshake
cherishee
2020. 9. 8. 12:50
3-way-handshake
3-Way-Handshake는 TCP 장치들 사이에 논리적인 접속을 정립하기 위해 사용한다.즉, TCP/IP 프로토콜을 이용하여 통신을 할 때, 정확한 전송을 보장하기 위해 대상이 되는 컴퓨터와 사전에 세션을 수립하는 과정을 말한다.
- SYN (Synchronize sequence number) : 연결을 요청하고 세션을 성립하는데 이용
- ACK(Acknowledgement) : 요청을 했다는 메세지로, 받은 시퀀스 번호에 TCP 계층의 길이 또는 양을 더한 값을 ACK 담에 전송
- 클라이언트는 서버에 접속을 요청하는 SYN(a) 패킷을 보낸다.
- 서버는 클라이언트 요청인 SYN(a) 패킷을 받고, 요청을 수락한다고 확인 메시지인 ACK(a+1)와 SYN(b) 패킷을 보낸다.
- 클라이언트는 서버의 응답인 ACK(a+1)와 SYN(b) 패킷을 받고, 확인 메시지인 ACK(b+1)를 보내면 연결이 성립(established)된다.
4-way-handshake
4-Way-Handshake는 통신의 종료를 위한 과정으로 TCP 간 세션을 종료하기 위한 방식이다.
- FIN : 세션의 종료를 알리며 더이상 데이터가 없다는 것을 말한다.
- 클라이언트가 서버에게 연결을 종료하겠다는 FIN 플래그를 보낸다.
- 서버는 클라이언트의 요청(FIN)을 받고, 확인 메시지인 ACK를 보낸다. 그 후 데이터를 전부 전송할 때까지 잠깐 TIME_OUT이 된다.
- 서버는 데이터를 전부 전송한 후, 클라이언트에게 연결이 종료되었다는 FIN 플래그를 보낸다.
- 클라이언트는 서버로부터 FIN을 받고, 확인 메시지인 ACK를 보낸다.
- 서버는 클라이언트로부터 ACK를 받은 후, 소켓을 종료(closed)한다.
- 클라이언트는 아직 서버로부터 못 받은 데이터가 있을 것을 대비하여 일정시간동안 세션을 남긴다(TIME_WAIT).