libpcap抓完整的http分包;http分包的拼包机制,

本文介绍了使用libpcap捕获并处理HTTP分包的方法。首先创建一个不超过4M的buffer list,然后通过过滤条件筛选网络包。当检测到TCP标志位为0x18且数据包含HTTP头部时,判断是否存在content length或Transfer-Encoding。依据内容长度判断是否为完整HTTP包,否则将相关信息存储为list节点。在分包情况下,检查包序列及长度,通过特定标志位确认分包结束。同时,文章探讨了chunked编码的情况。
摘要由CSDN通过智能技术生成


1,创建一个buffer list,  这个buffer list的总体大小不超过4M,
2,抓包: 网络包都大于64byte; 如果小于64,当做坏包处理,
3,如果当前的list 是空,并且整个包长小于 140 (tcp + http head ... 知道出现content length) 
如果tcp包的,tcp.flags==0x18 :
并且pkt_data+34 是“HTTP” , 或者进一步判断是 HTTP/1.1 200 OK
如果是,说明这个包是http的response的开头。
寻找当前的content length ,并求出content length的大小。
如果没有找到content length,也没有找到 Transfer-Encoding : 那这种包,我还没有见过。
如果找到content length ,那判断pkt_data 的剩余长度 + 4 (\r\n\r\n),是不是 恰好是content length,
如果是-恰好说明是: 这个包已经是一个完整的http 包了,没有分包,即没有出现
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值