본문 바로가기

Software/Network

[TCP/IP] TCP : 신뢰성있는 전송 서비스

제22장


    TCP : 신뢰성있는 전송 서비스

    신뢰성있는 전송 서비스의 필요성

    • 컴퓨터 시스템은 데이터가 손실, 중복되지 않거나 순서가 어긋나지 않도록 보장
    • 인터넷에서 동작하는 소프트웨어도 컴퓨터 시스템과 같은 의미를 제공 - 즉, 소프트웨어는 빠르고 신뢰성있는 통신을 보장

    TCP(Transmission Control Protocol)

    • 신뢰성은 전송 프로토콜의 책임 - 많은 어플리케이션을 위한 기본 기능
    • TCP는 TCP/IP 프로토콜에서 신뢰성을 제공하는 전송 계층 프로토콜

    TCP 제공 서비

    • Connection Orientation : 어플리케이션은 먼저 목적지에 연결을 요구해야 하고 자료 전송을 위해 그 연결을 사용하는 연결 지향 서비스를 제공
    • Point-to-Point Communication : 각 TCP는 정확히 두 종단을 가짐
    • Complete Reliability : 연결을 통하여 전송된 데이터는 데이터 손실이나 순서 바뀜없이 정확한 전달을 보장
    • Full Duplex Communication : 데이터의 양방향 전송을 보장하고 어플리케이션이 언제든 데이터 전송을 허용, TCP는 양방향으로 들어오고 나가는 데이터 버퍼링 가능
    • Stream Interface : 어플리케이션이 연결을 통하여 연속적인 8비트 스트림 전송을 제공
    • Reliable Connection Startup : 두 어플리케이션이 연결을 열 때 새로운 연결에 대한 동의를 요구
    • Graceful Connection Shutdown : TCP는 연결을 닫기 이전에 신뢰성있게 모든 데이터 전달을 보장

End-to-End Service(p.356, 그림22.1)

사용자 삽입 이미지

  • TCP에 의해 제공되는 연결은 소프트웨어로 이루어지므로 가상연결(Virtual Connection) 
  • TCP는 메시지 전달을 위해 IP를 사용
    • 각 TCP는 IP 데이터그램 내에 캡슐화되어 인터넷을 통해 전송
    • 데이터그램이 목적지에 도착했을 때 IP는 TCP에 내용을 전달
    • 여기서, IP는 메시지를 읽거나 해석하지 않음
  • TCP는 연결된 두 종단에서 호스트를 연결하는 패킷 통신으로 IP를 처리하고, IP는 전송된 데이터로써 각 TCP 메시지를 처리
  • 패킷 손실과 재전송

    • TCP의 신뢰성을 보장하는 것을 복잡하고 어려운 문제
    • 가장 중요한 기법은 재전송으로 이를 이용하여 패킷 손실을 보정
    • 자료를 전송할 때마다 TCP는 타이머를 시작하여 일정 시간이 지나도록 받았다는 확인이 없으면 재전송(p.358, 그림22.2)

사용자 삽입 이미지

    • 적응적 재전송(Adaptive Retransmission)  
      • 응답을 받는 시간을 측정하여 연결의 왕복지연시간 결정
      • TCP는 이것의 분산을 예측하여 재전송을 위한 값으로써 예측된 평균과 분산의 선형 조합을 사용하여 재전송 시간 지연에 반영
    • 재전송 시간의 비교(p.360, 그림22.3)
      • 다른 왕복 지연을 갖는 두 연결에서 패킷 손실의 경우를 고려
      • TCP는 평균 왕복 지연보다 약간 큰 값을 재전송 시간으로 설정
      • 지연이 큰 경우 작은 재전송 시간을 사용하고 작으면 작은 재전송 시간을 사용

사용자 삽입 이미지

Buffers, Flow Control, and Windows

  • TCP는 데이터의 흐름 제어를 위해 Window 메커니즘을 사용
  • 연결 설립시 : 연결의 각 종단은 들어오는 자료를 저장하는 버퍼를 할당하고 그 크기를 상대방에게 전송
  • 데이터 도착시 : 수신자는 받았다는 확인을 전송하는데, 이 확인에는 남아있는 버퍼의 크기를 설명
  • 수신자는 각 확인과 함께 Window Advertisement를 전송
    : 어떤 시점의 사용가능한 버퍼의 크기를 Window라 하고 그 크기를 설명하는 지시를 Window Advertisement
    예) p.361, 그림22.4

사용자 삽입 이미지

3-Way Handshake

  • 신뢰성있는 연결의 설립과 종료를 보장하기 위하여 TCP는 3개의 메시지가 교환되는 3-Way Handshake를 이용(p.362, 그림22.5)
    • 동기화 세그먼트(SYN segment) : 연결을 설정하는데 사용하는 3-Way Handshake의 메시지를 설명
    • 종료 세그먼트(FIN segment) : 연결을 종료하는데 사용하는 3-Way Handshake의 메시지를 설명
    • Acknowledgement(ACK) : 각 방향에서 전송된 ACK는 연결이 종료하기 전에 모든 데이터가 도착했다는 것을 보장

사용자 삽입 이미지


 

  • 3-Way Handshake에서는 양측이 SYN이나 FIN에 대한 각 ACK를 보내기 전에는 연결을 새로 열거나 닫지 않음
  • 양 종단에 연결을 설정하기 위해 TCP는 임의의 32비트 연속 수 생성을 요청

Congestion Control

  • 최근, 패킷 손실은 하드웨어 오류보다 혼잡으로 인해 더 많이 발생
  • 메시지 재전송이 혼잡을 더 악화시키므로 패킷 손실로써 혼잡을 평가하고 재전송되는 데이터의 비율을 감소
  • 메시지 손실 때마다 TCP는 혼잡 제어를 시작
    • TCP는 데이터를 포함하는 하나의 메시지를 전송함으로써 시작
    • 부가적인 손실없이 ACK가 도착하면 데이터를 두 배로 하여 전송
    • 역시 부가적인 손실없이 ACK가 도착하면 데이터를 또 두 배로 하여 전송함으로써 계속 반복
    • 수신자의 Window Advertisement의 절반이 될 때까지 지수적으로 증가하고 그 이후에는 감소
  • TCP의 혼잡 제어 방안은 인터넷에서 증가하는 통신량에 만족스럽게 반응
    • TCP 혼잡 제어 방안은 혼잡한 인터넷에 재전송을 부가하는 것을 방지

TCP Segment Format(p.364, 그림22.6)

사용자 삽입 이미지

  • TCP는 모든 메시지에 대해 하나의 형식을 사용
    :메시지를 Segment라는 용어로 사용
    • 데이터를 운반하는 메시지
    • Acknowledgement
    • 연결을 생성하거나 종료하는데 사용하는 3-way Handshake 부분의 메시지
  • Acknowledgement Number : 수신된 데이터의 순서 번호
  • Window : 더 많은 데이터를 위한 사용가능한 버퍼 공간의 크기
  • Sequence Number : 보내는 자료를 위한 참조로 세그먼트 내에 전달되는 데이터의 순서 번호
  • Destination Port : 수신측 컴퓨터의 어플리케이션이 데이터를 받는 것을 식별
  • Source Port : 송신측 컴퓨터의 어플리케이션이 데이터를 전송하는 것을 식별
  • Checksum : TCP 세그먼트 헤더와 데이터에 적용되는 checksum을 포함