Lưu ý rằng trường Fragment Offset được thể hiện bằng đơn vị 8 byte, không phải theo byte. Đây là lý do tại sao kích thước tải trọng bên trong mỗi đoạn, ngoại trừ đoạn cuối cùng, phải là bội số của 8 byte.
Khi bù đắp Fragment được mã hóa trên 13bits, kết quả là phạm vi của nó là từ 0 đến 8191 đơn vị 8 byte. Tuy nhiên, do Tổng chiều dài cũng tính đến tiêu đề IP, giới hạn tối đa của bộ phận bù đắp thực tế là 8189 đơn vị, không phải 8191 đơn vị, xem bên dưới:
Tổng chiều dài được mã hóa trên 16 bit, nghĩa là giới hạn ở 65535 byte. Sau đó, khi tiêu đề IP tối thiểu là 20 byte, kết quả là Tải trọng được giới hạn ở tối đa 65535 byte - 20 byte = 65515 byte. Chia các 65515 byte này thành các đơn vị 8 byte, kết quả là có thể có tối đa 8189 đơn vị, do đó bù đắp phân mảnh được giới hạn tối đa 8189 đơn vị.
Một mảnh IP có Fragment offset giá trị thiết lập để giá trị lớn nhất này của 8189, có thể có một tải trọng tối đa là 3 byte:
tối đa 65535 byte - tối thiểu 20 byte - (8189 đơn vị * 8 byte cho mỗi đơn vị) = tối đa 3 byte
Rurre
cảm ơn câu trả lời @Wayne Shears, như bạn đã nói: Fragment Offset có thể chứa 8192 (2^13) đơn vị [** có nghĩa là các đơn vị? bạn có nghĩa là byte? **] nhưng datagram không thể có 8192 * 8 = 65536 byte dữ liệu [** tại sao? **] vì trường "Tổng chiều dài" của tiêu đề IP ghi tổng kích thước bao gồm tiêu đề và dữ liệu [** tất cả tôi biết là tổng kích thước tiêu đề = lengthle + tải trọng. và tổng số legth là kích thước 16, do đó, giá trị sẽ đi lên đến 2^16 là 65536, tôi đã nghĩ rằng một cái gì đó sai? **]. – user991482