ecsimsw

Transport layer_TCP 본문

Transport layer_TCP

JinHwan Kim 2019. 8. 5. 11:32

   Transmission Control Protocol

 

   - point to point 

   - rdt

   - in-ordder byte stream

   - pipelined

   - buffer

   - duplex

   - connection oriented

   - flow control

 

   Tcp segment

tcp 세그먼트 구조

   sequence number : 전송하는 message 단위의 가장 앞 byte의 순서번호를 저장. 세그먼트에 있는 첫 번째 바이트의 바이트 스트림 번호.

 

   acknowledgment : cumulative ack, 호스트가 상대편에 기대하는 다음 순서 번호. 현재까지 정상적으로 수신된 세그먼트와 기대하는 다음번 세그먼트를 알 수 있다. 순서가 틀린 세그먼트를 수신한 경우, 버퍼를 이용하여 저장해둘지, 버릴지는 규정되어 있지 않다.

 

   Reliable data transfer

그림1

   TCP는 rdt 서비스를 제공한다. 그림1에서 데이터가 문제 없이 전송될 때 ACK와 Seq가 어떤식으로 저장되어 송수신 되는 가를 볼 수 있다.

 

그림2

     그림2의 왼쪽에서는 응답이 loss 되어도, time out에 의해 seq(92)가 재전송 되어 문제가 없다. 오른쪽에서는 RTT보다 time out이 짧아서 재전송되는 상황에서 ACK(92)를 전송해도 seq로 중복을 구별 가능하여 중복을 처리할 수 있고, ACK는 이것에 영향을 받지 않고 다음 기대하고 있는 seq인 ACK(120)으로 응답하고 있음을 볼 수 있다.

 

** 송신되고 확인 응답이 안된 바이트의 순서번호와 전송될 다음 바이트의 순서 번호를 기억해야하는 것은 GBN 프로토콜과, 순서가 틀린 세그먼트에 한해서 선택적으로 확인 응답이 가능하다는 점은 SR 프로토콜과 유사하다.

 

   Fast retransmit

 

   time out triggered 방식은 time out의 주기가 너무 길어질 때 많은 지연을 야기한다. 연속된 ack의 중복은 데이터의 loss를 의미할 것이므로 일정 개수 이상의 중복 ack를 수신하면 이를 loss로 파악하여 time out을 기다리지 않고 바로 재전송할 수 있다.

그림3

Note

 

'Computer Science > Network' 카테고리의 다른 글

Tcp_ congestion control / fairness  (0) 2019.08.07
Tcp_ flow control / handshake  (0) 2019.08.06
Pipelining _ Go Back N, Selective Repeat  (0) 2019.07.29
Transport layer_ RDT  (0) 2019.07.23
Transport layer_UDP  (2) 2019.07.23
Comments