Re: UDP network problem

Richard B. Johnson (root@analogic.com)
Tue, 19 Aug 1997 11:53:56 -0400 (EDT)


On Tue, 19 Aug 1997, Mike Kilburn wrote:

> "Richard B. Johnson" <root@analogic.com> wrote:
>
> > Well when I started in "Networking" about a thousand years ago when we
> > used puffs of smoke for communication, a "Datagram" was a single packet
>
> A lot has changed since then.
>
> > signaling. Data would go in-band. UDP (Unix Datagram Protocol) are
>
> User Datagram Protocal.
>
> > (were) datagrams with an IP Header. If the IP "layer" now allows one
> > to fragment, i.e., use datagrams that no longer consist of a single
> > packet, then the whole reason for using datagrams has disappeared.
>
> Fragmentation at lower layers has little to do with why one uses
> UDP to tranport a protocal. What happens when your "single packet"
> hits a network with a smaller MTU than yours?

That's where we get rid of "connectionless" protocols. If one wants
to continue to use datagrams, we used to start small, then increase the
length until we didn't get through. Then we maintain the maximum
length that allows communications to continue through the entire link.

Basically, with the datagrams, retransmission, MTU discovery, reassembly,
and all the stuff necessary to create a reliable link, was left to the
users at the end-points. Fundamentally, all networking uses datagrams.
It's just left up to the user to handle "TCP" stuff at the user-level
with connectionless protocols, and the TCP of TCP/IP to handle it in
the networking code for protocols that establish connections, i.e.,
reliable links such as Berkely Sockets.

Once you can send packets of any length, you can throw away the user code
necessary to perform MTU discovery. Once you do this, you can might as
well let the kernel handle everything, i.e., use sockets because it
can certainly perform such a function more efficiently than user code
because being at a lower level, it can "see the whole picture", while
the user code can only "see the results".

Cheers,
DJ
Richard B. Johnson
Analogic Corporation
Penguin : Linux version 2.1.51 on an i586 machine (66.15 BogoMips).
Warning : It's hard to stay on the trailing edge of technology.
Linux : Engineering tool
Windows : Typewriter