编程随记 ---- 拼包程序(一)

王朝other·作者佚名  2006-01-10
窄屏简体版  字體: |||超大  

编程随记 ---- 拼包程序(一)

六月中旬的某一天,老大的一封邮件把我招进了实验室,开始研究和项目为主的

实验室生活。

刚进去,彼此互不熟悉。老大就让我编写一个拼包程序,以此来瞧瞧我的编程能

力。给我讲了功能之后,还给了我一个工程框架。让我以此作为基础和环境来coding。

为了给我一些压力,老大还给了一个性能要求,每秒处理50MB数据包。而且不能

用winpcap,只能自己分析包,处理包,然后拼接成一个TCP数据流。还给了一个该程

序运行的环境:主干网。哎,现在想来,主干网成为了后面不可逾越的鸿沟。而当时

的想当然却把这个极其重要的条件给忽略掉了。从而使自己走了很多弯路。可惜,等

我发现时,已经在很晚很晚的后来了。。。

时间给了我两个星期。于是抽出一天的时间来研究用windump捕获下来的包格式。

安装了winpcap后,打开网页,随便浏览了几分钟。用windump来捕获这段时间的数据

包。谁知不可思议的事情发生了,居然捕获的数据包为0个。怎么可能呢?很显然那个

地方出现了问题。关了防火墙,再重试了一遍,还是为0个数据包。问题出现在哪呢?

自己捉摸了很久,也没研究出个所以然来。实在不行,于是在其他机子上试了下,居

然也没法正常捕获数据包。难道是windump的问题?这个问题一直在脑中盘踞了很久。

知道后来的某一天,使用了Ethereal后才找到了原因。

在网上用google搜了搜,结果也没找到什么原因来。实在没办法,只好从MIT网

上和师兄那边分别找来了已经捕获下来的wpcap格式的文件。先研究一下该格式再说,

windump的问题以后有时间再去研究。

继续利用google,在网上逛了一圈,终于找到心仪的资料,找到了wpcap格式的

具体介绍。用UE打开wpcap格式的文件一比较,果然如此。

打来VC6.0,开始编程解析wpcap格式的数据包。很轻松的就搞定了。

今天的任务搞定了,下次研究IP和TCP头。

wpcap文件格式:

每个wpcap格式的文件头都有24自己的特殊头文件:pcap_file_header。并且头四

个字节必须为:0xA1 0xB2 0xC3 0xD4或者为0xD4 0xC3 0xB2 0xA1。前者表示为大端

字节序,后者表示的是intelPC机的小端字节序。

每个以太网包又封装了一个pcap包头。该包头有16个字节。前8个字节表示时间,

后8个字节中前4个字节为后面的链路层数据包在文件里面的长度,后4个字节为该链路

层数据包的实际长度。两者可能不同是因为可能存在截断的情况。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航