Here is my study note of RuanYiFeng’s “Internet Protocol Suite Part I“ blog.
|Physical Layer||NIC, RJ45, Fibre Channel & etc||Connect the devices on the network physically.||?||N/A|
|Link Layer||MAC address||The source device broadcasts the datagrams to the whole network with the target MAC address and its own MAC address in it. The target device compares the target MAC address to its own MAC address. If they're same, it knows it is the target device.||Ethernet Protocol, ARP Protocol(How to get the target devices's MAC address by knowing the target device's IP address)||ethernet_datagram(head(source_mac_address,target_mac_address, ...), data)|
|Network Layer||IP address||Theoretically using MAC can organize a network, but it will be a disaster to broadcasting all the datagrams in a big network(Traffic, security and etc). So for a bigger network(Internet other than LAN), we need the concept of subnet, IP address and router.||Internet Protocol||ethernet_datagram(head(source_mac_address,target_mac_address, ...), ip_datagram(head(version, length, source_ip_address, target_ip_address, ...), data))|
|Transport Layer||PORT number||Handle multiple network applications in one device on the network, by binding different processes to different ports.||UDP, TCP||ethernet_datagram(head(source_mac_address,target_mac_address, ...), ip_datagram(head(version, length, source_ip_address, target_ip_address, ...), udp_datagram(head(source_post, target_port, ...), data)))|
|Application Layer(Including OSI session layer and presentation layer?)||Variable datagrams defined by different protocols.||Make the devices on the network can work together for some specific functionalities.||HTTP, SMTP, POP3, IMAP & etc||Variable format definde by different protocols.|
This is a great article which is very brief, very clear and easy to be understood than any big books in the computer network field. Cool!