Network Layers for Software Engineers
Sending messages to another person using web browser or mobile app is not surprisingly easy nowadays and most people don't care how it actually works under the hood. But as software engineers who build applications to send and receive messages, we do need to know some details on how to send/receive messages over the internet.
In the commonly used TCP/IP model, the network communication is divided into four abstract layers: Host-to-Network layer, Internet layer, Transport layer and Application layer. The communication works by each layer only talks to the layer immediately above or below it and it's the last two layers matters most to engineers who build software applications for communication. The pictures below demonstrate the data flow in network data exchange and layers in network and them responsibilities, protocols and how as software engineers should care each layer when design and build software applications.