我在Oracle数据库中有超时错误,当我使用Wireshark嗅探它时,我得到一个包含以下信息的数据包:重新组装的PDU的TCP段。
它有这个TCP信息:
传输控制协议,Src端口:ncube-lm(1521),Dst端口:57861(57861),Seq:1,Ack:1,Len:1
我有10个包,其来源和目的地与上述相同。
在第一个包含信息'重新组装的PDU的TCP段'的数据包之后,出现了9个相同的数据包:
2728 596.537143000 10.XX.XX.XX 10.YY.YY.YY TCP 55 [TCP Keep-Alive] ncube-lm> 57861 [ACK] Seq = 1 Ack = 1 Win = 258 Len = 1.
然后我有最后一个数据包:
2746 605.585011000 10.XX.XX.XX 10.YY.YY.YY TCP 54 ncube-lm> 57861 [RST,ACK] Seq = 2 Ack = 1 Win = 0 Len = 0
最后一个数据包出现在数据库中发生超时的确切时间。
如何重新组装长度为1的数据包?当它来自我们自己的本地机器时为什么会重新组装?
此数据包的来源是我们的Oracle数据库(端口1521)。为什么它发送一个包含一个字节数据的数据包(值为'00')?
谢谢!
答案 0 :(得分:1)
默认情况下,keep-alive(tcp_keepalive_probes)探测计数为9.机器已发送9个保持活动探测但未从另一端获得任何响应,因此它已重置连接。
答案 1 :(得分:0)
通常,len为1的TCP数据包是控制数据包(ACK,SYN,FIN,RST)。我猜这是你遇到的情况。 此外,Wireshark数据包额外信息(在您的情况下 - 重新组装的PDU'的TCP段)有时会错误地标记数据包,因此您不应完全依赖它。
我不认为这些数据包是超时问题的原因。你能提供更多关于会话剩余时间和数据包时间的信息吗?