CS 공부 - 네트워크

3way 핸드쉐이크/4way 핸드쉐이크

Nuri-KSLV-II 2023. 3. 1. 19:40

📌 TCP 3-way Handshake

  • TCP는 장치들 사이에 논리적인 접속을 성립(establish)하기 위해 3-way Handshake를 사용한다.
  • 3-way Handshake란?
    • TCP 통신을 이용하여 데이터를 전송하기 위해 네트워크 연결을 설정하는 과정이다.
    • 클라이언트, 서버 모두 데이터를 전송할 준비가 되었다는 것을 보장하고, 실제로 데이터 전달이 시작되기전에 한 쪽이, 다른 쪽이 준비되었다는 것을 알 수 있도록 한다.
    • 즉, TCP/IP프로토콜을 이용해서 통신을 하는 응용프로그램이 데이터를 전송하기 전에 먼저 정확한 전송을 보장하기 위해 상대방 컴퓨터와 사전에 세션을 수립하는 과정

 

3way handshake

 

1. A(Client) → B(Server): SYN

  • 프로세스 A가 연결 요청 메시지(SYN, 'synchronize sequence numbers') 전송
  • 프로세스 A가 최초로 데이터를 전송할 때 Sequence Number를 임의의 랜덤 숫자로 지정하고, SYN 플래그 비트를 1로 설정한 세그먼트를 전송한다.
  • 상태: A(CLOSED), B(LISTEN)

 

2. B(Server) → A(Client): SYN + ACK

  • 접속 요청을 받은 프로세스 B가 요청을 수락했으며, 접속 요청 프로세스인 A도 포트를 열어 달라는 메시지 전송 (SYN + ACK)
  • 프로세스 B는 Acknowledgement Number 필드를 (Sequence Number + 1)로 지정하고, SYN과 ACK 플래그 비트를 1로 설정한 세그먼트를 전송한다.
  • 상태: A(SYN_SENT), B: (SYN_RECEIVED)

 

3. A(Client) → B(Server): ACK

  • 마지막으로 접속 요청 프로세스 A가 수락 확인을 보내 연결을 맺음 (ACK)
  • 이때부터 전송할 데이터가 있으면 데이터를 전송할 수 있다.
  • 상태: A(ESTABLISHED), B(ESTABLISHED)

 

 

📌 TCP 4-way Handshake

  • 3-way HandShake는 TCP의 연결을 설정하기위해 사용했다면, 4-way HandShake는 연결을 종료하기 위해 수행되는 절차이다.

4way handshake

 

1. A(Client) → B(Server): FIN

  • 프로세스 A가 연결을 종료하겠다는 FIN 플래그 전송
  • 프로세스 B가 FIN 플래그로 응답하기 전까지 연결을 계속 유지
  • 상태: A(ESTABLISHED), B(ESTABLISHED)

 

2. B(Server) → A(Client): ACK

  • 프로세스 B는 일단 확인 메시지(ACK)를 보내고 자신이 통신이 끝날 때 까지 기다린다.
  • 프로세스 B는 Acknowledgement Number 필드를 (Sequence Number + 1)로 지정하고, ACK 플래그 비트를 1로 설정한 세그먼트를 전송한다.
  • 상태: A(FIN_WAIT), B(CLOSED_WAIT)

 

3. B(Server) → A(Client): FIN

  • 프로세스 B가 통신이 끝났으면 연결 종료 요청에 합의한다는 의미로 프로세스 A에게 FIN 플래그를 전송한다.
  • 상태: A(TIME_WAIT), B(CLOSED_WAIT)

 

4. A(Client) → B(Server): ACK

  • 프로세스 A는 확인했다는 메시지를 전송
  • 상태: A(CLOSED), B(CLOSED)

 

🚨 Q. 만약 Server에서 FIN을 전송하기 전에 전송한 패킷이 Routing 지연이나 패킷 유실로 인한 재전송 등으로 인해 FIN패킷보다 늦게 도착하는 상황이 발생한다면?

 

A. Client에서 세션을 종료시킨 후 뒤늦게 도착하는 패킷이 있다면 이 패킷은 Drop되고 데이터는 유실될 것이다.

이러한 현상에 대비하여 Client는 Server로부터 FIN을 수신하더라도 일정시간(디폴트 240초) 동안 세션을 남겨놓고 잉여 패킷을 기다리는 과정을 거치게 되는데 이 과정을 "TIME_WAIT" 라고함

 

 

참고

https://mindnet.tistory.com/entry/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EC%89%BD%EA%B2%8C-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0-22%ED%8E%B8-TCP-3-WayHandshake-4-WayHandshake

 

[ 네트워크 쉽게 이해하기 22편 ] TCP 3 Way-Handshake & 4 Way-Handshake

우선 TCP의 3-way Handshaking 에 대하여 알아보겠습니다. * TCP 3-way Handshake 란? TCP는 장치들 사이에 논리적인 접속을 성립(establish)하기 위하여 three-way handshake를 사용한다. TCP 3 Way Handshake는 TCP/IP프로토

mindnet.tistory.com

https://water-orangutan-97f.notion.site/9c9fe80d042b4ab4899fe0d60951879d

'CS 공부 - 네트워크' 카테고리의 다른 글

WS vs WAS  (0) 2023.02.23
[Network]블로킹, 논블로킹, 동기, 비동기  (0) 2023.02.02