TCP数据包的抓取与分析

更新时间:2024-03-08 13:06:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

计算机网络 课程设计报告

课程设计题目:TCP数据包的抓取与分析

专 业: 班 级: 姓 名: 学 号: 指导教师:

年 月 日

1

目 录

1.摘要.........................................................................................3 2.引言.........................................................................................4 3.目录.........................................................................................2 4.TCP数据包抓取....................................................................5 5.TCP数据包分析....................................................................7 6.程序设计.................................................................................8 7.出现的错误和解决方法.........................................................12 8.结束语.....................................................................................13 9.参考文献.................................................................................14

2

1.摘 要

本课程设计通过Ethereal捕捉实时网络数据包,并根据网络协议分析流程对数据包在TCP/IP各层协议中进行实际解包分析,让网络研究人员对数据包的认识上升到一个感性的层面,为网络协议分析提供技术手段。最后根据Ethereal的工作原理,用Visual C++编写一个简单的数据包捕获与分析软件。

2.引 言

本课程设计通过技术手段捕获数据包并加以分析,追踪数据包

在TCP/IP各层的封装过程,对于网络协议的研究具有重要的意义。

Wireshark是当前较为流行的图形用户接口的抓包软件,是一个可以用来监视所有在网络上被传送的包,并分析其内容的程序。它通常被用来检查网络工作情况,或是用来发现网络程序的bugs。通过 Wireshark对TCP、UDP、SMTP、telnet和FTP等常用协议进行分析,非常有助于网络故障修复、分析以及软件和协议开发。,它以开源、免费、操作界面友好等优点广为世界各地网络研究人员使用为网络协议分析搭建了一个良好的研究平台。

3

3.TCP数据包的抓取

1.首先运行 Wireshark抓包软件

2.然后选取一个接口进行抓包

4

3.对TCP 包进行过滤

4.选取其中一个TCP数据包进行查看

5

5.获取TCP包的基本数据结构和组成

4.TCP数据包的分析

28 2c b2 55 18 de 24 0a 64 4e 95 47 08 00 45 00 00 28 0d 10 40 00 40 06 43 77 c0 a8 01 65 3f d9 e8 62 0a fa 00 50 4f bd 55 7c ba 66 1c 0d 50 10 fd 20 41 73 00 00

获得以上信息后,结合她的结构,设计分析程序,主要通过调用该文件,然后进行分析并输出

5.程序设计

源代码:

#include \#include \

6

#include \int a_all[10000]; int nIndex;

void PrintSomeUdp(int nStart,int nEnd) { for(int i=nStart;i<=nEnd;i++) { printf(\ } printf(\}

void PrintSomeUdpData(int nStart,int nEnd) { for(int i=nStart;i<=nEnd;i++) { printf(\ if((i-nStart+1)==0) printf(\ } printf(\}

void PrintSomeUdpTwo(int nStart,int nEnd) { for(int i=nStart;i<=nEnd;i++) { printf(\ } printf(\}

int main(int argc, char* argv[]) { nIndex=0; FILE *fp=fopen(\ if (fp!=NULL) { // MessageBox(NULL,\ while(!feof(fp)) { fscanf(fp,\ } } printf(\数据包长度:%d \\n\ //getchar();

7

/*

for(int i=0;i

printf(\目的地址:\\n\ PrintSomeUdp(0,5); printf(\源地址:\\n\ PrintSomeUdp(6,11); printf(\类型:\\n\ printf(\ printf(\ printf(\源IP地址:\\n\ PrintSomeUdpTwo(26,29); printf(\目的IP地址:\\n\ PrintSomeUdpTwo(30,33); printf(\最大长度:\\n\ printf(\ printf(\ printf(\头校检码:\\n\ printf(\ printf(\ printf(\源端口号:\\n\ printf(\ printf(\ printf(\目的端口号:\\n\ printf(\ printf(\ printf(\窗口大小:\\n\ printf(\ printf(\ return 0;

}

8

6.出现的问题和解决方法

在用Wireshark捕获数据包时,没有选择我的IP(10.10.23.226)进行数据包捕获的按钮,导致一直没有捕获到任何的数据包(如图4-1)。这是当然的,因为没有选择针对那个IP进行捕获,根本没有源IP,当然没有数据包,这使我的设计刚开始就频频出错。后来查阅资料时,发了这一个错误,改正后立即可以捕获数据包。所发生的错误如图4-2。

图4-1数据包捕获窗口

9

图4-2出现的提示错误信息

7.结束语

经过一周的课程设计,刚开始时还认为两周时间还是很长,有足够的时间完成这个设计,想不到一眨眼间,一周的时间就这样匆匆过去了。现在感觉到时间过得真快,从一开始对Wireshark这个抓包软件没有任何基础的,现在已能对这个软件所捕获的数据包进行简单的分析,以及怎么样设置这个软件的参数。

在用Visual C++编程的这一步中,实在花了我的不少时间,这个我认为是在我这个设计中最难的一步,虽然在网上能找到相关程序,但所找到的那些程序都基本上有一两处错误,而对于我这个只有一点Visual C++基础的来说无疑是一个天大的麻烦。但是,经过这一周的努力,还是能改正了这些错误,而且在同学的帮助下,终于把这个程序给做出来了。经过这一次的设计,这对以后的工作需要提供了很大的帮助。

最后,我得感谢一下在这次课程设计中帮助过我的同学,还有在设计过程中给老师带来了诸多麻烦,很感谢您这么细心的为我讲导。要不然这次课程设计我不可能按时完成。其中许多不足,还请老师给与批平、指正。

10

8.参考文献

[1] http://baike.http://www.wodefanwen.com//view/69012.htm?fr=ala0_1

[2]Craig Zacker.《TCP/IP网络管理》.北京:中国水利水电出版社,1998.9 [3]谢希仁.《计算机网络》.北京:电子工业出版社,2008.1

[4]黄筱燕.《基于Ethereal的网络协议分析》. 热带农业工程第33卷第1期 [5] http://baike.http://www.wodefanwen.com//view/739888.html

[6] http://baike.http://www.wodefanwen.com//view/696423.htm?fr=ala0_1

[7]周霭如、林伟健.《C++程序设计基础》.北京:电子工业出版社,2006.3 [8]张青.《C#编程思想与实践》.北京:冶金工业出版社,2002.8

11

8.参考文献

[1] http://baike.http://www.wodefanwen.com//view/69012.htm?fr=ala0_1

[2]Craig Zacker.《TCP/IP网络管理》.北京:中国水利水电出版社,1998.9 [3]谢希仁.《计算机网络》.北京:电子工业出版社,2008.1

[4]黄筱燕.《基于Ethereal的网络协议分析》. 热带农业工程第33卷第1期 [5] http://baike.http://www.wodefanwen.com//view/739888.html

[6] http://baike.http://www.wodefanwen.com//view/696423.htm?fr=ala0_1

[7]周霭如、林伟健.《C++程序设计基础》.北京:电子工业出版社,2006.3 [8]张青.《C#编程思想与实践》.北京:冶金工业出版社,2002.8

11

本文来源:https://www.bwwdw.com/article/p37a.html

Top