Skip to main content

Core Internet Protocols

TCP (Transmission Control Protocol)​

Overview​

  • Layer: Transport (Layer 4)
  • Type: Connection-oriented
  • Reliability: Guaranteed delivery
  • Use cases: Web, email, file transfer

Key Features​

  1. Connection-oriented

    • Three-way handshake to establish connection
    • Maintains connection state
  2. Reliable delivery

    • Acknowledgments (ACKs)
    • Retransmission of lost packets
    • Sequence numbers
  3. Ordered delivery

    • Packets delivered in correct order
    • Buffering for reordering
  4. Flow control

    • Prevents sender from overwhelming receiver
    • Sliding window mechanism
  5. Congestion control

    • Detects network congestion
    • Adjusts transmission rate

TCP Three-Way Handshake​

Client                          Server
| |
| 1. SYN (seq=100) |
|----------------------------->|
| |
| 2. SYN-ACK (seq=200, |
| ack=101) |
|<-----------------------------|
| |
| 3. ACK (ack=201) |
|----------------------------->|
| |
| Connection Established |

Steps:

  1. SYN: Client sends synchronize packet
  2. SYN-ACK: Server acknowledges, sends own SYN
  3. ACK: Client acknowledges server's SYN

TCP Connection Termination​

Client                          Server
| 1. FIN |
|----------------------------->|
| 2. ACK |
|<-----------------------------|
| 3. FIN |
|<-----------------------------|
| 4. ACK |
|----------------------------->|

TCP Header​

0                   16                              31
+-----------------+---------------------------------+
| Source Port | Destination Port |
+-----------------+---------------------------------+
| Sequence Number |
+---------------------------------------------------+
| Acknowledgment Number |
+---------------------------------------------------+
| Offset|Reserved|Flags| Window Size |
+---------------------------------------------------+
| Checksum | Urgent Pointer |
+---------------------------------------------------+
| Options |
+---------------------------------------------------+

Key Fields:

  • Sequence Number: Position of data in byte stream
  • Acknowledgment: Next expected byte
  • Flags: SYN, ACK, FIN, RST, PSH, URG
  • Window: Flow control (bytes receiver can accept)

TCP Flags​

  • SYN: Synchronize, establish connection
  • ACK: Acknowledge received data
  • FIN: Finish, close connection
  • RST: Reset connection (error)
  • PSH: Push data immediately
  • URG: Urgent data

UDP (User Datagram Protocol)​

Overview​

  • Layer: Transport (Layer 4)
  • Type: Connectionless
  • Reliability: No guarantees
  • Use cases: DNS, streaming, gaming, VoIP

Key Features​

  1. Connectionless

    • No handshake
    • Just send data
  2. Unreliable

    • No acknowledgments
    • No retransmission
    • Packets may be lost
  3. Unordered

    • No sequence numbers
    • Packets may arrive out of order
  4. Low overhead

    • Minimal header
    • Faster than TCP
  5. No flow control

    • Sender can overwhelm receiver

UDP Header​

0                   16                              31
+-----------------+---------------------------------+
| Source Port | Destination Port |
+-----------------+---------------------------------+
| Length | Checksum |
+-----------------+---------------------------------+
| Data |
+---------------------------------------------------+

Much simpler than TCP!

TCP vs UDP​

FeatureTCPUDP
ConnectionConnection-orientedConnectionless
ReliabilityReliableUnreliable
OrderingOrderedUnordered
SpeedSlowerFaster
OverheadHigherLower
Use caseAccuracy mattersSpeed matters

When to use TCP:

  • Web browsing (HTTP/HTTPS)
  • Email (SMTP, POP3, IMAP)
  • File transfer (FTP, SFTP)
  • Remote shell (SSH)

When to use UDP:

  • Live streaming
  • Online gaming
  • Voice/video calls
  • DNS queries
  • IoT sensors

HTTP (Hypertext Transfer Protocol)​

Overview​

  • Layer: Application (Layer 7)
  • Port: 80 (HTTP), 443 (HTTPS)
  • Transport: TCP
  • Model: Request-response

HTTP Request Structure​

GET /index.html HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0
Accept: text/html
Connection: keep-alive

[Optional body]

Components:

  1. Request Line: Method, path, version
  2. Headers: Metadata
  3. Blank Line: Separator
  4. Body: Optional data

HTTP Methods​

  • GET: Retrieve resource
  • POST: Submit data, create resource
  • PUT: Update/replace resource
  • PATCH: Partial update
  • DELETE: Delete resource
  • HEAD: Like GET but no body
  • OPTIONS: Check available methods
  • CONNECT: Establish tunnel (for proxies)
  • TRACE: Echo request (debugging)

HTTP Status Codes​

1xx: Informational​

  • 100 Continue: Server received headers, send body

2xx: Success​

  • 200 OK: Request succeeded
  • 201 Created: Resource created
  • 204 No Content: Success but no body

3xx: Redirection​

  • 301 Moved Permanently: New URL forever
  • 302 Found: Temporary redirect
  • 304 Not Modified: Use cached version

4xx: Client Error​

  • 400 Bad Request: Invalid syntax
  • 401 Unauthorized: Authentication required
  • 403 Forbidden: No permission
  • 404 Not Found: Resource doesn't exist
  • 429 Too Many Requests: Rate limited

5xx: Server Error​

  • 500 Internal Server Error: Server crashed
  • 502 Bad Gateway: Proxy received invalid response
  • 503 Service Unavailable: Server overloaded
  • 504 Gateway Timeout: Proxy timeout

HTTP Headers​

Request Headers​

Host: www.example.com
User-Agent: Mozilla/5.0
Accept: text/html,application/json
Accept-Language: en-US,en
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Cookie: session=abc123
Authorization: Bearer token123

Response Headers​

Content-Type: text/html; charset=utf-8
Content-Length: 1234
Server: nginx/1.18.0
Date: Mon, 07 Sep 2026 10:00:00 GMT
Cache-Control: max-age=3600
Set-Cookie: session=abc123; HttpOnly; Secure
Location: https://example.com/new-page

HTTP Versions​

HTTP/1.0​

  • One request per connection
  • New connection for each resource

HTTP/1.1​

  • Keep-alive: Reuse connections
  • Pipelining: Multiple requests without waiting
  • Host header: Virtual hosting support

HTTP/2​

  • Binary protocol (vs text in HTTP/1.x)
  • Multiplexing: Multiple streams over one connection
  • Header compression: HPACK
  • Server push: Send resources before requested
  • Stream prioritization

HTTP/3​

  • Uses QUIC (over UDP, not TCP)
  • Faster connection establishment
  • Better performance on lossy networks
  • Built-in encryption

HTTPS (HTTP Secure)​

How HTTPS Works​

  1. TLS Handshake

    • Client connects to server
    • Server presents SSL/TLS certificate
    • Client verifies certificate
    • Negotiate encryption methods
    • Exchange keys
  2. Encrypted Communication

    • All HTTP traffic encrypted
    • Uses symmetric encryption (fast)
    • Keys exchanged via asymmetric encryption (secure)

TLS Handshake (Simplified)​

Client                              Server
| 1. ClientHello |
|----------------------------------->|
| 2. ServerHello, Certificate |
|<-----------------------------------|
| 3. Key Exchange, Finished |
|----------------------------------->|
| 4. Finished |
|<-----------------------------------|
| Encrypted Application Data |
|<----------------------------------->|

SSL/TLS Versions​

  • SSL 2.0 - Deprecated (insecure)
  • SSL 3.0 - Deprecated (insecure)
  • TLS 1.0 - Legacy
  • TLS 1.1 - Legacy
  • TLS 1.2 - Current standard
  • TLS 1.3 - Modern, faster, more secure

Other Important Protocols​

FTP (File Transfer Protocol)​

  • Port: 20 (data), 21 (control)
  • Purpose: File transfer
  • Security: Unencrypted (use SFTP or FTPS)

SSH (Secure Shell)​

  • Port: 22
  • Purpose: Secure remote access
  • Features: Encrypted, authentication

SMTP (Simple Mail Transfer Protocol)​

  • Port: 25, 587, 465
  • Purpose: Sending email
  • See Email section for details

IMAP/POP3​

  • Port: 143/993 (IMAP), 110/995 (POP3)
  • Purpose: Retrieving email

WebSocket​

  • Port: 80 (WS), 443 (WSS)
  • Purpose: Bidirectional communication
  • Use: Real-time apps (chat, gaming)

ICMP (Internet Control Message Protocol)​

  • Layer: Network (Layer 3)
  • Purpose: Error messages, diagnostics
  • Tools: ping, traceroute

Ports​

Port Numbers​

0-1023:        Well-known ports (system)
1024-49151: Registered ports (applications)
49152-65535: Dynamic/private ports

Common Port Numbers​

PortProtocolService
20/21FTPFile Transfer
22SSHSecure Shell
23TelnetRemote Access
25SMTPEmail (Send)
53DNSName Resolution
80HTTPWeb
110POP3Email (Receive)
143IMAPEmail (Access)
443HTTPSSecure Web
587SMTPEmail Submission
993IMAPSSecure IMAP
995POP3SSecure POP3
3306MySQLDatabase
5432PostgreSQLDatabase
6379RedisCache
27017MongoDBDatabase

Socket​

Combination of IP address and port

192.168.1.10:8080

Identifies a specific endpoint for communication

Useful Commands​

Check open ports​

# Linux/Mac
netstat -tuln
ss -tuln
lsof -i

# Windows
netstat -an

Test TCP connection​

telnet example.com 80
nc -zv example.com 80

Capture packets​

# tcpdump
sudo tcpdump -i eth0 port 80

# Wireshark (GUI)
# Filter: tcp.port == 80

Test HTTP​

curl -v https://example.com
wget -O- https://example.com

# Test specific HTTP method
curl -X POST https://api.example.com/data