2.7 패킷 유실 시 UDP와 TCP에서 현상
앞서 보았듯이 OSI 모델의 계층 1~3에서는 패킷 유실이 발생할 수 있습니다. 이때 UDP와 TCP에서 무슨 일이 일어나는지 알아봅시다.
패킷 유실이 발생하면 UDP에서는 데이터그램 자체가 유실됩니다. 게다가 UDP 데이터그램의 크기가 클수록 유실될 확률도 높습니다. IP 패킷은 보통 1300바이트인데, 1만 바이트의 데이터그램을 UDP로 전송하면 운영체제는 이를 대략 1300바이트 정도 크기로 나누어서 보냅니다(IP 패킷 헤더 등이 있으므로 실제로는 차이가 조금 납니다). 그러면 대략 8개 정도로 나뉘어 IP 패킷 8개가 상대방에게 전송됩니다. 이 중 하나라도 유실되면 수신자는 8개를 모두 받지 못합니다. 따라서 IP 패킷 8개로 구성된 1만 바이트짜리 데이터그램 1개는 최종 유실됩니다.
TCP에서는 패킷 유실이 발생하면 유실된 패킷에 대한 ack가 도착하지 않습니다. 송신 측에서는 ack가 올 때까지 기다리지만, ack가 결국 오지 않으면 다시 패킷을 보냅니다. 한편 수신 측에서는 도착하지 않은 패킷이 있으므로 다른 패킷이 다 도착하더라도 데이터 스트림을 조립하지 못합니다.
▲ 그림 2-31 수신 확인이 되지 않아 재송신을 하는 상황