22.10 Summary
There are applications that want to know the
destination IP address and the received interface for a UDP
datagram. The IP_RECVDSTADDR and IP_RECVIF socket
options can be enabled to return this information as ancillary data
with each datagram. Similar information, along with the received
hop limit, can be returned for IPv6 sockets by enabling the
IPV6_RECVPKTINFO socket option.
Despite all the features provided by TCP that
are not provided by UDP, there are times to use UDP. UDP must be
used for broadcasting or multicasting. UDP can be used for simple
request-reply scenarios, but some form of reliability must then be
added to the application. UDP should not be used for bulk data
transfer.
We added reliability to our UDP client in
Section 22.5 by
detecting lost packets using a timeout and retransmission. We
modified our retransmission timeout dynamically by adding a
timestamp to each packet and kept track of two estimators: the RTT
and its mean deviation. We also added a sequence number to verify
that a given reply was the one expected. Our client still employed
a simple stop-and-wait protocol, but that is the type of
application for which UDP can be used.
|