why we only need to take a size of 5 to get the lenght, content_type
informations ?
因为很明显这就是协议设计的方式。在
二进制流只保证当一些字节被放入流的一端时,它们以相同的顺序到达流的另一端。对于通过二进制流进行消息传输,显而易见的问题是:消息边界在哪里?这个问题的经典解决方案是在消息中添加前缀,即所谓的头。这个报头有一个固定的大小,两个通信伙伴都知道。这样,接收者就可以安全地阅读header、message、header、message(我想你已经掌握了这个概念,这是一种交替的方式)。如您所见,报头不包含消息数据,它只是通信“开销”。这个开销应该保持在较小的水平。存储此类信息的最有效(空间方面)方法是二进制形式,使用某种通信双方都必须知道的代码。实际上,5字节的信息是相当多的。在
“>;BHH”格式字符串表示此5字节的头是这样建立的:无符号字符(1字节)
无符号短(2字节)
无符号短(2字节)
有足够的空间存储长度和内容类型等信息,你不觉得吗?这个头可以编码256种不同的内容类型,65536种不同的版本,消息长度在0到65535字节之间。在Why there is two request: one with 24 and another with the lenght of
our data ?
如果您的网络取证/流量分析与您从代码中推断的结果不符,则这两种类型的分析中有一种是错误的/不完整的。在这种情况下,我想您的流量分析是正确的,但是您还没有理解这种通信的所有相关代码。请注意,我没有查看您链接到的源代码。在