Windows Server 2003。
我在服务器上安装了最新的WireShark,需要捕获服务器上的数据包,以查明随机发生的连接重置/重新传输问题。 当连接复位发生时,它将重置约600个连接/秒,正常值应低于100 /秒。 服务器实际上是Cisco UCS主机上的虚拟机。 tshark数据包捕获可以帮助找出原因吗?
另一个问题是因为我要捕获所有的stream量(不知道这是一个好主意),我也做分组切片。 我的问题是每个数据包应该限制多less个字节。 看起来像我捕获的数据包有54个字节的头(似乎包括帧,EthernetII,互联网协议,TCP部分)。 我应该使用吗?
tshart -q -b "filesize:20000" -b "files:5" -s 54 -wc:\outfile.pcap
所有的有效载荷将不会被保存? 请指教,谢谢!
对于普通的以太网,如果你想要整个数据包,你的snaplen( -s选项)应该是1500。 这将给你整个数据包,并允许完整的协议解码加载到WireShark本身。 根据你的嗅探,你可能也想增加你的文件大小。
为了至less得到大多数数据包的标题,通常只需要200个snaplen即可。 它会得到E_II,IP,TCP / UDP和一些更高级别的协议头。
有几种types的连接重置,每个都有其自己的含义。
立即重置所有现有的连接
这种types的重置显示为服务器发送的大量RST,可能在数据包之间的stream量很小。 这可能是由TCP / IP堆栈上的应用程序自身重置导致的,而这又会通知TCP / IP堆栈终止与该模块关联的所有连接句柄。
当他们有stream量重置所有现有的连接
这显示在一个更偷偷摸摸的模式嗅。 在某一点之后,任何时候现有的连接从客户站接收stream量都会发出一个RST分组。 客户端所做的事情取决于更高级别的协议,可能会发起重新连接尝试。 这通常是由TCP / IP堆栈本身以静默方式失去连接状态引起的。 就堆栈而言,来自客户端的数据包与任何打开的连接都没有关联,所以它只是发出一个RST数据包而忽略它。
重置新的连接尝试
现有的连接继续工作,但SYN数据包与RST答复。 在正常操作中,这是因为SYN数据包中列出的端口没有开放端口。 这通常是由更高级别的应用程序中的错误引起的。
至于你的转发,这些是由于客户端没有收到他们希望得到的数据包。 这可能是由于丢包造成的,也可能是因为服务器根本就没有发送这些数据包。 如果您在服务器上的嗅探显示重新传输数据包,并列出对话显示没有数据包被服务器发送 ,这是一个迹象表明服务器本身出了问题。 这可能与更高级别应用程序,TCP / IP堆栈或NIC驱动程序本身中的故障有关。 我已经看到网卡驱动更新解决了这个问题,但是在一个不太可能成为问题根源的虚拟机中。 像这样的质量重置可能是由于服务器部分的资源耗尽造成的。