我正在实施一个IPS系统,在观察线束重组的TCP流程时,我有点困惑。
例如,服务器将HTML页面传输到客户端。该页面分为4个部分,并由TCP数据包封装。然后,服务器将另外4个TCP数据包推送到客户端以获取JavaScript文本。
我的问题是,我知道我可以通过测量它们的Seq和Len来确定它们的序列,但是如何确定HTML文本的结尾?我怎么知道HTML包含4个TCP数据包而不是5个?
答案 0 :(得分:2)
RFC 2616 section 4.4表示可以通过多种方式提供消息长度:
Content-Length
标题。 (这可能是你看到的情况,而且它相对简单。如果你知道正文开头的位置(seq +包内的偏移量)和消息长度,你可以添加以获得结束的位置。 )multipart/byteranges
(除非客户要求,否则您将看不到它,并且它可能不适用于HTML文档)。FIN
数据包,这只发生在干净的关闭;否则会看到RST
。)