본문 바로가기
컴퓨터 네트워크

네트워크 11강 - TCP part.2

by N.Damgom 2020. 8. 10.

TCP에 대해 이어서 알아보자.

 


TCP Sender Events

TCP 세그먼트를 보내는 측에선 무슨 일을 하는지 알아보자.

 

  • 애플리케이션 계층에서 데이터가 도착했다.
    • 시퀀스 넘버와 체크섬을 달아서 세그먼트를 만든다.
    • 타이머가 동작중이라면?
      • 타이머는 가장 오래된 전송 중인(In-Flight) 세그먼트(가장 낮은 시퀀스 번호)에 맞춰져 있다.
      • 세그먼트를 보낸지 너무 오래됐으면 도중에 유실된 것으로 판단한다. 이 때 사용하는 시계가 타이머이다.
    • 타이머가 동작중이지 않다면?
      • 타이머를 켜고 해당 세그먼트에 맞춘다.
  • Time Out 발생!
    • Time Out된 세그먼트를 다시 전송한다.
    • Ack를 받지 못한 가장 작은 시퀀스의 세그먼트에 타이머를 맞춘다.
  • Ack를 받았다.
    • 받은 Ack에 해당하는 세그먼트를 In-Flight(전송 중)에서 Acked로 변경한다.
    • In-Flight 세그먼트가 있으면 타이머를 세팅한다.
  • TCP 재전송 시나리오
    • 수신 측에서 보내는 ACK가 Loss 되어 재전송된 경우
      • 보낸 데이터가 제대로 도착했어도 ACK가 Loss 됐을 수 있다.
      • Ack Timeout으로 송신측은 아까 보낸 데이터를 다시 보낸다.
      • 수신 측은 Loss 된 ACK를 다시 보낸다.
    • ACK를 받기 전에 Time-out 된 경우
      • ACK는 잘 도착했으나 ACK받기 전에 Time-out이 됐다면
      • 받은 ACK에 해당하는 세그먼트는 ACK가 도착하기 전에 재전송된다.
      • 수신 측에서는 받은 데이터를 또 받는다.
      • TCP는 누적 ACK를 사용하므로 이전에 받았던 데이터가 다시 도착하더라도 그 데이터에 대한 ACK를 보내는 것이 아니라 최근에 받았던 데이터(Highest Sequence Number)에 대한 ACK를 보낸다.
    • Ack가 손실됐지만 Time-out이 발생하기 전에 다음번 데이터의 ACK를 받은 경우
      • ACK == 100을 받지 못했어도 ACK ==120을 받았다면 TCP는 누적 ACK를 사용하기 때문에 100번 데이터도 잘 도착한 것으로 인식한다.
      • 따라서 재전송은 필요없다.

 

 


TCP Receiver Events

TCP 세그먼트를 받는 측에선 무슨 일을 하는지 알아보자

 

  • Ack Generation
    • In-Order의 경우
      • 매번 Ack를 보내는 것은 낭비다. 따라서 받은 Segment들에 대해 모두 ACK를 보냈다면 다음 In-Order Segment를 500ms동안 기다린다. 500ms동안 오지 않았다면 바로 ACK를 전송한다.
      • 500ms 동안 기다릴 때 다음 세그먼트가 오면 바로 ACK를 보낸다.
    • Out of Order의 경우
      • 받은 Segment들 사이에 누락된 것이 있다면 가장 낮은 값의 ACK를 재전송한다.(Duplicated ACK 전송)
      • 누락된 것을 받았다면 기다리지 않고 ACK를 전송한다.
  • TCP Fast Retransmission
    • Time out 시간은 상대적으로 길다.
    • 3개의 중복된 ACK를 받았을 때 그 세그먼트는 Loss가 발생한 것이라고 생각하고 해당 Segment를 즉시 재전송한다.

 


TCP Flow Control

  • Flow Control은 리시버 버퍼가 가득 차는 일을 방지한다.
  • RWND는 리시버 TCP 버퍼의 여유공간이다.
    • 리시버가 센더에게 보내는 Segment의 헤더에는 rwnd 값이 포함되어 있다.
    • 센더는 In-Flight Segment개수를 rwnd를 를 넘지 않도록 조정한다. 
    • TCP 연결을 맺을 때 Seq number를 동기화하고 RWND 값을 교환한다.

 

 

 

 

더보기

본 게시물은 kocw 이화여자대학교 이미정 교수님의 컴퓨터 네트워크 강의를 듣고 정리한 글임을 밝힙니다.

내용상 틀린 부분이 있을 수도 있으며 이에 대한 책임을 지지 않습니다.

틀린 부분이나 오타 지적은 댓글로 남겨주세요.

www.kocw.net/home/cview.do?cid=e44bdd9b3a3f9bb5