[e2e] TCP fragmentation and reassembly

Joe Touch touch at ISI.EDU
Wed Dec 7 12:22:19 PST 2005

Hash: SHA1

David Borman wrote:
> TCP does not do fragmentation and reassembly.  IP does fragmentation 
> and reassembly.  On the sending side, TCP takes a byte stream from  the
> application, and sends it as a series of complete TCP/IP  packets.  On
> the receive side, TCP will do resequencing of packets if  they arrive
> out of order, so that they are presented to the receiving  application
> in the same order that they were sent.
> The TCP MSS value specifies the largest size of packet that the 
> receiver can reassemble.  I doubt that there are many, if any, TCP 
> implementations that can't handle receiving a full 64K TCP/IP packet 
> (as a series of IP fragments). 

See: http://www.psc.edu/networking/projects/tcptune/

The table (grep for "FreeBSD") shows that current OS's start with a
default socket size smaller than 64KB (which limits the size of the
receive window, right?).

> But since most TCP implementations  try
> very hard to not send packets that will be fragmented at the IP  layer,
> as long as the MSS is larger than the underlying MTU it  doesn't really
> matter.  In theory, when using Path MTU discovery,  there is no reason
> to not always use the maximum MSS value of 64K-1.

Most systems don't try anything larger than the outgoing interface MSS,
though, which is often much smaller (1500 bytes (ethernet), 4400 bytes
(POS), or 9KB (ATM)).


>             -David Borman
> On Dec 5, 2005, at 4:45 PM, Erwin Davis wrote:
>> Helllo,
>> Packet from application layer may be framed in TCP layer based on  MSS
>> (maximum segment size, not MTU in IP layer) negotiated between  two
>> TCP layers of the end parties. My question is if the TCP layer  in
>> receiving side will reassemble the TCP fragments before it  forward
>> the packet to the application layer. If yes, then how the  TCP layer
>> in receiving side knows how many TCP fragments are made  up for this
>> one application packet. If not, will it require the  intelligence from
>> the application layer for the application packet  reassembly. Thanks
>> for your help,
>> erwin
Version: GnuPG v1.2.4 (MingW32)
Comment: Using GnuPG with Thunderbird - http://enigmail.mozdev.org


More information about the end2end-interest mailing list