더북(TheBook)

이번에는 UDP 소켓을 알아봅시다. UDP 소켓은 데이터그램이 최소 1개 도착해 있으면 즉시 리턴합니다. 그렇지 않으면 데이터그램이 1개 도착할 때까지 블로킹됩니다. 수신 함수가 수신 버퍼에서 데이터를 꺼내는 속도가 운영체제가 수신 버퍼의 데이터를 채우는 속도보다 느리면 어떻게 되는지 알아봅시다.

네트워크 선로로 UDP 데이터그램 A가 도착했지만, UDP 소켓 안의 수신 버퍼가 데이터그램 A를 담을 여유 공간이 없으면 데이터그램 A는 그냥 버려집니다. 이때 송신 함수 sendTo()의 블로킹은 발생하지 않는 것이 TCP와 차이점입니다. 또 TCP와 달리 UDP에서는 송신 측에 활발한 송신 활동이 일시적으로 멈추지 않습니다.

정리하자면, UDP 송신 함수로 송신 버퍼에 데이터를 쌓는 속도보다 수신 함수로 수신 버퍼에서 데이터를 꺼내는 속도가 느리면, 데이터그램 유실이 발생합니다. 결국 받는 쪽에서는 일부 데이터그램을 놓치는 결과를 초래하지요.

p157

▲ 그림 3-15 송신 버퍼에 데이터를 채우는 속도보다 수신 함수가 데이터를 꺼내는 속도가 느릴 때(UDP)

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.