PreLogin packet
PreLogin packets are exchanged between the client and the server to negotiate the initial connection. This packet type is fully documented on the Microsoft web site.
PreLogin packets are used for exchanging handshake information, such as what versions and options are requested, but also to transmit SSL handshakes.
Properties
boolean option0: if set, then the following 4 properties are valid.
byte majorVersion: the major version of the sender.
byte minorVersion: the minor version of the sender.
short buildNumber: the build number of the sender.
short subBuildNumber: the sub-build number of the sender.
boolean option1: if set, then the following property is valid.
byte encryption: how encryption is available. See the Microsoft documentation for details.
boolean option2: if set, then the following property is valid.
String instValidity: see the Microsoft documentation for details.
boolean option3: if set, then the following property is valid.
int threadId: the thread number on the server.
boolean option4: if set, then the following property is valid.
byte mars: indicates whether the Multiple Active Result Sets option is available.
boolean option5: if set, then the following 3 properties are valid.
UUID connectionGUID: the UUID for the connection. This can be set with a string if properly formatted.
UUID activityGUID: the UUID for the activity. This can be set with a string if properly formatted.
int activitySequence: the activity sequence.
boolean option6: if set, then the following property is valid.
byte fedAuthRequired: whether federated authentication is required.
boolean option7: if set, then the following property is valid.
int nonce: the nonce for federated authentication.
boolean isSSL: if set, this packet is part of the TLS protocol handshake and should therefore not be changed.