- vừa được xem lúc

IPv4 & IPv6 datagram header - Tiêu đề gói tin IPv4 & IPv6

0 0 3

Người đăng: Viblo Fundamentals

Theo Viblo Asia

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à 2020 byte và tối đa là 6060 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 44 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à 01000100. 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 44 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 44 byte (hoặc 3232 bit). Chúng ta sẽ tìm hiểu lý do vì sao lại độ lớn của HLEN là 44 bit.

Độ dài cần thiết để chứa tất cả các trường bắt buộc trong header là 2020 byte (đây chính là độ lớn tối thiểu của header). Có 20 bytes=5×32 bit=5 words20 \text{ bytes} = 5 \times 32 \text{ bit} = 5 \text{ words}. Độ dài tối đa của header IPv4 là 60bytes=15×32 bit=15 words60 \text{bytes} = 15 \times 32 \text{ bit} = 15 \text{ words}.

Với 44 bit, chúng ta có thể biểu diễn 1616 giá trị khác nhau (từ 00 đến 1515) - số lượng giá trị khác nhau này đủ để ánh xạ tương ứng với khoảng từ 55 đến 1515 words.

3. TOS - Type of Service

Type of Service có độ dài 88 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à 6553565535 byte, nên có độ lớn 16$ bit.

5. Identification

Trường Identification (1616 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 33 bit, được định nghĩa như sau:

  • Bit Res: luôn được đặt là 00 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à 11 sẽ ngăn chặn Datagram được phân mảnh. Ngược lại giá trị là 00.
  • 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à 11 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 00 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 1313 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 88 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 88 bit, cho phép biểu diễn tới 256256 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 1616 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 3232 bit, phản ánh cấu trúc địa chỉ IP phiên bản 44, đượ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 3232 bit, tuân theo cấu trúc địa chỉ IP phiên bản 44.

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 6060 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 4040 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 44 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à 01100110. Đ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 88 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 2020 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 1616 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 6553565535 byte.

5. Next Header

Trường Next Header có độ dài 88 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 88 bit và giảm đi 11 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 128128 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 128128 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

Bình luận

Bài viết tương tự

- vừa được xem lúc

VxLAN - Công nghệ ảo hóa DC

Trong bài viết trước về CDN Tản mạn CDN và một số công nghệ xoay quanh CDN, tôi có đề cập đến VxLAN và mô hình Leaf-Spine. Nào bắt đầu nhé.

0 0 60

- vừa được xem lúc

Tản mạn CDN và một số công nghệ xoay quanh CDN

Như cái tiêu đề, tôi lưu lại một số thứ hay ho về CDN để sau mà quên thì còn có cái mà đọc. Sờ lại một chút về khái niệm CDN cho đỡ bỡ ngỡ... Mục đích CDN. Do vậy, CDN phục vụ một số mục đích chính sau:. . Cải thiện thời gian tải trang web --> Đây là mục đích lớn nhất của CDN.

0 0 63

- vừa được xem lúc

Hướng dẫn cấu hình PC thành public server

Chào mọi người,. Mình đã từng gặp trường hợp phía FE không thể access vào server công ty (vì authen, policy ,.

0 0 1.5k

- vừa được xem lúc

Phân biệt Router, Switch và Hub (Mạng máy tính)

Mục tiêu. Dạo qua một vòng trên Google và qua những câu hỏi mình hay bị mọi người xung quanh "vấn đáp nhanh", ngày hôm nay mình muốn viết blog này để có thể phần nào làm rõ một chút cho các bạn về 3 t

0 0 72

- vừa được xem lúc

Bạn có muốn trở thành Admin của một Server game không?

Mở đầu. .

0 0 71

- vừa được xem lúc

Hướng dẫn NAT port server ra Internet

Hướng dẫn NAT port để có thể sử dụng các dịch vụ trên server từ xa. Internet <---------------> Router <----------------> Server.

0 0 60