Hành trình của một gói tin trên Internet: Từ máy tính đến đích

Giao thức TCP/IP là nền tảng cho mọi kết nối trên mạng Internet, từ mạng LAN/WAN đến các tương tác Client-Server. Bài viết này sẽ giúp bạn hiểu rõ cách một gói tin được tạo ra và truyền đi trên mạng, khám phá sâu hơn về TCP/IP, các tầng của nó, cũng như TCP, UDP và IP.

Tại máy tính của bạn

Lớp Application (Ứng dụng)

Lớp Application là giao diện trực tiếp giữa người dùng và mạng. Tại đây, dữ liệu và yêu cầu từ người dùng được định dạng và đóng gói thành một khối dữ liệu lớn.

Ví dụ: Khi bạn nhập địa chỉ một trang web vào trình duyệt, một yêu cầu HTTP GET sẽ được tạo ra dựa trên thông tin bạn cung cấp.

Lớp Transport (Giao vận)

Ở lớp Transport, dữ liệu lớn được chia nhỏ thành các khối dữ liệu có kích thước phù hợp, sau đó đóng gói lại. Một header được thêm vào để theo dõi luồng dữ liệu và đảm bảo tập hợp dữ liệu chính xác tại máy đích. Những gói tin nhỏ này được gọi là Segment.

Mỗi host có thể chạy nhiều ứng dụng và dịch vụ đồng thời. Để đảm bảo dữ liệu được chuyển chính xác đến đúng ứng dụng, lớp Transport gán cho mỗi ứng dụng một định danh duy nhất gọi là port number. Mọi ứng dụng muốn truy cập mạng đều cần một port number, và port number này là duy nhất trên mỗi host. Một số port number thông dụng:

  • HTTP: 80
  • FTP: 21
  • DNS: 53
  • SMTP: 25

Tùy thuộc vào yêu cầu về độ tin cậy của ứng dụng, lớp Transport sẽ sử dụng giao thức TCP hoặc UDP:

  • TCP (Transmission Control Protocol): Giao thức đáng tin cậy, đảm bảo tất cả dữ liệu được chuyển đến đích đầy đủ và chính xác. TCP sử dụng cơ chế bắt tay ba bước (three-way handshake) và cơ chế báo nhận (acknowledgement) để đảm bảo độ tin cậy.
  • UDP (User Datagram Protocol): Giao thức đơn giản, không cung cấp cơ chế đảm bảo độ tin cậy. UDP thường được sử dụng cho các ứng dụng yêu cầu tốc độ cao hơn độ tin cậy, chẳng hạn như streaming video hoặc game online.

Lớp Network (Mạng)

Tại lớp Network, các Segment từ lớp Transport được đóng gói thêm một header gọi là IP Header. IP Header chứa hai thông tin quan trọng: địa chỉ Source IP (IP nguồn) và địa chỉ Destination IP (IP đích). Các gói tin ở lớp này được gọi là Datagram.

Địa chỉ Source IP là địa chỉ IP của máy gửi. Địa chỉ này có thể được cấu hình thủ công hoặc được cấp phát tự động thông qua giao thức DHCP (Dynamic Host Configuration Protocol). DHCP hoạt động bằng cách một DHCP server (thường được cài đặt trên router) sẽ cấp phát một địa chỉ IP còn trống từ một “pool” các địa chỉ IP cho DHCP client (máy tính cần cấp phát địa chỉ IP). DHCP là giao thức thuộc lớp Application.

Địa chỉ Destination IP có thể được nhập trực tiếp hoặc được xác định thông qua giao thức DNS (Domain Name System). Ví dụ: thay vì nhập sentayho.com.vn, bạn có thể nhập trực tiếp địa chỉ IP http://118.69.249.158/ vào trình duyệt. Nếu máy tính không biết chính xác địa chỉ IP cần gửi tới, nó sẽ tìm kiếm trong DNS cache, nơi lưu trữ thông tin về các địa chỉ đã truy cập trước đó. Bạn có thể xem thông tin DNS Cache bằng lệnh ipconfig /displaydns trong Command Prompt.

Nếu không tìm thấy IP tương ứng với tên miền cần tìm, một DNS Request sẽ được gửi tới DNS server để xử lý. DNS server sẽ phản hồi những thông tin cần thiết để máy tính sử dụng, và thông tin này sẽ được lưu vào DNS cache để sử dụng cho các lần sau. Quá trình này đảm bảo rằng bạn có thể truy cập các trang web bằng tên miền dễ nhớ thay vì phải nhớ các địa chỉ IP phức tạp.

Lớp Data Link (Liên kết dữ liệu) và Physical (Vật lý)

Để một gói tin có thể được gửi đến đích, cần có thêm một loại địa chỉ nữa: địa chỉ MAC (Media Access Control) hay địa chỉ vật lý. Địa chỉ MAC là duy nhất cho mỗi thiết bị mạng. Một header nữa được thêm vào Datagram, chứa hai thông tin chính: Source MAC (MAC nguồn) và Destination MAC (MAC đích). Các gói tin ở lớp này được gọi là Frame.

Source MAC là địa chỉ MAC của máy gửi. Bạn có thể kiểm tra địa chỉ MAC của máy tính bằng lệnh getmac trong Command Prompt.

Để xác định Destination MAC dựa trên Destination IP, máy tính sẽ tự động tìm kiếm trong ARP cache (Address Resolution Protocol cache). Bạn có thể xem thông tin ARP cache bằng lệnh arp -a trong Command Prompt.

Nếu không tìm thấy Destination MAC tương ứng với Destination IP, máy tính sẽ sử dụng giao thức ARP. Một gói tin ARP Request chứa Destination IP sẽ được gửi broadcast đến tất cả các máy trong mạng chứa máy nguồn. Các trường hợp có thể xảy ra:

  • Nếu Destination IP là địa chỉ IP cục bộ của mạng đó, máy tính mang địa chỉ IP này sẽ trả lời bằng địa chỉ MAC của nó cho máy gửi ARP Request. Vậy Destination MAC ở đây chính là địa chỉ MAC của máy tính cùng mạng với máy gửi.
  • Nếu Destination IP là địa chỉ IP của mạng khác, router chứa mạng này sẽ phát hiện ra điều đó và trả lời bằng địa chỉ MAC của router. Vậy Destination MAC ở đây sẽ là địa chỉ MAC của router.
  • Nếu Destination IP là địa chỉ IP của mạng khác và địa chỉ Default Gateway cũng như Subnetmask đã được đặt, máy tính sẽ sử dụng thông tin này để xác định Gateway và gửi gói tin đến đó. Destination MAC ở đây sẽ là địa chỉ của Gateway, thường là một router.

Destination MAC sau khi được xác định sẽ được lưu lại vào ARP Cache cho lần sử dụng tiếp theo.

Sau khi xác định đầy đủ địa chỉ Source MAC và Destination MAC, Frame sẽ được đưa xuống lớp Physical, được mã hóa và chuyển đổi thành các tín hiệu vật lý thích hợp để truyền đi trên đường truyền.

Trên đường truyền

Tại Switch

Các máy tính trong cùng một mạng thường được kết nối thông qua Switch. Frame sẽ đến một port của Switch và được đặt trong một hàng đợi. Switch sẽ ưu tiên xử lý các frame quan trọng trước dựa trên mức độ ưu tiên được gán cho mỗi frame.

Switch sẽ mở gói tin và đọc địa chỉ Source MAC, sau đó lưu vào MAC Address table. MAC Address table lưu trữ thông tin về số port và địa chỉ MAC kết nối trực tiếp với port đó. Tiếp theo, Switch đọc Destination MAC của gói tin và so sánh với MAC Address table:

  • Nếu Destination MAC là địa chỉ tồn tại trong MAC Address table, Switch sẽ gửi gói tin qua port tương ứng.
  • Nếu Destination MAC là địa chỉ không tồn tại trong MAC Address table hoặc là địa chỉ Broadcast, Switch sẽ gửi gói tin ra tất cả các port trừ cổng nhận vào.
  • Nếu Destination MAC trùng với Source MAC, Frame sẽ bị loại bỏ (drop) – không gửi ra bất kỳ port nào.

Nếu máy nhận nằm trong cùng một mạng với máy gửi, Frame có thể được chuyển đến đích chỉ thông qua Switch. Nếu máy nhận nằm ở mạng khác, Frame sẽ được chuyển tiếp đến Router để xử lý.

Tại Router

Đầu tiên, Router sẽ gỡ bỏ header của lớp Data Link (bao gồm Source MAC và Destination MAC). Tiếp theo, Router đọc thông tin lớp Network (bao gồm Source IP và Destination IP).

Router sử dụng Destination IP và so sánh với Routing Table. Routing Table chứa danh sách các đường đi (route) được sử dụng để chuyển gói tin và interface đầu ra tương ứng. Các đường đi này có thể được cấu hình tĩnh bởi người quản trị hoặc được thêm vào thông qua các giao thức định tuyến động như OSPF, EIGRP, RIP, IS-IS. Các giao thức định tuyến này giúp tìm ra đường đi ngắn nhất đến mạng đích và lưu vào Routing Table.

Nếu không tìm thấy đường đi nào tương ứng với địa chỉ mạng của Destination IP hoặc trường TTL (Time To Live) trong IP Header (giảm dần qua mỗi router, dùng để tránh trường hợp gói tin bị loop vô tận) bằng 0, gói tin sẽ bị loại bỏ và Router gửi thông báo “Destination host unreachable” ngược lại cho máy gửi.

Nếu tìm được đường đi tương ứng với địa chỉ mạng của Destination IP, Router thêm lại header chứa Source MAC (địa chỉ MAC của interface tương ứng với đường đi tìm được) và Destination MAC (địa chỉ MAC của interface Router tiếp theo). Trong suốt quá trình gửi đi, Source IP và Destination IP luôn được giữ nguyên (trừ trường hợp sử dụng NAT, VPN), còn Source MAC và Destination MAC sẽ thay đổi mỗi khi qua Router.

Quá trình này sẽ được lặp lại cho đến khi Router phát hiện ra Destination IP nằm chung mạng với một Interface của Router. Khi đó, Router sẽ sử dụng giao thức ARP để xác định địa chỉ MAC của máy đích và dùng nó làm Destination MAC để gửi gói tin đến máy đích.

Tài liệu tham khảo: