Các gói tin được truyền như thế nào trong mạng máy tính?

Các gói tin được truyền như thế nào trong mạng máy tính?
4.5/5 - (13 bình chọn)

Các gói tin được truyền như thế nào trong mạng máy tính? Các bước để Router thực hiện gửi gói tin ở trong mạng như thế nào? Thứ tự thành phần gói tin là gì? Cấu trúc gói tin TCP như thế nào? tham khảo những kiến thức quan trọng về hành trình của 1 gói tin trong bài viết sau đây.

Lưu ý: để có thể hiểu được toàn diện nội dung bài viết, bạn nên tìm hiểu trước về mô hình OSI 7 lớp.

Gói tin là gì?

Gói tin (packet) là một thuật ngữ đầu tiên được đặt ra bởi Donald Davies trong năm 1965. Nó được sử dụng để mô tả một phân đoạn dữ liệu được gửi từ máy tính hoặc thiết bị này sang máy tính hoặc thiết bị khác qua mạng. Bạn có thể coi nó như một gói chứa đầy dữ liệu đang được chuyển đến một khu vực khác. Gói được sử dụng vì nó chia dữ liệu thành các “phần” dễ quản lý hơn, giúp di chuyển thông tin hiệu quả hơn và giữ cho tài nguyên mạng không bị ràng buộc bởi một tệp lớn hơn. Một tên khác của gói tin là datagram (UDP).

Dữ liệu tệp flowers.jpg được chia nhỏ thành các gói tin (packet)
Dữ liệu tệp flowers.jpg được chia nhỏ thành các gói tin (packet)

Có gì trong một gói tin?

Một gói tin có chứa nguồn, đích, dữ liệu, kích thước và các thông tin hữu ích khác giúp gói đến vị trí thích hợp và được tập hợp lại đúng cách.

Cấu trúc của một gói tin TCP
Cấu trúc của một gói tin TCP

Các gói tin được truyền như thế nào trong mạng máy tính?

  • Một gói tin được truyền đi giữa các máy tính trong mạng LAN/WAN hay giữa Client-Server trên mạng Internet là nhờ vào bộ giao thức TCP/IP. Đọc các bước dưới đây để hiểu hơn về quá trình gói tin được gửi và nhận như thế nào.
  • Dữ liệu được truyền qua Internet được gửi dưới dạng một hoặc nhiều gói. Gói phổ biến nhất được gửi là gói TCP.
  • Kích thước của một gói có giới hạn, vì vậy hầu hết dữ liệu được gửi qua mạng được chia thành nhiều gói nhỏ trước khi được gửi đi và sau đó được gộp lại với nhau khi nhận được.
  • Khi một gói được truyền qua mạng, các bộ định tuyến và chuyển mạch mạng sẽ kiểm tra gói và nguồn của nó để giúp hướng nó đến vị trí chính xác.
  • Trong quá trình truyền, các gói mạng có thể bị rớt. Nếu một gói tin không được nhận hoặc xảy ra lỗi, nó sẽ được gửi lại.

Tại máy tính

Lớp Application

Lớp Application là lớp gần nhất và tương tác với người dùng, cung cấp các giao thức sử dụng để gửi dữ liệu. Ở đây, lớp Application cung cấp dịch vụ, giao thức mà người dùng sử dụng để tương tác, chứng thực và sử dụng giao thức phù hợp với mục đích người dùng. Dữ liệu tại đây sẽ được đóng gói, định dạng theo giao thức sử dụng và mã hoá nếu yêu cầu.

Lớp Application
Lớp Application

Ví dụ:

Khi nhập địa chỉ một trang web vào trình duyệt, thì một request HTTP GET sẽ được tạo ra, dựa trên những thông tin mà người dùng nhập.

Khi gửi email thì dữ liệu sẽ được đóng gói với các thông tin như người nhận, email người nhận, nội dung mail…

Lớp Transport

Tại lớp Transport, dữ liệu sẽ được phân đoạn, các phần phân đoạn được đóng gói với một header, header được thêm vào để xác định thông tin như port nguồn, port đích, thông tin kiểm lỗi, đánh dấu thứ tự… tất cả để máy đích khi nhận được sẽ ghép lại thành một khối dữ liệu hoàn chỉnh. Các phần phân đoạn này được gọi là segment nếu dùng TCP hoặc diagram nếu dùng UDP.

Lớp Transport
Lớp Transport

Vì có rất nhiều ứng dụng chạy trên host, nên để chuyển chính xác dữ liệu cho các ứng dụng thì đây là nhiệm vụ của port trong header của lớp này. Mọi ứng dụng muốn truy cập mạng đều phải thông qua port, port của từng ứng dụng phải mang giá trị duy nhất trên host đó.

Ví dụ một số port mạng thông dụng:

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

Tùy theo ứng dụng khác nhau, yêu cầu độ tin cậy khác nhau, lớp Transport sử dụng giao thức TCP hay UDP cho phù hợp:

TCP: là giao thức tin cậy, đảm bảo cho tất vả dữ liệu đều được chuyển tới đích đúng và đủ. Dùng cho các tác vụ yêu cầu sự chính xác và đảm bảo dữ liệu.

UDP: là giao thức đơn giản, không tin cậy. Dùng cho các việc cần độ trễ thấp như streaming, game…

Lớp Network

Tại đây, các segment sẽ được gắn thêm một header gọi là IP Header, bao gồm hai thông tin chính là địa chỉ Source IP và Destination IP. Các gói tin bây giờ được gọi là packet. Source IP là địa chỉ IP của máy gửi, địa chỉ này có thể được đặt bởi người dùng hay được cấp phát động qua giao thức DHCP. Destination IP là địa chỉ IP của máy đích, địa chỉ là có thể được cài đặt trực tiếp hoặc xác định bởi DNS.

Lớp Network
Lớp Network

DNS là hệ thống phân giải tên miền, khi máy tính truy cập vào một ứng dụng mạng thông qua tên miền thì DNS sẽ truy vấn tên miền đó và trả về địa chỉ IP của máy chủ đó và đồng thời máy tính sẽ lưu lại thông tin máy chủ này, thông tin được lưu lại gọi là DNS Cache. Để truy vấn nhanh hơn thì đầu tiên máy tính sẽ truy vấn trong DNS Cache, nếu không tìm thấy IP tương ứng với tên miền thì một DNS Request sẽ được gửi tới DNS Server để phản hồi thông tin cần thiết sử dụng và thông tin này sẽ lại được đưa xuống DNS Cache.

Trong Windows, có thể xem thông tin DNS Cache bằng lệnh ipconfig /displaydns

Xem thông tin DNS Cache bằng lệnh ipconfig /displaydns
Xem thông tin DNS Cache bằng lệnh ipconfig /displaydns

DHCP là giao thức khi một máy tính được kết nối vào một mạng mà địa chỉ IP của nó chưa được đặt, DHCP server (là router ở các mô hình mạng nhỏ, đối với các mạng lớn hơn sẽ có một máy chủ chuyên dụng để cấp IP) sẽ lấy một địa chỉ IP sẵn có dùng để cấp phát cho DHCP client (máy tính cần cấp phát địa chỉ IP).

Cả DNS và DHCP đều hoạt động ở lớp Application.

Lớp Data Link

Để một gói tin có thể gửi tới đích cần thêm một loại địa chỉ nữa đó là địa chỉ MAC hay địa chỉ vật lý. Địa chỉ này là độc nhất cho mọi thiết bị. Tầng này sẽ ghép frame header và frame trailer lần lượt vào đầu và cuối packet. Các packet bây giờ được gọi là frame. Phần header chứa Source MAC và Destination MAC và vài thông tin điều khiển. Phần trailer chứa thông tin dùng để kiểm lỗi bit (ví dụ như CRC).

Lớp Data Link
Lớp Data Link

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

Câu lệnh getmac
Câu lệnh getmac

Để xác định địa chỉ Destination MAC dựa vào Destination IP, máy tính sẽ từ động tìm kiếm trong ARP cache. Xem thông tin ARP cache bằng cách sử dụng câu lệnh arp –a trong Command Prompt.

Câu lệnh arp –a
Câu lệnh arp –a

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 gọi là ARP Request đính kèm Destination IP sẽ được gửi Broadcast tới tất cả các máy trong mạng chứa máy nguồn, một số trường hợp xảy ra như sau:

  • 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 với địa chỉ MAC của nó về 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 với địa chỉ MAC của router nên 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ư Subnet mask đã được đặt, máy tính sẽ sử dụng thông tin này để xác định được Gateway và gửi gói tin đến đây. Destination MAC ở đây sẽ là địa chỉ của Gateway, thường sẽ là một router.

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

Lớp Physical

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

Lớp Physical
Lớp Physical

Khi ra khỏi máy tính

Tại Switch

Các máy tính trong cùng một mạng thường sẽ được tập hợp lại thông qua switch. Điểm đến tiếp theo của frame sẽ là một port switch. Tại đây, frame được đặt trong một hàng đợi, mỗi frame có mức ưu tiên khác nhau và switch dựa vào điều này để xử lý các frame quan trọng trước.

Switch sẽ mở gói tin ra và đọc địa chỉ Source MAC, lưu vào MAC Address table, lưu số port và địa chỉ MAC kết nối trực tiếp với port này, tiếp theo đọc Destination MAC của gói tin so sánh với bảng MAC Address table của switch và có những hành động tương ứng:

  • 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ị drop – không gửi ra bất kỳ port nào.

Ví dụ: Bảng MAC Address Table của một switch

Bảng MAC Address Table của một switch
Bảng MAC Address Table của một switch

Như vậy, nếu máy nhận nằm trong cùng một mạng với máy gửi, thì chỉ cần thông qua switch, frame đã có thể được chuyển tới đích. Trường hợp máy nhận nằm khác mạng với máy gửi. Frame sẽ được chuyển tiếp tới router để xử lý.

Tại Router

Router nhận khung tin, kiểm tra lỗi và cập nhật header gói tin

Router nhận khung tin và kiểm tra trường FCS (Frame Check Sequence) trong khung tin này; nếu phát hiện lỗi, khung tin sẽ bị loại bỏ. Router sẽ không cố gắng thử tìm lại gói tin đã mất.

Nếu không có lỗi xảy ra trên khung tin nhận, router sẽ kiểm tra trường kiểu Ethernet (Ethernet Type) để xác định kiểu gói tin. Sau đó, router sẽ cắt bỏ đi phần đầu và phần đuôi của lớp liên kết dữ liệu, chỉ để lại phần gói tin IP và chuyển qua bước xử lý kế tiếp.

Router kiểm tra bảng định tuyến của nó để có được mạng đích (prefix) thích hợp nhất với địa chỉ IP đích của gói tin trên. Thông tin thích hợp được tìm thấy trong bảng định tuyến của router bao gồm giao tiếp đi ra và địa chỉ của router kế tiếp (next-hop router). Đây là những thông tin cần thiết để router có thể tạo khung tin mới.

Trước khi tạo mới một khung tin, router cập nhật lại trường TTL trong IP Header và tính toán lại trường kiểm tra lỗi (checksum) trong phần đầu của gói tin IP. Router đóng gói gói tin IP vào giữa phần đầu của khung tin (bao gồm địa chỉ đích) và phần sau khung tin (bao gồm trường FCS mới) để tạo thành khung tin mới.

Các bước để router thực hiện gửi gói tin ở trong mạng

Router sẽ gỡ bỏ header của lớp Data Link (bao gồm Source MAC và Destination MAC) và đọc thông tin lớp Network (Bao gồm Source IP và Destination IP).

Router sử dụng Destination IP, so sánh với Routing table. Routing table chứa danh sách các đường đi đượ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 gán tĩnh bởi người quản trị mạng, hoặc có thể được thêm vào qua các giao thức định tuyến như OSPF, EIGRP, RIP, IS-IS… Các giao thức này nhằm tìm ra đường đi ngắn nhất đến mạng đích và lưu vào Routing table.

Ví dụ: Bảng Routing table của router

Bảng Routing table của router
Bảng Routing table của router

Nếu không tìm được đườ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 (sẽ giảm dần qua mỗi lần chuyển, tránh trường hợp gói tin bị loop vô tận) bằng 0, gói tin sẽ bị drop 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 – chính là địa chỉ MAC của interface tương ứng với đường đi tìm được và Destination MAC – là địa chỉ của MAC của interface router tiếp theo.

Như vậy, 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 trên 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 cũng 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 và gửi gói tin đến máy đích.

Câu hỏi thường gặp về gói tin

Nội dung gói tin bao gồm các thành phần sau đây:

Địa chỉ người nhận, địa chỉ người gửi. Dữ liệu, độ dài. Thông tin kiểm soát lỗi và các thông tin phục vụ khác.

Để gói tin đến đúng máy nhận:

Trong gói tin phải có thông tin để xác định máy đích. Mỗi máy tính tham gia vào mạng phải có địa chỉ duy nhất được gọi là địa chỉ IP. Địa chỉ IP trong Internet là một dãy số nguyên phân cách nhau bởi dấu chấm. VD: 94.237.77.152. Để thuận tiện cho người dùng địa chỉ IP được chuyển sang dạng kí tự(tên miền). VD: wikimaytinh.com

Vì sao các gói tin cần chia nhỏ trước khi gửi đi?

Giao thức TCP đảm bảo việc phân chia dữ liệu ở máy gửi thành các gói tin nhỏ hơn có khuôn dạng và kích thước xác định để tránh tắc nghẽn đường truyền. Các gói tin được đánh số để sau đó máy nhận có thể tập hợp chúng lại một cách đúng đắn như các gói tin ở máy gửi.

Nguồn: Các gói tin được truyền như thế nào trong mạng máy tính? Các bước để router thực hiện gửi gói tin ở trong mạng như thế nào? hành trình của 1 gói tin trong mạng.

Bài viết này có hữu ích với bạn không?
Không