计算机网络课程设计基于Wireshark的网络数据包内容解析Word文档格式.docx

上传人:b****5 文档编号:19976212 上传时间:2023-01-13 格式:DOCX 页数:16 大小:625.18KB
下载 相关 举报
计算机网络课程设计基于Wireshark的网络数据包内容解析Word文档格式.docx_第1页
第1页 / 共16页
计算机网络课程设计基于Wireshark的网络数据包内容解析Word文档格式.docx_第2页
第2页 / 共16页
计算机网络课程设计基于Wireshark的网络数据包内容解析Word文档格式.docx_第3页
第3页 / 共16页
计算机网络课程设计基于Wireshark的网络数据包内容解析Word文档格式.docx_第4页
第4页 / 共16页
计算机网络课程设计基于Wireshark的网络数据包内容解析Word文档格式.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

计算机网络课程设计基于Wireshark的网络数据包内容解析Word文档格式.docx

《计算机网络课程设计基于Wireshark的网络数据包内容解析Word文档格式.docx》由会员分享,可在线阅读,更多相关《计算机网络课程设计基于Wireshark的网络数据包内容解析Word文档格式.docx(16页珍藏版)》请在冰豆网上搜索。

计算机网络课程设计基于Wireshark的网络数据包内容解析Word文档格式.docx

网络嗅探是网络监控系统的实现基础。

网络嗅探需要用到网络嗅探器,其最早是为网络管理人员配备的工具,有了嗅探器网络管理员可以随时掌握网络的实际情况,查找网络漏洞和检测网络性能,当网络性能急剧下降的时候,可以通过嗅探器分析网络流量,找出网络阻塞的来源。

嗅探器也是很多程序人员在编写网络程序时抓包测试的工具,因为我们知道网络程序都是以数据包的形式在网络中进行传输的,因此难免有协议头定义不对的。

网络嗅探的基础是数据捕获,网络嗅探系统是并接在网络中来实现对于数据的捕获的,这种方式和入侵检测系统相同,因此被称为网络嗅探。

网络嗅探是网络监控系统的实现基础,首先就来详细地介绍一下网络嗅探技术,接下来就其在网络监控系统的运用进行阐述。

2网络协议基础知识

2.1IP协议

(1)IP协议介绍

IP是英文InternetProtocol(网络互连的协议)的缩写,中文简称为“网协”,也就是为计算机网络相互连接进行通信而设计的协议。

在因特网中,它是能使连接到网上的所有计算机网络实现相互通信的一套规则,规定了计算机在因特网上进行通信时应当遵守的规则。

任何厂家生产的计算机系统,只要遵守IP协议就可以与因特网互连互通。

(2)IP协议的网络互连实现

各个厂家生产的网络系统和设备,如以太网、分组交换网等,它们相互之间不能互通,不能互通的主要原因是因为它们所传送数据的基本单元(技术上称之为“帧”)的格式不同。

IP协议实际上是一套由软件程序组成的协议软件,它把各种不同“帧”统一转换成“IP数据包”格式,这种转换是因特网的一个最重要的特点,使所有各种计算机都能在因特网上实现互通,即具有“开放性”的特点。

(3)IP数据报

TCP/IP协议定义了一个在因特网上传输的包,称为IP数据报(IPDatagram)。

这是一个与硬件无关的虚拟包,由首部和数据两部分组成,其格式如图2.1所示:

图2-1IP数据报一般格式

IP数据报的详细格式如图2.2所示:

0371531

版本

首部长度

服务类型

总长度

标识

标志

片偏移

生存时间

协议

头校验和

源IP地址

目的IP地址

选项

填充域

数据部分

图2-2IP数据报的详细格式

IP数据报固定部分各字段含义:

(1)版本占4位,指IP协议的版本。

通信双方使用的IP协议版本必须一致。

目前广泛使用的IP协议版本号为4(即IPv4)。

关于IPv6,目前还处于草案阶段。

 

(2)首部长度占4位,可表示的最大十进制数值是15。

请注意,这个字段所表示数的单位是32位字长(1个32位字长是4字节),因此,当IP的首部长度为1111时(即十进制的15),首部长度就达到60字节。

当IP分组的首部长度不是4字节的整数倍时,必须利用最后的填充字段加以填充。

因此数据部分永远在4字节的整数倍开始,这样在实现IP协议时较为方便。

首部长度限制为60字节的缺点是有时可能不够用。

但这样做是希望用户尽量减少开销。

最常用的首部长度就是20字节(即首部长度为0101),这时不使用任何选项。

 (3)区分服务占8位,用来获得更好的服务。

这个字段在旧标准中叫做服务类型,但实际上一直没有被使用过。

1998年IETF把这个字段改名为区分服务DS(DifferentiatedServices)。

只有在使用区分服务时,这个字段才起作用。

 (4)总长度总长度指首部和数据之和的长度,单位为字节。

总长度字段为16位,因此数据报的最大长度为216-1=65535字节。

  在IP层下面的每一种数据链路层都有自己的帧格式,其中包括帧格式中的数据字段的最大长度,这称为最大传送单元MTU(MaximumTransferUnit)。

当一个数据报封装成链路层的帧时,此数据报的总长度(即首部加上数据部分)一定不能超过下面的数据链路层的MTU值。

 (5)标识(identification) 占16位。

IP软件在存储器中维持一个计数器,每产生一个数据报,计数器就加1,并将此值赋给标识字段。

但这个“标识”并不是序号,因为IP是无连接服务,数据报不存在按序接收的问题。

当数据报由于长度超过网络的MTU而必须分片时,这个标识字段的值就被复制到所有的数据报的标识字段中。

相同的标识字段的值使分片后的各数据报片最后能正确地重装成为原来的数据报。

 (6)标志(flag) 占3位,但目前只有2位有意义。

  标志字段中的最低位记为MF(MoreFragment)。

MF=1即表示后面“还有分片”的数据报。

MF=0表示这已是若干数据报片中的最后一个。

  标志字段中间的一位记为DF(Don’tFragment),意思是“不能分片”。

只有当DF=0时才允许分片。

 (7)片偏移 占13位。

片偏移指出:

较长的分组在分片后,某片在原分组中的相对位置。

也就是说,相对用户数据字段的起点,该片从何处开始。

片偏移以8个字节为偏移单位。

这就是说,每个分片的长度一定是8字节(64位)的整数倍。

 (8)生存时间 占8位,生存时间字段常用的的英文缩写是TTL(TimeToLive),表明是数据报在网络中的寿命。

由发出数据报的源点设置这个字段。

其目的是防止无法交付的数据报无限制地在因特网中兜圈子,因而白白消耗网络资源。

最初的设计是以秒作为TTL的单位。

每经过一个路由器时,就把TTL减去数据报在路由器消耗掉的一段时间。

若数据报在路由器消耗的时间小于1秒,就把TTL值减1。

当TTL值为0时,就丢弃这个数据报。

 (9)协议 占8位,协议字段指出此数据报携带的数据是使用何种协议,以便使目的主机的IP层知道应将数据部分上交给哪个处理过程。

 (10)首部检验和 占16位。

这个字段只检验数据报的首部,但不包括数据部分。

这是因为数据报每经过一个路由器,路由器都要重新计算一下首部检验和(一些字段,如生存时间、标志、片偏移等都可能发生变化)。

不检验数据部分可减少计算的工作量。

 (11)源地址 占32位。

(12)目的地址 占32位。

IP数据报可选部分字段含义:

IP首部的可变部分就是一个可选字段。

选项字段用来支持排错、测量以及安全等措施,内容很丰富。

此字段的长度可变,从1个字节到40个字节不等,取决于所选择的项目。

某些选项项目只需要1个字节,它只包括1个字节的选项代码。

但还有些选项需要多个字节,这些选项一个个拼接起来,中间不需要有分隔符,最后用全0的填充字段补齐成为4字节的整数倍。

2.2ARP协议

(一)ARP协议简介:

ARP协议是“AddressResolutionProtocol”(地址解析协议)的缩写。

在局域网中,网络中实际传输的是“帧”,帧里面是有目标主机的MAC地址的。

在以太网中,一个主机要和另一个主机进行直接通信,必须要知道目标主机的MAC地址。

ARP是通过地址解析协议获得的。

所谓“地址解析”就是主机在发送帧前将目标IP地址转换成目标MAC地址的过程。

ARP协议的基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。

硬件类型,ar_hrd(ARPHRD_ETHER)

协议类型,ar_pro(ETHERTYPE_IP)

硬件地址长度,ar_hln(6)

协议地址长度,ar_pln(4)

ether_dhostether_ahostether_typear_oparp_shaarp_spaarp_thaarp_tpa

以太网目的地址

以太网源地址

帧类型

OP

发送者硬件地址

发送者IP地址

目标硬件

目标IP地址

6bytes62221126464

以太网首部ARP首部

ether_header()arphdr()以太网ARP字段

ther_arp()

图2-3ARP请求回答格式

(二)ARP协议的利用和相关原理介绍:

  一、交换网络的嗅探

  ARP协议并不只在发送了ARP请求才接收ARP应答。

当计算机接收到ARP应答数据包的时候,就会对本地的ARP缓存进行更新,将应答中的IP和MAC地址存储在ARP缓存中。

因此,在上面的假设网络中,B向A发送一个自己伪造的ARP应答,而这个应答中的数据为发送方IP地址是192.168.10.3(C的IP地址),MAC地址是DD-DD-DD-DD-DD-DD(C的MAC地址本来应该是CC-CC-CC-CC-CC-CC,这里被伪造了)。

当A接收到B伪造的ARP应答,就会更新本地的ARP缓存,将本地的IP-MAC对应表更换为接收到的数据格式,由于这一切都是A的系统内核自动完成的,A可不知道被伪造了。

  ARP欺骗的主要用途就是进行在交换网络中的嗅探。

有关交换网络的嗅探不是本文的讨论内容。

  二、IP地址冲突

  在网络连接的时候,如果网络中存在相同IP地址的主机的时候,就会报告出IP地址冲突的警告。

  假设某主机B规定IP地址为192.168.0.1,如果它处于开机状态,那么其他机器A更

  改IP地址为192.168.0.1就会造成IP地址冲突。

其原理就是:

主机A在连接网络(或更改IP地址)的时候就会向网络发送ARP包广播自己的IP地址,也就是freearp。

如果网络中存在相同IP地址的主机B,那么B就会通过ARP来reply该地址,当A接收到这个reply后,A就会跳出IP地址冲突的警告,当然B也会有警告。

  因此用ARP欺骗可以来伪造这个ARPreply,从而使目标一直遭受IP地址冲突警告的困扰。

  三、阻止目标的数据包通过网关

  在一个局域网内通过网关上网,那么连接外部的计算机上的ARP缓存中就存在网关IP-MAC对应记录。

如果,该记录被更改,那么该计算机向外发送的数据包总是发送到了错误的网关硬件地址上,这样,该计算机就不能够上网了。

  这里也主要是通过ARP欺骗进行的。

以下两种办法达到这样的目的:

  1、向目标发送伪造的ARP应答数据包,其中发送方的IP地址为网关的地址,而MAC地址则为一个伪造的地址。

当目标接收到该ARP包,那么就更新自身的ARP缓存。

如果该欺骗一直持续下去,那么目标的网关缓存一直是一个被伪造的错误记录。

当然,如果有些了解的人查看ARP-a,就知道问题所在了。

  2、欺骗网关。

向网关发送伪造的ARP应答数据包,其中发送方的IP地址为目标的IP地址,而MAC地址则为一个伪造的地址。

这样,网关上的目标ARP记录就是一个错误的,网关发送给目标的数据报都是使用了错误的MAC地址。

这种情况下,目标能够发送数据到网关,却不能接收到网关的任何数据。

同时,目标自己查看ARP-a却看不出任何问题来。

  四、通过ARP检测混杂模式节点

  在混杂模式中,网卡进行包过滤不同于普通模式。

本来在普通模式下,只有本地地址的数据包或者广播(多播等)才会被网卡提交给系统核心,否则的话,这些数据包就直接被网卡抛弃。

现在,混合模式让所有经过的数据包都传递给系统核心,然后被sniffer等程序利用。

  通过特殊设计的ARP请求可以用来在一定程度上检测处于混杂模式的节点,比如对网络中的每个节点都发送MAC地址为FF-FF-FF-FF-FF-FE的ARP请求。

对于网卡来说这不是一个广播地址(FF-FF-FF-FF-FF-FF),所以处于普通模式的节点就会直接抛弃该数据包,但是多数操作系统核心都认为这是一个广播地址,如果有一般的sniffer程序存在,并设置网卡为混杂模式,那么系统核心就会作出应答,这样就可以判断这些节点是否存在嗅探器了。

  可以查看,很多基于ARP的攻击都是通过ARP欺骗实现的。

至于ARP欺骗的防范,还是尽可能使用静态的ARP。

对于WIN,使用arp-s来进行静态ARP的设置。

当然,如果能够完全使用静态的IP+MAC对应,就更好了,因为静态的ARP缓存只是相对的。

可以有一些方法来实现ARP欺骗的检测。

设置一个ARP的嗅探器,其中维护着一个本地网络的IP-MAC地址的静态对应表,查看所有经过的ARP数据,并检查其中的IP-MAC对应关系,如果捕获的IP-MAC对应关系和维护的静态对应关系对应不上,那么就表明是一个欺骗的ARP数据包了。

3网络嗅探的工作原理与分析

3.1基于winpcap捕获数据的机理

运用以太网数据捕获的原理使得信息捕获系统能够拦截到我们所要的信息,这是捕获数据包的物理基础。

在网络数据包的捕获过程中,首先,数据包捕获系统必须绕过操作系统的协议栈来访问在网络上传输的原始数据包,这就要求一部分程序要运行在操作系统核心内部,直接与网络接口驱动交互。

这个部分是系统依赖的,在WinPcap的解决方案里它是由内核级的数据包监听设备驱动程序NPF实现的。

WinPcap开发小组针对不同版本的Windows操作系统提供了不同的驱动。

这些驱动不仅提供了基本的特性,例如抓包和injection;

还有更高级的特性,例如可编程的过滤器系统和监视引擎等。

其次,数据包捕获系统必须有用户级的程序接口,通过这些接口,用户程序可以利用内核驱动提供的高级特性。

在WinPcap的解决方案中是由两个不同的库:

Packet.dll和Wpcap.dll库来实现的。

WinPcap的优势在于提供了一套标准的抓包接口与libpcap兼容,可使得原来许多UNIX平台下的网络分析工具快速移植过来便于开发各种网络分析工具,充分考虑了各种性能和效率的优化,包括对于NPF内核层次上的过滤器支持,支持内核态的统计模式,提供了发送数据包的能力。

前者提供了一个底层API,伴随着一个独立于Windows操作系统的编程接口,这些API可以直接用来访问驱动的函数;

后者导出了一组更强大的与libpcap一致的高层抓包函数库(captureprimitives)。

这些函数使得WinPcap在数据包的捕获过程中可以以一种与网络硬件和操作系统无关的方式进行。

3.2基于winpcap数据包捕获的过程

在利用WinPcap捕获分析网络数据时,主要是调用Packet.dll和Wpcap.dll中提供的API函数进行操作。

以下是基于WinPcap的网络数据包捕获流程及相应的WinPcap库函数。

(1)获取网络适配器信息

利用WinPcap捕获数据包的第一步是要获得本地的网络适配器(网卡)列表。

WinPcap提供Pcap_findalldevs()和Pcap_findalldev_ex()这两个函数来实现些功能,这两个API函数都返回一个pcap_if结构列表,列表的每项内容都含有全面的网卡信息,尤其是字段名字和含有名字的描述以及有关驱动器的易读信息。

(2)设置并编译过滤器

WinPcap使用的过滤规则兼容Tcpdump的过滤规则,它提供一种高效的方法来捕获网络数据包的某些数据,且常和系统的捕获机制相集成。

函数Pcap_compile()和Pcap_setfilter()用来实现过滤数据的功能。

Pcap_compile()来编译一个过滤设备,它通过一个高层的boolean型变量和字串产生一系列的能够被底层驱动所解释的二进制编码。

boolean表示语法能够在这个文件的过滤表示语法中找到。

pcap_setfilter()用来联系一个在内核驱动上过滤的过滤器,这时所有网络数据包都将流经过滤器,并拷贝到应用程序中。

(3)打开网络设备

使用函数Pcap_open()或者Pcap_open_line()。

函数有三个参数snaplen、promisc、to_ms。

snaplen用于指定要捕获数据包的长度,最大为65535,如果设定一个值,则捕获到大于这个设定值的数据时,后面的数据会被截断掉。

Promisc表示是否把网卡设置为混杂模式,如果是1表示设为混杂模式,在通常情况下网卡只接受发往它的数据包而忽略发往其他主机的数据包。

但网卡处于混杂模式时它将接收所有的流经它的数据包,这就意味着在共享介质的情况下我们可以捕获到其它主机的数据包;

大部分的数据包捕获程序都将混杂模式设为默认。

to_ms参数指定读数据的超时控制,超时以毫秒计算,当在超时时间内网卡上没有数据到来时对网卡的读操作将返回。

(4)捕获数据包

一旦网卡被打开,就可以调用Pcap_next(),Pacp_next_ex()或Pcap_loop()进行数据包的捕获。

Pcap_next()和Pacp_next_ex()表示捕获一个可用数据包就返回;

而Pcap_loop()表示捕获多个数据包,可以循环捕获数据包,直到出现错误为止。

这三个函数都有返回一个指向Pcap_pkthdr结构的指针,Pcap_next()与Pcap_next_ex()的功能相似,不过后者只在win32环境下运行。

(5)读取离线数据包

pcap_dump_open()被用来打开一个savefile以供写入数据包。

pcap_open_offlin()被用来打开savefile,并用pcap_next()来逐条读取数据包。

4基于Wireshark的网络数据包内容解析

4.1捕获数据包

运行Wireshark软件,点击

,点击开始如图:

图4-1对数据包进行捕获

一段时间后,捕获到网络数据包,如图:

图4-2捕获到的数据包

4.2数据包解析

运用Wireshark捕获的数据包,如图

图4-3捕获数据包

如上图所示,可看到很多捕获的数据。

第一列是捕获数据的编号;

第二列是捕获数据的相对时间,从开始捕获算为0.000秒;

第三列是源地址,第四列是目的地址;

第五列是数据包的信息。

选中其中7号数据包,双击,得到整体Wireshark的窗口,主要被分成三部分,如图:

图4-4数据帧整体图

上面部分是所有数据帧的列表;

中间部分是数据帧的描述信息;

下面部分是帧里面的数据。

各层数据包解析:

帧号时间 

 

源地址 

目的地址 

高层协议 

包内信息概况No. 

Time 

Source 

Destination 

Protocol 

Info1 

0.000000 

202.203.44.225 

202.203.208.32 

TCP 

2764>

http[SYN]Seq=0Len=0MSS=1460 

 

源端口>

目的端口[请求建立TCP链接]

(一)、物理层的数据帧:

Frame1(62bytesonwire,62bytescaptured) 

//1号帧,线路62字节,实际捕获62字节

ArrivalTime:

Jan21,200815:

17:

33.910261000 

//捕获日期和时间

[Timedeltafrompreviouspacket:

0.00000seconds]//此包与前一包的时间间隔

[Timesincereferenceorfirstframe:

0.00seconds]//此包与第1帧的间隔时间

FrameNumber:

// 

帧序号

PacketLength:

62bytes 

帧长度

CaptureLength:

捕获长度

[Frameismarked:

False] 

此帧是否做了标记:

[Protocolsinframe:

eth:

ip:

tcp] 

帧内封装的协议层次结构

[ColoringRuleName:

HTTP] 

用不同颜色染色标记的协议名称:

HTTP[ColoringRuleString:

http||tcp.port==80] 

染色显示规则的字符串:

(二)数据链路层以太网帧头部信息:

EthernetII,Src:

AcerTech_5b:

d4:

61(00:

00:

e2:

5b:

61),Dst:

Jetcell_e5:

1d:

0a(00:

d0:

2b:

e5:

0a)//以太网协议版本II,源地址:

厂名_序号(网卡地址),目的:

厂名_序号(网卡地址) 

Destination:

0a)//目的:

Source:

61) 

//源:

Type:

IP(0x0800) 

//帧内封装的上层协议类型为IP(十六进制码0800)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工作范文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1