|
TCP/IP or Transmission Control Protocol/Internet Protocol is the de facto protocol
on the Internet, the global computer network that you are probably
viewing this document over right now. The chief benefit of TCP/IP is that it
allows information (which it packages into packets, or datagrams in network
terminology)
to be reliably routed (using the IP part of TCP/IP. Routing allows the packets
to be sent anywhere in the world
where there is a working path between your machine and the machine you
want to communicate with.
To explain routing, let's say that you want to place a call between
your house and a friend in Redmond, Washington. You pick up the phone and
activate a connection to your local phone company (the local provider).
They in turn take the voice signal you are sending to them and send them
to a long distance provider. The long distance provider then sends it through
a number of their machines across the USA until reaches the Redmond, Washington
area. From there it goes to your friend's local telephone company and they
in turn deliver the signal to your friend.
Transmission over computer networks works in much the same way; there
are major providers with connections across the country and a lot of local
providers who only service their geographic region. These providers each
build their portion of the network. What makes world wide communication
possible is that various providers have agreed to connect to each other
at various places to route information between each others networks.
Using a trace route command you can actually find out the various places
(routers) that you go through to a particular IP address on Internet. In
this example, the packet was first sent to mae-east.clark.net which is
my local Internet Provider's T3 connection to one of these major interconnect
points (mae-east). They in turn sent it to mci.net who carried it over
their network from the Washington, DC area to the Seattle, Washington area.
There mci.net interconnects with nwnet.net, who delivered it to the host
I was trying to reach.
traceroute to ftp.microsoft.com (198.105.232.1) 30 hops max, 40 byte packets
1 mae-east.clark.net (168.143.15.1) 22 ms 20 ms 15 ms
2 mae-east-1-E02.net99.net (204.157.228.1) 13 ms (ttl=251!) 25 ms (ttl=251!) 23 ms (ttl=251!)
3 cpe2.Washington.mci.net (192.41.177.181) 26 ms (ttl=251!) 35 ms (ttl=251!) 57 ms (ttl=251!)
4 border2-hssi4-0.Washington.mci.net (204.70.57.9) 145 ms (ttl=250!) 37 ms (ttl=250!) 21 ms (ttl=250!)
5 core-fddi-1.Washington.mci.net (204.70.3.1) 34 ms (ttl=249!) 44 ms (ttl=249!) 37 ms (ttl=249!)
6 core-hssi-3.Denver.mci.net (204.70.1.14) 85 ms (ttl=248!) 74 ms (ttl=248!) 53 ms (ttl=248!)
7 core2-aip-4.Denver.mci.net (204.70.1.58) 84 ms (ttl=247!) 52 ms (ttl=247!) 58 ms (ttl=247!)
8 core-hssi-4.Seattle.mci.net (204.70.1.90) 88 ms (ttl=246!) 122 ms (ttl=246!) 93 ms (ttl=246!)
9 border1-fddi-0.Seattle.mci.net (204.70.2.146) 112 ms (ttl=245!) 93 ms (ttl=245!) 107 ms (ttl=245!)
10 nwnet.Seattle.mci.net (204.70.52.6) 106 ms (ttl=244!) 116 ms (ttl=244!) 116 ms (ttl=244!)
11 seabr1-gw.nwnet.net (192.147.179.5) 158 ms (ttl=243!) 123 ms (ttl=243!) 99 ms (ttl=243!)
12 microsoft-t3-gw.nwnet.net (198.104.192.9) 105 ms (ttl=242!) 89 ms (ttl=242!) 106 ms (ttl=242!)
13 131.107.249.3 (131.107.249.3) 101 ms (ttl=16!) 123 ms (ttl=16!) 89 ms (ttl=16!)
14 ftp.microsoft.com (198.105.232.1) 89 ms 90 ms 101 ms
One of the key concepts behind routing is that each computer on the Internet
has as an IP address. The destination IP address in the packet header tells
the other computers the destination
of the packet in much the same way that a phone number tells the phone
company how it should route the telephone transmission.
IP addresses are made up of 32 bits that are subdivided into 4 bytes
(or sets of 8 bit). Each byte in the IP address represents a number between
1 and 254 (0 and 255 are reserved) in base 2. In order to know where a
particular IP address exists, the first portion of each IP address is assigned
to the organization responsible for the Internet Connection. The remaining
bytes can be assigned by the organization as they see fit.
IP addresses given to an organization are classified by the number bits
they are assigned. A class A address usually means the first byte was assigned;
class B means the first two bytes were and class C means the first three
bytes were assigned. Again any bits that where not assigned are the organizations
responsibility to further subdivide into subnets (like 129.2.8.*) or to individual machines.
The University of Maryland, College Park has two class B addresses,
129.2 and 128.8 and these both represent the ".umd.edu" domain. To continue
the phone analogy, these are the "area codes" for all University of Maryland,
College Park computers. Unlike the phone system, we don't usually use numbers
when connecting somewhere, we use a much easier to remember name.
That's where DNS, or Domain Name Service comes into play. DNS servers
store a symbolic name and various other information about that name, but
the two key pieces of interest are the IP address that should be associated
with the name and where mail for that host should be delivered (the MX
record).
DNS is a distributed system. 129.2 and 128.8 are the class B addresses
associated with the .umd.edu domain that the University can assign IP addresses
within. At the simplest level, all of the names within the .umd.edu domain
are known only to the University's DNS servers. All of the DNS servers
on Internet are registered with a network of root level name servers. To
go from a name like ftp.microsoft.com, you ask your local DNS server, who
in turn asks a root level name server for the name server of .microsoft.com.
The local DNS server contacts that DNS server and gives you back the information
as though it knew it all along.
Another important concept in the use of TCP/IP is the gateway. The gateway
is the router that knows how to send traffic from your subnet to the rest
of the world. Without it, the average user would have no ability to communicate
outside their subnet. Whether a destination address is considered to be
on your local subnet or needs to be routed by the gateway is determined
by something call the "subnet mask." Subnet masks are just like IP addresses,
except that all the bits in the address to the left of a certain position
are usually one and all the bits the left of that position are usually
zero. The position is determined by the number of rightmost bits that have
been allocated to that subnet. If 9 bits (or 512 possible addresses) have
been allocated then the subnet mask would be 255.255.254.0. If you understand
boolean logic, logically AND'ing the subnet mask to an IP address leaves
only the portion of the address that should be the same for two machines
on the same subnet.
There is a lot more to how TCP/IP works than has been presented here,
including concepts like caching of DNS names, re-sequencing out of order
packets, packet sizes, packet filtering, wrapping IP headers around a packets.
These are not things you as a network user see or even need to care about.
|