- 获取以太网头并检查其类型是否为
ETHERTYPE_IP
(IP数据包) - 检查IP数据包是否具有协议
IPPROTO_TCP
(TCP数据包) 检查有效载荷大小是否大于0
(size = ntohs(ip_header->total_length - ip->header_length*4 - sizeof(struct tcp_header))
.解析有效载荷(获取主机url)
"host = www.google.com"
捕获的10个TCP数据包的有效载荷打印输出。
数据包编号:3:TCP数据包:源端口:80 目标端口:58723 无数据包
数据包编号:4:TCP数据包:源端口:58723 目标端口:80 无数据包
数据包编号:5:TCP数据包:源端口:58723 目标端口:80 有效载荷: GET / HTTP/1.1 Host: www.google.com User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_5; en-us) AppleWebKit/533.19.4 (KHTML, like Gecko) Version/5.0.3 Safari/533.19.4 Accept: application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,/;q=0.5 Accept-Language: en-us Accept-Encoding: gzip, deflate Cookie: THICNT=25; SID=DQAAAKIAAAB2ktMrEftADifGm05WkZmlHQsiy1Z2v- Connection: keep-alive
数据包编号:6:TCP数据包:源端口:80 目标端口:58723 无数据包
数据包编号:7:TCP数据包:源端口:80 目标端口:58723 有效载荷: \272نu\243\255\375\375}\336H\221\227\206\312~\322\317N\236\255A\343#\226\370֤\245[\327`\306ըnE\263\204\313\356\3268 )p\344\301_Y\255\267\240\222x\364
数据包编号:8:TCP数据包:源端口:58723 目标端口:80 无数据包
数据包编号: 9 : TCP数据包: 源端口: 80 目的端口: 58723 有效载荷: HTTP/1.1 200 OK 日期: Mon, 29 Nov 2010 10:11:36 GMT 过期时间: -1 缓存控制: private, max-age=0 内容类型: text/html; charset=UTF-8 内容编码: gzip 服务器: gws 内容长度: 8806 X-XSS-Protection: 1; mode=block \213
为什么有效载荷和端口存在差异?理想情况下,我只想解析像第5个数据包那样的数据包。如何忽略像7和9这样的数据包?