Transport layor - 3. TCP fast retransmit
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"을 반복하는거야. 그러면 타임 아웃이 되지 않았는데도, ..
2020. 5. 8.
Transport layor - 2.1 Pipelining, Go Back N, Selective Repeat
Rdt 3.0에서는 세그먼트 하나 보내고, 그에 대한 응답으로 ACK를 받고, 만약에 ACk가 오지 않으면 타이머가 자동으로 오버되면서 재전송하고, 이런 매커니즘을 보였어 근데 이게 세그먼트가 한두개도 아닐텐데, 언제 보내고 받고하고 있어? 너무 비효울적이라는 생각 들지? 그래서 나온 개념이 Pipelining이야. 이건 뭐냐면, 그냥 ACK가 오지 않아도, 네트워크 상황이 허락하는 만큼 그냥 연달아서 보내고 그에 대한 ACK를 각각 받는거지 이 매커니즘에는 두 가지 방법이 있는데 그게 바로 Go Back N이랑, Selective Repeat 방법이야. 간단하게 차이점을 말하면, 보내는 쪽에서 재전송을 할 때, 묶음으로 보낼지 못받은것만 보낼지 하는거에 대한 차이야 둘 다 공통점은 윈도우가 허락하는 만..
2020. 5. 7.