This is why I've been trying to stay out of it.

> > So how to think about it?  First, it's *not* NAT,  because
> > there's no address translation going on.
> 
> I know. I understood this after the discussions of the past few days.

Yet you're still contending the following:

> What I pointed out to Anant Narayanan was that his proposed _new_ 
> capability which involved _packet analysis_ would _have to_ operate on 
> network layer data units, ergo, NAT again.
> 
> Packet analysis == Network layer operations ~= NAT

That's not correct.  NAT is network address translation.  It
implicitly requires that IP headers be rewritten, and when
doing port translation as well, the TCP header must also
be rewritten.  It is a technique that allows machines with
non-routable addresses to talk outside the local network.
Hence the need for translating addresses.  Importing /net
doesn't involve any translation of addresses.  In fact,
as Erik pointed out, the machine on the local network
might not even be talking TCP/IP at all!  The "packet
analysis" that appears to have arisen from a discussion
of load balancing is a red herring.  NAT is not a technique
for load balancing.  RFC1631 is where NAT is described.
If you're not rewriting the IP header, then it's not NAT,
it's not approximately NAT, it has no similarity to NAT
at all.  

> Because packet is the name for specific data units, entities at network 
> layer. Above it you have datagrams (UDP) or streams (TCP), below it you 
> have frames.

It is true that I wasn't particularly pedantic with my
terms, but if we're going to be pedantic, we might as
well get it right.  RFC791 defines IP and the proper terminology
associated with it.  Comer does an excellent job distilling
the RFCs and phrases it this way: "The internet calls its
basic transfer unit an _Internet datagram_, sometimes referred
to as an _IP datagram_ or merely a _datagram_."  You can find
the definition of UDP in RFC768.  Again Comer's phrasing:
"Each UDP message is called a _user datagram_."  Finally,
read RFC793 for the details on TCP.  Comer's phrasing
is "The unit of transfer between the TCP software on two
machines is called a _segment_."  Comer's definition of
a packet is also instructive:

"The unit of data sent across a packet switching network.
The term is used loosely.  While some TCP/IP literature
uses it to refer specifically to data sent across a
physical network, other literature views an entire TCP/IP
internet as a packet switching network and describes IP
datagrams as packets."

(BTW the reason I've chosen to use Comer's phrasing is that
his book arose as a result of an IETF meeting where even
some of the attendees didn't understand how it all worked--at
least that's the story I heard when I was at Purdue.)

> > The OSI protocols are  largely forgotten for a reason.
> > It's not bad as a conceptual model, but as soon as you
> > try to force any predefined definitions of layers on real
> > networks, you soon lose your grip on sanity.
> 
> There are rather clearly-defined boundaries in TCP/IP, too. Without the 
> layered design approach one would lose one's sanity, not with it.

Of course TCP/IP has layers.  Indeed layering can be seen
in most good designs.  It is especially natural in network
stacks because of the encapsulation of messages.  For that
matter, I doubt any student of mine has ever gotten away
without hearing me say something about the value of layering;
I even mentioned it in my book.

And it's true that we sometimes are a bit loose with the
terms and allow ourselves to use OSI terminology when
talking about TCP/IP.  However, you can't take that usage
too literally, and certainly can't base an argument on
that usage.  The layers in the two just don't line up
exactly.  The division of responsibilities among the layers
is different between TCP/IP and OSI.  For that matter,
they don't even have the same number of layers.

The luxury I have in this situation is that because you're
not my student, I don't have any obligation to make sure
you've understood it all.  But if you were my student, my
first recommendation would be to read *and understand*
the RFCs, and the best way to know that you've understood
them is to write some network protocol code.  If you would
like to have help understanding something, I, and I'm sure
others here, would be happy to answer if you present your
questions as questions.  I don't plan to answer any more
incorrect assertions.

BLS


Reply via email to