TCP segment of a reassembled PDU,就这么简单!

1、问题发现

最近在定位一个网络问题时,发现在wireshark抓包过程中出现大量 [TCP segment of a reassembled PDU]提示信息。这到底是什么,在什么情况下会出现这样的信息?

TCP segment of a reassembled PDU,就这么简单!

2、 问题解释

实际上,当我们基于TCP在传输消息时,对于上面的应用层如果出于某些原因(如超过MSS)TCP Segment不能一次包含全部的应用层PDU,而要把一个完整消息分成多个段,就会将除了最后一个分段(segment)的所有其他分段都打上“TCP segment of a reassembled PDU”。下图展示的是通过HTTP下载一份文件的抓包示例,图中最下面的红框清晰地给出了此消息由哪几个相关的段组装而成的。

TCP segment of a reassembled PDU,就这么简单!

需要注意的是,如果除了最后一个分段的所有分段中wireshark能够识别出相应的消息类型,是不会标记“TCP segment of a reassembled PDU”。如下图是SSL的消息抓包,我们知道SSL中 Server Hello与Certificate是服务端一起发给客户端的,图中编号14、15、16组装成了完整的TCP Data也印证了这一点,虽然14号分段属于消息的其中一部分,但却没有标记,因为wireshark识别出这是应用层的server hello消息。

TCP segment of a reassembled PDU,就这么简单!

 3、总结

 当一个完整消息被分割成多个TCP segment 时,在能识别运行在TCP之上的应用层协议前提下,wireshark为了能标识出哪些TCP segment需要被重新组装(reassembled),从而将除了最后一个的其他segment都打上“TCP segment of a reassembled PDU”。