a) Phân mảnh
Các IP datagram cĩ độ dài tối đa là 65535 byte. Nhưng trong thực tế, frame của các liên kết truyền dẫn cĩ các kích thước vùng dữ liệu bị giới hạn. Giá trị giới hạn này gọi là đơn vị truyền dẫn lớn nhất MTU của liên kết.
Mặt khác, các datagram lại phải qua nhiều liên kết khác nhau trước khi đến đích nên MTU cũng thay đổi theo từng liên kết. MTU cĩ giá trị nhỏ nhất trong các MTU của các liên kết tạo nên đường truyền dẫn được gọi là path MTU (MTU của đường truyền). Các datagram cĩ thểđịnh tuyến theo các con đường khác nhau nên path MTU giữa hai host khơng phải là một hằng số. Nĩ sẽ phụ thuộc vào tuyến được lựa chọn
định tuyến tại thời gian đang sử dụng. Path MTU hướng thuận khác với path MTU hướng ngược.
Để các datagram cĩ thể đĩng gĩi vào các frame của tầng liên kết thì IP phải cĩ khả năng phân mảnh datagram thành các fragment cĩ kích thước phù hợp. Việc phân mảnh cĩ thểở ngay nguồn hay ở các bộđịnh tuyến mà tại đĩ datagram cĩ kích thước lớn hơn kích thước vùng dữ liệu của frame. Các fragment đầu sẽ cĩ kích thước tối đa
sao cho vừa với vùng dữ liệu của frame, riêng fragment cuối cùng sẽ là phần dữ liệu cịn lại (nhỏ hơn hoặc bằng vùng dữ liệu của frame). Quá trình phân mảnh được thực hiện nhờ các trường Flag, Fragment Offset và làm thay đổi các trường Total Length, Header Checksum.
b) Tái hợp
Các Fragment được truyền như những datagram độc lập cho đến máy đích mới
được tái hợp lại. Thực hiện tái hợp sẽ nhờ vào trường Flag để biết được Fragment cuối cùng cũng như sử dụng Identification để biết được fragment thuộc vào datagram nào. Như vậy, các fragment cĩ giá trị bốn trường Identification, Source Address, Destination Address và Protocol giống nhau thì sẽ thuộc cùng vào một datagram để
truyền lên lớp cao.
Chỉ khi phía thu nhận đủ fragment thì mới thực hiện quá trình tái hợp. Vì vậy, cần cĩ các bộđệm, một bảng theo bit chỉ các khối fragment đã nhận được, một bộđếm thời gian tái hợp. Dữ liệu của fragment được đặt vào một bộ đệm dữ liệu và vị trí của nĩ phụ thuộc vào Fragment Offset, bit trong bảng tương ứng với Fragment nhận được sẽ được lập. Nếu nhận được fragment đầu tiên cĩ Fragment Offset bằng 0 tiêu đề của nĩ được đặt vào bộ đệm tiêu đề. Nếu nhận được fragment cuối cùng (cĩ MF của trường Fragment bằng 0) thì độ dài tổng sẽ được tính. Khi đã nhận đủ các fragment (biết được bằng cách kiểm tra các bit trong bảng bit khối Fragment) thì sau đĩ datagram được gửi lên tầng trên. Mặt khác, bộ đếm thời gian tái hợp nhận giá trị lớn nhất là giá trị của bộ đếm thời gian tái hợp hiện thời hoặc giá trị của trường Time to Live trong Fragment.
Chý ý: Trong quá trình tái hợp, nếu bộ đếm thời gian tái hợp đã hết thì các tài nguyên phục vụ cho quá trình tái hợp (các bộ đệm, một bảng theo bit chỉ các khối fragment đã nhận được) sẽ bị giải phĩng, các fragment đã nhận được sẽ bị huỷ mà khơng xử lý gì datagram. Khi tái hợp, giá trị khởi đầu của bộ đếm thời gian tái hợp thường thấp hơn giới hạn thời gian thực hiện tái hợp. Đĩ là vì thời gian thực hiện tái hợp sẽ tăng lên nếu Time to Live trong fragment nhận được lớn hơn giá trị hiện thời của bộđếm thời gian tái hợp nhưng nĩ lại khơng giảm nếu nhỏ hơn.
Đối với các datagram cĩ kích thước nhỏ, trong quá trình truyền khơng phải phân mảnh (cĩ trường Fragment Offset và vùng MF của trường Flag bằng 0) thì phía thu khơng cần thực hiện tái hợp mà datagram được gửi luơn lên tầng trên.
Việc chỉ tái hợp các fragment ở đích cuối cùng cĩ những hạn chế sau: sau khi phân mảnh các fragment cĩ thể đi qua mạng cĩ MTU lớn hơn, do đĩ khơng tận dụng
khi đã nhận đủ. Với số lượng fragment lớn thì xác suất mất fragment cao hơn, khi đĩ kéo theo xác suất mất datagram cũng cao vì chỉ cần một fragment khơng vềđến đích trước khi bộđếm thời gian bằng 0 thì tồn bộ datagram sẽ mất.
Nhưng việc kết hợp các gĩi tin tại đích sẽ giúp cho chức năng của các router đơn giản hơn, xử lý nhanh hơn và tránh được tình trạng tái hợp rồi lại phân mảnh. Vì thế, cơ cấu này vẫn được sử dụng trong IP.