Transport Layer - (2)

전송 계층은 Reliable 하다고 말할 수 있다. 이 뜻은 application 계층으로부터 내려온 데이터들이 application 계층까지 데이터 유실 없이 도달할 수 있다는 뜻.
네트워크 레이어를 보면, Transport layer를 통해 Reliable한 데이터 전송이 가능하다.
근데 이 하위 계층을 타고 전달되는데 그 아래 계층은 Unreliable하다. 데이터 전송이 Unreliable하다는 뜻은




Error Detectionheader에 CheckSum을 담아보낸다. 이 CheckSum은 보내는 데이터에 에러가 있는지 없는지를 확인할 수 있는 장치. (ex. 모든 데이터의 합을 CheckSum으로 사용하면 위변조 판단 가능)Feedback잘 받았음 을 전달 ex) 배달앱 주문 넣으면 주문 접수됨 알림을 표시에러 있음 을 전달 ex) 주문이 접수 안되면 접수되지 않았음을 표시Retransmission즉 Error 발생은 checksum, feedback,retransmission으로 커버할 수 있다.
강의예시로 전화통화시 통화가 잘 진행중이면 어, 응 등의 대답을 하지만 통화가 원할하지 않아 전달이 제대로 되지 않으면 뭐라고? 등의 표현을 다시 전달한다. 이를 ACKs, NAKs라고 볼 수 있다.

우측 Diagram에서 아래로 시간의 흐름을 따라 진행하고, 좌측화살표는 Sender, 우측화살표는 Receiver이다. Sender이 Hello! 라는 데이터를 보내고 Feedback으로 ACKs를 보낸다는 상황을 가정해보자. 이 Feedback에 문제가 생기면 어떻게 될까? 받은 데이터가 에러가 있는지 없는지를 확인할 방법이 없어진다.
이러한 상황을 위해서는 Feedback 자체에서 CheckSum을 도입해야 Feedback이 정상인지 아닌지를 확인 할 수 있다.
일단 이러한 상황을 위해 Sender는 다시 동일한 데이터 Hello!를 Receiver에게 보낸다. Receiver은 이때
Hello! 와 같은 데이터 Hello!를 다시 한번 더 보낸건지 (Duplicate packets)Hello!Hello! 인지 (Normal)알 수가 없다.
A ) 답은 2개다. 0부터 계속 증가시켜나가면 무한대로 커질 수 있지만 실제로는 숫자 0 , 1 로 1비트만 있으면 된다. 0 보내고 잘 받았으면 다음에는 1 보내고, 다시 0 보내고 반복하면 된다.



무조건 ACK를 사용하되, 가장 마지막으로 받은 정상 Sequence Number을 다시 보냄.

이전까지 Error는 잘 대처했다. 이제 Loss에 집중해보자.
Sender 입장에서 메시지를 보낸 후 이것이 중간에 유실됐는지 어떻게 확인할 수 있는가?




Error detection , Feedback , Retransmission , Seqence NumberTimerLimitation :
그러나, 이 모든 과정은 패킷을 딱 1개씩 주고 받고 할 때고, 실제로는 패킷을 여러개를 Batch 단위로 보내고, 각각 패킷에 대해 피드백을 한다.
