On Mon, 16 Aug 2004 17:43:41 +0200, Rami AlHasan wrote:
>
> Ok, thanks again.
>
> I checked the Skinny dissection code. I saw that you call
> tcp_dissect_pdus in the dissect_skinny function.
Use this abstraction. Then it will be almost trivial to do reassembly
of segmented pdus.
>
> I had some problem understanding what is done exactly to reassemble the
> segmented messages.
>
> Assume that I have one skinny message segmented into two packets as
> follows:
>
> SKINNY-MESSAGE
> {
>
> Header
> {
> Size = 48
> Reserved = 0
> }
> Data
> {
> MessageID = 0x1
> Message-Data = stream of (48 - 12 = 36 bytes)
> }
> }
>
> Assume also first TCP packet payload length is 12 and the second TCP
> packet payload is 36.
>
> Here when I check for the Skinny Size field I will find it bigger than
> the payload. I have to wait for the next packet to take the remaining
> bytes.
>
> 1- Where do Ethereal store the first packet 12 bytes until it gets the
> rest?
in a reassembly buffer in memory.
> 2- How does ethereal link segmented packets from the packets dump, does
> it check for src and dest and seq number?
Yes, it checks src ip/dst ip/src port/dst port and sequence number.
> 2- When I get the second TCP packed should I read directly from payload
> assuming that this my required segment. i.e. without header checking
> issues as in the normal start of skinny validation.
use the abstraction above and you dont have to worry about reassembly.
Ethereal will do it for you.
>
> Regards,
> Rami.AlHasan