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 conexões MARS (Multiple Ative 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 ter que limpar os resultados do primeiro comando, antes de executar o segundo. MARS é alcançado através de multiplexagem de sessões (SMUX).
Este processo descreve um processo de login normal usando autenticação SQL, mostrando cada etapa da conversa entre o cliente e o servidor através de uma análise detalhada de rastreamento de rede. O exemplo de rastreamento de rede delineia as seguintes etapas:
- Aperto de mão de três vias TCP
- Aperto de mão do motorista
- Aperto de mão SSL/TLS
- Troca de pacotes de login
- Confirmação de login
- Execute um comando e leia a resposta
- Finalização de conexão TCP em quatro etapas
Exemplo de rastreamento de rede
Esta troca tem uma alocação de 1 segundo, independentemente da configuração da Login Timeout
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
Passo 1. Aperto de mão de três vias TCP
Todas as conversas TCP começam com um pacote SYN
(conjunto de sinalizadoresS
) 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 pacote de SYN
com o sinalizador ACK
também definido. Finalmente, o cliente responde com um pacote ACK
para informar ao servidor que recebeu seu pacote SYN
.
Esta etapa estabelece uma conexão TCP básica, da mesma forma que um comando telnet
faria. 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 de [Bad CheckSum]
são benignos e são um indicador de que o descarregamento de 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 é feito. 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 de SYN
inicial, então o rastreamento foi feito no cliente.
Passo 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 o MARS (Multiple Ative Result Sets) deve ser usado, seu número de versão, se a autenticação federada deve ser usada, o GUID de conexão e assim por diante.
O servidor responde com suas informações, como se requer autenticação. Essa sequência acontece antes de qualquer tipo de negociação de segurança ser realizada.
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
Passo 3. Aperto de mão 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 pode exigir que os pacotes de dados também sejam criptografados. A escolha da versão do TLS acontece nesta etapa do login. O cliente ou servidor pode fechar a conexão neste estágio se as versões TLS não estiverem alinhadas ou se não tiverem nenhum conjunto 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
Passo 4. Pacote de login
Este pacote é encriptado e pode ser apresentado como SSL Application Data
ou TDS:Data
, dependendo do seu analisador de rede. Se todos os pacotes após esta 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
Passo 5. Confirmação de login
Caso contrário, você verá um pacote de resposta, que confirma o login (tem o token de login ACK
) ou retorna uma mensagem de erro Login Failed
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
Passo 6. Execute um comando e leia a resposta
Os comandos são enviados como um TDS:SQLBatch
ou um pacote TDS:RPCRequest
. O primeiro executa instruções Transact-SQL simples e o segundo executa procedimentos armazenados. Você pode 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=
Passo 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 reiniciam a conexão para fechá-la, tornando mais difícil distinguir entre um fechamento normal e anormal.
O handshake de quatro vias consiste em o cliente enviar um pacote FIN
para o servidor, ao que o servidor responde com um ACK
. Em seguida, o servidor envia seu próprio pacote de FIN
, que o cliente reconhece (ACK
).
Se o servidor enviar primeiro um pacote FIN
, trata-se de um encerramento anormal, mais comumente observado no aperto de mão SSL/TLS, caso o cliente e o servidor não consigam 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, comparando especificamente a sequência de autenticação SQL com a adição de um pacote SSPI. O exemplo de rastreamento de rede delineia as seguintes etapas:
- Aperto de mão de três vias TCP
- Aperto de mão do motorista
- Aperto de mão 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 de 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 transação é atribuída um segundo, independentemente da configuração de Login Timeout
na string de conexão.
- O endereço IP do cliente é
10.10.10.10
- O endereço IP do servidor é
10.10.10.20
Passo 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 pacotes SYN
, SYN-ACK
e ACK
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 de [Bad CheckSum]
são benignos e são um indicador de que a funcionalidade de descarregamento de 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 é feito. 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 de SYN
inicial, então o rastreamento foi feito no cliente.
Passo 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 de 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
Passo 3. Aperto de mão 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 Olá do Cliente, Olá do Servidor, troca de certificados e especificações de alteração de cifra.
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
Passo 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
Passo 5. Transmissão de pacotes SSPI
Este pacote carrega o token SSPI (Security Support Provider Interface), indicando a autenticação usando Kerberos. Suas propriedades são expandidas para revelar dados de token.
A saída a seguir mostra o pacote SSPI, com propriedades de 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:
Passo 6. Confirmação e reconhecimento de login
O servidor responde com um pacote TDS confirmando o login e acusando 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
Passo 7. Encerramento em quatro passos do handshake 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 login da autenticação SQL. No entanto, a identificação pode exigir a expansão das propriedades do pacote, particularmente 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 exemplo de rastreamento de rede delineia as seguintes etapas:
- Aperto de mão de três vias TCP
- Aperto de mão do motorista
- Aperto de mão SSL/TLS
- Troca de pacotes de login
- Pacotes de desafio e resposta NTLM
- Confirmação de login
- Execução de comandos
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.
Atribui-se 1 segundo a esta troca, independentemente da configuração de Login Timeout
na string de ligação.
- O endereço IP do cliente é
10.10.10.120
- O endereço IP do servidor é
10.10.10.55
Passo 1. Estabelecimento de conexão em três etapas TCP
Esta etapa é onde uma conexão é estabelecida entre o cliente e o servidor via TCP. Envolve pacotes SYN
, SYN-ACK
e ACK
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 de [Bad CheckSum]
são benignos e são um indicador de que o descarregamento de soma de verificação de está habilitado. Ou seja, eles são adicionados a um nível mais baixo na pilha de rede do que onde o rastreamento é realizado. 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 de SYN
inicial, então o rastreamento foi feito no cliente.
Passo 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 de 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
Passo 3. Aperto de mão 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 Olá do Cliente, Olá do Servidor, troca de certificados e especificações de alteração de cifra.
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
Passo 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
Passo 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 login.
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 {
Passo 6. Confirmação de login
O servidor responde com um pacote TDS confirmando o login e acusando 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,
Passo 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 por qualquer um dos seguintes motivos:
- um SQL Server com falta de threads
- Várias solicitações de login 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 que não responde
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
Abra 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
- Aperto de mão 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 =