The TCP/IP suite of protocols is what most modern computer networks, including the Internet, are built upon. It can be viewed as a stack of four or five different layers depending on who you ask.
The names of each layer can also vary slightly – for example some people prefer to use the word Network or Internetwork instead of Internet.
At the application communication could be peer to peer (P2P), or more commonly Client to Server. Client server communication will typically be a client requesting something from a server and the server responding with an answer – either the requested resource or an error.
For example a web browser might communicate with a web server over HTTP (Hyper Text Transfer Protocol). The client (web browser) will request a resource using a URL (Uniform Resource Locator) and the server will then return this resource in its response – typically as an HTML (Hyper Text Markup Language) payload.
By far the most common transport layer protocols are TCP (Transmission Control Protocol) and UDP (User Datagram Protocol).
The transport layer is responsible for providing the stream of data carried over the network to the application layer as needed. Some applications will need guarantees that they are receiving all the data, without any errors. For example when browsing the web, it’s important that your browser gets all the information required to render the page even if this results in a short lag to check everything is ok.
Other applications might want a lot of data quickly, but don’t mind if small bits are missing or in the wrong order. For example if making a video call you can probably cope with a few dropped frames but if there is a big delay then it will be a very confusing conversation.
The Transmission Control Protocol provides connection-oriented, reliable communication. This means that a connection is established between the two parties and there is some guarantee that the right data will be delivered to the application layer in the right order. One way this is a achieved is by the receiver sending acknowledgements after data is received – if the sender doesn’t receive an acknowledgement then it knows to resend that data.
The User Datagram Protocol is connectionless and ‘un-reliable’ – there is no guarantee that all the right data will get to the application layer in the right order. In some applications, it might be more important to transfer data quickly than perfectly (such as VOIP).
The network layer is concerned with transporting datagrams, or packets, from A to B. This includes a logical addressing scheme for nodes and packet forwarding to move packets through a series of ‘next hops’ to reach their destination.
The most common Network layer protocol is the Internet Protocol – version 4 is most widespread but the more recent version, 6, is gaining adoption.
Data carried using IP is sent as discrete packets which each have a source address and a destination address. Packets move from hop to hop across networks to reach their destination. The user, and higher layers (such as TCP) don’t need to know the route which will be taken they just need to specify the destination.
A typical analogy for IP is the post system. As a sender, you give your packet – a letter – a destination address and put it in a post-box. From here the post service (like IP) will move the letter various depots on the way to the final destination. Each depot will make a decision on where to forward the letter to next in order to get closer to the address that you wrote on the letter. Neither you, nor the recipient mind too much which route is taken and different letters could potentially take different routes to the same destination.
PPP (Point to Point Protocol)
The link layer is responsible for the physical transmission of bits of data across a network. The exact scope of the Link Layer in TCP/IP is debated. A comprehensive interpretation is that the link layer specifies how electronic signals should be transmitted from A to B (across a cable, a fibre or free space) and the addresses tied to the physical hardware involved.