Blogs >> Technology >>
THE Internet
The Internet is a network of networks, the “mother of all WANs.” In other words, it is a bunch of intranets which can talk to each other. It is also known as the world wide web, which is why hundreds of millions of people are spending countless hours typing “www” in front of the address of the web site they’d like to visit, even though it’s really not necessary. (Try it and save hours off of your typing over your lifetime!)
Communication over the Internet happens primarily because of two protocols known as TCP and IP. Commonly, they are referred to together, as TCP/IP. Although a full explanation truly would be headache-inducing technobabble, a certain level of explanation is both helpful and safe for most normal human beings.
TCP
TCP stands for transmission control protocol, and is nothing more than a set of rules which guarantee that the two sides—such as the sender and the receiver of an email or the person surfing the Web and the site providing the web page—make a connection before starting a conversation, kind of like looking at someone you just meet at a cocktail party before starting to talk to him.
TCP communications start with what is called the “TCP handshake,” sometimes referred to as “SYN, SYN-ACK, ACK.” The party initiating the conversation sends a SYN message (if you were to look at a header of the packet you would see a “SYN” flag set to 1) which says, “I would like to talk to you.” The receiver sends an “ACK,” which is the response, “I’m listening.” The sender then sends a “SYN-ACK” which means, “Here it comes.” The two sides then start talking, using a code called a sequence number that allows the receiving side to reassemble the packets in the correct order. Interestingly, it is the receiving end which controls the communication. For example, the receiver sends a message that says, “I now expect to receive packet number X.” If the sender already has transmitted packet number X, the sender will re-send it. When the conversation is over, the initiating side sends a “FIN,” which says “I’m done.” The receiver comes back with a “FIN-ACK,” which the sender acknowledges with an “ACK.” Although a lot more rigorous, and infinitely less enjoyable, than a cocktail party conversation, it gets the job done.
For the intensely curious, or those without hobbies, here is an example of a 32-bit TCP header.
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Source Port | Destination Port |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Sequence Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Acknowledgment Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Data | |U|A|P|R|S|F| |
| Offset| Reserved |R|C|S|S|Y|I| Window |
| | |G|K|H|T|N|N| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Checksum | Urgent Pointer |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Options | Padding |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| data |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Not exactly exciting. But it is important.
Next time, I'll talk about another common protocol: UDP.
Communication over the Internet happens primarily because of two protocols known as TCP and IP. Commonly, they are referred to together, as TCP/IP. Although a full explanation truly would be headache-inducing technobabble, a certain level of explanation is both helpful and safe for most normal human beings.
TCP
TCP stands for transmission control protocol, and is nothing more than a set of rules which guarantee that the two sides—such as the sender and the receiver of an email or the person surfing the Web and the site providing the web page—make a connection before starting a conversation, kind of like looking at someone you just meet at a cocktail party before starting to talk to him.
TCP communications start with what is called the “TCP handshake,” sometimes referred to as “SYN, SYN-ACK, ACK.” The party initiating the conversation sends a SYN message (if you were to look at a header of the packet you would see a “SYN” flag set to 1) which says, “I would like to talk to you.” The receiver sends an “ACK,” which is the response, “I’m listening.” The sender then sends a “SYN-ACK” which means, “Here it comes.” The two sides then start talking, using a code called a sequence number that allows the receiving side to reassemble the packets in the correct order. Interestingly, it is the receiving end which controls the communication. For example, the receiver sends a message that says, “I now expect to receive packet number X.” If the sender already has transmitted packet number X, the sender will re-send it. When the conversation is over, the initiating side sends a “FIN,” which says “I’m done.” The receiver comes back with a “FIN-ACK,” which the sender acknowledges with an “ACK.” Although a lot more rigorous, and infinitely less enjoyable, than a cocktail party conversation, it gets the job done.
For the intensely curious, or those without hobbies, here is an example of a 32-bit TCP header.
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Source Port | Destination Port |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Sequence Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Acknowledgment Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Data | |U|A|P|R|S|F| |
| Offset| Reserved |R|C|S|S|Y|I| Window |
| | |G|K|H|T|N|N| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Checksum | Urgent Pointer |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Options | Padding |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| data |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Not exactly exciting. But it is important.
Next time, I'll talk about another common protocol: UDP.
|