Ethereal-dev: [Ethereal-dev] TDS decoding

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

From: Brian Bruns <camber@xxxxxxx>
Date: Tue, 20 Nov 2001 17:01:35 -0500 (EST)
First off, I just joined the list so forgive me if this question is 
covered in documentation somewhere that I haven't found yet. (Feel free to 
tell me RTFM ;-)

I'm the primary author of FreeTDS, which is a set of libraries to talk 
from Unix to MS SQL Server and Sybase Databases.  Anyway, I've had in the 
back of my mind for a while building a dissector to decode TDS (see 
item #30 on the ethereal wish list).

So, I'm doing some playing around with what it'll take to accomplish this, 
and ran into a couple of questions.  The TDS protocol is really two 
protocols, netlib and TDS.  

Netlib is an 8 byte header at the start of each logical packet.  It 
frames the TDS protocol, giving packet type and size.  It's job is to glue 
the TDS protocol to whatever transport its riding atop (TCP, DecNet, 
IPX/SPX, etc...).

Within this, are a series of PDUs (protocol data units).  This is 
simplifying quite a bit, but the other gory details are orthogonal to this 
discussion.  The main point is that a PDU may half appear in one netlib 
packet and half in another.  Furthermore, dissecting many of the 
downstream packets relies on much information from upstream.

My question is, does it make sense to make netlib its own dissector? And, 
how do other protocols deal with a trace that may start somewhere in the 
middle, missing important data from the start of the stream?

Thanks,

Brian
camber@xxxxxxx
http://www.freetds.org