As a further historical note, originally 9P required a stream that preseved record boundaries, and the reliable datagram protocol IL/IP and pipes did that. Once TCP/IP was used, there was some fussing needed to work out where the records were, so the revision 9P2000 added a size and the stream didn't need to preserve boundaries itself. As an aside, John Day in his interesting Patterns in Network Architecture (http://goo.gl/4WKu1r) discusses whether protocols should preserve record boundaries, and concludes that they should (assuming I remember correctly!).