Computing Topics --> Definitions --> TCP/IP -->

TCP/IP

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.

How do I:
How are we doing? Comments on this page?
Office of Information Technology
Office of Information Technology Help Desk Web Site University of Maryland Web Site Office of Information Technology Web Site