The Internet is populated by a great variety of different hardware. Dozens of different PC brands are available and around. More importantly, many different operating systems are available and installed on the various computers. Among the best known, Windows (in different flavors and versions), MacOS, Linux, Unix, Solaris, and several others.
Clients and Servers
Some of these computers are “just” clients, that are used as terminals to access resources and data provided by other computers, the servers (Figure 1-2-1).
Some operating systems are natively more suitable for clients (windows, macos) while others are typically in use on servers (Linux). Still, we can find all these operating systems both on clients and on servers, although with different shares. It is interesting to note that while on the client side, Linux is still lagging behind (1.64% as of December 2012, see Figure 1-2-2), while Windows is dominating with a share larger than 60% of total clients (Figure 1-2-2), the reverse is true with servers, which use the Linux server Apache in more than 60% of the cases, with Windows relegated to a mere 16% of the “market”.
There are solid reasons for this (for one Linux is free and open source) that will be discussed in the Linux pages of this tutorial.
A windows PC can visit a website served by a Mac through the HyperText Transfer Protocol (HTTP – this usually prepends web addresses: http://…), and can be used to upload files to this Mac through the File Transfer Protocol (FTP).
A router with embedded Linux can provide an IP address, through the Dynamic Host Configuration Protocol (DHCP – that typically corresponds to an “obtain IP address automatically” setting on the client computer) to a connected Linux, Mac or Windows machine.
How can such deeply diverse operating systems communicate and smoothly exchange data? After all, it is common knowledge that a Windows .exe program will not work on a Mac, and that Mac software cannot be run on a PC, just to highlight one of the several differences between these two OS. The answer to this question is that both Macs and PCs (and Linux and all other OS used on computers connected to the Internet) use a common language, a common set of rigidly defined rules, to communicate over the internet. This common language is indeed TCP/IP.
TCP/IP, the Transmission Control Protocol/Internet Protocol, can be defined as a set of rules, or protocols, used to exchange data between hardware devices connected to the Internet, including (but not limited to) the client and servers computers. These rules include all the packets exchange mechanism described above, and a set of specific protocols, a few were mentioned above in this discussion, SMTP, FTP, HTTP, DHCP, each designed to allow the exchange a particular kind of data (e-mail, files, web pages, connection information etc..).
TCP/IP is subdivided in “layers”. The above mentioned data exchange protocols “live” in the so-called application layer, the upper layer of TCP/IP (Figure 1-2-5).
The files remounted from the individual packets are passed to the application layer by the transport layer, just underneath (Figure 1-2-5). The transport layer manages, among other things, the fragmentation of the files it receives from the application layer into packets, that are then passed to the Internet layer, and the remounting of packets received from the Internet layer (see Figures 1-2-5 and 1-2-6), to yield files that are passed to the application layer.
Let us follow the path of an hypothetical file (an e-mail message, just as a matter of example) from computer A to computer B (Figure 1-2-6).
The e-mail file in computer A is processed at the application layer by one of the TCP/IP protocols, the Simple Mail Transfer Protocol (SMTP).
The file is then passed down to the Transport layer for the fragmentation in packets. Packets then travel down to the Internet layer and then to the link/physical layer. The physical layer is where the packets physically move, by using ethernet cables, satellites, fibers, wireless systems, depending on what is available between computer A and B. If the computers are in the same room, they might connect through a couple of ethernet cables with a router in between, or maybe wirelessly, if the computer are connected via wireless to the same router. If A and B are far away, the physical transmission mode might well be mixed (ethernet + fiber + wireless for example).
The packet, thanks to the routers, will find the correct route from A to B. It is worth reminding that not all packets will take the same route, as at any given time a particular route among the various available (connections on the Internet are redundant, remember?) might be better that another. A moment later, maybe when the next packet is sent, this might change and the best route will be different. At the end of the transmission, all the packets will be received from the TCP/IP software on computer B.
In computer B, packets will travel up from the physical layer, to the Internet layer and then to the transport layer that re-assembles the packets into the original file, the e-mail that was sent from computer A. The e-mail file can then be passed to the application layer of computer B where it can be handled and processed (most likely with the Post Office Protocol, POP, or the Internet Message Access Protocol, IMAP), so that the user of computer B will be able to read it.
This is of course a simplified scheme where quite a few details were intentionally omitted (did we mention there must be a mail server in between A and B for instance?), with the purpose on concentrating on the generic flow of TCP/IP packets between two computers. The same process description applies to any kind of data that travels from A to B through TCP/IP protocols.
TCP/IP Application Protocols
Here is a non-exhaustive list of Internet application protocols, many names will sound familiar:
* SMTP: Simple Mail Transfer Protocol
* SSH: Secure Shell
* FTP: File Transfer Protocol
* SFTP: Secure File Transfer protocol
* SCP: Secure Copy Protocol
* DHCP: Dynamic Host Configuration protocol
* HTTP: Hyper Text Transfer Protocol
* POP: Post Office Protocol (the version currently in use is 3, POP3)
* IMAP: Internet Message Access Protocol
You can find an exhaustive list and detailed information here