provides a potential source of security problems, an issue I will discuss in the
next chapter.
A typical routing table will have entries for many destination subnetworks. This table will include a cost for delivering the packet to a subnetwork via each of its neighboring routers. (There are many possible metrics
for "cost," including bandwidth, number of hops, delay, reliability, and
communications cost.) Because there are billions of potential destinations,
routing tables cannot possibly list an entry for each possible destination.
Instead they aggregate nodes into subnetworks that are numerically adjacent48 and that share similar characteristics. This is sufficient to send the
packet on its way to the next router, which is closer to the packet's destination. If the communication is TCP-based, the packets of a communication, whether it is email, Instant Messaging, or the contents of a web page,
are numbered.
IP does routing on a best-effort basis; it does not guarantee packet delivery. Packets may be lost to congestion, insufficient bandwidth, and various
hiccups in the network. IP also does not guarantee the packets will arrive
in order. IP provides data transport without regard to the type of applications being supported or the type of communications technologies being
used. The protocol constitutes the "narrow waist" of the Internet stack and
this is its strength. By minimizing the number of service interfaces, the IP
hourglass maximizes interoperability. This has been key to the innovation
that has flourished on the network.49
TCP ensures reliability. TCP first determines whether all packets have
arrived. It does so by gently letting the sender know about missed packets;
if, for example, all packets up to number fifteen have arrived and then
packet seventeen appears, TCP sends a message back to the source identifying packet fifteen as the highest-sequence number correctly received. Once all the packets are in, TCP reassembles the communication.50 TCP monitors
not only packet delivery but also network congestion. By examining what
is happening to the connection between two machines, TCP can not only
determine congestion, the protocol can do something about it. Once a TCP
connection has been established, TCP controls the flow of data sent out
to the network, increasing the flow when it appears that bandwidth is
available, throttling back when it appears it is not. TCP does this through
limiting the number of packets that it has sent out but for which it has
not yet received an acknowledgments'
Once packets are reassembled at the recipient's end, the user is in a
position to do something with the transmission. But she needs a way to
interact with the data-to read an email, transfer a file, browse a web page,
Instant Message (IM). That is the role of an application layer. The programs
to do so are developed by someone who does not have to know about
transport on the Internet, or reassembling packets, or how the different
devices sending the communications behaved (or even if the communication devices had changed from last month). All the application designer
has to know is how to write a program to transform the packets into email,
files, web pages, IMs, and so on. The simplicity embodied in the Internet's
layered architecture means that applications can freely use the delivery
functionality of the network while ignoring the mechanics of what is
occurring at lower levels of the protocol stack.
2.5 Mobile Communications
When TCP/IP was being developed, there was no issue about IP addresses
for portable devices: computers were big heavy objects that did not move.
The IP address of a device stayed fixed because the device stayed fixed, and
so did the network routes to it. The world has changed with the advent of
laptop computers, tablets, and other portable devices. In many situations,
the IP address for these devices is assigned dynamically, and it may be
different each time the
John Steinbeck, Richard Astro