请教熟悉Http协议、Winpcap捕获数据包的高人。 重组http时数据包长度问题

gaosoftware 2009-05-27 03:41:35
捕获长度比较小的数据包时没事,如js,gif,css等。数据包大小和Http响应头的content-length标示的一致,
pcap_pkthdr结构的caplen(实际捕获的包长度)和len(数据包长度)也一样。

但当捕获如content-length:27003 等长度比较大,需要分片传输的Http数据报时
pcap_pkthdr结构的caplen和len有时会不一直,比如caplen = 1500,表示实际捕获了的分片数据包长度是1500,而len=1506,表示该包长度应该为1506,这就是说有6个字节丢失了??,我在本机做的测试,网卡缓存设置成16MB,只浏览一个纯文本的网页,应该也不会丢呀。

我最终的目的是重组Http数据包进行分析,将TCP/IP协议中IP地址,端口,确认号一至的数据包放入一个链表, 累计各个包的caplen 去掉以太网头、IP头、TCP头、Http头部数据后的长度, 最终长度会小于content-length所标识的长度,这样我捕获的长度就和Http响应头的长度对不上了,缺少的长的正是len减去caplen的部分。

我又不能按照len的长度来累计数据包,毕竟实际捕获的就是1500怎么多,采用len重组的数据包肯定是错误的,当然用caplen长度重组的也不对,少了很多字节。 在这里我还有疑问:[color=#FF0000]TCP包最大分片长度不就是1500吗?多出的那6个字节的东西是那的? 怎么能得到那6个字节的数据?[/color]

这样就造成了我没办法判断Http是不是重组完成了。请求Http协议高人,WINPCAP才子们指点。

...全文
854 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
yaofei2006 2012-09-05
  • 打赏
  • 举报
回复
超过最大值了吧,默认为1500
lxy1996 2010-06-18
  • 打赏
  • 举报
回复
暗暗暗暗暗暗暗暗暗暗
calsor 2009-11-10
  • 打赏
  • 举报
回复
请教楼主下:如何对HTTP重组,大体思路是怎样的?非常感谢!我的邮箱是wangyoucao8398@yahoo.com.cn非常感谢!
jian_tian_yang 2009-05-30
  • 打赏
  • 举报
回复
帮楼主顶一下
netelife 2009-05-27
  • 打赏
  • 举报
回复
数据的长度是通过IP头部的ip.tot_length来计算的(ip.tot_length - ip_header_len - tcp_header_len),有的以太网报文会加一个ethernet trailer,而这个并不是真实的数据。
blackcat242 2009-05-27
  • 打赏
  • 举报
回复
你是如何接收的,代码贴出来看看
hendriclee 2009-05-27
  • 打赏
  • 举报
回复
粘包了?继续关注

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧