On TCP/IP networks each computer is identified with a unique virtual address, called IP address. The Internet layer is in charge of adding a header to the data packet received from the Transport layer where, among other control data, it will add the source IP address and the target IP address – i.e., the IP address of the computer that is sending the data and the IP address of the computer that should receive the data.
The network card of each computer has a physical address assigned to it. This address is written on the network card read-only memory (ROM) and is called MAC address. So on a local area network whenever computer A wants to send data to computer B, it will have to know computer’s B MAC address. While on a small local area network computers can easily discover each other’s MAC address, this isn’t an easy task on a global network like the Internet.
If no virtual addressing were used, you would have to know the MAC address of the destination computer, which is not only a hard task, but also does not help out packet routing, because it does not use a tree-like structure (putting in other words, while using virtual addresses computers on the same network will have sequential addresses, with MAC addresses the computer with the next sequential MAC address to yours may be in Russia).
Routing is the path that a data packet should use in order to arrive at destination. When requesting data from an Internet server, for example, this data passes through several locations (called routers) before arriving at your computer. If you want to see this in action, try this: click on Start, Run, Cmd. Then on the command prompt type in tracert www.google.com. The output will be the path between your computer and Google’s web server. See how the data packet passes through several different routers before arriving at its destination. Each router in the middle of the road is also called hop.
On every network that is connected to the Internet there is a device called router, which makes the bridge between the computers on your local area network and the Internet. Every router has a table with its known networks and also a configuration called default gateway pointing to another router on the Internet. When your computer sends a data packet to the Internet, the router connected to your network first looks if it knows the target computer – in other words, if the target computer is located on the same network or on a network that the router knows the path to. If it doesn’t know, it will send the packet to its default gateway, i.e., to another router. Then the process repeats until the data packet arrives at its destination.
There are several protocols that work on the Internet layer: IP (Internet Protocol), ICMP (Internet Control Message Protocol), ARP (Address Resolution Protocol) and RARP (Reverse Address Resolution Protocol). Data packets are sent using the IP protocol, so that is the protocol we will explain.
IP protocol gets the data packets received from the Transport layer (from TCP protocol if you are transmitting real data like e-mails or files) and divide them into datagrams. Datagram is a packet that does not have any kind acknowledge system, meaning that IP does not implement any acknowledge system, thus it is an unreliable protocol.
You must note that when transferring data TCP protocol will be used on top, and TCP implements an acknowledge system. Thus even though IP protocol does not check whether the datagram arrived at the destination, the TCP protocol will. The connection will be then reliable, even though IP protocol alone isn’t reliable.
Each IP datagram can have a maximum size of 65,535 bytes, including its header, which can use 20 or 24 bytes, depending whether a field called “options” is used or not. Thus IP datagrams can carry up to 65,515 or 65,511 bytes of data. If the data packet received from the Transport layer is bigger than 65,515 or 65,511 bytes, IP protocol will cut the packet down in as many datagrams as necessary.
In Figure 4 we illustrate the datagram generated on the Internet layer by the IP protocol. It is interesting to notice that what the Internet layer sees as “data” is the whole packet it got from the Transport layer, which includes the TCP or UDP header. This datagram will be sent to the Network Interface layer (if we are transmitting data) or was sent from the Network Interface layer (if we are receiving data).
As we mentioned before, the header added by the IP protocol includes the source IP address, the target IP address and several other control information.