我的一个 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.
Run Code Online (Sandbox Code Playgroud)
第 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
Run Code Online (Sandbox Code Playgroud)
我对 TCP/IP 有点生疏,所以请原谅我的无知...我看到三向握手发生在数据包 1-3 中。那讲得通。数据包#4 中发生了什么?什么[PSH, ACK]意思?这似乎是不必要的多余确认。实际数据是否在第 4 个数据包中发送?或者这是握手的一些奇怪的延续?
Dar*_*oon 26
PSH是一个推送标志:http : //ask.wireshark.org/questions/20423/pshack-wireshark-capture
Push 标志告诉接收者的网络堆栈将数据直接“推送”到接收套接字,并且在这样做之前不要等待任何更多的数据包。
Push 标志通常意味着数据已经发送,同时覆盖了内置的 TCP 效率延迟,例如Nagle 算法或延迟确认。
这些延迟以一些延迟(通常大约几十毫秒)为代价使 TCP 网络更加高效。对延迟敏感的应用程序不想等待 TCP 的效率延迟,因此应用程序通常会禁用它们,从而通过设置 Push 标志尽可能快地发送数据。
在 Linux 上,这是通过setsockopt()标志TCP_QUICKACK和TCP_NODELAY. 有关man 7 socket更多信息,请参阅。
小智 7
@DarkMoon 解释了 PSH 标志的含义。关于你的数据,连接建立完成(3次握手),然后,是的,客户端向服务器发送了194字节的数据(Len=194)。服务器不喜欢数据并关闭了连接。客户端可能没有正确配置与服务器通信,反之亦然,例如 SSL/TLS 不匹配。
如果您有访问权限,我建议您检查服务器上的日志,看看它是否记录了它不喜欢客户端数据的内容。
| 归档时间: |
|
| 查看次数: |
92600 次 |
| 最近记录: |