Just what is TCP/IP?
Just what is TCP/IP? The entire computing world seems to revolve around this technology, but very few people know what it is or what it does for you. There are great articles on TCP/IP at Wikipedia and other places if you want the real grimy details. This is not one of those posts. This is TCP/IP for dummies.
First Let’s Imagine
At one time, there were far fewer computers in the world, and in the beginning, if you wanted to move data between one computer and another one, you connected them with a wire. Imagine if you would, two computers connected by a wire, sort of like your cable between your computer and your printer. It is very easy for these computers to talk to each other, because any message one sends is always for the other computer, and vice versa. One talks, the other listens, and this worked great until a third computer wanted to be involved. You would think that to connect three computers would take just two wires, but what if the computer in the middle was off? So it took 3 wires to connect them. At a fourth, however, and each computer needs to be connected to all the others, so it would take 12 wires to connect just four computers. Math geniuses call this a geometric progression. Just 1o computers would take 90 wires to link.
What to do With All These Wires?
This is unbearably ineficent, but that is the only way to let them talk, unless we do something new. We will connect all the Computers into a hub. Now the computers only take 1 wire each, but a new problem arises. When any Computer talks, all the other computers listen and respond. We need a way to make these computers know which one of them is being spoken to.
Early attempts at this discovered that addresses would solve this problem. Computers would send their message with an address attached and then the computers would know whether to respond or not.
As these addressing schemes grew, it soon became apparent that people were designing their networks differently, and that network independant addresses needed to be developed. Languages called Protocols soon came about and the first TCP/IP inter-networks were developed. Testing and revisions led to version 4 which most of the Internet is based on today. Networks still have their proprietary lower level languages like “Ethernet”, “Token Ring”, “FIOS”, there is even a version that runs on carrier pigeon, but all these networks have TCP/IP superimposed on top of their lower level languages.
The addresses in TCP/IPv4 look like strings of numbers with dots or periods in the middle of them. To a math major, more than one decimal point in a number makes no sense, but these dots are only there to make the numbers easier to read. In reality, all TCP/IP addresses are a series of 1’s and 0’s all lined up in binary. A typical number would look like this. 184.108.40.206 in binary is “11001110.00110110.10101000.00000001”. My decimal points in the binary number are for clarity only. In reality, they don’t exist in actual binary.
There is one address assigned to every computer that needs to route information on the internet in the world, and each one is unique. If they were duplicated, the internet would not know where to send your data. These addresses are handed out to Internet Service Providers mostly, but also to some large companies. The problem is, no one ever thought there would be this many computers on the internet. Current estimates indicate we will run out of IP addresses in 2010 or 2011, and those don’t take into account last minute rushes for addresses.
Private Addresses for the Rich and Famous
One way we handle this problem is to trick the internet into allowing private networks to have their own addresses, and then share the public ones. To do this, several ranges of addresses were set aside just for private addressing. You have seen these addresses if you have seen addresses that begin with a 10 (like 10.2.40.3) or 192.168. (like 192.168.1.100) or 172.16. (like 172.16.4.20). These private address ranges can be used in any way by anybody, as long as they are not directly on the Internet. A tool called Network Address Translation (NAT) allows all the private addresses behind a firewall to look like they are sharing the same IP address. This helps us conserve what addresses we have left, but doesn’t solve the problem. Soon we will run out.
Newer versions of TCP/IP are coming out which can solve this problem, and at the same time vastly increase the capability of the Internet. Many technologies don’t work yet because of the NAT devices. It is kind of like having a party line behind a real phone number. For most things it can work, but for data intensive things like video, it is very hard to make it work simply, so only big companies are currently able to do these things.
Soon, however, everyone will be able to, but it will require a massive change of equipment. Nearly every router in the world will need to be upgraded or replaced, to support the new version. Even your home router will need to be changed out. It won’t be the end of the world, but we definitely have our work cut out for us.
It will be worth it, however. By one estimate, we will have enough addresses at that point for every square meter on earth to have an address. When you consider how much of the earth is covered by water, you can imagine how many addresses this will be for the rest of us.
Numbers, Numbers, Numbers
Few people like memorizing long strings of numbers. That is what Blackberries are for. Imagine if every time you wanted to get to Google, you had to type 220.127.116.11. (this is the actual number and will work if you type in in your browser’s address line.) You might remember this one address, since you use it often, but how many others could you remember? To make this easer, the guys who invented the internet made up a phone book called the Domain Naming System, or DNS for short. This system takes the names you type, and changes them to the numbers that are needed. Then your system can query the number to get the web page you need. DNS is the key to making TCP/IP user friendly. You type http://www.google.com, and DNS answers back 18.104.22.168. Your browser then connects you to 22.214.171.124, and tells you it is Google. All of this is done in the background, and you rarely if ever know it is there.