Sdílet prostřednictvím


Trasování sekvence uzavření síťového připojení v databázovém stroji

Tento článek představuje příklady trasování sítě, které zachycuje sekvenci při ukončení připojení TCP (Transmission Control Protocol) mezi klientskou aplikací a databázovým strojem SQL Serveru (server). Pochopení těchto vzorů je zásadní pro diagnostiku chování sítě, identifikaci strategií sdružování a optimalizaci správy připojení ve webových aplikacích nebo aplikacích služeb.

Zavírání typů připojení

Tento článek obsahuje příklady pro normální připojení TCP a několik připojení MARS (Active Result Sets). MARS je funkce SQL Serveru představená v systému SQL Server 2005 (9.x), která umožňuje spouštění více příkazů na připojení, aniž by bylo nutné před spuštěním druhého příkazu vyčistit výsledky z prvního příkazu. Prostřednictvím multiplexování relací (SMUX) je dosaženo MARS.

Tato část popisuje několik příkladů zavření síťového připojení.

  • IP adresa klienta je 10.10.10.104
  • IP adresa serveru je 10.10.10.22

Zavírání paketů

Tento příklad ukazuje normální sekvenci uzavření připojení. Všimněte si malého počtu snímků a časových posunů. Tato posloupnost je nejpravděpodobněji uzavřením sdíleného připojení. K tomu by mělo dojít během 30 sekund od začátku trasování, jinak se můžou zobrazit i keep-alive pakety.

Diagram čtyřcestného uzavření relace protokolu TCP

Frame Offset    Source IP    Dest IP      Description
----- --------- ------------ ------------ ---------------------------------------------------------------------------
   50 4.1529661 10.10.10.104  10.10.10.22 TCP:Flags=...A...F, SrcPort=4657, DstPort=1433, PayloadLen=0, Seq=413460761
   51 4.1529661  10.10.10.22 10.10.10.104 TCP:Flags=...A...., SrcPort=1433, DstPort=4657, PayloadLen=0, Seq=280398321
   52 4.1529661  10.10.10.22 10.10.10.104 TCP:Flags=...A...F, SrcPort=1433, DstPort=4657, PayloadLen=0, Seq=280398321
   54 4.2330441 10.10.10.104  10.10.10.22 TCP:Flags=...A...., SrcPort=4657, DstPort=1433, PayloadLen=0, Seq=413460761

příkazy Transact-SQL a zavírání paketů

Tento příklad ukazuje zavření nepoolovaného připojení po dvou příkazech Transact-SQL. Pokud toto připojení nebylo součástí fondu, mohli byste také vidět pakety pro udržování spojení spojené s odesíláním připojení zpět do fondu připojení, místo zavíracích paketů bezprostředně po poslední odpovědi ze serveru. Doporučujeme sdružování připojení v jakémkoli typu webové nebo servisní aplikace, aby bylo umožněno opakované použití připojení. Sdružování připojení snižuje počet připojení k serveru a minimalizuje náklady a zpoždění spojené s novými připojeními.

Frame Offset    Source IP    Dest IP      Description
----- --------- ------------ ------------ ---------------------------------------------------------------------------
  364 9.1949581 10.10.10.104  10.10.10.22 TDS:SQLBatch, Version = 7.300000, SPID = 0, PacketID = 1, Flags=...AP..., S
  365 9.1949581  10.10.10.22 10.10.10.104 TDS:Response, Version = 7.300000, SPID = 130, PacketID = 1, Flags=...AP...,
  366 9.3043331 10.10.10.104  10.10.10.22 TDS:SQLBatch, Version = 7.300000, SPID = 0, PacketID = 1, Flags=...AP..., S
  367 9.3072631  10.10.10.22 10.10.10.104 TDS:Response, Version = 7.300000, SPID = 130, PacketID = 1, Flags=...AP...,
  375 9.4078491 10.10.10.104  10.10.10.22 TCP:Flags=...A...F, SrcPort=4647, DstPort=1433, PayloadLen=0, Seq=157672648
  376 9.4078491  10.10.10.22 10.10.10.104 TCP:Flags=...A...., SrcPort=1433, DstPort=4647, PayloadLen=0, Seq=192890973
  379 9.4078491  10.10.10.22 10.10.10.104 TCP:Flags=...A...F, SrcPort=1433, DstPort=4647, PayloadLen=0, Seq=192890973
  397 9.5221071 10.10.10.104  10.10.10.22 TCP:Flags=...A...., SrcPort=4647, DstPort=1433, PayloadLen=0, Seq=157672649

Nečinné připojení nebo připojení ve fondu je uzavíráno

Připojení je uzavřeno 10 sekund po předchozí výměně dat keep-alive (viz sloupec Delta).

Poznámka

Analyzátor omylem označí počáteční ACK+FIN paket (Frame 1881) jako udržovací ACK paket, pravděpodobně kvůli předchozímu udržovacímu paketu. Inicializuje se však uzavření připojení.

Frame Offset     Delta      Source IP   Dest IP     Description
----- ---------- ---------- ----------- ----------- -----------------------------------------------------------------
 1314 16.3641802  0.0000000 10.10.10.45 10.10.10.51 TCP:[Keep alive]Flags=...A...., SrcPort=51708, DstPort=1433, Payl
 1317 16.3677083  0.0035281 10.10.10.51 10.10.10.45 TCP:[Keep alive ack]Flags=...A...., SrcPort=1433, DstPort=51708, 
 1327 16.4269375  0.0592292 10.10.10.51 10.10.10.45 TCP:[Keep alive]Flags=...A...., SrcPort=1433, DstPort=51708, Payl
 1328 16.4269637  0.0000262 10.10.10.45 10.10.10.51 TCP:[Keep alive ack]Flags=...A...., SrcPort=51708, DstPort=1433, 
 1881 26.7918499 10.3648862 10.10.10.45 10.10.10.51 TCP:[Keep alive ack]Flags=...A...F, SrcPort=51708, DstPort=1433, 
 1886 26.7929474  0.0010975 10.10.10.51 10.10.10.45 TCP:Flags=...A...., SrcPort=1433, DstPort=51708, PayloadLen=0, Se
 1888 26.7929474  0.0000000 10.10.10.51 10.10.10.45 TCP:Flags=...A...F, SrcPort=1433, DstPort=51708, PayloadLen=0, Se
 1890 26.7929947  0.0000473 10.10.10.45 10.10.10.51 TCP:Flags=...A...., SrcPort=51708, DstPort=1433, PayloadLen=0, Se