3. TCP

기본적으로 TCP는 SYN_SENT, ESTABLISHED, FIN_WAIT_1, FIN_WAIT_2, TIME_WAIT 의 상태를 갖는다.

포트는 16비트로 하나의 NIC에서 최대 65,535개의 소켓을 수용할 수 있다.

3.1. TCP 재전송

  • 기본적으로 특정 세그먼트를 송신한뒤 타이머를 두어 시간안에 ACK가 오기를 기다리는 방식
  • 3연속으로 같은 ACK를 받게된다면 해당 ACK번호의 SEQ를 갖는 세그먼트를 보내는 방식 (fast retransmits)

3.2. TCP 종료

  1. 서버(한쪽)에서 FIN을 세팅하여 세그먼트를 전송한다. (서버는 FIN_WAIT_1 상태)
  2. 클라이언트는 확인응답(ACK)을 보낸다. (서버는 FIN_WAIT_2 상태)
  3. 클라이언트는 FIN을 세팅하여 전송한다.
  4. 서버는 응답을 보낸다. (그리고 서버는 TIME_WAIT 상태)
  5. 양쪽 자원이 해제된다.