본문 바로가기
학교 수업/컴퓨터 네트워크

Transport layor - 3. TCP fast retransmit

by Godgil 2020. 5. 8.

TCP는 앞에서 말했지만,

세그먼트를 보내고 나서 일정 시간이 지나도 ACK가 안오면 재전송을 한다고 했었어

그러면 한번 생각해보자.

그림을 보면 두번째 세그먼트가 도착을 못했어, 

그런데 1,3,4,5는 도착했거든, 1번을 받으면 1번 세그먼트의 ACK인 100으로 피드백 해줄거야

 

어? 근데 왜 ACK 100일까? 92번 seq인데 그럼 92가 되어야 하는게아냐?

라고 생각 할 수 있는데, TCP는 앞에서 했던거랑 조금 다른게,

ACK 100의 의미는 "나 99번까진 잘 받았는데, 100번을 기다리고있을게"라는 의미야.

 

아무튼, 2번이 도착못했는데 3,4,5번이 도착했어, 그러면

받는 쪽 입장에서는, "어? 아니 나 100번 기다리고있다니까? X3"을 반복하는거야.

 

그러면 타임 아웃이 되지 않았는데도, 보내는 쪽에서는 킹리적 갓심으로 생각 할 수 있는거야

"어라? 두번째꺼 안갔구나?"이렇게 말이지.

그러고는 TImer가 오버되지 않아도 그냥 한 윈도우를 통째로 재전송하는거지

 

이게 Timer가 좀 많이 넉넉하게 설정되어 있거든

그래서 중복된 ACK가 3개 이상이 오게되면 바로 재전송하는 매커니즘을 취해 주는거야

 

 

그러니까 정리하자면

TCP는 효율성을 위해서 Fast retransmit이라는 매커니즘을 가지고 있는데,

설정된 Timer가 오버되지 않아도, duplicated ACK가 3개 이상이 오면 바로 재전송을 하는 것이야.

Timer는 좀 길게 설정되어 있어서 이런 방식을 사용하면 좀 더 일찍 재전송이 되는거야.

 

 

댓글