什麼是磷小號H,一個_ķ磷小號H,一種CķPSH, ACK在我連接到全域編錄伺服器期間做什麼?
我的一個 linux 伺服器正在嘗試建立到全域目錄伺服器的 LDAPS 連接,並且連接被斷開(可能是 GC 端)。
出於討論的目的,假設 1.1.1.1 是 Linux 伺服器,而 1.2.3.4 是全域編錄伺服器。
如果我嘗試
telnet
從 Linux 框中使用,我會看到:[root@foobox ~]# telnet gcfoo.exampleAD.local 3269 Trying 1.2.3.4... Connected to gcfoo.examplead.local. Escape character is '^]'. Connection closed by foreign host.
第 4 行和第 5 行之間沒有延遲。它只是立即斷開連接。
我認為
telnet
結果可能有點誤導(因為它實際上不適用於任何類型的安全通信),所以我收集了來自設備的實際連接嘗試的數據包擷取(使用需要 LDAPS 的實際程序)。這是我看到的(再次,IP 和源埠已重命名以保護無辜者):
No. Time Source Destination Protocol Length Info 1 0.000000 1.1.1.1 1.2.3.4 TCP 66 27246 > msft-gc-ssl [SYN] Seq=0 Win=5840 Len=0 MSS=1460 SAC_PERM=1 WS=128 2 0.000162 1.2.3.4 1.1.1.1 TCP 62 msft-gc-ssl > 27246 [SYN, ACK] Seq=0 Ack=1 Win=8192 Len=0 MSS=1460 SACK_PERM=1 3 0.000209 1.1.1.1 1.2.3.4 TCP 54 27246 > msft-gc-ssl [ACK] Seq=1 Ack=1 Win=5840 Len=0 4 0.003462 1.1.1.1 1.2.3.4 TCP 248 27246 > msft-gc-ssl [PSH, ACK] Seq=1 Ack=1 Win=5840 Len=194 5 0.007264 1.2.3.4 1.1.1.1 TCP 60 msft-gc-ssl > 27246 [RST] Seq=1 Win=64046 Len=0
我對 TCP/IP 有點生疏,所以請原諒我的無知……我看到數據包 1-3 中發生了三次握手。這就說得通了。數據包#4 中發生了什麼?是什麼
[PSH, ACK]
意思?這似乎是不必要的多餘確認。第 4 個數據包中是否發送了實際數據?或者這是握手的一些奇怪的延續?
PSH
是一個推送標誌:http ://ask.wireshark.org/questions/20423/pshack-wireshark-capturePush 標誌告訴接收者的網路堆棧將數據直接“推送”到接收套接字,而不是在這樣做之前等待任何更多的數據包。
Push 標誌通常意味著數據已經發送,同時覆蓋了內置的 TCP 效率延遲,例如Nagle 算法或延遲確認。
這些延遲以一些延遲(通常大約幾十毫秒)為代價使 TCP 網路更高效。對延遲敏感的應用程序不想等待 TCP 的效率延遲,因此應用程序通常會禁用它們,從而在設置 Push 標誌的情況下盡可能快地發送數據。
在 Linux 上,這是通過
setsockopt()
標誌TCP_QUICKACK
和TCP_NODELAY
. 有關man 7 socket
更多資訊,請參閱。