본문 바로가기
  • 개발공부 및 일상적인 내용을 작성하는 블로그 입니다.
이론/네트워크

네트워크 - TCP 3 & 4 way handshake

by 방구석 대학생 2022. 1. 29.

 

* 연결을 성립하고 해제하는 과정을 말한다.

 

3 way handshake - 연결성립

TCP 는 정확한 정보 전송을 보장해야 한다. 따라서 통신하기에 앞서 논리적인 접속을 성립하기 위해 3 way handshake 과정을 진행한다.

 

1. 클라이언트가 서버에서 SYN 패킷을 보냄(sequence : x)

2. 서버가 SYN(x) 를 받고, 클라이언트를 향해 패킷을 받았다는 신호인 ACK 와 SYN 패킷을 보냄(sequence : y, ACK : x + 1)

3. 클라이언트는 서버의 응답으로 ACK(x+1) 와 SYN(y) 패킷을 받고, ACK(y+1) 를 서버로 보냄

 

이렇게 3번의 통신이 완료되면 연결이 성립된다. (3번이라 3 way handshake 인 것)

 

 

4 way handshake - 연결 해제

연결 성립 후, 모든 통신이 끝났다면 연결을 해제해야 한다.

1. 클라이언트는 서버에게 연결을 종료한다는 FIN 플래그를 보낸다.

2. 서버는 FIN 을 받고, 확인했다는 ACK 를 클라이언트 에게 보낸다.

(이때, 모든 데이터를 보내기 위해 CLOSE_WAIT 상태가 된다.)

3. 데이터를 모두 보냈다면, 연결이 종료 되었다는 FIN 플래그를 클라이언트 에게 보낸다.

4. 클라이언트는 FIN 을 받고, 확인했다는 ACK 를 서버에게 보낸다.

(아직 서버로부터 받지 못한 데이터가 있을 수 있으므로 TIME_WAIT 을 통해 기다린다.)

 

* 서버는 ACK 를 받은 이후 소켓을 닫는다.(Closed)

* TIME_WAIT 시간이 끝나면 클라이언트도 닫는다.(Closed)

 

이렇게 4번의 통신이 완료되면 연결이 해제된다.

 

 

참고 : https://gyoogle.dev/blog/

 

👨🏻‍💻 Tech Interview

 

gyoogle.dev

 

'이론 > 네트워크' 카테고리의 다른 글

네트워크 - HTTP & HTTPS  (0) 2022.01.29
네트워크 - 대칭키 & 공개키  (0) 2022.01.29
네트워크 - UDP  (0) 2022.01.29
네트워크 - TCP/IP (흐름제어/혼잡제어)  (0) 2022.01.29
네트워크 - OSI 7계층  (0) 2022.01.29