Thay vì học vẹt hàng chục định nghĩa mạng rời rạc, bài viết này cùng mọi người đi theo hành trình của một request thực tế trên ứng dụng gọi xe "Ride Now". Từ lúc khách bấm đặt xe đến khi theo dõi tài xế di chuyển real-time trên bản đồ, chúng ta sẽ nắm gọn 18 khái niệm cốt lõi: IP Address (IPv4/IPv6, Public/Private IP), DNS, Ports, MAC Address, ARP, Routing, NAT, Subnetting, DHCP, TCP & 3-Way Handshake, HTTPS/TLS, HTTP, Load Balancer, Reverse Proxy, Firewall, WebSockets, UDP và mô hình OSI.
=============================
Chào mọi người, chắc hẳn anh chị em làm việc với Distributed Systems đều từng gặp cảnh code chạy ngon, database đang up, credentials chuẩn chỉnh nhưng app lại báo Connection Timeout mà không biết cái request đã "bốc hơi" ở đoạn nào.
Networking khó không phải vì nó phức tạp, mà vì chúng ta hay học từng khái niệm một cách rời rạc. Cách dễ hiểu nhất là bám theo hành trình của một request duy nhất để thấy tại sao từng thành phần mạng lại xuất hiện. Cùng mình theo dõi hành trình khi một hành khách bấm nút "Request Ride" trên ứng dụng gọi xe Ride Now để xem chuyện gì thực sự diễn ra bên dưới nhé.



=============================
Chào mọi người, chắc hẳn anh chị em làm việc với Distributed Systems đều từng gặp cảnh code chạy ngon, database đang up, credentials chuẩn chỉnh nhưng app lại báo Connection Timeout mà không biết cái request đã "bốc hơi" ở đoạn nào.
Networking khó không phải vì nó phức tạp, mà vì chúng ta hay học từng khái niệm một cách rời rạc. Cách dễ hiểu nhất là bám theo hành trình của một request duy nhất để thấy tại sao từng thành phần mạng lại xuất hiện. Cùng mình theo dõi hành trình khi một hành khách bấm nút "Request Ride" trên ứng dụng gọi xe Ride Now để xem chuyện gì thực sự diễn ra bên dưới nhé.
Giai đoạn 1: Xác định địa chỉ và bước chân ra khỏi mạng nội bộ
- IP Address (IPv4 & IPv6): Để điện thoại gửi dữ liệu đến máy chủ, mạng cần địa chỉ để định danh vị trí thiết bị. IPv4 dùng 32-bit (khoảng 4 tỷ địa chỉ) đang dần cạn kiệt vì số lượng thiết bị kết nối tăng vọt, nên IPv6 với không gian 128-bit khổng lồ ra đời để thay thế. Lưu ý là IP chỉ là vị trí hiện tại chứ không cố định: bạn bắt Wi-Fi ở nhà có IP khác, bật 4G ngoài đường sẽ có IP khác.
- Private IP & Public IP: Điện thoại bắt Wi-Fi ở nhà sẽ nhận Private IP (chỉ giao tiếp được trong mạng LAN nội bộ, ngoài Internet không thể gọi trực tiếp vào). Ngược lại, Public IP dùng để định danh trên toàn bộ Internet. Trong hệ thống Ride Now, các cổng đón traffic sẽ cần Public IP, còn Database nhạy cảm sẽ giấu kín bằng Private IP.
- DNS (Domain Name System): Điện thoại không thể nhớ IP của server mà gọi qua tên miền. DNS giúp dịch Hostname thành địa chỉ IP, kết quả được lưu vào cache theo thời gian TTL (Time To Live) để không phải hỏi lại từ đầu mỗi lần gửi request.
- Ports: Biết IP là tìm được đúng máy chủ, nhưng trên máy đó chạy cả Web App, Database và nhiều dịch vụ khác. Port giúp mạng biết chính xác ứng dụng nào cần nhận dữ liệu. Lỗi kinh điển của anh chị em Dev là app vẫn up nhưng gọi từ máy khác bị từ chối kết nối, thường do app chỉ đang listen ở localhost trên port đó thay vì mở ra nhận kết nối từ mạng ngoài.
- MAC Address & ARP: Trong mạng nội bộ (Wi-Fi nhà khách), các thiết bị giao tiếp ở tầng dưới bằng MAC Address (gắn với Network Interface) chứ không chỉ dùng IP. Khi điện thoại biết IP đích (như IP của Router) nhưng chưa biết MAC Address tương ứng, nó sẽ dùng giao thức ARP để hỏi toàn mạng nội bộ xem ai giữ IP này và lưu kết quả trả về vào cache.
- Routing & NAT: Từ Router nhà khách hàng đến hạ tầng Ride Now phải đi qua hàng chục mạng trung gian. Các cục Router dọc đường sẽ nhìn vào IP đích để quyết định trạm tiếp theo (Routing) – đây là nơi hay gây ra latency hoặc packet loss dù server của bạn vẫn rất khỏe. Đồng thời, vì điện thoại đang dùng Private IP không thể đi thẳng ra Internet, cục Router sẽ dùng NAT (Network Address Translation) để dịch Private IP đó sang Public IP của nhà mạng khi đi ra, và ghi nhớ kết nối để trả response về đúng chiếc điện thoại bên trong. Trên Cloud, NAT cũng giúp các Private Server gọi ra ngoài tải bản cập nhật mà không bị lộ diện trước Internet.
Giai đoạn 2: Tổ chức hạ tầng mạng phía Server
- Subnetting: Hạ tầng Production của Ride Now không thể gom chung tất cả máy chủ vào một mạng phẳng. Chúng ta dùng Subnetting để chia mạng lớn thành các vùng nhỏ (Subnets) có ranh giới: vùng nhận traffic ngoài, vùng chạy Application Services, và vùng cô lập cho Database.
- DHCP (và sự khác biệt giữa Mạng truyền thống, Cloud, Container): Khi một thiết bị hoặc máy chủ mới tham gia vào mạng, làm sao nó có được IP, Gateway và DNS Server mà không cần cấu hình thủ công?
- Ở mạng vật lý truyền thống (như lúc điện thoại bắt Wi-Fi hoặc server vật lý cắm dây mạng), giao thức DHCP sẽ tự động cấp phát toàn bộ các thông số này. Tuy nhiên, anh chị em làm Backend/DevOps cần lưu ý sự khác biệt ở các môi trường hiện đại để tránh nhầm lẫn:
- Trên Cloud (như AWS VPC): Control Plane của Cloud sẽ tự gán trước IP cho máy ảo từ dải CIDR của Subnet, sau đó mới dùng cơ chế DHCP (DHCP Option Sets) để đẩy cấu hình mạng và IP đó xuống cho hệ điều hành của máy ảo.
- Trên môi trường Container (như Kubernetes): Mỗi Pod được cấp IP trực tiếp bởi CNI (Container Network Interface) thông qua cơ chế IPAM (IP Address Management) chứ không sử dụng giao thức DHCP truyền thống.
Giai đoạn 3: Thiết lập kết nối tin cậy và bảo mật
- TCP & TCP 3-Way Handshake: Yêu cầu đặt xe không được phép mất dữ liệu hay sai thứ tự. Giao thức TCP đảm bảo truyền dữ liệu tin cậy (nếu rớt gói tin sẽ truyền lại) và kiểm soát tắc nghẽn (congestion/flow control). Trước khi truyền dữ liệu, hai bên phải thiết lập kết nối qua bước bắt tay TCP 3-Way Handshake (Client gửi SYN, Server đáp SYN-ACK, Client chốt ACK). Vì bước này tốn chi phí thời gian (overhead), các ứng dụng thực tế thường tái sử dụng kết nối (Connection Reuse) thay vì tạo mới cho mỗi request nhỏ.
- HTTPS / TLS & HTTP: Dữ liệu đặt xe chứa thông tin cá nhân, vị trí và thanh toán nên không thể gửi dạng plain text. TLS được bọc lên trên TCP để tạo thành HTTPS, cung cấp 3 thứ: Mã hóa (Encryption), Toàn vẹn dữ liệu (Integrity) và Xác thực server qua Certificates (Authentication). Khi đường truyền đã an toàn, giao thức HTTP mới chính thức gửi Request chứa thông tin đặt xe lên Backend và nhận về Response.
Giai đoạn 4: Chịu tải, điều hướng và bảo vệ ở quy mô lớn
- Load Balancer & Reverse Proxy: Khi có hàng triệu khách đặt xe cùng lúc, một Load Balancer sẽ đứng trước nhiều Application Servers để chia đều tải vào các máy đang khỏe mạnh (healthy), đảm bảo cả khả năng mở rộng (Scalability) lẫn tính sẵn sàng (Availability). Đi cùng nó là Reverse Proxy đóng vai trò trung gian giúp che giấu cấu trúc Microservices bên trong (điều hướng request về đúng Passenger Service, Driver Service hay Trip Service), đồng thời gánh luôn việc giải mã TLS (TLS Termination), nén dữ liệu và caching.
- Firewalls: Có đường vào không có nghĩa là ai cũng được đi qua. Firewall (hoặc Security Groups, Network Policies trên Cloud/Container) kiểm soát luồng traffic nào được phép và luồng nào bị chặn (ví dụ: chỉ Application Service mới được gọi vào Database, chặn mọi kết nối trực tiếp từ Internet). Khi bạn debug lỗi Connection Timeout, đừng chỉ nhìn vào code, rất có thể Firewall đang chặn gói tin ở giữa.
Giai đoạn 5: Tương tác thời gian thực (Real-time)
- WebSockets: Khi tài xế nhận chuyến, khách cần thấy xe di chuyển liên tục trên bản đồ. Nếu polling HTTP mỗi vài giây, mỗi lần hỏi đều tốn header, có thể tốn cả handshake, trong khi phần lớn response không có gì mới. Nhân với hàng trăm nghìn client thì rất lãng phí. WebSocket mở một kênh hai chiều bền vững: server push tọa độ mới xuống khách ngay khi có, còn app tài xế cũng gửi vị trí lên qua cùng kênh. Đổi lại, server trở thành stateful nên việc scale ngang cần thêm pub/sub (như Redis) để định tuyến message và cơ chế heartbeat/reconnect khi mạng chập chờn.
- UDP: Không phải lúc nào cũng cần sự đảm bảo tuyệt đối của TCP. Với các tác vụ cần tốc độ cực nhanh và độ trễ thấp (low latency) như gọi thoại, streaming, gaming hoặc truy vấn DNS nhỏ gọn, UDP sẽ được chọn. Nó bỏ qua việc bắt tay và không truyền lại gói tin bị rớt để ưu tiên gửi dữ liệu mới nhất nhanh nhất có thể.
Tổng kết với Mô hình OSI (OSI Model)
Thay vì học thuộc lòng 7 tầng OSI chỉ để đi phỏng vấn, hãy dùng nó như một bản đồ tư duy để khoanh vùng lỗi từ dưới lên trên khi hệ thống mất kết nối:- Mạng nội bộ có thông không? (MAC, ARP)
- Có định tuyến tới được mạng đích không? (IP, Routing, NAT, Subnet)
- Kết nối truyền tải có mở đúng port, bắt tay được không hay bị Firewall chặn? (TCP, UDP, Ports, Firewall)
- Lớp mã hóa và chứng chỉ có hợp lệ không? (TLS/HTTPS)
- Request ứng dụng gửi lên có đúng định dạng không? (HTTP, DNS, WebSockets)


