Có một số đảm bảo rằng nếu bạn gửi 20 byte ở đầu luồng TCP, nó sẽ không đến dưới dạng hai mảnh 10 byte. Điều này là do ngăn xếp TCP sẽ không gửi các phân đoạn nhỏ như vậy: có kích thước MTU tối thiểu. Tuy nhiên, nếu việc gửi ở bất cứ đâu ở giữa luồng, tất cả các cược sẽ bị tắt. Có thể là ngăn xếp giao thức của bạn mất 10 byte dữ liệu để điền vào một phân đoạn và gửi nó ra, và sau đó mười byte tiếp theo chuyển sang phân đoạn khác.
Ngăn xếp giao thức của bạn chia dữ liệu thành các khối và đặt chúng vào hàng đợi. Các kích thước khối được dựa trên đường dẫn MTU. Nếu bạn thực hiện thao tác gửi và vẫn còn dữ liệu xếp hàng chờ xử lý, ngăn xếp giao thức thường sẽ nhìn trộm phân đoạn nằm ở đuôi hàng đợi và xem liệu có chỗ trong phân đoạn đó để thêm dữ liệu không. Căn phòng có thể nhỏ như một byte, do đó, ngay cả một lần gửi hai byte cũng có thể được chia thành hai.
Mặt khác, phân đoạn dữ liệu có nghĩa là có thể có một phần đọc. Một hoạt động nhận có khả năng có thể thức dậy và có được dữ liệu khi có ít nhất một phân đoạn đến. Trong API ổ cắm được triển khai rộng rãi, một cuộc gọi nhận có thể yêu cầu 20 byte, nhưng nó có thể trả về bằng 10. Tất nhiên, một lớp đệm có thể được xây dựng trên đó sẽ chặn cho đến khi nhận được 20 byte hoặc ngắt kết nối. Trong thế giới POSIX, API đó có thể là luồng I / O tiêu chuẩn: bạn có thể fdopen
mô tả ổ cắm để có được FILE *
luồng và bạn có thể sử dụng fread
nó để điền vào bộ đệm sao cho yêu cầu đầy đủ được đáp ứng với nhiều read
cuộc gọi như vậy .
Các datagram UDP đóng khung dữ liệu. Mỗi cuộc gọi gửi sẽ tạo ra một datagram (nhưng xem bên dưới về nút chai). Phía bên kia nhận được một datagram đầy đủ (và, trong API socket, nó phải chỉ định một bộ đệm đủ lớn để chứa nó, nếu không thì datagram sẽ bị cắt ngắn). Các datagram lớn bị phân mảnh bởi phân mảnh IP và được lắp ráp lại trong suốt cho các ứng dụng. Nếu bất kỳ đoạn nào bị thiếu, toàn bộ datagram sẽ bị mất; không có cách nào để đọc một phần dữ liệu trong tình huống đó.
Có các phần mở rộng cho giao diện cho phép nhiều thao tác chỉ định một datagram duy nhất. Trong Linux, một ổ cắm có thể bị "đóng nút" (không thể gửi). Trong khi nó được đóng nút, dữ liệu bằng văn bản được tập hợp thành một đơn vị. Sau đó, khi ổ cắm được "mở khóa", một datagram duy nhất có thể được gửi.