Mục lục

Mô hình OSI & TCP/IP: Ngôn ngữ của Internet

Hiểu sâu về các tầng mạng (Layers). Sự khác biệt giữa TCP vs UDP. Tại sao Video Streaming dùng UDP còn Web dùng TCP?

Để xây dựng các ứng dụng Realtime (Chat, Game) hay Streaming, bạn không thể chỉ biết HTTP. Bạn cần hiểu tầng Transport bên dưới.

1. Mô hình OSI 7 Lớp (Tóm tắt thực tế)

Mặc dù lý thuyết có 7 lớp, nhưng Web Developer thường quan tâm 4 lớp trên cùng (Mô hình TCP/IP):

  1. Application Layer (Lớp 7): HTTP, WebSocket, FTP, SSH. (Nơi Browser/App nói chuyện).
  2. Transport Layer (Lớp 4): TCP, UDP. (Chịu trách nhiệm vận chuyển gói tin).
  3. Network Layer (Lớp 3): IP, Routing. (Định chỉ đường đi).
  4. Physical/Data Link: Wifi, Cáp quang, Ethernet.

2. Cuộc chiến TCP vs UDP

TCP (Transmission Control Protocol)

Đặc điểm: "Chậm mà chắc".

  • Reliable: Đảm bảo gói tin đến nơi, đúng thứ tự, không mất mát.
  • Connection-oriented: Phải bắt tay (Handshake) trước.
  • Dùng cho: Web (HTTP), Email, File Transfer, Database.
  • Cơ chế: Nếu mất gói tin, TCP tự động gửi lại (Retransmit). Điều này gây ra độ trễ (Latency).

UDP (User Datagram Protocol)

Đặc điểm: "Nhanh nhưng ẩu".

  • Unreliable: Gửi là gửi, không quan tâm đến chưa. Mất thì thôi.
  • Connectionless: Bắn dữ liệu ngay lập tức.
  • Dùng cho: Video Call, Online Gaming, Live Streaming.
  • Tại sao? Trong video call, nếu mất 1 frame hình, thà bỏ qua frame đó để hiển thị frame tiếp theo realtime, còn hơn là dừng hình chờ gửi lại frame cũ (gây lag/giật).

3. HTTP: Giao thức của Web

HTTP/1.1

  • Protocol dạng text.
  • Mỗi request cần 1 kết nối TCP (hoặc Keep-alive).
  • Vấn đề: Head-of-Line Blocking (Request đầu chặn request sau).

HTTP/2 (2015)

  • Binary protocol (nhẹ hơn text).
  • Multiplexing: Gửi nhiều request song song trên cùng 1 kết nối TCP.
  • Server Push.

HTTP/3 (QUIC)

  • Chạy trên nền UDP (thay vì TCP).
  • Giải quyết vấn đề Head-of-Line Blocking ở tầng TCP.
  • Tốc độ kết nối cực nhanh (Zero RTT).
  • Được dùng bởi Google, Facebook, Youtube.

4. WebSockets vs Long Polling

Khi làm ứng dụng Chat:

Kỹ thuậtCơ chếƯu điểmNhược điểm
Short PollingClient hỏi Server mỗi 2 giây: "Có tin mới ko?"Dễ code.Tốn tài nguyên, Server quá tải.
Long PollingClient hỏi, Server "treo" đó đến khi có tin mới thì trả lời.Đỡ tốn hơn Short Polling.Vẫn tạo nhiều kết nối HTTP.
WebSocketMở một "đường ống" 2 chiều (TCP). Giữ kết nối liên tục.Realtime thật sự, header nhỏ.Stateful (Khó scale load balancer).
Server-Sent Events (SSE)1 chiều từ Server -> Client (như Radio).Dùng HTTP/2, auto reconnect.Chỉ 1 chiều (Không chat 2 chiều đươc).

Kết luận

  • Web thường: Dùng HTTP/2 hoặc HTTP/3.
  • Chat/Game: Dùng WebSocket.
  • Video Call: Dùng WebRTC (Nền tảng UDP).
Quảng cáo
mdhorizontal