STDIO
Tìm kiếm gần đây
    • Nội dung
    • QR Code
    • 0
    • 0
    • Sao chép

    Hành Trình của Một Gói Tin

    Cách một gói tin được tạo ra và truyền đi trên mạng Internet theo mô hình TCP/IP.

    Phi Phạm

    15/04/2015
    22/09/2020
    9 phút đọc
    Hành Trình của Một Gói Tin

    Giới thiệu

    Cách một gói tin được tạo ra và truyền đi trên mạng Internet theo mô hình TCP/IP, tìm hiểu cách thức hoạt động của một số giao thức thông dụng. Bài viết cung cấp kiến thức cơ bản hướng đến những người bắt đầu làm quen với mạng máy tính.

    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.

    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.

    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ị độc nhất trên host đó. Ví dụ một số port 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 cung cấp bất kỳ sự tin cậy nào. 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.

    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

    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).

    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.

    Để 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.

    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.

    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 (Nguồn: http://www.authsecu.com)

    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 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 (Nguồn: http://www.carbonwind.net)

    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.

    Tham khảo

    0
    Cyber Security
    Khi bạn nhấn vào liên kết sản phẩm do STDIO đề xuất và mua hàng, STDIO có thể nhận được hoa hồng. Điều này hỗ trợ STDIO tạo thêm nhiều nội dung hữu ích.. Tìm hiểu thêm.

    Đề xuất

    Chương Trình Máy Tính Là Gì?
    Chương trình máy tính giúp vận hành phần cứng máy tính theo một trình tự ...
    25/08/2015
    Lập Trình Win32 API - Phần 2: Tạo Cửa Sổ Cơ Bản
    Hệ điều hành Windows cung cấp các cửa sổ Window. Có thể sử dụng Win32 ...

    Khám phá

    Sử Dụng CSS Image Sprites Tối Ưu Tải Trang
    Tối ưu quá trình load một trang web với CSS-Sprite. Các icon, hình ảnh ...
    29/05/2014
    Lập Trình Multithreading trong Ngôn Ngữ Lập Trình Java
    Để đáp ứng được yêu cầu thực hiện được nhiều tác vụ cùng một lúc, Java ...
    19/11/2015
    Thỏa Thuận Sử Dụng Dịch Vụ STDIO
    Thỏa thuận này quy định về điều kiện giao kết hợp đồng, quyền lợi, nghĩa ...
    Sơ Lược về Phong Cách Lập Trình
    Bài viết là một vài chia sẻ về cách hình thành phong cách lập trình để ...
    Đồ Hoạ trên Cửa Sổ Dòng Lệnh - Console Graphics
    Các thư viện đồ họa đã phát triển rất mạnh mẽ, tận dụng gần như tối đa ...
    02/10/2014
    Khởi Tạo Môi Trường Lập Trình C Trên Linux Với GCC
    Hướng dẫn cách cài đặt trình biên dịch GCC trên Linux và cách viết 1 ...
    Tìm Hiểu về fstream
    Kiến thức về file là một trong những kiến thức quan trọng đối với các ...
    11/05/2015
    Giới Thiệu về Kỹ Thuật Phần Mềm – Software Engineering
    Software Engineering là một phần của System Engineering - liên quan đến ...
    22/09/2014
    STDIO
    Trang chính
    Công ty TNHH STDIO

    30, Trịnh Đình Thảo, Hòa Thạnh, Tân Phú, Hồ Chí Minh
    +84 28.36205514 - +84 942.111912
    developer@stdio.vn

    383/1 Quang Trung, Phường 10, Quận Gò Vấp, Hồ Chí Minh
    Số giấy phép ĐKKD: 0311563559 do sở Kế hoạch và Đầu Tư TPHCM cấp ngày 23/02/2012

    ©STDIO, 2013 - 2020