





























1、该文档不包含其他附件(如表格、图纸),本站只保证下载后内容跟在线阅读一样,不确保内容完整性,请务必认真阅读。
2、有的文档阅读时显示本站(www.woc88.com)水印的,下载后是没有本站水印的(仅在线阅读显示),请放心下载。
3、除PDF格式下载后需转换成word才能编辑,其他下载后均可以随意编辑、修改、打印。
4、有的标题标有”最新”、多篇,实质内容并不相符,下载内容以在线阅读为准,请认真阅读全文再下载。
5、该文档为会员上传,下载所得收益全部归上传者所有,若您对文档版权有异议,可联系客服认领,既往收入全部归您。
如图所示图数据封装示意传给的数据单元称作报文段或简称为段传给网络接口层的数据单元称作数据报通过以太网传输的比特流称作帧,分组既可以是个数据报也可以是数据报的个片。
协用户数据用户数据首部应用数据首部应用数据首部首部应用数据首部首部以太网头以太网尾应用程序以太网驱动程序议分析就是数据封装的逆过程。
协议分析的流程图如图所示图网络协议分析流程图从图可以看到,对于监听程序捕获到的数据报,需要按以下步骤分层次进行协议分析首先是读取数据链路层的报头,从报头中可以得到计算机的源地址和目的地址数据包的长度以及上层协议的类型。
然后需要去掉数据链层的报头,此时可以获得数据报数据包,在这层中可以对数据报做定的统计和分析等等对数据包可以获得发送端和目的等重要信息。
对于数据报去除网络层的报头以后,可以获得传输层数据报,对数据包的报头进行分析在这层中还可以获得数据报的端口号信息,根据端口号进步判断数据报属于何种应用层协议。
对数传输层数据报去除掉传输层报头以后,就获得了应用层数据报,在应用层进行协议分析的工作就是按照应用层的工作原理协议规范,还原获得应用层的内容,如协议分析可以还原出正在传输的邮件信息,协议分析可以还原出传输中的文件名以及用户名口令密码等信息,协议分析可以还原出目标主机浏览网页的原貌等等。
开始读取原始数据报文提取并分析链路层报头提取并分析地址信息提取并分析地址信息根据端口判断应用层协议显示提取报头中的主要信息结束显示对所有的数据报头分析处理后,取出其中的主要信息然后显示给用户。
对模型中各层协议的分析前面的内容已经提到过,我们在对数据包根据应用层协议进行分析的时候都需要首先剥离数据包中的包头并且需要根据包头信息判断是何种应用层协议。
下面就按照数据链路层网络层到传输层再到应用层的顺序详细的讲解每层包头的结构以及如何对每层的数据报进行协议分析。
以太网首部的分析与提取因为每个使用捕获的数据包,都会有个指向原始报文头的指针。
假设这个指针为。
把这个指针强制转换为以太帧格式。
我们就得到了以太帧的报文头,就可以对该层协议进行分析和处理。
由于在定义以前,以太网就存在,因为有多个以太网标准,所以可以支持多种不同的链路层协议,如以太网令牌环网光纤分布式数据接口等。
以太网是当今采用的主要的局域网技术,它采用种称作的媒体接入方法,其意思是带冲突检测的载波侦听多路接入,发送端在传输之前要侦听信道。
在以太网内的和数据报或者使用以太网的或者使用子网访问协议来封装数据。
这里我们只讨论最为常用的以太网数据报格式,这是在中定义的,如图所示,这是以太网的封装格式字节目的地址源地址类型数据图以太网的封装格式其中每个字段的含义如下帧初始同步字节长,提供接收端的同步和分隔帧的功能。
需要注意的是,帧初始同步字段在网络监视器中是不可见的。
目的地址字节长,指明目的地址。
目的地址可以是单播多播或者以太网的广播地址。
其中,单播地址也称为地址。
源地址字节长,指明发送节点的单播地址。
以太网类型字节长,指明在以太网帧中上层协议的类型。
这个字段被用来将以太网的有效载荷传给正确的上层协议实体。
如果在该字段中未注明有上层协议实体接收有效载荷帧。
该帧将被丢弃。
比如,对于数据报,这个字段的值为对于消息,该字段的值被设置为。
有效载荷以太网的帧的有效载荷由上层协议的协议数据单元组成,是数据包本身的具体内容。
以太网能发送最大字节的有效载荷。
因为以太网具有冲突检测机制,以太网的最小帧有效载荷为字节。
如果上层的协的值为。
保留个字节字段,为了未来的使用而保留。
标志个字节字段,指示个标志。
这个标志是紧急确训推复句同步结束。
窗口个字节的字段,表明该段的发送方的接收缓冲区中可供使用的空间有多少字节数。
窗口大小的广告是种实现接收流流控制的方式。
校验和个字节的字段,为段提供位级别的完整性校验。
紧急指针个字节字段,它表明段中紧急数据的位置。
选项为提高利用的通信性能所准备的选项。
用户数据报协议是定义用来在互连网络环境中提供包交换的计算机通信的协议。
此协议默认认为网路协议是其下层协议。
此协议提供了向另用户程序发送信息的最简便的协议机制。
此协议是面向操作的,未提供提交和复制保护。
以下是协议的报文头格式比特图数据包格式源端口位。
源端口是可选字段。
当使用时,它表示发送程序的端口,同时它还被认为是没有其它信息的情况下需要被寻址的答复端口。
如果不使用,设置值为。
目的端口位。
目标端口在特殊因特网目标地址的情况下具有意义。
长度位。
该用户数据报的八位长度,包括协议头和数据。
长度最小值为。
校验和位。
协议头协议头和数据位,最后用填补的信息假协议头总和。
如果必要的话,可以由两个八位复合而成。
应用层协议的识别与分析对于应用层协议本程序采用的是端口识别技术。
端口是应用程序在网络通信上使用的数据输入输出口。
端口分为两种。
种为公认端口,另种为短暂端口。
公认端口被分配给网络上的服务程序。
当网络客户端利用其他计算机上的服务程序时,在根据地址指定服务计算机的同时,也指定了被分配的服务程序的公认端口号。
由此,可以利用与端口号对应的特定的网络服务。
公认端口号有很多,工人端口号被定义在类操作系统下的文件中下表列出了其中的部分。
表常用协议和对应的端口号上层协议端口号协议上层协议的意义回应请求,在上数据传送路径,在上控制数据通信路径,用于远程终端连接的标准,邮件发送服务源端口目的端口长度校验和,计时服务器,主机名服务器,服务,域名服务器,小型文件传输协议,信息服务,用户信息邮局协议,服务,网络新闻传输协议,网络时间协议,名称服务,会议服务短暂端口号是客服端程序与服务器程序进行通信时,短暂使用端口号。
短暂端口号是不可再生的,被运行系统分配给客户端程序。
因为常用端口和常用协议对应,我们可以利用这个原理来识别应用层协议。
关键代码如下短暂端口等找不到名称时现在介绍下函数。
此函数完成的是取得端口号和区别类别的两个参数并返回端口名称的工作。
函数的核心是调用函数。
用这个函数来检索与端口相关的信息,吧结果作为指向型的结构体的指针并返回。
型的结构体在头文件中被声明。
在这里使用的成员。
把端口名称赋给。
函数检索端口名称失败时,返回。
这是因为得到的端口号是短暂端口号,没有检索到它的端口名称。
这时,常把端口号作为端口的名称来用。
程序运行与测试测试环境硬件环境处理器以上内存以上多台普通搭载网卡的经过集线器互联。
程序运行环境安装有以上版本的操作系统。
测试步骤首先,用多台搭建局域网络。
其次,选定台对数据包捕获模块规则过滤模块协议分析模块进行功能测试。
然后对每个功能模块进行数据合法性检查数据致性检查。
最后对关键模块进行回归测试。
测试结果评价本设计在环境试运行下,编码后经过多次测试并将发现的及时修改,系统运行正常,基本达到设计目标,运行结果比较良好。
图议数据单元小于字节,则必须填充到字节。
帧校验序列,字节长,提供位级别的完整性校验,也被称为循环冗余校验。
本子段对于网络监视器来说同样是不可见的。
首部的分析与提取因为以太帧报头的长度都是样的。
所以在提取包头的时候可以将指针加上以太帧包头的长度后,把格式强制转化为包头格式即。
就得到了指向报头的指针,我们就可以进行相应的分析了。
网络上的主机是通过数据报来交换数据的,数据报包括数据单元和首部字段,其中,数据单元包含要交换的所有信息,首部字段描述这个信息和数据报本身。
只要设备需要通过网络向其他网络发送数据,它就会创建个数据报来发送数据。
实际上,数据报是作为包来发送的,包将数据报通过交换设备跳跳地中继到目的系统。
虽然很多时候个数据报就是个包,但它们在概念上是不同的实体。
如图是数据报在中定义的封装格式比特版本报头长服务类型数据包总长标识符标志片偏移生存时间协议号报头校验和源地址目的地址选项填充码数据图数据报格式其中每个字段的含义如下版本长度为位,显示报头的版本。
目前在所有互联网络和中使用的标准版本号是即。
报头长长度为位,表示头的长度。
典型的头不包括任何选项,长度为字节。
服务类型长度为位,表示按照优先权安全性以及吞吐量等数据包的服务类型。
数据包总长长度为位,表示数据报总的字节数,包括头和有效载荷。
标识长度为位,作为分割以及组装数据包时的识别标志来使用,被分割的数据包被分配有同数值标识。
标志长度为位,包含两个用于分片的标志。
其中个标志是用于表示有效载荷是否符合分片的标准,而另个是表示对于已分片的数据报是否还有更多的分片。
片偏移长度为位,表示分片相对于原始数据报有效载荷的偏移量。
生存时间长度为字节,表示数据包的寿命,目的是废弃掉在网络中循环着的数据包,般地,每通过次路由器,生存时间就被减去,当生存时间为时,数据包将被抛弃。
协议长度为字节,表示包含在有效载荷中的上层协议。
协议字段的般值有表示,表示,表示,表示等等。
报头校验和长度为字节,是用于确认数据包是否己毁坏的字段。
源目的地址长度为字节,包含源目的主机的地址。
选项和填充此字段跟在头之后,但必须是以个字节为增量单位,以使头的大小能用报头长度字段表示。
首部的分析与提取报文头部的获取跟报文头部的获取类似,将指针的位置向后移报文长度个位置即可。
然后就可以对数据包进行分析了。
传输控制协议为面向事务的应用提供了可靠的面向连接的传输协议。
正为目前上几乎所有的应用协议所利用,这是因为大部分应用程序都需要可靠的可纠错的传输协议以保证不丢失或破坏数据。
尽管已经做了大部分的搜集工作,并且根据需要在上发送数据报和数据包,但是是不可靠的协议,并不能保证数据报或者数据包能够原封不动的到达其目的地,作为的上层协议,为提供了可靠性服务,确保了数据报中的数据的正确性。
如图所示,是段的封装结构。
比特源端口目的端口顺序号确认号数据偏移保留标志窗口校验和紧急指示符选项长度可变填充数据图数据报格式其中,每段的含义如下源端口指示发送段的源应用层协议,是个字节的字段。
头中的源地址和头中的源端口联合起来提供个源套接字。
端口为连接数据的传送定义了种位置,表明段被发送至的应用层进程的个目的端口。
在般情况下,应用层协议的服务器端在己知的端口上侦听。
表显示了常用的应用层协议对应的端口号。
目的端口指示目的应用层协议,是个字节字段。
头中的目的地址和头中的端口联合起来提供个目的套接字。
序列号指示段的第个位组的输出字节流的序列号,是个字节字段。
用于保证数据的到达顺序与可靠性。
利用随机值确定初始值,以字节为单位表示所发送数据的位置。
确认号个位的字段,指示接收方希望收到的输入字节流中下个位组的序列号。
是用于保证可靠性的确认号码。
数据偏移表示数据的起始位置,以字节的整数倍表示,数据偏移字段也是头的大小。
在不包括选项的情况下,报头是个字节,种协议种类繁多,各种新的协议层出不穷。
个好的协议分析器必需有很好的可扩展性和结构。
这样才能适应网络发展的需要不断加入新的协议解析器。
顾名思义,可以将网络中传送的数据包的头完全截获下来提供分析。
它支持针对网络层协议主
