Barry Margolin <***@alum.mit.edu> wrote:
(snip, I wrote)
Post by Barry MargolinPost by glen herrmannsfeldtYes, and I always note when someone mentions TCP/IP in the context
of UDP. The assumption is that you always have to implement TCP,
but that isn't true.
If it has to fit in a small ROM (such as diskless booting) or in
hardware (FPGA) then UDP is much easier.
Technically true. Although only really practical if you only make fairly
limited use of the network, e.g. just for diskless booting or
configuration with DHCP. If you do anything more complex, like
providing a web-based UI or terminal interface for configuring the
device, you'll need TCP.
So the boot ROM might only need UDP, but whatever it loads in will
almost certainly include TCP.
Some years ago, I was installing and configuring diskless Suns,
and got pretty used to how they worked. That included using
etherfind to debug problems with hex dumps of the packets.
Mostly from memory:
First a Sun machine uses RARP to find its own address.
Then UDP based TFTP to download the first level boot program,
presumably using a broadcast address as it doesn't know the
server address. Actually, I think they changed somewhere along
the line to use the address of the server replying to the RARP
request.
Then RPC based BOOTPARAMD to find the name and IP address
of the server, and some other such data.
I believe after that, most is done through NFS, which was UDP
based in those days. I am less sure now, but I believe it loads
the second level boot program and runs that, which again uses
RARP and BOOTPARAMD to determine the server and root file system,
which it then NFS mounts and loads.
At that point, it is executing the kernel from the root file system,
which includes most everything else it needs to know, including
other partitions to mount.
I didn't do any diskless Sun work since the change to NFS/TCP,
but it seems likely that is what more recent systems would do.
-- glen