Ethereal-dev: Re: [Ethereal-dev] TDS decoding

Note: This archive is from the project's previous web site, ethereal.com. This list is no longer active.

From: "Ronnie Sahlberg" <rsahlber@xxxxxxxxxxxxxx>
Date: Thu, 22 Nov 2001 20:17:33 +1100
Hi,

----- Original Message -----
From: "Brian Bruns"
Sent: Thursday, November 22, 2001 9:05 AM
Subject: Re: [Ethereal-dev] TDS decoding


> Hi,
>
> I've completed preliminary work on the outer TDS protocol (netlib).  Next
> up is the TDS protocol proper.

Cool.
I have one thought though,
Is netlib dedicated to only carry the TDS protocol or can it carry other
protocols as well?
Can a netlib PDU span multiple TCP packets?
If it can not, i.e. a netlib PDU must fit within a single TCP segment, then
the length field in the header would not make sense?

If TDS is dedicated only to encapsulate TDS and also if netlib PDUs can span
multiple TCP segments
then you could consider the following enhancements
1, remove the part of the heuristic check that checks the length of the
netlib PDU being equal to the length of the captured
payload.
2, instead, since (according to the assumption made above) netlib only
carries TDS PDUs, check beyong the netlib header, inside
the TDS PDU to strenghten the heuristics for detecting netlib (so it will
not be too weak) (if possible)
3, add TCP-desegmentation to netlib so it can also handle netlib PDUs which
spans multiple TCP segments.
4, add a mechanism so netlib can handle multiple netlib PDUs inside a single
TCP segment.


As an alternative, drop 1 and 2 and only do 3 and 4 if you already have seen
login packets in the conversation which identifies the
conversation as being netlib and nothing else.


See packet-diameter.c for an example on how to use tcp-desegmentation. it is
fairly easy.