TCP의 연결 설정 과정을 이해한다.

Goal

  • TCP(Transmission Control Protocol)의 개념을 이해한다.
  • TCP의 특징을 이해한다.
  • TCP의 3-way handshaking를 이해한다.
  • TCP의 4-way handshaking를 이해한다.

TCP(Transmission Control Protocol)란

TCP란

TCP는 네트워크 계층 중 전송 계층에서 사용하는 프로토콜 로서, 장치들 사이에 논리적인 접속을 성립(establish)하기 위하여 연결을 설정하여 신뢰성을 보장하는 연결형 서비스 이다.

TCP의 특징

TCP의 연결 설정 및 해제 과정

3-way handshake 란

TCP 통신을 이용하여 데이터를 전송하기 위해 네트워크 연결을 설정(Connection Establish) 하는 과정

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

4-way handshake 란

TCP의 연결을 해제(Connection Termination) 하는 과정

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

참고 포트(PORT) 상태 정보

참고 TCP Header 안의 플래그 정보

References