OSI Model - Seven Layers, Functions & PDUs
Layer 7 - Application: HTTP GET request created
Browser generates an HTTP GET request. This is raw application data - the payload that the user actually wants to send. PDU = Data. Protocol: HTTP.
# No code - conceptual layer
# HTTP GET /index.html HTTP/1.1
# Host: www.example.comLayer 6 - Presentation: encode/encrypt data
Presentation layer handles data formatting, encryption (SSL/TLS), and compression. For HTTPS it would encrypt the HTTP data here. PDU still = Data.
# SSL/TLS encryption happens here for HTTPS
# Data encoding: ASCII, UTF-8, JPEG, MPEGLayer 5 - Session: manage connection dialog
Session layer establishes, manages, and terminates sessions between applications. It adds synchronization checkpoints for long transfers and manages dialog control (who speaks when). PDU = Data.
# Session establishment, checkpointing
# NetBIOS, RPC operate hereLayer 4 - Transport: segment into TCP segments, add ports
Transport layer breaks data into segments and adds source/destination port numbers (e.g. src=54321, dst=80 for HTTP). TCP adds sequence numbers for ordering and reliability. PDU changes to Segment.
# TCP segment header:
# src_port=54321, dst_port=80
# seq_num=1, ack_num=0
# flags=SYNLayer 3 - Network: add IP header, create packet
Network layer adds source and destination IP addresses. This is where routing decisions are made - how to get from client IP to server IP across potentially many routers. PDU changes to Packet.
# IP packet header:
# src_ip=192.168.1.10
# dst_ip=93.184.216.34
# TTL=64, protocol=TCPLayer 2 - Data Link: add MAC addresses, create frame
Data Link layer adds source and destination MAC addresses for the local network segment. Also adds a trailer with CRC error-detection code. PDU changes to Frame.
# Ethernet frame:
# dst_mac=AA:BB:CC:11:22:33 (next hop router)
# src_mac=FF:EE:DD:44:55:66 (client NIC)
# + CRC trailer for error detectionLayer 1 - Physical: convert to bits, transmit
Physical layer converts the Frame into electrical signals (copper cable), light pulses (fiber optic), or radio waves (WiFi). These bits travel across the physical medium to the receiver. PDU = Bits.
# Electrical signals on copper wire
# Light pulses on fiber optic
# Radio waves on WiFi (802.11)Receiver Layer 2 - Data Link: check CRC, extract packet
Receiver's Physical layer collects bits and reconstructs the Frame. Data Link layer checks CRC for errors. If valid, strips the Ethernet header and trailer, extracts the IP Packet, passes it up to Network layer.
# Check CRC: if error → drop frame
# Strip Ethernet header + CRC trailer
# Extract IP packet → pass to Layer 3Receiver Layer 3 - Network: read IP, extract segment
Network layer reads the IP header, verifies destination IP matches this host. Strips IP header, extracts TCP Segment, passes up to Transport layer.
# Check dst_ip == my_ip
# Strip IP header
# Extract TCP segment → pass to Layer 4Receiver Layer 4 - Transport: reassemble, deliver to port 80
Transport layer reads TCP header. Checks destination port (80 = HTTP server process). Uses sequence numbers to reassemble multiple segments in order. Sends TCP ACK. Strips TCP header, passes Data up.
# Check dst_port → route to HTTP server process
# Use seq_num to reassemble segments in order
# Send TCP ACK back to sender
# Strip TCP header → extract DataReceiver Layers 5,6,7 - deliver HTTP request to web server
Session layer manages the ongoing connection. Presentation layer decrypts (for HTTPS) and decodes data. Application layer (web server) receives the HTTP GET request and processes it to send back the webpage response.
# Session: maintain dialog context
# Presentation: decrypt TLS, decode format
# Application: HTTP server processes GET /index.html# Python socket = Application/Transport layers
import socket
# Application layer: create HTTP request
request = b'GET /index.html HTTP/1.1\r\nHost: example.com\r\n\r\n'
# Transport + Network layers: handled by OS TCP/IP stack
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # TCP socket
sock.connect(('93.184.216.34', 80)) # OS handles TCP handshake (Layer 4) + IP routing (Layer 3)
# Send: OS encapsulates through L4 (TCP) → L3 (IP) → L2 (Ethernet) → L1 (NIC)
sock.send(request) # Application hands data to Transport layer
# Receive: OS decapsulates from L1 → L2 → L3 → L4 → delivers to socket buffer
response = sock.recv(4096)
print(response.decode()) # Application layer reads the HTTP responseKey Takeaways
Mnemonic bottom-up: Please Do Not Throw Sausage Pizza Away (Physical, Data Link, Network, Transport, Session, Presentation, Application).
The receiver is a mirror of the sender. Every header added on one side is removed on the other.
In interviews, if asked 'what PDU at Layer X', recall: 1=Bits, 2=Frame, 3=Packet, 4=Segment, 5-7=Data.
