TCP/IP -- an introduction

TCP/IP -- Transmission Control Protocol/Internet Protocol -- is the language of the Internet. It is a platform-independent protocol suite, which means that it doesn't matter what kind of computer you have -- if it's got TCP/IP software installed (nearly every computer does), it can talk TCP/IP. TCP/IP is the language most computers speak when they're communicating with one another...i.e, when they're networked. TCP/IP powers the Internet: all the familiar services, such as HTTP (for web use), SMTP (for email transmission), and FTP (for file transfer), run over TCP/IP.

A Brief History of TCP/IP

In the 1970's, ground-breaking research was being performed at the Advanced Research Projects Agency of the United States government. This research formed the foundation of the ARPAnet -- networked computers that connected research stations around the world, so geographically remote offices could still share ideas and resources. The ARPAnet grew up into the Internet after the deployment of the TCP/IP protocol suite, and that formed the backbone of the Internet of today.

Basic TCP/IP Understanding

TCP/IP communication is handled by sending datagrams, commonly known as 'packets'. A packet is a small piece of data with various special fields set in it that allows it to be sent to the right place, and perform the right function. Routing, for instance, is handled by looking at certain of these fields and using them to determine where a packet should go.

TCP/IP, as stated above, is a protocol suite. It's two protocols -- TCP and IP. TCP rides on top of IP, and IP is the part of the suite that's used for routing from one computer to another. Special computers called routers can receive an IP packet that comes from one host, look at its headers -- the special fields in the packet -- and decide where to send it. The packet hops from router to router, each one determining the next hop through various means such as routing tables and special protocols. Each router looks at the packet's header, like a post office reading the address on an envelope.

TCP, the other part of the protocol suite, usually does not come into play until the packet has arrived at the destination computer. The TCP packet (which is carried inside the IP packet, like an envelope inside another one) also has headers, and when the destination computer receives a TCP packet, it uses the headers to determine what that packet is meant to do.

There are other network protocols, such as UDP (which is used for such services as domain name lookups and the Simple Network Management Protocol) and ICMP (which comes into play when you use a tool like ping to see if a remote computer has gone down). However, it's TCP that is used the most, and that's what this paper focuses on.

A Detailed Look at TCP/IP Architecture and Communication

Communication between computers is generally looked at as a model with seven layers. Known as the OSI (Open Systems Interconnect) model, it encompasses, from bottom to top, the physical layer, the data link layer, the network layer, the transport layer, the session layer, the presentation layer, and the application layer. For instance, the physical layer would be the actual cable that connects your computer to your network. The data link layer would be your network interface card itself. IP is an example of a network layer protocol; TCP is a transport layer protocol. And so on up to the application layer, which would be, say, Netscape.

How does TCP communication work? It's more complex than just throwing some data out onto the Internet and hoping the right machine catches it. TCP communication employs what's known as the 'three-way handshake'. A computer makes a request to another -- for instance, a web server. This is the first part of the handshake. The remote server gets that request and replies, saying it received the first part. This reply is the second part of the handshake. Then the original computer replies back, saying it got the reply and knows the remote computer is up and ready for it, and that the actual data will be coming. The third part of the handshake is complete, and the two computers are communicating. All of this happens completely transparently to the user, and it happens every time a new connection is made. Every time a web page is downloaded. Every time mail is sent. It may seem a little redundant, but the real purpose of the three-way handshake is to make TCP connections a very reliable way to transmit data. Nothing is sent until both computers know that the other is ready.

Assume, then, that you want to get a web page from http://www.example.com/. You enter the URL into your web browser, and hit the button. From there, your computer, the Internet's protocols, and example.com's web server take over. First, your computer crafts a packet that looks for the numerical address of www.example.com. That's a UDP packet. It gets the answer from your ISP's server, and then it knows example.com's address. Now it creates a TCP packet that starts the handshake. It sends that to the network layer, where the TCP packet is put inside an IP packet envelope. Now it's sent to the data-link layer -- your modem or your network interface card -- and from there, down the physical layer, the cable. The packet goes to your closest router, which looks at the IP packet's headers and sends it on its way...across the Internet to example.com. On the way, other routers pick it up and pass it. When it arrives at the last router, it goes back down another cable (layer 1), to the web server's network card (layer 2), then up to the network layer. There, the IP envelope comes off, and the TCP packet goes up one more. Now the first part of the handshake is complete. The example.com server crafts a TCP packet that acknowledges it received the first request, and sends it back...back down to the IP layer to get the envelope, back down through layer 2 and layer 1, back through the routers, back to your computer...layer 1, layer 2, layer 3 to take off the envelope, and then up to layer 4. The second part of the handshake is complete. Your computer responds with the whole process, finishing the handshake, and then your computer requests the web page...and example.com gets it, and sends the web page back. This time the packets it sends go through the Internet to your computer, and go all the way up through -all- seven layers...and they display a web page in Netscape.

That's what TCP/IP does...and it does it so fast you barely even notice.

/dev/null (null@attrition.org) (c) copyright 2000, Null