계발자 블로그

[네트워크] 3-way handshake, 4-way handshake 본문

Computer Science/네트워크

[네트워크] 3-way handshake, 4-way handshake

더구더구 2022. 9. 22. 23:35

3-way handshake

TCP 통신을 이용하여 데이터를 전송하기 위해 네트워크 연결을 설정 하는 과정입니다.

TCP/IP 프로토콜을 이용하여 통신을 하는 응용 프로그램이 데이터를 전송하기 전에

먼저 정확한 전송을 보장하기 위해 상대방 컴퓨터와 사전에 세션을 수립하는 과정을 의미합니다.

 

3-way handshake 과정

  1. Client -> Server: SYN
    • Client가 연결 요청 메시지 전송(SYN)한다.
    • Client가 최초로 데이터를 전송할 때 Sequence Number를 임의의 랜덤 숫자로 지정하고, SYN 플래그 비트를 1로 설정한 세그먼트를 전송한다.
  2. Server -> Client: SYN + ACK
    • 접속 요청을 받은 Server가 요청을 수락했으며, Client도 포트를 열어달라는 메시지를 전송(SYN + ACK)한다.
    • Server는 Acknowledgement Number 필드를 Sequence Number + 1로 지정하고, SYN과 ACK 플래그 비트를 1로 설정한 세그먼트를 전송한다.
  3. Client -> Server: ACK
    • 마지막으로 Client가 수락 확인(ACK)을 보내 연결을 맺는다.
    • 이때, 전송할 데이터가 있으면 이 단계에서 데이터를 전송할 수 있다.

 

4-way handshake

TCP의 연결을 해제하는 과정

 

4-way handshake 과정

  1. Client -> Server: FIN
    • Client가 연결을 종료하겠다는 FIN 플래그를 전송한다.
    • Server가 FIN 플래그로 응답하기 전까지 연결을 계속 유지한다.
  2. Server -> Client: ACK
    • Server는 일단 확인 메시지를 보내고 자신의 통신이 끝날 때까지 기다린다. 이 상태가 TIME_WAIT 상태다.
    • Server는 Acknowledgement Number 필드를 Sequence Number + 1로 지정하고, ACK 플래그 비트를 1로 설정한 세그먼트를 전송한다.
    • 자신이 전송할 데이터가 남아있다면 이어서 계속 전송한다.
  3. Server -> Client: FIN
    • Server가 통신이 끝났다면 연결 종료 요청에 합의한다는 의미로 Client에게 FIN 플래그를 전송한다.
  4. Client -> Server: ACK
    • Client는 확인했다는 메시지(ACK)를 전송한다.

'Computer Science > 네트워크' 카테고리의 다른 글

[네트워크] 쿠키와 세션  (0) 2022.09.27
[네트워크] HTTP와 HTTPS  (0) 2022.09.25
[네트워크] TCP, UDP  (0) 2022.09.22
[네트워크] OSI 7계층  (0) 2022.09.21