Computer Network

[컴퓨터 네트워크] TCP 연결관리(Connection Management)

JunsuKim 2022. 10. 12.
728x90

1 : 1 소켓 연결

  • 연결 설정 과정(Handshaking) 필요
  • 서버 연결 소켓: 서버 IP 주소와 서버 Port 번호 공유 가능
  • 멀티캐스팅(multicasting) 지원 불가
    • 멀티캐스팅은 UDP에서 지원된다. TCP에서는 불가능하다.

Full-duplex(전이중) 통신

  • 양방향 동시 세그먼트 전송
  • MSS(Maximum Segment Size): 세그먼트의 데이터 필드 최대 크기(보통 1460 바이트이다.)
  • 송신 버퍼에서 MSS 단위로 송신

바이트 스트림(Byte Stream) 전송

  • 송신 프로세스가 소켓의 송신 버퍼에 전달(write)한 바이트 스트림을 수신 소켓의 수신 버퍼에 순서대로 전송한다.
  • 송신 프로세스는 송신 버퍼에 임의의 크기의 바이트열을 쓴다.(write)
  • TCP는 세그먼트 단위(MSS)로 수신 버퍼에 전달한다.
  • 수신 프로세스는 수신 버퍼에서 원하는 크기의 바이트열을 읽는다.(read)

3 - way Handshake

  • 클라이언트와 서버 간에 동기(synchronization)를 맞추는 과정
  • 동기 정보: 소켓 주소, 시작 순서 번호(Initial Sequence Number), 수신 윈도우 크기
    • 시작 순서 번호는 재전송, 오류복구를 위해 필요하다.
    • 시작 순서 번호는 SYN 세그먼트 확인번호를 보낼 때 (SN + 1)로 보내진다.
    • 수신 윈도우는 수신자가 받을 수 있는 크기로, 처음 연결 설정할 때는 버퍼의 크기랑 같다.

  1. Client가 Server에게 SYN 세그먼트를 보낸다.
  2. Server는 SYN 세그먼트를 받았다는 것을 Client에 알린다. 이때 SYN 세그먼트와 ACK 세그먼트를 합쳐 보낸다.
  3. Client에서 보면, 자신이 보낸 세그먼트에 대한 ACK도 왔고 Server로부터 온 SYN 세그먼트를 잘 받았다고 Server에게 알린다.

SYN 세그먼트

  • 연결 설정을 위해 클라이언트 TCP가 서버 TCP에 전송
  • SYN 비트 1 설정
  • 시작 순서 번호(ISN) 설정
  • ACK를 위해 순서번호 1 소비(가상의 1바이트 데이터 전송)

SYN + ACK 세그먼트

  • SYN 세그먼트를 수신한 서버 TCP가 클라이언트 TCP에 전송한다.
  • SYN 비트와 ACK 비트 1 설정
  • 시작 순서 번호(ISN) 설정
  • 확인 번호(ACK) 설정
  • 수신 윈도우 크기 설정
  • ACK를 위해 순서번호 1 소비(가상의 1바이트 데이터 전송)
  • 이후 DATA 세그먼트 전송

ACK 세그먼트

  • SYN + ACK를 수신한 클라이언트 TCP가 서버 TCP에 전송한다.
  • ACK 비트 1 설정
  • 확인 번호(ACK) 설정
  • 수신 윈도우 크기 설정
  • 데이터 포함 가능
  • 데이터 미포함 시에는 순서 번호를 소비하지 않는다.
  • 이후 DATA 세그먼트 전송

TCP 연결해제

4 - way Handshake

3 - way Handshake

  • Full - close: 서버 ACK 세그먼트와 FIN 세그먼트 통합
  • Half - close: 4 - way handshake

FIN 세그먼트

  • ACK를 위해 순서 번호 1 소비

ACK 세그먼트

  • 데이터가 없으면 순서 번호가 소비되지 않는다.

클라이언트 대기시간(Time-Wait)

  • 마지막 ACK 세그먼트 손실 시에 재전송되는 FIN 세그먼트를 처리

클라이언트 / 서버 상태 변화

728x90

댓글