Mô Hình Phân Tầng: OSI và TCP/IP
Trước khi đi vào từng giao thức, ta dựng khung tư duy mà cả series dựa vào: mạng được thiết kế thành các tầng (layers). Đây không phải lý thuyết suông — nó là công cụ giúp bạn gỡ lỗi (vấn đề ở tầng nào?) và hiểu vì sao Internet hoạt động được ở quy mô khổng lồ.
Vì sao phải phân tầng
Truyền dữ liệu qua mạng là việc cực phức tạp: tín hiệu điện trên dây, địa chỉ, định tuyến qua hàng chục thiết bị, độ tin cậy, mã hóa, định dạng dữ liệu... Không ai giải quyết tất cả trong một khối.
Giải pháp: chia thành các tầng, mỗi tầng lo một việc và dựa vào dịch vụ của tầng dưới, đồng thời cung cấp dịch vụ cho tầng trên. Tầng trên không cần biết tầng dưới làm thế nào.
Lợi ích cụ thể:
- Trừu tượng hóa: HTTP (tầng ứng dụng) không cần biết gói tin đi qua cáp quang hay wifi. Nó chỉ "nhờ" tầng dưới chuyển dữ liệu.
- Thay thế độc lập: đổi từ wifi sang 5G (tầng dưới) không cần sửa trình duyệt (tầng trên).
- Gỡ lỗi theo tầng: khi có sự cố, bạn hỏi "vấn đề ở tầng nào?" — DNS (ứng dụng)? kết nối TCP (giao vận)? định tuyến (mạng)? — và khoanh vùng nhanh.
Mô hình OSI: 7 tầng
Mô hình tham chiếu OSI chia mạng thành 7 tầng. Đây là mô hình lý thuyết để học và để nói chuyện chung — thực tế Internet chạy theo TCP/IP (mục sau), nhưng dân mạng vẫn hay gọi "lỗi tầng 7", "load balancer tầng 4" theo số tầng OSI.
Tầng Lo việc gì Ví dụ
───────────────────────────────────────────────────────────────────
7 Application dữ liệu cho ứng dụng dùng HTTP, DNS, SSH
6 Presentation định dạng, mã hóa, nén TLS, mã hóa
5 Session quản lý phiên giữa hai bên (ít dùng riêng)
───────────────────────────────────────────────────────────────────
4 Transport kết nối, độ tin cậy, cổng TCP, UDP
3 Network địa chỉ logic, định tuyến giữa mạng IP, ICMP
2 Data Link truyền trong một mạng nội bộ, MAC Ethernet, ARP
1 Physical tín hiệu vật lý trên dây/sóng cáp, wifi, điện
Đọc từ dưới lên: tầng 1 là dây/sóng thật, tầng 7 là dữ liệu ứng dụng. Mỗi tầng trên nhờ tầng ngay dưới. Một số tầng bạn sẽ gặp nhiều trong series:
- Tầng 7 (Application) — nơi HTTP, DNS, SSH sống. Đây là tầng bạn lập trình với nó.
- Tầng 4 (Transport) — TCP/UDP, khái niệm cổng (port) và kết nối (Bài 6).
- Tầng 3 (Network) — IP và định tuyến (Bài 2, 4).
- Tầng 2 (Data Link) — MAC và mạng nội bộ (Bài 3).
Mẹo nhớ "tầng 4 vs tầng 7" rất hữu ích cho DevOps: load balancer tầng 4 phân tải dựa trên IP/cổng (TCP), tầng 7 dựa trên nội dung HTTP (URL, header) — Bài 11. Khi ai đó nói "lỗi tầng 7", họ nói lỗi ở mức ứng dụng/HTTP.
Mô hình TCP/IP: 4 tầng (cái Internet thật sự dùng)
OSI là lý thuyết; Internet thực tế chạy theo mô hình TCP/IP (định nghĩa trong RFC 1122), gọn hơn với 4 tầng. Nó gộp vài tầng OSI lại:
TCP/IP (4 tầng) ~ tương ứng OSI Ví dụ
──────────────────────────────────────────────────────────
Application = OSI 5+6+7 HTTP, DNS, TLS, SSH
Transport = OSI 4 TCP, UDP
Internet = OSI 3 IP, ICMP
Link = OSI 1+2 Ethernet, wifi, ARP
Trong thực tế, người ta dùng lẫn cả hai: nói "tầng 4/tầng 7" theo số OSI, nhưng kiến trúc thật là TCP/IP. Bạn không cần thuộc lòng — chỉ cần nắm ý: dữ liệu đi qua nhiều tầng, mỗi tầng thêm phần việc của nó.
Encapsulation: dữ liệu được "đóng gói" qua từng tầng
Đây là cơ chế cốt lõi nối các tầng. Khi bạn gửi dữ liệu, mỗi tầng từ trên xuống bọc thêm một lớp tiêu đề (header) của riêng nó — gọi là encapsulation (đóng gói):
Gửi đi (xuống các tầng):
Application: [ dữ liệu HTTP ]
Transport (TCP): [ TCP header | dữ liệu HTTP ] → "segment"
Internet (IP): [ IP header | TCP header | dữ liệu ] → "packet"
Link (Ethernet): [ Eth header | IP header | TCP | dữ liệu | Eth trailer ] → "frame"
│
▼ truyền trên dây/sóng (bits)
- Tầng giao vận thêm header TCP (chứa cổng nguồn/đích) → đơn vị gọi là segment.
- Tầng mạng thêm header IP (chứa IP nguồn/đích) → packet.
- Tầng liên kết thêm header Ethernet (chứa MAC) → frame, rồi đẩy ra dây thành bit.
Ở đầu nhận, quá trình diễn ra ngược lại (decapsulation): mỗi tầng bóc header của mình ra, đọc thông tin điều khiển, rồi đưa phần còn lại lên tầng trên. Tới tầng ứng dụng, dữ liệu HTTP nguyên vẹn được giao cho server.
Vì sao điều này quan trọng với bạn: mỗi header chứa thông tin của một tầng, và các công cụ chẩn đoán (như tcpdump ở Bài 12) cho bạn nhìn thấy từng lớp header này. Hiểu encapsulation thì đọc được output của chúng.
Áp dụng vào hành trình ở Bài 0
Nhớ hành trình mở https://example.com ở Bài 0? Giờ đặt nó vào các tầng:
- DNS phân giải tên — tầng ứng dụng (dùng UDP/TCP ở dưới).
- IP của example.com, định tuyến gói tin — tầng mạng (Bài 2, 4).
- TCP mở kết nối tới cổng 443 — tầng giao vận (Bài 6).
- TLS mã hóa — quanh tầng trình bày/ứng dụng (Bài 9).
- HTTP GET trang — tầng ứng dụng (Bài 8).
Mỗi bài sau là đi sâu vào một (vài) tầng. Khi gỡ lỗi thực tế, bạn sẽ tự hỏi "tầng nào?" và biết tìm ở đâu.
Tổng kết
Mạng được chia thành các tầng, mỗi tầng lo một việc và dựa vào tầng dưới — giúp trừu tượng hóa, thay thế độc lập, và gỡ lỗi theo tầng. OSI (7 tầng) là mô hình lý thuyết để học và gọi tên (tầng 4 = giao vận/TCP, tầng 7 = ứng dụng/HTTP); TCP/IP (4 tầng) là cái Internet thật sự chạy. Dữ liệu đi xuống được đóng gói thêm header ở mỗi tầng (segment → packet → frame), và bóc ngược lại ở đầu nhận.
Bài 2 đi vào tầng mạng — thứ định danh mọi thiết bị trên Internet: địa chỉ IP và subnet.