To hide fragmentation of messages from the application, NI supports buffered connections, which provide the assembly of the fragments. In NI_MESG_IO and NI_ROUTE_IO the data block length is given, which is necessary for buffering the incoming data until the block is completed. NI_RAW_IO does not support buffering.
For an incoming data block, the data buffer is created after the first received packet (particularly after receiving the whole data block header; 4 bytes). To prevent running out of memory, a limit for the maximal message length can be set.