Sobes.tech
Middle

Tell me about the transport layer of the TCP/IP model.

sobes.tech AI

Answer from AI

The TCP/IP transport layer provides communication between processes running on different hosts. Main tasks:

  • Identification of applications/processes on the host (via ports).
  • Providing data delivery services:
    • Reliable, ordered delivery (TCP).
    • Unreliable, best-effort delivery (UDP).

Two main protocols:

  • Transmission Control Protocol (TCP):
    • Connection-oriented.
    • Guarantees delivery of packets, maintains order, flow control, and congestion control.
    • Used for applications requiring reliable transmission (HTTP, FTP, SMTP).
  • User Datagram Protocol (UDP):
    • Connectionless.
    • Does not guarantee delivery, order, or flow control.
    • Low latency, suitable for time-sensitive applications where some data loss is acceptable (DNS, VoIP, streaming video).

TCP segments include fields for: source/destination ports, sequence numbers, acknowledgment numbers, flags (SYN, ACK, FIN), checksum.

UDP datagrams include fields for: source/destination ports, length, checksum.

Ports: 16-bit numbers used for multiplexing/demultiplexing data between processes.

  • Well-known ports (0-1023): Reserved for standard services (80 for HTTP, 443 for HTTPS, 22 for SSH).
  • Registered ports (1024-49151): Used for private applications registered with IANA.
  • Dynamic/private ports (49152-65535): Used by clients for outgoing connections.

Example of establishing a TCP connection (Three-way Handshake):

  1. Client sends a segment with SYN flag and initial sequence number.
  2. Server receives SYN, responds with a segment with SYN and ACK flags, its initial sequence number, and acknowledgment number equal to client_seq + 1.
  3. Client receives SYN+ACK, responds with a segment with ACK flag and acknowledgment number equal to server_seq + 1. Connection is established.
// Example of TCP header structure (simplified)
struct tcp_header {
    unsigned short src_port;       // Source port
    unsigned short dest_port;      // Destination port
    unsigned int   seq_num;        // Sequence number
    unsigned int   ack_num;        // Acknowledgment number
    unsigned short flags;          // Flags (SYN, ACK, FIN, etc.)
    // other fields...
};
// Example of UDP header structure (simplified)
struct udp_header {
    unsigned short src_port;       // Source port
    unsigned short dest_port;      // Destination port
    unsigned short length;         // Length of UDP datagram
    unsigned short checksum;       // Checksum
};