HJW's IT Blog

TCP: Transmission Control Protocol 본문

컴퓨터 네트워크

TCP: Transmission Control Protocol

kiki1875 2023. 4. 6. 12:13

TCP란 전송된 데이터를 신뢰성 있게 receiver 측에 전송을 보장하는 프로토콜이다.

 

TCP 특징

  • Point to Point
    • one sender one receiver
  • Connection-Oriented
    • 신뢰성이 높다
    • Handshaking 과정 필요
  • Pipelined
    • Flow/Congestion Control을 위해
  • Maximum Segment Size
  • Full Duplex Daa
    • 양방향 통신이 가능

TCP Segment

 

TCP는 다음으로 이루어져 있다.

  • Pipelined Segments
  • Cumulative ACK
  • Single Retransmission Timer
    • Triggered by
      • Timeout
      • Duplicate ACK

TCP Retransmission Scenario

a

  • ACK가 손실되었을 때 이다.
  • Host A 가 보낸 데이터를 Host B가 잘 받았지만 ACK 100 이 손실
  • Timeout 이 걸리고 재전송

b

  • 이 경우는 time의 timeout 시간을 너무 짧게 설정하여 발생한다

c

  • Host A가 seq 92와 seq 100을 보낸 후 Host B는 이에대한 ACK 100, 120을 보내지만 ACK 100이 유실된다.
  • 이때 Host A는 ACK 100 이 오지 않았지만 ACK 120 을 받았으므로 ACK 100 또한 잘 전송되었다는 것을 알 수 있다.

다음은 receiver의 event와 action 에 대해 살펴보자

EVENT AT RCV RCV ACTION
예상 순서 번호와 함께 도착한 순서대로 세그먼트의 도착. 예상 순서 번호까지의 모든 데이터는 이미 ACK(수신 확인)을 받음 지연된 ACK. 다음 세그먼트를 기다리며 최대 500ms까지 대기합니다. 다음 세그먼트가 없다면 ACK를 전송함
예상 순서 번호와 함께 도착한 순서대로 세그먼트의 도착. 하나의 다른 세그먼트는 아직 ACK 대기 중 즉시 단일 누적 ACK를 보내서, 예상 순서대로 도착한 두 세그먼트를 모두 ACK
예상한 순서 번호보다 높은 순서 번호를 가진 순서와 다른 세그먼트의 도착. 갭이 발견 즉시 중복 ACK를 보내서, 다음에 예상되는 바이트의 순서 번호를 나타냅니다
갭을 부분적으로나 완전히 채우는 세그먼트의 도착 갭의 하위 끝에서 세그먼트가 시작된다면, 즉시 ACK를 전송합니다

TCP 는 fast retransmit 이 가능하다

  • Timeout 을 기다리는것은 비 효율적
  • 중복 ACK를 사용하여 유실을 감지
  •  

Fast Retransmit

Timeout 

Timeout 이 너무 짧을 경우, 불필요한 retransmission이 발생

너무 길 경우 너무 느린 응답 발생

SampleRTT: segment 전송에서 ACK 수신까지 걸린 시간

EstimatedRTT = (1- a)*EstimatedRTT + a*SampleRTT

a = 0.125

 

TimeoutInterval : EstimatedRTT + 4DevRTT

safety margin

  • DevRTT = (1-b)DevRTT  +b|SampleRTT - EstimatedRTT|
  • b = 0.25
  • RTT 계산 예제
  •