この記事では、クライアント アプリケーションと SQL Server データベース エンジン (サーバー) 間の伝送制御プロトコル (TCP) 接続確立プロセス中のさまざまなハンドシェイクと認証シーケンスをキャプチャするネットワーク トレースの例をいくつか示します。
この記事では、複数のアクティブな結果セット (MARS) 接続についても説明します。 MARS は、SQL Server 2005 (9.x) で導入された SQL Server の機能です。これにより、2 番目のコマンドを実行する前に、最初のコマンドの結果をクリーンアップしなくても、接続で複数のコマンドを実行できます。 MARS は、セッション 多重化 (SMUX) によって実現されます。
このプロセスでは、SQL 認証を使用した通常のログイン プロセスについて説明し、詳細なネットワーク トレース分析を通じてクライアントとサーバー間の会話の各ステップを示します。 ネットワーク トレースの例では、次の手順が示されています。
- TCP 3 方向ハンドシェイク
- ドライバーのハンドシェイク
- SSL/TLS ハンドシェイク
- ログイン パケット交換
- ログインの確認
- コマンドを実行して応答を読み取る
- TCP 4 方向の終了ハンドシェイク
ネットワーク トレースの例
この交換は、接続文字列のLogin Timeout
設定に関係なく 1 秒割り当てられます。
- クライアント IP アドレスは次の値です。
10.10.10.10
- サーバーの IP アドレスは次の値です。
10.10.10.120
ステップ 1. TCP 3 方向ハンドシェイク
すべての TCP 会話は、クライアントからサーバーに送信される SYN
パケット (S
フラグセット) で始まります。 フレーム 6127
では、クライアントはエフェメラル ポート (オペレーティング システムによって動的に割り当てられます) を使用し、サーバー ポート (この場合はポート 1433
) に接続します。 サーバーは、ACK
フラグも設定された独自のSYN
パケットで応答します。 最後に、クライアントは ACK
パケットで応答し、 SYN
パケットを受信したことをサーバーに知らせます。
この手順では、 telnet
コマンドと同じように、基本的な TCP 接続を確立します。 オペレーティング システムは、会話のこの部分を仲介します。 この時点で、クライアントとサーバーは互いについて何も認識しません。
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=
この手順では、 [Bad CheckSum]
の警告は無害であり、 checksum offload が有効になっていることを示します。 つまり、トレースが取得されるよりも低いレベルでネットワーク スタックに追加されます。 他の情報がない場合、この警告は、ネットワーク トレースがクライアントとサーバーのどちらで取得されたかを示します。 この場合、初期 SYN
パケットに表示されるため、トレースはクライアントで取得されました。
ステップ 2. ドライバーのハンドシェイク
クライアント ドライバーと SQL Server の両方が互いについて少し理解している必要があります。 このハンドシェイクでは、ドライバーはサーバーにいくつかの情報と要件を送信します。 この情報には、データ パケットを暗号化するかどうか、複数のアクティブな結果セット (MARS) を使用するかどうか、そのバージョン番号、フェデレーション認証を使用するかどうか、接続 GUID などが含まれます。
サーバーは、認証が必要かどうかなどの情報で応答します。 このシーケンスは、あらゆる種類のセキュリティ ネゴシエーションが実行される前に発生します。
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
手順 3. SSL/TLS ハンドシェイク
SSL/TLS ハンドシェイクは、クライアント Hello パケットとサーバー Hello パケットに加えて、Secure Channel に関連するいくつかの追加パケットで始まります。 この手順では、パケットを暗号化するためにセキュリティ キーがネゴシエートされます。 通常、ログイン パケットだけが暗号化されますが、クライアントまたはサーバーでもデータ パケットを暗号化する必要があります。 TLS のバージョンの選択は、ログインのこの段階で行われます。 TLS バージョンが揃っていない場合、または共通の暗号スイートがない場合、クライアントまたはサーバーは、この段階で接続を閉じることができます。
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
ステップ 4: ログイン パケット
このパケットは暗号化され、ネットワーク パーサーによっては SSL Application Data
または TDS:Data
として表示される場合があります。 この手順の後のすべてのパケットも SSL Application Data
として表示される場合、接続は暗号化されます。
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
ステップ 5: ログインの確認
それ以外の場合は、応答パケットが表示されます。これはログインを確認するか (ログイン ACK
トークンを持つ)、 Login Failed
エラー メッセージをクライアントに返します。
成功したログインのパケット 16 進数データに表示される可能性のある例を次に示します。
.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
ステップ 6. コマンドを実行して応答を読み取る
コマンドは、 TDS:SQLBatch
または TDS:RPCRequest
パケットとして送信されます。 前者はプレーンな Transact-SQL ステートメントを実行し、後者はストアド プロシージャを実行します。 コマンドが長い場合は TCP 継続パケットが表示される場合や、数行を超える行が返された場合は応答パケットに表示されることがあります。
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=
手順 7. TCP 4 方向の終了ハンドシェイク
Microsoft ドライバーは、4 方向ハンドシェイクを使用して接続を閉じます。 多くのサードパーティ製ドライバーは、接続をリセットして接続を閉じるだけで、通常の閉じと異常な近くを区別するのが難しくなります。
4 方向ハンドシェイクは、 FIN
パケットをサーバーに送信するクライアントで構成され、サーバーは ACK
で応答します。 その後、サーバーは独自の FIN
パケットを送信します。このパケットは、クライアントが確認します (ACK
)。
サーバーが最初に FIN
パケットを送信した場合、クライアントとサーバーがセキュリティで保護されたチャネルをネゴシエートできない場合、SSL/TLS ハンドシェイクで最も一般的に見られる異常な終了です。
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=
このプロセスでは、認証プロセスについて説明します。具体的には、SQL 認証シーケンスと SSPI パケットの追加を比較します。 ネットワーク トレースの例では、次の手順が示されています。
- TCP 3 方向ハンドシェイク
- ドライバーのハンドシェイク
- SSL/TLS ハンドシェイク
- ログイン パケット交換
- SSPI パケット送信
- ログインの確認
- TCP 4 方向の終了ハンドシェイク
ネットワーク トレースの例
このログイン シーケンスは、SQL 認証シーケンスに似ています。 SSPI パケットの追加は大きな違いですが、プロパティを拡張しない限り、見分けにくいです。 場合によっては、複数の SSPI パケットが表示されることがあります。
その後、クライアントは資格情報で応答し、サーバーは最後にドメイン コントローラーと確認します。
この交換は、接続文字列のLogin Timeout
設定に関係なく 1 秒割り当てられます。
- クライアント IP アドレスは次の値です。
10.10.10.10
- サーバーの IP アドレスは次の値です。
10.10.10.20
ステップ 1. TCP 3 方向ハンドシェイク
この手順では、TCP 経由でクライアントとサーバーの間に接続が確立されます。 シーケンス番号を同期し、通信を確立するために、パケットの SYN
、 SYN-ACK
、および ACK
が含まれます。
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
この手順では、 [Bad CheckSum]
の警告は無害であり、 checksum offload が有効になっていることを示します。 つまり、トレースが取得されるよりも低いレベルでネットワーク スタックに追加されます。 他の情報がない場合、この警告は、ネットワーク トレースがクライアントとサーバーのどちらで取得されたかを示します。 この場合、初期 SYN
パケットに表示されるため、トレースはクライアントで取得されました。
ステップ 2. ドライバーのハンドシェイク
この手順では、クライアントとサーバーの間で TDS (表形式データ ストリーム) パケットを交換して、通信用のパラメーターを確立します。
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
手順 3. SSL/TLS ハンドシェイク
ここでは、クライアントとサーバーがセキュリティで保護されたハンドシェイクを行って、暗号化された接続を確立します。 このプロセスには、Client Hello、Server Hello、証明書交換、暗号変更の仕様など、複数のパケットが含まれます。
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
ステップ 4: ログイン パケット
クライアントは、ログイン情報を含む TDS パケットをサーバーに送信します。
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
ステップ 5: SSPI パケット送信
このパケットは、Kerberos を使用した認証を示すセキュリティ サポート プロバイダー インターフェイス (SSPI) トークンを伝送します。 そのプロパティが展開され、トークン データが表示されます。
次の出力は、パケット プロパティが展開された SSPI パケットを示しています。
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:
ステップ 6. ログインの確認と受信確認
サーバーは、ログインを確認し、データの受信を確認する TDS パケットで応答します。
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
手順 7. TCP 4 方向の終了ハンドシェイク
最後に、クライアントとサーバーは、 FIN
と ACK
パケットを使用して接続を正常に閉じます。
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
SSPI パケットが存在すると、このログイン プロセスが SQL 認証と区別されます。 ただし、識別では、特に複数の SSPI パケットが交換される場合に、パケット のプロパティを拡張する必要がある場合があります。
このプロセスでは、認証プロセスについて説明します。具体的には、SQL 認証シーケンスと NTLM チャレンジと応答パケットの追加を比較します。 ネットワーク トレースの例では、次の手順が示されています。
- TCP 3 方向ハンドシェイク
- ドライバーのハンドシェイク
- SSL/TLS ハンドシェイク
- ログイン パケット交換
- NTLM チャレンジと応答パケット
- ログインの確認
- コマンド実行
ネットワーク トレースの例
このログイン シーケンスと SQL 認証シーケンスの違いは、2 つのパケットの追加です。
その後、クライアントは資格情報で応答し、サーバーは最後にドメイン コントローラーと確認します。
この交換は、接続文字列のLogin Timeout
設定に関係なく 1 秒割り当てられます。
- クライアント IP アドレスは次の値です。
10.10.10.120
- サーバーの IP アドレスは次の値です。
10.10.10.55
ステップ 1. TCP 3 方向ハンドシェイク
この手順では、TCP 経由でクライアントとサーバーの間に接続が確立されます。 シーケンス番号を同期し、通信を確立するために、パケットの SYN
、 SYN-ACK
、および ACK
が含まれます。
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=
この手順では、 [Bad CheckSum]
の警告は無害であり、 checksum offload が有効になっていることを示します。 つまり、トレースが取得されるよりも低いレベルでネットワーク スタックに追加されます。 他の情報がない場合、この警告は、ネットワーク トレースがクライアントとサーバーのどちらで取得されたかを示します。 この場合、初期 SYN
パケットに表示されるため、トレースはクライアントで取得されました。
ステップ 2. ドライバーのハンドシェイク
この手順では、クライアントとサーバーの間で TDS (表形式データ ストリーム) パケットを交換して、通信用のパラメーターを確立します。
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
手順 3. SSL/TLS ハンドシェイク
ここでは、クライアントとサーバーがセキュリティで保護されたハンドシェイクを行って、暗号化された接続を確立します。 このプロセスには、Client Hello、Server Hello、証明書交換、暗号変更の仕様など、複数のパケットが含まれます。
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
ステップ 4: ログイン パケット
クライアントは、ログイン情報を含む TDS パケットをサーバーに送信します。
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
ステップ 5: NTLM チャレンジと応答パケット
NTLM チャレンジ パケットは、クライアントがログイン パケットを送信した後、サーバーからクライアントに送信されます。
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 {
ステップ 6. ログインの確認
サーバーは、ログインを確認し、データの受信を確認する TDS パケットで応答します。
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,
手順 7. コマンドの実行
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
次のいずれかの理由により、タイムアウトで接続が失敗する可能性があります。
- スレッド不足の SQL Server
- 複数の同時ログイン要求により、ドメイン コントローラーによるキュー認証が行われます
- 別の地理的な場所にあるドメイン コントローラー
- 低速または応答しないドメイン コントローラー
このセクションでは、次のパケットから MARS 接続を決定する方法について説明します。
SMP:SYN
新しいセッションを開始する
SMP:ACK
データ パケットを確認する
SMP:FIN
セッションを終了します
次のトレース例は、さまざまなパケットを示しています。
- クライアント IP アドレスは次の値です。
10.10.10.10
- サーバーの IP アドレスは次の値です。
10.10.10.22
新しい MARS 接続を開く
次の出力例では、NTLM 認証を使用して、次の手順が既に完了していることを前提としています。 MARS は、Kerberos および SQL 認証でも使用できます。
- TCP 3 方向ハンドシェイク
- ドライバーのハンドシェイク
- SSL/TLS ハンドシェイク
- ログイン パケット交換
- NTLM チャレンジと応答パケット
- ログインの確認
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=.
新しい MARS セッションを作成する
接続が確立されたら、新しい 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
セッションでさまざまなコマンドを実行する
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=...
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 =