I. Cấu trúc tổng quan của IPv4 datagram
1. Giới thiệu
IPv4 (Internet Protocol Version 4) là phiên bản giao thức IP được sử dụng rộng rãi nhất trong truyền thông mạng ngày nay. Được thiết kế để xác định một thiết bị trong mạng và cho phép truyền dữ liệu giữa các thiết bị qua mạng. IPv4 Datagram là đơn vị dữ liệu cơ bản được truyền qua mạng IPv4, chứa đựng thông tin cần thiết để định tuyến và truyền tải dữ liệu từ nguồn đến đích.
2. Sơ đồ cấu trúc của IPv4 datagram
Cấu trúc của một IPv4 Datagram được chia thành hai phần chính: Header và Data. Phần Header chứa các trường thông tin quan trọng dùng để điều khiển việc truyền dữ liệu, phần Data chứa dữ liệu thực tế được gửi từ nguồn đến đích. Header của Datagram IPv4 có độ dài tối thiểu là byte và tối đa là byte, phụ thuộc vào việc sử dụng các tùy chọn (options) không bắt buộc.
II. Phân tích chi tiết header của IPv4 datagram
1. Version
Trường version (phiên bản) có độ dài bit và xác định phiên bản của giao thức IP được sử dụng. Đối với IPv4, giá trị của trường này luôn là . Trường version giúp đảm bảo rằng phần cứng và phần mềm đang xử lý gói tin một cách phù hợp với định dạng đúng của IPv4.
2. HLEN - Header Length
Header Length có độ lớn bit, xác định độ dài/kích thước của header. Cụ thể, mỗi bit trong trường này biểu diễn một đơn vị gọi là "từ" (word), tương đương với byte (hoặc bit). Chúng ta sẽ tìm hiểu lý do vì sao lại độ lớn của HLEN là bit.
Độ dài cần thiết để chứa tất cả các trường bắt buộc trong header là byte (đây chính là độ lớn tối thiểu của header). Có . Độ dài tối đa của header IPv4 là .
Với bit, chúng ta có thể biểu diễn giá trị khác nhau (từ đến ) - số lượng giá trị khác nhau này đủ để ánh xạ tương ứng với khoảng từ đến words.
3. TOS - Type of Service
Type of Service có độ dài bit, được thiết kế để chỉ định độ ưu tiên của Datagram, bao gồm các khía cạnh như độ trễ, thông lượng, độ tin cậy và chi phí. Tuy nhiên, trường này thường không được sử dụng rộng rãi trong thực tế, do phải phụ thuộc vào cấu hình của mạng và các thiết bị định tuyến.
4. Total Length
Trường Total Length dùng để xác định kích thước tổng thể của datagram, bao gồm cả Header và Data. Do giá trị tối đa của một gói tin IPv4 là byte, nên có độ lớn 16$ bit.
5. Identification
Trường Identification ( bit) này cùng với các trường Flags và Fragment Offset giúp xử lý việc phân mảnh datagram. Mỗi datagram gốc được gán một giá trị định danh duy nhất, giúp tái tổ hợp các mảnh datagram một cách chính xác tại điểm đến (sau khi phân mảnh cần tái tổ hợp lại).
6. Flags
Trường Flags bao gồm bit, được định nghĩa như sau:
- Bit Res: luôn được đặt là trong IPv4, đảm bảo tính tương thích ngược và dành cho việc mở rộng trong tương lai.
- Bit DF (Don't Fragment): khi bit này được đặt là sẽ ngăn chặn Datagram được phân mảnh. Ngược lại giá trị là .
- Bit MF (More Fragments): Bit này được sử dụng để chỉ ra rằng có thêm các mảnh phân mảnh sau Datagram này. Nếu bit MF được đặt là nghĩa là Datagram này không phải là mảnh cuối cùng trong chuỗi các mảnh phân mảnh của một gói tin gốc. Khi bit MF đặt bằng cho biết đây là mảnh cuối cùng, giúp quá trình tái tổ hợp các mảnh tại điểm đích được thực hiện đúng đắn.
7. Fragment Offset
Trường Fragment Offset đóng vai trò cốt lõi trong quá trình phân mảnh và tái tổ hợp các datagram. Trường này có độ dài bit, xác định vị trí của mảnh datagram trong datagram ban đầu trước khi nó bị phân mảnh.
8. TTL - Time To Live
Time To Live giúp đảm bảo rằng dữ liệu không được truyền đi mãi mãi trong mạng nếu có vấn đề xảy ra. Trường này có độ dài bit và được sử dụng để giới hạn số lượng lần mà một datagram được phép chuyển tiếp (route) qua các router trong mạng trước khi bị loại bỏ. Giúp ngăn chặn các vòng lặp vô tận, làm giảm tải cho mạng và tăng cường hiệu suất.
9. Protocol
Protocol dùng để xác định giao thức của phần Payload (phần dữ liệu) mà datagram mang theo (ví dụ như TCP, UDP, hoặc ICMP). Đây là trường bit, cho phép biểu diễn tới giá trị khác nhau, mỗi giá trị tương ứng với một giao thức cụ thể.
10. Header Checksum
Trường Header Checksum trong Header của IPv4 Datagram là một cơ chế quan trọng giúp đảm bảo tính toàn vẹn của thông tin header khi dữ liệu được truyền qua mạng. Đây là trường bit, được sử dụng để phát hiện các lỗi có thể xảy ra do sự cố truyền dẫn như nhiễu hoặc mất mát dữ liệu.
11. Source IP Address
Trường Source IP Address trong Header của IPv4 Datagram chứa địa chỉ IP của thiết bị gửi datagram. Trường có độ dài bit, phản ánh cấu trúc địa chỉ IP phiên bản , được sử dụng để xác định nguồn gốc của dữ liệu trong mạng.
12. Destination IP Address
Trường Destination IP Address chứa địa chỉ IP của thiết bị đích mà datagram được gửi tới. Tương tự như Source IP Address, đây cũng là một trường bit, tuân theo cấu trúc địa chỉ IP phiên bản .
13. Options
Trường Options trong Header của IPv4 Datagram là một phần không bắt buộc, nhưng cung cấp tính năng mở rộng và linh hoạt cho giao thức IP. Trường này cho phép định nghĩa các tùy chọn bổ sung không được bao gồm trong phần cố định của header. Kích thước của trường Options không cố định, làm cho tổng độ dài của header IPv4 lên tới byte (độ dài tối đa của header).
III. Cấu trúc tổng quan của IPv6 datagram
1. Giới thiệu
IPv6 (Internet Protocol Version 6) là phiên bản giao thức IP mới được thiết kế để thay thế IPv4, đáp ứng nhu cầu về không gian địa chỉ rộng lớn hơn và cung cấp các cải tiến về bảo mật và hiệu quả truyền dữ liệu. IPv6 datagram là đơn vị dữ liệu cơ bản được truyền qua mạng IPv6, chứa đựng thông tin cần thiết cho việc định tuyến và truyền tải dữ liệu từ nguồn đến đích.
2. Sơ đồ cấu trúc của IPv6 datagram
Trái ngược với IPv4, cấu trúc của một IPv6 datagram được thiết kế để đơn giản hóa xử lý bằng cách giảm thiểu số lượng trường bắt buộc trong header. Một IPv6 datagram bao gồm một phần header cố định có độ dài byte và phần data chứa dữ liệu thực tế. Header cố định giúp tăng tốc độ xử lý và định tuyến trong các thiết bị mạng.
IV. Phân tích chi tiết header của IPv4 datagram
1. Version
Trường Version có độ dài bit, xác định phiên bản của giao thức IP được sử dụng. Đối với IPv6, giá trị của trường này là . Điều này giúp đảm bảo rằng gói tin được xử lý phù hợp với định dạng và quy tắc của IPv6.
2. Priority/Traffic Class
Traffic Class tương tự như Type of Service trong IPv4, có độ dài bit và được sử dụng để xác định độ ưu tiên của gói tin, cho phép hỗ trợ QoS (Quality of Service). Phần này giúp quản lý lưu lượng truy cập và độ ưu tiên xử lý dữ liệu trong mạng.
3. Flow Label
Flow Label là một trường bit mới trong IPv6, cho phép nhãn dữ liệu và tạo điều kiện cho việc xử lý dữ liệu không trạng thái trong các router, hỗ trợ cho việc xử lý dữ liệu nhanh và hiệu quả.
4. Payload Length
Trường Payload Length có độ dài bit, xác định kích thước của phần Payload (không bao gồm Header cố định), cho phép biểu diễn dữ liệu lên tới byte.
5. Next Header
Trường Next Header có độ dài bit, xác định loại header tiếp theo (nếu có) sau header cố định của IPv6 hoặc loại của payload, tương tự như trường Protocol trong IPv4.
6. Hop Limit
Hop Limit tương đương với TTL trong IPv4, có độ dài bit và giảm đi với mỗi lần datagram được chuyển tiếp qua một router, giúp ngăn chặn việc lưu thông dữ liệu vô hạn trong mạng.
7. Source Address
Trường Source Address có độ dài bit, chứa địa chỉ IPv6 của thiết bị gửi, phản ánh sự mở rộng về không gian địa chỉ so với IPv4.
8. Destination Address
Trường Destination Address cũng có độ dài bit, chứa địa chỉ IPv6 của thiết bị đích, hỗ trợ cho việc định tuyến và gửi dữ liệu trong mạng có không gian địa chỉ lớn.
9. Extension Headers
Một trong những đặc điểm nổi bật của IPv6 là sự xuất hiện của Extension Headers, cho phép tính năng mở rộng và linh hoạt hơn so với IPv4. Các Extension Headers được sử dụng để hỗ trợ cho bảo mật, định tuyến, và các chức năng khác mà không tăng kích thước của Header cố định, giúp quá trình xử lý datagram được hiệu quả và linh hoạt hơn.
V. So sánh datagram IPv4 và IPv6
Dưới đây là bảng so sánh giữa tiêu đề gói tin của IPv4 và IPv6, phản ánh sự khác biệt về cấu trúc và một số chức năng chính của hai phiên bản này:
Tính Năng | IPv4 | IPv6 |
---|---|---|
Phiên bản | 4 bit (giá trị là 4) | 4 bit (giá trị là 6) |
Độ dài tiêu đề | 20-60 byte (có thể thay đổi) | 40 byte (cố định) |
Trường độ dài | Total Length (bao gồm Header và Data) | Payload Length (chỉ bao gồm Data) |
Hỗ trợ QoS | Type of Service (TOS) | Traffic Class |
Định danh luồng | Không có | Flow Label |
Địa chỉ nguồn và đích | 32 bit cho mỗi địa chỉ | 128 bit cho mỗi địa chỉ |
Chống vòng lặp | Time To Live (TTL) | Hop Limit |
Xác định giao thức | Protocol | Next Header |
Kiểm tra tính toàn vẹn | Header Checksum | Không có (được thực hiện ở các tầng khác) |
Phân mảnh | Được hỗ trợ ở IPv4 | Chỉ được xử lý ở các điểm cuối |
Tùy chọn | Options (nếu có) | Extension Headers (cho các tính năng mở rộng) |
Bảo mật | IPsec hỗ trợ nhưng không bắt buộc | IPsec hỗ trợ và khuyến khích sử dụng |
Sự đơn giản | Có nhiều trường và tùy chọn | Đơn giản hóa header để tăng hiệu quả xử lý |
Tài liệu tham khảo
- https://www.geeksforgeeks.org/introduction-and-ipv4-datagram-header/
- https://www.geeksforgeeks.org/internet-protocol-version-6-ipv6-header/
- https://csc-knu.github.io/sys-prog/books/Andrew%20S.%20Tanenbaum%20-%20Computer%20Networks.pdf
- https://www.ucg.ac.me/skladiste/blog_44233/objava_64433/fajlovi/Computer%20Networking%20_%20A%20Top%20Down%20Approach,%207th,%20converted.pdf