Hi, All,<br>
<br>
Thanks for your info. <a href="http://www.networksorcery.com/enp/rfc/rfc879.txt">RFC 879</a> clearly explains the TCP fragmentation in the sending side but it<br>
says nothing about reassembly in the receiving side. <br>
<br>
Joe, see an example below. Assume an application writes down a packet
with 10 Kbyte to TCP layer whose negotiated MMS is 5 Kbytes. Then the
TCP layer will fragment the application packet into two TCP segments
with 5 Kbytes each. Assume that the first TCP packet arrives at the
receiving side. Then the TCP layer in the receiving side wakes up the
application listening to this TCP port. The application processes the
half packet and fails. The app has no way to know if it receive a
complete message or not but the TCP layer in the sending side
knows. To me, such TCP operation is not transparent to the
application. It requires the intelligent part in the application to
determine if the arriving TCP packet is a complete packet from the
sending application or not. <br>
let me know if I misunderstood some points. Thanks again,<br>
<br>
Erwin<br>
<br><div><span class="gmail_quote">On 12/5/05, <b class="gmail_sendername">Joe Touch</b> <<a href="mailto:touch@isi.edu" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">touch@isi.edu</a>> wrote:
</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
-----BEGIN PGP SIGNED MESSAGE-----<br>Hash: SHA1<br><br>Erwin,<br><br>It's useful to keep in mind that TCP is a byte-stream protocol; there<br>are no segment boundaries preserved between application and transport layer:<br>
<br>Erwin Davis wrote:<br>> Helllo,<br>><br>> Packet from application layer may be framed in TCP layer based on MSS<br>> (maximum segment size, not MTU in IP layer) negotiated between two TCP<br>> layers of the end parties.
<br><br>Apps using TCP don't write in packets; they write bytes. The application<br>can write in whatever units it wants; TCP is allowed to send packets<br>based on that data however it sees fit. While an application can tune to
<br>the behavior of a specific TCP implementation, it cannot rely on all<br>TCPs acting the same way.<br><br>> My question is if the TCP layer in receiving<br>> side will reassemble the TCP fragments before it forward the packet to
<br>> the application layer.<br><br>TCP reorders, but doesn't maintain application layer boundaries. So long<br>as data is received in order, once it is received and ACK'd it is<br>presented to the receive-side application layer.
<br><br>> If yes, then how the TCP layer in receiving side<br>> knows how many TCP fragments are made up for this one application<br>> packet. If not, will it require the intelligence from the application<br>> layer for the application packet reassembly. Thanks for your help,
<br><br>Applications cannot strictly know what TCP does with data that is sent<br>absent monitoring the traffic directly.<br><br>Joe<br>-----BEGIN PGP SIGNATURE-----<br>Version: GnuPG v1.2.4 (MingW32)<br>Comment: Using GnuPG with Thunderbird -
<a href="http://enigmail.mozdev.org" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">http://enigmail.mozdev.org</a><br><br>iD8DBQFDlNuhE5f5cImnZrsRAgK/AKCD9IoKKeQncJDfvSfBXCQ0cvVZNQCg5c5r<br>vJQkSrgnXaDPX3WQsug1PSc=
<br>=U7lI<br>-----END PGP SIGNATURE-----<br></blockquote>
</div><br>