Este artigo apresenta vários exemplos de um rastreamento de rede que captura vários handshakes e sequências de autenticação durante o processo de estabelecimento de conexão TCP (Transmission Control Protocol) entre um aplicativo cliente e o Mecanismo de Banco de Dados do SQL Server (o servidor).
Este artigo também descreve várias conexões MARS (Active Result Sets). O MARS é um recurso do SQL Server, introduzido com o SQL Server 2005 (9.x), que permite que vários comandos sejam executados em uma conexão sem a necessidade de limpar os resultados do primeiro comando, antes de executar o segundo comando. O MARS é obtido através da multiplexação de sessão (SMUX).
Esse processo descreve um processo de logon normal usando a autenticação SQL, mostrando cada etapa da conversa entre o cliente e o servidor por meio de uma análise detalhada de rastreamento de rede. O rastreamento de rede de exemplo delineia as seguintes etapas:
- Aperto de mão de três vias TCP
- Aperto de mão do motorista
- Handshake SSL/TLS
- Troca de pacotes de login
- Confirmação de login
- Execute um comando e leia a resposta
- Aperto de mão de fechamento de quatro vias TCP
Exemplo de rastreamento de rede
Essa troca é alocada 1 segundo, independentemente da Login Timeout
configuração na cadeia de conexão.
- O endereço IP do cliente é
10.10.10.10
- O endereço IP do servidor é
10.10.10.120
Etapa 1. Aperto de mão de três vias TCP
Todas as conversas TCP começam com um SYN
pacote (S
conjunto de sinalizadores) enviado do cliente para o servidor. No Frame 6127
, o cliente usa uma porta efêmera (atribuída dinamicamente pelo sistema operacional) e se conecta à porta do servidor, neste caso a porta 1433
. O servidor responde com seu próprio SYN
pacote com o ACK
sinalizador também definido. Finalmente, o cliente responde com um ACK
pacote para informar ao servidor que recebeu seu SYN
pacote.
Esta etapa estabelece uma conexão TCP básica, da mesma forma que um telnet
comando. O sistema operacional medeia essa parte da conversa. Neste ponto, o cliente e o servidor não sabem nada um sobre o outro.
Frame Time Offset Source IP Dest IP Description
----- ----------- ------------ ------------ ---------------------------------------------------------------------------------------------------
6127 116.5776698 10.10.10.10 10.10.10.120 TCP:Flags=......S., SrcPort=60123, DstPort=1433, PayloadLen=0, Seq=4050702293, Ack=0, Win=8192 ( Ne
6128 116.5776698 10.10.10.120 10.10.10.10 TCP:Flags=...A..S., SrcPort=1433, DstPort=60123, PayloadLen=0, Seq=4095166896, Ack=4050702294, Win=
6129 116.5786458 10.10.10.10 10.10.10.120 TCP:Flags=...A...., SrcPort=60123, DstPort=1433, PayloadLen=0, Seq=4050702294, Ack=4095166897, Win=
Nesta etapa, os avisos são benignos e são um indicador de que o [Bad CheckSum]
descarregamento da soma de verificação está habilitado. Ou seja, eles são adicionados em um nível mais baixo na pilha de rede do que o rastreamento é tomado. Na ausência de outras informações, esse aviso indica se o rastreamento de rede foi feito no cliente ou no servidor. Nesse caso, ele aparece no pacote inicial SYN
, portanto, o rastreamento foi feito no cliente.
Etapa 2. Aperto de mão do motorista
Tanto o driver do cliente quanto o SQL Server precisam saber um pouco um sobre o outro. Neste handshake, o driver envia algumas informações e requisitos para o servidor. Essas informações incluem se os pacotes de dados devem ser criptografados, se devem ser usados vários conjuntos de resultados ativos (MARS), seu número de versão, se devem ser usados autenticação federada, o GUID de conexão e assim por diante.
O servidor responde com suas informações, como se ele requer autenticação. Essa sequência acontece antes que qualquer tipo de negociação de segurança seja executada.
Frame Time Offset Source IP Dest IP Description
----- ----------- ------------ ------------ ---------------------------------------------------------------------------------------------------
6130 116.5786458 10.10.10.10 10.10.10.120 TDS:Prelogin, Version = 7.1 (0x71000001), SPID = 0, PacketID = 0, Flags=...AP..., SrcPort=60123, Ds
6131 116.5805998 10.10.10.120 10.10.10.10 TDS:Response, Version = 7.1 (0x71000001), SPID = 0, PacketID = 1, Flags=...AP..., SrcPort=1433, Dst
Etapa 3. Handshake SSL/TLS
O handshake SSL/TLS começa com o pacote Client Hello e, em seguida, o pacote Server Hello, além de alguns pacotes extras relacionados ao Secure Channel. Esta etapa é onde a chave de segurança é negociada para criptografar pacotes. Normalmente, apenas o pacote de login é criptografado, mas o cliente ou o servidor também pode exigir que os pacotes de dados sejam criptografados. A escolha da versão do TLS acontece nesta fase do login. O cliente ou servidor pode fechar a conexão neste estágio se as versões TLS não se alinharem ou não tiverem conjuntos de codificação em comum.
Frame Time Offset Source IP Dest IP Description
----- ----------- ------------ ------------ ---------------------------------------------------------------------------------------------------
6132 116.5835288 10.10.10.10 10.10.10.120 TLS:TLS Rec Layer-1 HandShake: Client Hello. {TLS:328, SSLVersionSelector:327, TDS:326, TCP:325, IP
6133 116.5845058 10.10.10.120 10.10.10.10 TLS:TLS Rec Layer-1 HandShake: Server Hello. Certificate. Server Hello Done. {TLS:328, SSLVersionSe
6134 116.5864588 10.10.10.10 10.10.10.120 TLS:TLS Rec Layer-1 HandShake: Client Key Exchange.; TLS Rec Layer-2 Cipher Change Spec; TLS Rec La
6135 116.5923178 10.10.10.120 10.10.10.10 TLS:TLS Rec Layer-1 Cipher Change Spec; TLS Rec Layer-2 HandShake: Encrypted Handshake Message. {TL
Etapa 4. Pacote de login
Esse pacote é criptografado e pode ser exibido como SSL Application Data
ou TDS:Data
, dependendo do analisador de rede. Se todos os pacotes após essa etapa também aparecerem como SSL Application Data
, a conexão será criptografada.
Frame Time Offset Source IP Dest IP Description
----- ----------- ------------ ------------ ---------------------------------------------------------------------------------------------------
6136 116.5932948 10.10.10.10 10.10.10.120 TLS:TLS Rec Layer-1 SSL Application Data {TLS:328, SSLVersionSelector:327, TDS:326, TCP:325, IPv4:3
Etapa 5. Confirmação de login
Caso contrário, você verá um pacote de resposta, que confirma o logon (tem o token de login ACK
) ou retorna uma mensagem de Login Failed
erro para o cliente.
Aqui está um exemplo do que você pode ver nos dados hexadecimais do pacote para um login bem-sucedido:
.C.h.a.n.g.e.d. .d.a.t.a.b.a.s.e. .c.o.n.t.e.x.t. .t.o. .'.A.d.v.e.n.t.u.r.e.W.o.r.ks'
Frame Time Offset Source IP Dest IP Description
----- ----------- ------------ ------------ ---------------------------------------------------------------------------------------------------
6137 116.5962248 10.10.10.120 10.10.10.10 TDS:Response, Version = 7.1 (0x71000001), SPID = 96, PacketID = 1, Flags=...AP..., SrcPort=1433, Ds
Etapa 6. Execute um comando e leia a resposta
Os comandos são enviados como um TDS:SQLBatch
ou um TDS:RPCRequest
pacote. O primeiro executa instruções Transact-SQL simples e o segundo executa procedimentos armazenados. Você poderá ver pacotes de continuação TCP se o comando for longo ou no pacote de resposta se mais de algumas linhas forem retornadas.
Frame Time Offset Source IP Dest IP Description
----- ----------- ------------ ------------ ---------------------------------------------------------------------------------------------------
6138 116.5991538 10.10.10.10 10.10.10.120 TDS:SQLBatch, Version = 7.1 (0x71000001), SPID = 0, PacketID = 1, Flags=...AP..., SrcPort=60123, Ds
6139 116.5991538 10.10.10.120 10.10.10.10 TDS:Response, Version = 7.1 (0x71000001), SPID = 96, PacketID = 1, Flags=...AP..., SrcPort=1433, Ds
6266 116.8032558 10.10.10.10 10.10.10.120 TCP:Flags=...A...., SrcPort=60123, DstPort=1433, PayloadLen=0, Seq=4050702956, Ack=4095168204, Win=
Etapa 7. Aperto de mão de fechamento de quatro vias TCP
Os drivers da Microsoft usam o handshake de quatro vias para fechar conexões. Muitos drivers de terceiros apenas redefinem a conexão para fechá-la, tornando mais difícil distinguir entre um fechamento normal e anormal.
O handshake de quatro vias consiste no cliente enviando um FIN
pacote para o servidor, ao qual o servidor responde com um ACK
arquivo . Em seguida, o servidor envia seu próprio FIN
pacote, que o cliente reconhece (ACK
).
Se o servidor enviar um FIN
pacote primeiro, trata-se de um fechamento anormal, mais comumente visto no handshake SSL/TLS se o cliente e o servidor não puderem negociar o canal seguro.
Frame Time Offset Source IP Dest IP Description
----- ----------- ------------ ------------ ---------------------------------------------------------------------------------------------------
6362 116.9097008 10.10.10.10 10.10.10.120 TCP:Flags=...A...F, SrcPort=60123, DstPort=1433, PayloadLen=0, Seq=4050702956, Ack=4095168204, Win=
6363 116.9097008 10.10.10.120 10.10.10.10 TCP:Flags=...A...., SrcPort=1433, DstPort=60123, PayloadLen=0, Seq=4095168204, Ack=4050702957, Win=
6364 116.9097008 10.10.10.120 10.10.10.10 TCP:Flags=...A...F, SrcPort=1433, DstPort=60123, PayloadLen=0, Seq=4095168204, Ack=4050702957, Win=
6366 116.9106778 10.10.10.10 10.10.10.120 TCP:Flags=...A...., SrcPort=60123, DstPort=1433, PayloadLen=0, Seq=4050702957, Ack=4095168205, Win=
Esse processo descreve o processo de autenticação, especificamente comparando a sequência de autenticação SQL com a adição de um pacote SSPI. O rastreamento de rede de exemplo delineia as seguintes etapas:
- Aperto de mão de três vias TCP
- Aperto de mão do motorista
- Handshake SSL/TLS
- Troca de pacotes de login
- Transmissão de pacotes SSPI
- Confirmação de login
- Aperto de mão de fechamento de quatro vias TCP
Exemplo de rastreamento de rede
Essa sequência de logon é semelhante à sequência de autenticação SQL. A adição do pacote SSPI é a grande diferença, mas é difícil dizer, a menos que você expanda suas propriedades. Ocasionalmente, você pode ver mais de um pacote SSPI.
Em seguida, o cliente responde com credenciais, que o servidor confirma com o controlador de domínio em sua extremidade.
Essa troca é alocada 1 segundo, independentemente da Login Timeout
configuração na cadeia de conexão.
- O endereço IP do cliente é
10.10.10.10
- O endereço IP do servidor é
10.10.10.20
Etapa 1. Aperto de mão de três vias TCP
Esta etapa é onde uma conexão é estabelecida entre o cliente e o servidor via TCP. Envolve SYN
, SYN-ACK
e ACK
pacotes para sincronizar números de sequência e estabelecer comunicação.
Frame Time Offset Source IP Dest IP Description
----- ----------- ----------- ----------- ---------------------------------------------------------------------------------------------------
216 16.9554967 10.10.10.10 10.10.10.20 TCP:Flags=......S., SrcPort=49299, DstPort=1433, PayloadLen=0, Seq=2243174743, Ack=0, Win=64240 ( N
217 16.9561482 10.10.10.20 10.10.10.10 TCP:Flags=...A..S., SrcPort=1433, DstPort=49299, PayloadLen=0, Seq=329197620, Ack=2243174744, Win=8
218 16.9562004 10.10.10.10 10.10.10.20 TCP:Flags=...A...., SrcPort=49299, DstPort=1433, PayloadLen=0, Seq=2243174744, Ack=329197621, Win=8
Nesta etapa, os avisos são benignos e são um indicador de que o [Bad CheckSum]
descarregamento da soma de verificação está habilitado. Ou seja, eles são adicionados em um nível mais baixo na pilha de rede do que o rastreamento é tomado. Na ausência de outras informações, esse aviso indica se o rastreamento de rede foi feito no cliente ou no servidor. Nesse caso, ele aparece no pacote inicial SYN
, portanto, o rastreamento foi feito no cliente.
Etapa 2. Aperto de mão do motorista
Esta etapa envolve a troca de pacotes TDS (Tabular Data Stream) entre o cliente e o servidor para estabelecer parâmetros para comunicação.
Frame Time Offset Source IP Dest IP Description
----- ----------- ----------- ----------- ---------------------------------------------------------------------------------------------------
219 16.9567950 10.10.10.10 10.10.10.20 TDS:Prelogin, Version = 7.4 (0x74000004), SPID = 0, PacketID = 1, Flags=...AP..., SrcPort=49299, Ds
220 17.0035332 10.10.10.20 10.10.10.10 TDS:Response, Version = 7.4 (0x74000004), SPID = 0, PacketID = 1, Flags=...AP..., SrcPort=1433, Dst
Etapa 3. Handshake SSL/TLS
Aqui, o cliente e o servidor se envolvem em um handshake seguro para estabelecer uma conexão criptografada. Esse processo envolve vários pacotes, incluindo Client Hello, Server Hello, troca de certificados e especificações de alteração de codificação.
Frame Time Offset Source IP Dest IP Description
----- ----------- ----------- ----------- ---------------------------------------------------------------------------------------------------
221 17.0041297 10.10.10.10 10.10.10.20 TLS:TLS Rec Layer-1 HandShake: Client Hello. {TLS:37, SSLVersionSelector:36, TDS:35, TCP:34, IPv4:3
222 17.0081618 10.10.10.20 10.10.10.10 TLS:TLS Rec Layer-1 HandShake: Server Hello. Certificate. Server Key Exchange. Server Hello Done. {
223 17.0102991 10.10.10.10 10.10.10.20 TLS:TLS Rec Layer-1 HandShake: Client Key Exchange.; TLS Rec Layer-2 Cipher Change Spec; TLS Rec La
224 17.0120222 10.10.10.20 10.10.10.10 TLS:TLS Rec Layer-1 Cipher Change Spec; TLS Rec Layer-2 HandShake: Encrypted Handshake Message. {TL
Etapa 4. Pacote de login
O cliente envia um pacote TDS contendo informações de login para o servidor.
Frame Time Offset Source IP Dest IP Description
----- ----------- ----------- ----------- ---------------------------------------------------------------------------------------------------
236 17.0264540 10.10.10.10 10.10.10.20 TDS:Data, Version = 7.4 (0x74000004), Reassembled Packet {TDS:35, TCP:34, IPv4:33}
237 17.0268945 10.10.10.20 10.10.10.10 TCP:Flags=...A...., SrcPort=1433, DstPort=49299, PayloadLen=0, Seq=329198912, Ack=2243178543, Win=8
Etapa 5. Transmissão de pacotes SSPI
Esse pacote carrega o token SSPI (Security Support Provider Interface), indicando autenticação usando Kerberos. Suas propriedades são expandidas para revelar dados de token.
A saída a seguir mostra o pacote SSPI, com as propriedades do pacote expandidas.
Frame Time Offset Source IP Dest IP Description
----- ----------- ----------- ----------- ---------------------------------------------------------------------------------------------------
238 17.0280923 10.10.10.20 10.10.10.10 TDS:Response, Version = 7.4 (0x74000004), SPID = 0, PacketID = 0, Flags=...AP..., SrcPort=1433, Dst
Frame: Number = 238, Captured Frame Length = 250, MediaType = ETHERNET
+ Ethernet: Etype = Internet IP (IPv4),DestinationAddress:[00-15-5D-03-F6-03],SourceAddress:[00-15-5D-03-F6-00]
+ Ipv4: Src = 10.10.10.20, Dest = 10.10.10.10, Next Protocol = TCP, Packet ID = 26363, Total IP Length = 236
+ Tcp: Flags=...AP..., SrcPort=1433, DstPort=49299, PayloadLen=196, Seq=329198912 - 329199108, Ack=2243178543, Win=8212 (scale factor 0x8) =
- Tds: Response, Version = 7.4 (0x74000004), SPID = 0, PacketID = 0, Flags=...AP..., SrcPort=1433, DstPort=49299, PayloadLen=196, Seq=3291989
+ PacketHeader: SPID = 0, Size = 196, PacketID = 0, Window = 0
- TDSServerResponseData:
TokenType: SSPI <---- SSPI Token
+ TokenData:
Etapa 6. Confirmação e confirmação de login
O servidor responde com um pacote TDS confirmando o login e confirmando o recebimento dos dados.
Frame Time Offset Source IP Dest IP Description
----- ----------- ----------- ----------- ---------------------------------------------------------------------------------------------------
239 17.0294294 10.10.10.20 10.10.10.10 TDS:Response, Version = 7.4 (0x74000004), SPID = 57, PacketID = 1, Flags=...AP..., SrcPort=1433, Ds
240 17.0294472 10.10.10.10 10.10.10.20 TCP:Flags=...A...., SrcPort=49299, DstPort=1433, PayloadLen=0, Seq=2243178543, Ack=329199489, Win=8
Etapa 7. Aperto de mão de fechamento de quatro vias TCP
Finalmente, o cliente e o servidor fecham a conexão normalmente usando FIN
e ACK
pacotes.
Frame Time Offset Source IP Dest IP Description
----- ----------- ----------- ----------- ---------------------------------------------------------------------------------------------------
242 18.5494518 10.10.10.10 10.10.10.20 TCP:Flags=...A...F, SrcPort=49299, DstPort=1433, PayloadLen=0, Seq=2243178543, Ack=329199489, Win=8
243 18.5501180 10.10.10.20 10.10.10.10 TCP:Flags=...A...., SrcPort=1433, DstPort=49299, PayloadLen=0, Seq=329199489, Ack=2243178544, Win=8
244 18.5502723 10.10.10.20 10.10.10.10 TCP:Flags=...A...F, SrcPort=1433, DstPort=49299, PayloadLen=0, Seq=329199489, Ack=2243178544, Win=8
245 18.5502896 10.10.10.10 10.10.10.20 TCP:Flags=...A...., SrcPort=49299, DstPort=1433, PayloadLen=0, Seq=2243178544, Ack=329199490, Win=8
A presença do pacote SSPI distingue esse processo de logon da autenticação SQL. No entanto, a identificação pode exigir a expansão das propriedades do pacote, especialmente quando vários pacotes SSPI são trocados.
Esse processo descreve o processo de autenticação, comparando especificamente a sequência de autenticação SQL com a adição de pacotes de desafio e resposta NTLM. O rastreamento de rede de exemplo delineia as seguintes etapas:
- Aperto de mão de três vias TCP
- Aperto de mão do motorista
- Handshake SSL/TLS
- Troca de pacotes de login
- Pacotes de desafio e resposta NTLM
- Confirmação de login
- Execução do comando
Exemplo de rastreamento de rede
A diferença entre essa sequência de logon e a sequência de autenticação SQL é a adição de dois pacotes.
Em seguida, o cliente responde com credenciais, que o servidor confirma com o controlador de domínio em sua extremidade.
Essa troca é alocada 1 segundo, independentemente da Login Timeout
configuração na cadeia de conexão.
- O endereço IP do cliente é
10.10.10.120
- O endereço IP do servidor é
10.10.10.55
Etapa 1. Aperto de mão de três vias TCP
Esta etapa é onde uma conexão é estabelecida entre o cliente e o servidor via TCP. Envolve SYN
, SYN-ACK
e ACK
pacotes para sincronizar números de sequência e estabelecer comunicação.
Frame Time Offset Source IP Dest IP Description
----- ------------ ------------ ------------ ---------------------------------------------------------------------------------------------------
76078 1181.9915832 10.10.10.120 10.10.10.55 TCP: [Bad CheckSum]Flags=......S., SrcPort=64444, DstPort=57139, PayloadLen=0, Seq=2766542083, Ack=
76079 1181.9922255 10.10.10.55 10.10.10.120 TCP:Flags=...A..S., SrcPort=57139, DstPort=64444, PayloadLen=0, Seq=3862866646, Ack=2766542084, Win
76080 1181.9924272 10.10.10.120 10.10.10.55 TCP: [Bad CheckSum]Flags=...A...., SrcPort=64444, DstPort=57139, PayloadLen=0, Seq=2766542084, Ack=
Nesta etapa, os avisos são benignos e são um indicador de que o [Bad CheckSum]
descarregamento da soma de verificação está habilitado. Ou seja, eles são adicionados em um nível mais baixo na pilha de rede do que o rastreamento é tomado. Na ausência de outras informações, esse aviso indica se o rastreamento de rede foi feito no cliente ou no servidor. Nesse caso, ele aparece no pacote inicial SYN
, portanto, o rastreamento foi feito no cliente.
Etapa 2. Aperto de mão do motorista
Esta etapa envolve a troca de pacotes TDS (Tabular Data Stream) entre o cliente e o servidor para estabelecer parâmetros para comunicação.
Frame Time Offset Source IP Dest IP Description
----- ------------ ------------ ------------ ---------------------------------------------------------------------------------------------------
76081 1181.9936195 10.10.10.120 10.10.10.55 TDS:Prelogin, Version = 7.3 (0x730a0003), SPID = 0, PacketID = 1, Flags=...AP..., SrcPort=64444, Ds
76082 1181.9945238 10.10.10.55 10.10.10.120 TDS:Response, Version = 7.3 (0x730a0003), SPID = 0, PacketID = 1, Flags=...AP..., SrcPort=57139, Ds
Etapa 3. Handshake SSL/TLS
Aqui, o cliente e o servidor se envolvem em um handshake seguro para estabelecer uma conexão criptografada. Esse processo envolve vários pacotes, incluindo Client Hello, Server Hello, troca de certificados e especificações de alteração de codificação.
Frame Time Offset Source IP Dest IP Description
----- ------------ ------------ ------------ ---------------------------------------------------------------------------------------------------
76083 1181.9953108 10.10.10.120 10.10.10.55 TLS:TLS Rec Layer-1 HandShake: Client Hello. {TLS:3192, SSLVersionSelector:3191, TDS:3190, TCP:3189
76084 1181.9967001 10.10.10.55 10.10.10.120 TLS:TLS Rec Layer-1 HandShake: Server Hello. Certificate. Server Hello Done. {TLS:3192, SSLVersionS
76085 1181.9978947 10.10.10.120 10.10.10.55 TLS:TLS Rec Layer-1 HandShake: Client Key Exchange.; TLS Rec Layer-2 Cipher Change Spec; TLS Rec La
76086 1182.0010146 10.10.10.55 10.10.10.120 TLS:TLS Rec Layer-1 Cipher Change Spec; TLS Rec Layer-2 HandShake: Encrypted Handshake Message. {TL
Etapa 4. Pacote de login
O cliente envia um pacote TDS contendo informações de login para o servidor.
Frame Time Offset Source IP Dest IP Description
----- ------------ ------------ ------------ ---------------------------------------------------------------------------------------------------
76096 1182.0069763 10.10.10.120 10.10.10.55 TLS:TLS Rec Layer-1 SSL Application Data {TLS:3192, SSLVersionSelector:3191, TDS:3190, TCP:3189, IP
Etapa 5. Pacotes de desafio e resposta NTLM
O pacote de desafio NTLM é enviado do servidor para o cliente depois que o cliente envia o pacote de logon.
Frame Time Offset Source IP Dest IP Description
----- ------------ ------------ ------------ ---------------------------------------------------------------------------------------------------
76097 1182.0093903 10.10.10.55 10.10.10.120 NLMP:NTLM CHALLENGE MESSAGE {TDS:3190, TCP:3189, IPv4:3187}
76098 1182.0102507 10.10.10.120 10.10.10.55 NLMP:NTLM AUTHENTICATE MESSAGEVersion:v2, Domain: CONTOSO, User: joe33, Workstation: 10.10.10.120 {
Etapa 6. Confirmação de login
O servidor responde com um pacote TDS confirmando o login e confirmando o recebimento dos dados.
Frame Time Offset Source IP Dest IP Description
----- ------------ ------------ ------------ ---------------------------------------------------------------------------------------------------
76100 1182.0274716 10.10.10.55 10.10.10.120 TDS:Response, Version = 7.3 (0x730a0003), SPID = 315, PacketID = 1, Flags=...AP..., SrcPort=57139,
Etapa 7. Executar um comando
Frame Time Offset Source IP Dest IP Description
----- ------------ ------------ ------------ ---------------------------------------------------------------------------------------------------
76102 1182.0324639 10.10.10.120 10.10.10.55 TDS:SQLBatch, Version = 7.3 (0x730a0003), SPID = 0, PacketID = 1, Flags=...AP..., SrcPort=64444, Ds
A conexão pode falhar com um tempo limite, resultante de qualquer um dos seguintes motivos:
- um SQL Server sem threads
- várias solicitações de logon simultâneas, resultando em autenticação em fila com o controlador de domínio
- um controlador de domínio em uma localização geográfica diferente
- um controlador de domínio lento ou sem resposta
Esta seção descreve como você pode determinar uma conexão MARS a partir dos seguintes pacotes:
SMP:SYN
inicia uma nova sessão
SMP:ACK
reconhece pacotes de dados
SMP:FIN
encerra uma sessão
Os exemplos de rastreamento a seguir mostram os vários pacotes.
- O endereço IP do cliente é
10.10.10.10
- O endereço IP do servidor é
10.10.10.22
Abrir uma nova conexão MARS
A saída de exemplo a seguir pressupõe que as etapas a seguir já estejam concluídas, usando a autenticação NTLM. O MARS também pode ser usado com autenticação Kerberos e SQL.
- Aperto de mão de três vias TCP
- Aperto de mão do motorista
- Handshake SSL/TLS
- Troca de pacotes de login
- Pacotes de desafio e resposta NTLM
- Confirmação de login
Frame Time Offset Source IP Dest IP Description
----- ----------- ----------- ----------- ---------------------------------------------------------------------------
6704 568.0608108 10.10.10.10 10.10.10.22 TCP:Flags=CE....S., SrcPort=52965, DstPort=1433, PayloadLen=0, Seq=66183290
6713 568.0608483 10.10.10.22 10.10.10.10 TCP: [Bad CheckSum]Flags=.E.A..S., SrcPort=1433, DstPort=52965, PayloadLen=
6754 568.0613015 10.10.10.10 10.10.10.22 TCP:Flags=...A...., SrcPort=52965, DstPort=1433, PayloadLen=0, Seq=66183290
6777 568.0615479 10.10.10.10 10.10.10.22 TDS:Prelogin, Version = 7.4 (0x74000004), SPID = 0, PacketID = 1, Flags=...
6786 568.0616817 10.10.10.22 10.10.10.10 TDS:Response, Version = 7.4 (0x74000004), SPID = 0, PacketID = 1, Flags=...
6833 568.0622426 10.10.10.10 10.10.10.22 TLS:TLS Rec Layer-1 HandShake: Client Hello. {TLS:165, SSLVersionSelector:1
6873 568.0627953 10.10.10.22 10.10.10.10 TLS:TLS Rec Layer-1 HandShake: Server Hello. Certificate. Server Key Exchan
6900 568.0632639 10.10.10.10 10.10.10.22 TCP:Flags=...A...., SrcPort=52965, DstPort=1433, PayloadLen=0, Seq=66183319
6977 568.0643795 10.10.10.10 10.10.10.22 TLS:TLS Rec Layer-1 HandShake: Client Key Exchange.; TLS Rec Layer-2 Cipher
7045 568.0655160 10.10.10.22 10.10.10.10 TLS:TLS Rec Layer-1 Cipher Change Spec; TLS Rec Layer-2 HandShake: Encrypte
7233 568.0679639 10.10.10.10 10.10.10.22 TDS:Data, Version = 7.4 (0x74000004), Reassembled Packet {TDS:162, TCP:160,
7275 568.0684467 10.10.10.22 10.10.10.10 NLMP:NTLM CHALLENGE MESSAGE {TDS:162, TCP:160, IPv4:1}
7331 568.0692389 10.10.10.10 10.10.10.22 NLMP:NTLM AUTHENTICATE MESSAGE Version:NTLM v2, Domain: CONTOSO, User: joe1
11791 568.1295675 10.10.10.22 10.10.10.10 TCP: [Bad CheckSum]Flags=...A...., SrcPort=1433, DstPort=52965, PayloadLen=
17978 568.2162145 10.10.10.22 10.10.10.10 TDS:Response, Version = 7.4 (0x74000004), SPID = 255, PacketID = 1, Flags=.
Criar uma nova sessão MARS
Depois que a conexão for estabelecida, crie uma nova sessão MARS (Sid = 0
).
Frame Time Offset Source IP Dest IP Description
----- ----------- ----------- ----------- ---------------------------------------------------------------------------
18024 568.2170301 10.10.10.10 10.10.10.22 SMP:SYN, Sid = 0, Length = 16, SeqNum = 0, Wndw = 4 {SMP:190, TCP:160, IPv4
Executar vários comandos na sessão
Frame Time Offset Source IP Dest IP Description
----- ----------- ----------- ----------- ---------------------------------------------------------------------------
18028 568.2170301 10.10.10.10 10.10.10.22 TDS:SQLBatch, Version = 7.4 (0x74000004), SPID = 0, PacketID = 1, Flags=...
18031 568.2170676 10.10.10.22 10.10.10.10 TCP: [Bad CheckSum]Flags=...A...., SrcPort=1433, DstPort=52965, PayloadLen=
18038 568.2173641 10.10.10.22 10.10.10.10 TDS:Response, Version = 7.4 (0x74000004), SPID = 255, PacketID = 1, Flags=.
18079 568.2178650 10.10.10.10 10.10.10.22 TDS:SQLBatch, Version = 7.4 (0x74000004), SPID = 0, PacketID = 1, Flags=...
Exemplo do pacote SMP:ACK
Frame Time Offset Source IP Dest IP Description
----- ----------- ----------- ----------- ---------------------------------------------------------------------------
40874 568.5121135 10.10.10.22 10.10.10.10 TDS:Response, Version = 7.4 (0x74000004), SPID = 255, PacketID = 1, Flags=.
40876 568.5121237 10.10.10.22 10.10.10.10 TDS:Continuous Response, Version = 7.4 (0x74000004), SPID = 255, PacketID =
40911 568.5124644 10.10.10.10 10.10.10.22 SMP:ACK, Sid = 0, Length = 16, SeqNum = 34, Wndw = 40 {SMP:190, TCP:160, IP
40950 568.5128422 10.10.10.22 10.10.10.10 TDS:Continuous Response, Version = 7.4 (0x74000004), SPID = 255, PacketID =