The IP level

Posted by The Beyand | 7:21 AM | 0 comments »

TCP sends each of these datagrams to IP. Of course it has to tell IP the Internet address of
the computer at the other end. Note that this is all IP is concerned about. It doesn't care
about what is in the
datagram, or even in the TCP header. IP's job is simply to find a route for the datagram
and get it to the other end. In order to allow gateways or other intermediate systems to
forward the datagram, it
adds its own header.
 
The main things in this header are the source and destination Internet address (32-bit
addresses, like 128.6.4.194), the protocol number, and another checksum. The source
Internet address is simply the address of your machine. (This is necessary so the other
end knows where the datagram came from.) The destination Internet address is the
address of the other machine. (This is necessary so any gateways in the middle know
where you want the datagram to go.) The protocol number tells IP at the other end to send
the datagram to TCP. Although most IP traffic uses TCP, there are other protocols that
can use IP, so you have to tell IP which protocol to send the datagram to.
Finally, the checksum allows IP at the other end to verify that the header wasn't damaged
in transit. Note that TCP and IP have separate checksums. IP needs to be able to verify
that the header didn't get
damaged in transit, or it could send a message to the wrong place. For reasons not worth
discussing here, it is both more efficient and safer to have TCP compute a separate
checksum for the TCP header and data.
Again, the header contains some additional fields that have not been discussed. Most of
them are beyond the scope of this document. The flags and fragment offset are used to
keep track of the pieces when a
datagram has to be split up. This can happen when datagrams are forwarded through a
network for which they are too big. (This will be discussed a bit more below.) The time
to live is a number that is
decremented whenever the datagram passes through a system. When it goes to zero, the
datagram is discarded. This is done in case a loop develops in the system somehow. Of
course this should be impossible, but well-designed networks are built to cope with
"impossible" conditions.
At this point, it's possible that no more headers are needed. If your computer happens to
have a direct phone line connecting it to the destination computer, or to a gateway, it may
simply send the
datagrams out on the line (though likely a synchronous protocol such as HDLC would be
used, and it would add at least a few octets at the beginning and end).
 

0 comments