lwip-users-bounces+fabian.koch=de.abb....@nongnu.org wrote on 26.08.2009
18:20:07:
> Hi all,
> Is lwip able to reassemble fragmented TCP packets? If yes, how?
> In fact my stack is supposed to receive a HTTP POST request split
> into 2 TCP fragments. At the TCP level, both fragments are set with
> "Position fragment/Fragment offset" = 0 and "More fragment"=0. As a
> result, ip_reass is never called. At the TCP level, does a mechanism
> of reassembly exist?
Short answer: yes.
Long answer: You have to be careful with the words here. On the IP Layer
there is "fragmentation" which is only used when you have an Ethernet
packet from a medium that a a bigger MTU (maximum transfer size). SO when
a router gets a big packet and needs to send it on a physical medium that
cannot handle the size of the packet, it gets fragmented in several IP
packets with fragmentation flags.
On the TCP layer, there is "segmentation". Because TCP sees data as a
stream, it is of course possible to send data that is longer than a single
Packet is able to handle. The data is then basically just written into
several packets and the other side puts the data stream back together.
LwIP has both features. For a TCP stream that just travels over Ethernet
with constant MTU (1500), there will be no IP fragmentaton, only TCP
segmentation.
When your application does a recv() you just tell it how much data you
expect and it will return when that ammount has arrived.
regards,
Fabian
_______________________________________________
lwip-users mailing list
lwip-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/lwip-users