网络数据包传输过程总结

网络数据包传输过程总结
网络数据包传输过程总结

网络数据包传输过程总结

一、数据包是如何在网络中传输的

我们电脑上的数据,是如何“走”到远端的另一台电脑的呢?这是个最基础的问题,可能很多人回答不上来,尽管我们每天都在使用网络。这里我们以一个最简单的“ping”命令,来解释一个数据包“旅程”。

假设:我的电脑A,向远在外地的朋友电脑B传输数据,最简单的就是“ping”一下,看看这个家伙的那一端网络通不通。A与B之间只有一台路由器。(路由器可能放在学校,社区或者电信机房,无所谓,基本原理是一样的)

具体过程如下------

1.“ping”命令所产生的数据包,我们归类为ICMP协议。说白了就是向目的地发送一个数据包,然后等待回应,如果回应正常则目的地的网络就是通的。当我们输入了“ping”命令之后,我们的机器(电脑A)就生成了一个包含ICMP协议域的数据包,姑且称之为“小德”吧~~~~

2.“小德”已经将ICMP协议打包到数据段里了,可是还不能发送,因为一个数据要想向外面传送,还得经过“有关部门”的批准------IP协议。IP要将你的“写信人地址”和“收信人

地址”写到数据段上面,即:将数据的源IP地址和目的IP地址分别打包在“小德”的头部和尾部,这样一来,大家才知道

你的数据是要送到哪里。

3.准备工作还没有完。接下来还有部门要审核------ARP。ARP属于数据链路层协议,主要负责把IP地址对应到硬件

地址。直接说吧,都怪交换机太“傻”,不能根据IP地址直接找到相应的计算机,只能根据硬件地址来找。于是,交换机就经常保留一张IP地址与硬件地址的对应表以便其查找目

的地。而ARP就是用来生成这张表的。比如:当“小德”被送到ARP手里之后,ARP就要在表里面查找,看看“小德”的

IP地址与交换机的哪个端口对应,然后转发过去。如果没找到,则发一个广播给所有其他的交换机端口,问这是谁的IP 地址,如果有人回答,就转发给它。

4.经过一番折腾,“小德”终于要走出这个倒霉的局域网了。可在此之前,它们还没忘给“小德”屁股后面盖个“戳”,说是什么CRC校验值,怕“小德”在旅行途中缺胳膊少腿,还得麻烦它们重新发送。。。。。我靠~~~~注:很多人弄不清FCS

和CRC。所谓的CRC是一种校验方法,用来确保数据在传输过程中不会丢包,损坏等等,FCS是数据包(准确的说是frame)里的一个区域,用来存放CRC的计算结果的。到了目的地之后,目的计算机要检查FCS里的CRC值,如果与原来的相同,则说明数据在途中没有损坏。

5.在走出去之前,那些家伙最后折磨了一次“小德”------把小德身上众多的0和1,弄成了什么“高电压”“低电压”,在双绞线上传送了出去。晕~~出趟门就这么麻烦吗?

6.坐着双绞线旅游,爽!可当看到很多人坐着同轴电缆,还有坐光纤的时候,小德又感觉不是那么爽了。就在这时,来到了旅途的中转站------路由器。这地方可是高级场所,人家直接查看IP地址!剩下的一概不管,交给下面的人去做。够牛吧?路由器的内部也有一张表,叫做路由表,里面标识着哪一个网络的IP对应着路由器的哪一个端口。这个表也不是天生就有的,而是靠路由器之间互相“学习”之后生成的,

当然也可以由管理员手工设定。这个“学习”的过程是依靠路

由协议来完成的,比如RIP,EIGRP,OSPF等等。

7.当路由器查看了“小德”的IP地址以后,根据路由表

知道了小德要去的网络,接着就把小德转到了相应的端口了。

至此,路由器的主要工作完成,下面又是打包,封装成frame,转换成电压信号等一系列“折腾”的活,就由数据链路层和物理层的模块去干吧。

8.小德从路由器的出口出来,便来到了目的地----电脑B----所属的网络的默认网关。默认网关可以是路由器的一个端口,也可以是局域网里的各种服务器。不管怎样,下面的过程还是一样的:到交换机里的ARP表查询“小德”的IP地址,看看属于哪个局域网段或端口,然后就转发到B了。

9.进了B的网卡之后,还要层层“剥皮”,基本上和从A 出来的程序是一样的------电脑B先校验一下CRC值,看看数据是否完整;然后检查一下frame的封装,看到是IP协议之后,就把“小德”交给IP“部门”了;IP协议一看目的地址,正确,再看看应用协议,是ICMP。于是知道了该怎么做了------产生一个回应数据包,(可以命名为“回应小德”),并准备以同样的顺序向远端的A发送。。至于刚刚收到的那个数据包就丢弃了。

10.“回应小德”这个数据包又开始了上述同样的循环,只不过这次发送者是B而接收者是A了。

以上是一个最简单的路由过程,任何复杂的网络都是在次基础之上实现的。

网络数据包大小用UDP协议发送时,用sendto 函数最大能发送数据的长度为:65535-20-8=65507字节,其中20字节为IP包头长度,8字节为UDP包头长度。用sendto函数发送数据时,如果指的的数据长度大于该值,则函数会返回错误。用TCP协议发送时,由于TCP是数据流协议,因此不存在包大小的限制(暂不考虑缓冲区的大小),这是指在用send函数时,数据长度参数不受限制。而实际上,所指定的这段数据并不一定会一次性发送出去,如果这段数据比较长,可能会被分段发送,如果比较短,可能会等待和下一次数据一起发送。我在测试的时候,发现长度一般会被切成16384(16K)或49152(48K),不知道这两个值有什么意义。二、网络中IP数据报传输的过程伪代码【有助于理解】

IP数据报需从主机A上传送到主机B上,主机A首先查找路由表;

if(目的主机是与自己在同一个网段内)

{

主机A查询自己的ARP表;

if(有该目的IP地址对应的MAC地址的记录)

{

将该MAC地址作为目的MAC地址,封装数据帧,传送给主机B;

}

else

{

发送一个ARP请求广播给网段内的所有主机,来查询该目的IP地址的MAC地址;

收到ARP请求报文的各个主机如果发现该IP地址是自己的IP地址,则返回一个ARP应答报文告诉主机A自己的MAC 地址;

如果发现不是自己的IP地址,则丢弃该报文。

主机A收到这个应答报文后,就按照返回的MAC地址,将IP数据包封装成帧,然后发送到主机B上;

(补充:一般为了减少网络中的报文量,通信双方会维护一个各自的ARP表,把一次通信中获得IP MAC地址对保存在缓冲的ARP表中,但是ARP表有一个老化机制,删除一段时间内不用的IP

MAC地址对。)

}

}

else if(发现了能与目的网络号相匹配的表目)

则把报文发给改表目指定的下一站的路由器或直接连接的网络接口;

报文发送到下一站时,数据帧的目的MAC地址是下一个站路由器或者网络接口的MAC地址,而IP头部的目的IP地址是主机B的IP地址;

这里要指出的是:ARP请求报文以下一站路由器或网络接口的IP地址为目的IP地址,寻找真的目的MAC地址。换句话,ARP请求报文只负责IP数据报传输过程中每一跳中的目的MAC地址查询。

}

else

{

寻找标为“默认”的表目,把报文发送给该表目指定的下一站路由器;

报文发送到下一站时,数据帧的目的MAC地址是下一个站路由器的MAC地址,而IP头部的目的IP地址是主机B的IP地址。

}

数据帧在每两个网络设备间传递时,是转换成bit流在传输媒体上传输。链路层提供了如停止等待协议等机制,控制了bit流在传输媒体上的无措传输。三、ARP协议详解

前言:ARP协议的作用:

1. 什么是ARP?

ARP (Address Resolution Protocol) 是个地址解析协议。最直白的说法是:在IP以太网中,当一个上层协议要发包时,有了该节点的IP地址,ARP就能提供该节点的MAC地址。

2为什么要有ARP?

OSI 模式把网络工作分为七层,彼此不直接打交道,只通过接口(layre interface). IP地址在第三层, MAC地址在第二层。

协议在发生数据包时,首先要封装第三层(IP地址)和第二层(MAC地址)的报头, 但协议只知道目的节点的IP地址,不知道其物理地址,又不能跨第二、三层,所以得用ARP 的服务。

详细说明:

在网络通讯时,源主机的应用程序知道目的主机的IP地址和端口号,却不知道目的主机的硬件地址,而数据包首先是被网卡接收到再去处理上层协议的,如果接收到的数据包的硬件地址与本机不符,则直接丢弃。因此在通讯前必须获得目的主机的硬件地址。ARP协议就起到这个作用

当一台主机把以太网数据帧发送到位于同一局域网上的另

一台主机时,是根据48位的以太网地址来确定目的接口的,设备驱动程序从不检查IP数据报中的目的IP地址。ARP(地址解析)模块的功能为这两种不同的地址形式提供映射:32位的IP地址和48位的以太网地址

(一)ARP报文各字段含义:

ARP报文字段总共有28个字节

1.硬件类型:占2个字节,表明ARP实现在何种类型的网络上。

值为1:表示以太网。

2.协议类型:占2个字节表示要映射的协议地址类型。

IP:0800

3.硬件地址长度:占1个字节,表示MAC地址长度,其值为6个字节。

4.协议地址长度:占1个字节,表示IP地址长度,此处值4个字节

5.操作类型:占2个字节,表示ARP数据包类型。

值为1表示ARP请求。

值2表示ARP应答。

6.源MAC地址:占6个字节,表示发送端MAC地址

7.源IP地址:占4个字节,表示发送端IP地址

8.目的以太网地址:占6个字节,表示目标设备的MAC物理地址

9.目的IP地址:占4个字节,表示目标设备的IP地址.

注意:在ARP操作中,有效数据的长度为28个字节,不足以太网的最小长度46字节长度,需要填充字节,填充字节最小长度为18个字节

(二)ARP请求分组或应答分组

以太网首部总共有14字节数据,arp请求报文总共有28字节。所以一个ARP请求分组或应答分组总共有46字节数据。

而以太网数据包的最小数据为60字节。所以,要对其进行填充。

这里有一些重复信息

1. 在以太网的数据帧报头中和ARP请求数据帧中都有发送端的MAC物理地址。

2. 在发送ARP请求时,以太网帧头中的目的MAC物理地址为FF-FF-FF-FF-FF-FF,而在ARP帧中的目的MAC处此时为空。

3. 对一个ARP请求来说,除ARP中目的端MAC硬件地址外的所有其他的字段都有填充值。当系统收到一份目的端为本地的ARP请求报文后,它就把硬件地址填进去,然后用两个目的端地址分别替换两个发送端地址,并把操作字段置为2,最后发送出去。

(三)ARP协议工作过程:

1. 原理:(ARP协议只使用于局域网中)

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

2> 在以太网中,一个主机要和另一个主机进行直接通信,必须要知道目标主机的MAC地址。但这个目标MAC地址是如何获得呢?它就是通过地址解析协议获得的。所谓“地址解析”就是主机在发送帧前将目标IP地址转换成目标MAC地址的过程。

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

4> 点对点的连接是不需要ARP协议的

2. 工作过程:

1> 当主机A向本局域网上的某个主机B发送IP数据报时,就先在自己的ARP缓冲表中查看有无主机B的IP地址。

2> 如果有,就可以查出其对应的硬件地址,再将此硬件地址写入MAC帧,然后通过以太网将数据包发送到目的主机中。

3> 如果查不到主机B的IP地址的表项。可能是主机B 才入网,也可能是主机A刚刚加电。其高速缓冲表还是空的。

在这中情况下,主机A就自动运行ARP。

(1)ARP进程在本局域网上广播一个ARP请求分组。ARP请求分组的主要内容是表明:我的IP地址是192.168.0.2,我的硬件地址是00-00-C0-15-AD-18.我想知道IP地址为192.168.0.4的主机的硬件地址。

(2)在本局域网上的所有主机上运行的ARP进行都收到此ARP请求分组。

(3)主机B在ARP请求分组中见到自己的IP地址,就向主机A发送ARP响应分组,并写入自己的硬件地址。其余的所有主机都不理睬这个ARP请求分组。ARP响应分组的主要内容是表明:“我的IP地址是192.168.0.4,我的硬件地址是08-00-2B-00-EE-AA”,请注意:虽然ARP请求分组是广播发送的,但ARP响应分组是普通的单播,即从一个源地址发送到一个目的地址。

(4)主机A收到主机B的ARP响应分组后,就在其ARP高速缓冲表中写入主机B的IP地址到硬件地址的映射。

3. 事例说明:用ping说明ARP工作的原理

假设我们的计算机IP地址是192.168.1.1,要执行这个命令:ping192.168.1.2。该命令会通过ICMP协议发送ICMP(以太网控制报文协议)数据包

该过程需要经过下面的步骤:

1> 应用程序构造数据包,该示例是产生ICMP包,被提交给内核(网络驱动程序);

2> 内核检查是否能够转化该IP地址为MAC地址,也就是在本地的ARP缓存中查看IP-MAC对应表;

3> 如果存在该IP-MAC对应关系,那么跳到步骤<7;

如果不存在该IP-MAC对应关系,那么接续下面的步骤;

4> 内核进行ARP广播,目的MAC地址是

FF-FF-FF-FF-FF-FF,ARP命令类型为REQUEST(1),其中包含有自己的MAC地址;

5> 当192.168.1.2主机接收到该ARP请求后,就发送一

个ARP的REPLY(2)命令,其中包含自己的MAC地址;

6> 本地获得192.168.1.2主机的IP-MAC地址对应关系,并保存到ARP缓存中;

7> 内核将把IP转化为MAC地址,然后封装在以太网头结构中,再把数据发送出去;

4. 特殊情况:

ARP是解决同一个局域网上的主机或路由器的IP地址和硬件地址的映射问题。如果所要找的目标设备和源主机不在同一个局域网上。

1>此时主机A就无法解析出主机B的硬件地址(实际上主机A也不需要知道远程主机B的硬件地址);

2>此时主机A需要的是将路由器R1的IP地址解析出来,然后将该IP数据报发送给路由器R1.

3>R1从路由表中找出下一跳路由器R2,同时使用ARP 解析出R2的硬件地址。于是IP数据报按照路由器R2的硬

件地址转发到路由器R2。

4>路由器R2在转发这个IP数据报时用类似方法解析出目的主机B的硬件地址,使IP数据报最终交付给主机B.

说明:

如果你的数据包是发送到不同网段的目的地,那么就一定存在一条网关的IP-MAC地址对应的记录。

知道了ARP协议的作用,就能够很清楚地知道,数据包的向外传输很依靠ARP协议,当然,也就是依赖ARP缓存。要知道,ARP协议的所有操作都是内核自动完成的,同其他的应用程序没有任何关系。同时需要注意的是,ARP协议只使用于本网络。

(四)ARP缓冲表和TTL

1. ARP缓冲表

1> ARP协议的本质是完成网络地址到物理地址的映射。从概念上将就是找到一个映射方法f,使得“物理地址= f(网

络地址)“。物理地址有两种基本类型:以太网类型和令牌环网类型。网络地址特指IP地址,对映射方法的要求就是高效。具体到以太网,它使用的是动态绑定转换的方法。一般是设置ARP高速缓存,通过学习,老化,更新,溢出算法处理ARP映射表来解决这些问题。

学习指ARP收到任何指向本结点IP地址的ARP/IP包,从中提取出地址对,当ARP缓冲表中无对应项时,由ARP接收部分添加;

老化指为每项设置寿命域,以便代谢掉陈旧的地址映射项;

更新指ARP提取到新的地址对时,用其更新缓存里已有的对应项;

溢出算法指当缓存慢时,采取何种方法替代旧有的地址对。

2> ARP缓存表由状态,寿命,IP地址,MAC地址4个字段组成。状态字段指示地址对是否有效;寿命字段用于老化操作,初始存入最大值,以后由OS时间函数调用,每秒减1,直至为0清除;IP地址和MAC地址字段保存网络地址和物理地址的映射。围绕ARP缓存表,完成了4种操作:

学习,老化,更新,表满处理。

3> 当ARP被询问一个已只IP地址节点的MAC地址时,先在ARPcache 查看

l 若存在,就直接返回MAC地址,

l 若不存在,才发送ARP request向局域网查询。

4> 当主机A向B发送数据报时,很可能以后不久主机B 还要向A发送数据报,因而主机B可能要向A发送ARP请求分组。

所以,为了减少网络上的通信量,主机A在发送其ARP请求分组时,就将自己的IP地址到硬件地址的写入主机B自己的ARP高速缓冲表中。这对主机B以后向A发送数据报时就更方便了。

Tiger 说明:

任何事物都有两面性,如果掌握的好它就是天使,如果掌握的不好它就是Satan,ARP中的缓冲表为计算机之间的通信

数据包转发过程

路由器转发数据包过程详解 (2010-05-22 20:59:09) 转载 标签: 分类:学习交流 路由器 数据包转发 it 主机PC1向主机PC2发个数据包,中间经过B路由器,请问源地址和源MAC是怎么变化的? 答:就假设拓扑图是这个样子吧:PC1-----(B1-B2) -------PC2 B1和B2是路由器B上的两个接口, PC1和PC2是PC,由主机PC1向主机PC2发送数据包,那么在主机PC1形成的数据包的目的IP就是PC2的IP,源IP就是主机PC1的IP地址,目标MAC地址就是B1的MAC地址,源MAC地址就是PC1的MAC地址。 转发过程:假如是第一次通信PC1没有PC2的ARP映射表 PC1在本网段广播一个数据帧(目的MAC地址为:FFFF:FFFF:FFFF:FFFF)帧格式为: 段的路由。此时路由器给PC1回复一个应答数据包,告诉PC1自己的MAC地址就是PC1要通信的PC2主机的MAC地址。而此时PC1建立ARP映射表,将该MAC地址(即路由器的B1接口)与PC2的IP地址建立映射关系。实际上是路由器对其进行了“欺骗”。 其应答数据帧格式为: 对于路由器B同样建立了自己的ARP映射表:将PC1的MAC地址与PC1的IP地址映射。

数据包在流出B2接口的时候其数据包的帧格式为: PC2所在的网段各主机将自己的IP地址与数据包中的目的IP地址比对。若符合则将自己的MAC地址替换上广播MAC地址,并回复该数据帧: 的对应关系调出来。将PC1的MAC地址覆盖路由器B2接口的MAC地址。另一方面路由器更新ARP映射表,将PC2的MAC地址与PC2的IP地址映射。 此时流出路由器B1接口的数据包的帧格式为: 地址建立对应关系。 此后每次通信时由于PC1要与PC2通信时。由于PC1已经建立了到PC2IP地址的ARP映射,所以下次要通信时直接从本地ARP调用。 简单说一下,网络设备间(包括设备之间和计算机之间)如果要相互通信的话必需经过以下这几个步骤: (以TCP/IP协议通信为例) 1、发送端的应用程序向外发出一个数据包。 2、系统判断这个数据包的目标地址是否在同一个网段之内。 3、如果判断出这个数据包的目标地址与这台设备是同一个网段的,那么系统就直接把这个数据包封装成帧,这个数据帧里面就包括了这台设备的网卡MAC地址,然后这个帧就直接通过二层设备(也就是大家说的不带路由的交换机/HUB之类的~^-^)发送给本网段内的目标地址。

高速网络环境下数据包捕获技术的分析

龙源期刊网 https://www.360docs.net/doc/705565752.html, 高速网络环境下数据包捕获技术的分析 作者:王亚 来源:《数字技术与应用》2011年第12期 摘要:互联网的迅猛发展,网络带宽飞速增长,在高速网络环境下,传统的网络数据包捕获已经成为制约整个系统的性能提升的瓶颈,为了满足高速网络的数据包捕获的需求,对传统的网络数据包捕获存在的问题进行分析,在此基础上提出了改进措施,为后期研究高速网络下高性能的数据包捕获技术奠定基础。 关键词:高速网数据包捕获 Libpcap 中图分类号:TP393 文献标识码:A 文章编号:1007-9416(2011)12-0194-02 The Analysis of Packet Capture Technology in High Speed Network wangya (Fuyang Teachers College of computer and Information engineering Fuyang 236041) Abstract:The rapid development of the Internet and the rapid growth of network bandwidth,in high-speed network environment,the traditional network data packet capture has become the constraints of the system performance bottleneck. In order to satisfy the high speed network packet capture demand,to analysis the existing problems of the traditional network packet capture,and put forward on this foundation improvement measures.,It lays the foundation for later research of high-speed network and high performance packet capture technology. Keywords:high speed network;packet capture;Libpcap 1、引言 目前,对网络信息监控与检测的软件都是基于数据包捕获技术,如:入侵检测程序Snort、嗅探器Tcpdump等。数据包捕获技术是一种对网络上的数据包进行监听并截取的技术,可以将数据包原封不动的拷贝到捕包端的系统中。数据包捕获是入侵检测系统、网络协议

网络数据包的捕获与分析毕业设计

网络数据包的捕获与分析 【摘要】网络数据包的捕获对于网络安全有着巨大的作用,为我们更好的分析网络中的数据流提供了帮助。本论文是基于Windows下开发一个网络监听工具,侧重点在于实现网络数据包的捕获,然后分析并显示捕获到的数据包信息这部分功能的实现,如分析:IP首部协议类型、源IP、目的IP和端口号等。采用的是Winpcap(Windows Packet Capture)来实现的抓包功能。通过VC++6.0中MFC编程实现通过一个完整界面来控制调用Winpcap中的函数来实现对网卡信息的捕获和循环捕获数据包,然后通过预先对于IP、TCP、UDP等数据包的定义和TCP/IP等协议来解析其中包含的内容并返回显示捕获到数据包的信息,当然也可以保存捕获到的数据包到指定地点以便进一步分析。 【关键词】Winpcap;数据包;捕获;分析

The Capture and Analysis of Network Data Packets Wang Hang (Grade 11,Class 1, Major Network Engineering, Scho ol of Mathematics and Computer Science Dept, Shaanxi University of Technology, Hanzhong 723003, Shaanxi) Tutor: Jia Wei Abstract: The capture of network data packets plays an important part in network security, which is helpful for our better analysis of network data flow.This paper is about a network monitoring tool based on Windows system, which emphasizes particularly on realizing the capture and analysis of network data packets and then displays them. Take analysis as an example, it will check the type of the IP protocol, the source address of IP, the destination address of IP and the port https://www.360docs.net/doc/705565752.html,e the Winpcap(Windows Packet Capture)to capture of data packets. In MFC programming of VC++6.0, the capture of network data packets can be realized via the invoking and control of the functions through a full control panel, and then the analysis of IP ,TCP,UDP and TCP/IP will be done before they are displayed. Certainly the information captured can be saved to the appointed destination in order to go through an advanced analysis. Key words:Winpcap;Data Packets;Capture;Analysis

内核协议栈数据包转发完全解析

内核协议栈数据包转发 目录 1 NAPI流程与非NAPI 1.1NAPI驱动流程 1.2非NAPI流程 1.3NAPI和非NAPI的区别 2内核接受数据 2.1数据接收过程 2.2 采取DMA技术实现 3 e100采用NAPI接收数据过程 3.1 e100_open 启动e100网卡 3.2 e100_rx_alloc_list 建立环形缓冲区 3.3 e100_rx_alloc_skb 分配skb缓存 3.4 e100_poll 轮询函数 3.5 e100_rx_clean 数据包的接收和传输 3.6 e100_rx_indicate 4 队列层 4.1、软中断与下半部 4.2、队列层 5采用非NAPI接收数据过程 5.1netif_rx 5.2轮询与中断调用netif_rx_schedule不同点 5.3 netif_rx_schedule 5.4 net_rx_action 5.5 process_backlog 6数据包进入网络层 6.1 netif_receive_skb(): 6.2 ip_rcv(): 6.3 ip_rcv_finish(): 6.4 dst_input(): 6.5本地流程ip_local_deliver: 6.6转发流程ip_forward(): 1 NAPI流程与非NAPI 1.1NAPI驱动流程: 中断发生 -->确定中断原因是数据接收完毕(中断原因也可能是发送完毕,DMA完毕,甚至是中断通道上的其他设备中断) -->通过netif_rx_schedule将驱动自己的napi结构加入softnet_data的poll_list 链表,禁用网卡中断,并发出软中断NET_RX_SOFTIRQ -->中断返回时触发软中断调用相应的函数net_rx_action,从softnet_data的poll_list

路由器的工作原理

路由器的工作原理 路由器的是实现网络互连,在不同网络之间转发数据单元的重要网络设备。路由器主要工作在OSI参考模型的第三层(网络层),路由器的主要任务就是为经过路由器的每个数据帧寻找一条最佳传输路径,并将该数据有效地传送到目的站点。为了完成这项工作,在路由器中保存着各种传输路径的相关数据——路由表(Routing Table),供路由选择时使用。由此可见,选择最佳路径的策略即路由算法是路由器的关键所在。因此,当路由器接收到来自一个网络接口的数据包时,首先根据其中所含的目的地址查询路由表,决定转发路径(转发接口和下一跳地址),然后从ARP缓存中调出下一跳地址的MAC地址,将路由器自己的MAC 地址作为源MAC,下一跳地址的MAC作为目的MAC,封装成帧头,同时IP数据包头的TTL(Time To Live)也开始减数,最后将数据发送至转发端口,按顺序等待,传送到输出链路上去。在这个过程中,路由器被认为了执行两个最重要的基本功能:路由功能与交换功能。 路由功能 路由功能是指路由器通过运行动态路由协议或其他方法来学习和维护网络拓扑结构,建立,查询和维护路由表。 路由表里则保存着路由器进行路由选择时所需的关键信息,包含了目的地址、目的地址的掩码、下一跳地址、转发端口、路由信息来源、路由优先级、度量值(metric)等。 路由信息可通过多种协议的学习而来,其来源方式可分为直连路由、静态路由、缺省路由和动态路由。一个路由器上可以同时运行多个不同的路由协议,每个路由协议都会根据自己的选路算法计算出到达目的网络的最佳路径,但是由于选路算法不同,不同的路由协议对某一个特定的目的网络可能选择的最佳路径不同。此时路由器根据路由优先级(决定了来自不同路由来源的路由信息的优先权)选择将具有最高路由优先级(数值最小)的路由协议计算出的最佳路径放置在路由表中,作为到达这个目的网络的转发路径。(优先级顺序:直连路由>静态路由>动态路由(OSPF>RIP)) 而对于一个特定的路由协议,可以发现到达目的网络的所有路径,根据选路

数据包捕获与解析

数据包捕获与解析课程设计报告 学生姓名:董耀杰 学号:1030430330 指导教师:江珊珊

数据包捕获与分析 摘要本课程设计通过Ethereal捕捉实时网络数据包,并根据网络协议分析流程对数据包在TCP/IP各层协议中进行实际解包分析,让网络研究人员对数据包的认识上升到一个感性的层面,为网络协议分析提供技术手段。最后根据Ethereal的工作原理,用Visual C++编写一个简单的数据包捕获与分析软件。 关键词协议分析;Ethereal;数据包;Visual C++ 1引言 本课程设计通过技术手段捕获数据包并加以分析,追踪数据包在TCP/IP各层的封装过程,对于网络协议的研究具有重要的意义。Ethereal是当前较为流行的图形用户接口的抓包软件,是一个可以用来监视所有在网络上被传送的包,并分析其内容的程序。它通常被用来检查网络工作情况,或是用来发现网络程序的bugs。通过ethereal对TCP、UDP、SMTP、telnet和FTP等常用协议进行分析,非常有助于网络故障修复、分析以及软件和协议开发。,它以开源、免费、操作界面友好等优点广为世界各地网络研究人员使用为网络协议分析搭建了一个良好的研究平台。 1.1课程设计的内容 (1)掌握数据包捕获和数据包分析的相关知识; (2)掌握Ethreal软件的安装、启动,并熟悉用它进行局域网数据捕获和分析的功能; (3)设计一个简单的数据包捕获与分析软件。 1.2课程设计的要求 (1)按要求编写课程设计报告书,能正确阐述设计结果。 (2)通过课程设计培养学生严谨的科学态度,认真的工作作风和团队协作精神。 (3)学会文献检索的基本方法和综合运用文献的能力。 (4)在老师的指导下,要求每个学生独立完成课程设计的全部内容。

sniffer数据包捕获

实训报告 一、sniffer的功能认知; 1. 实时网络流量监控分析 Sniffer Portable LAN能够对局域网网络流量进行实时监控和统计分析,对每个链路上的网络流量根据用户习惯,可以提供以表格或图形(条形图、饼状图和矩阵图等)方式显示的统计分析结果,内容包括: ·网络总体流量实时监控统计:如当前和平均网络利用率、总的和当前的帧数、字节数、总网络节点数和激活的网络节点数、当前和总的平均帧长等。 ·协议使用和分布统计:如协议类型、协议数量、协议的网络利用率、协议的字节数以及每种协议中各种不同类型的帧的数量等。Sniffer包含通用的TCP和UDP网络应用协议如HTTP, Telnet, SNMP, FTP等。同时,Sniffer 也具有特有的灵活性允许增加自定义的应用。一旦应用协议加入Sniffer,针对应用的所有的监控、报警和报告便自动生效;

·包尺寸分布统计:如某一帧长的帧所占百分比,某一帧长的帧数等。 ·错误信息统计:如错误的CRC校验数、发生的碰撞数、错误帧数等; ·主机流量实时监控统计:如进出每个网络节点的总字节数和数据包数、前x个最忙的网络 节点等;

话节点对等;

·Sniffer还提供历史统计分析功能,可以使用户看到网络中一段时间内的流量运行状况,帮助用户更好的进行流量分析和监控。

2.应用响应时间监控和分析 Sniffer 在监控网络流量和性能的同时,更加关注在网络应用的运行状况和性能管理,应用响应时间(ART)功能是Sniffer中重要的组成部分,不仅提供了对应用响应时间的实时监控,也提供对于应用响应时间的长期监控和分析能力。 首先ART监控功能提供了整体的应用性能响应时间,让用户以多种方式把握当前网络通讯中的各类应用响应时间的对比情况,如客户机/服务器响应时间、服务器响应时间,最 快响应时间、最慢响应时间、平均响应时间和90%的请求的响应时间等。

IP及IPSEC协议数据包的捕获与分析分析

IP及IPSEC协议数据包的捕获与分析 为了掌握掌握IP和IPSEC协议的工作原理及数据传输格式,熟悉网络层的协议。我进行了以下实验:首先用两台PC互ping并查看其IP报文,之后在两台PC上设置IPSEC互ping并查看其报文。最终分析两者的报文了解协议及工作原理。 一、用两台PC组建对等网: 将PC1与PC2连接并分别配置10.176.5.119和10.176.5.120的地址。如图1-1所示。 图1-1 二、两PC互ping: IP数据报结构如图1-2所示。 图1-2 我所抓获的报文如图1-3,图1-4所示:

图1-3 请求包 图1-4 回应包 分析抓获的IP报文: (1)版本:IPV4 (2)首部长度:20字节 (3)服务:当前无不同服务代码,传输忽略CE位,当前网络不拥塞

(4)报文总长度:60字节 (5)标识该字段标记当前分片为第1367分片 (6)三段标志分别指明该报文无保留、可以分段,当前报文为最后一段 (7)片偏移:指当前分片在原数据报(分片前的数据报)中相对于用户数据字段 的偏移量,即在原数据报中的相对位置。 (8)生存时间:表明当前报文还能生存64 (9)上层协议:1代表ICMP (10)首部校验和:用于检验IP报文头部在传播的过程中是否出错 (11)报文发送方IP:10.176.5.120 (12)报文接收方IP:10.176.5.119 (13)之后为所携带的ICMP协议的信息:类型0指本报文为回复应答,数据部分 则指出该报文携带了32字节的数据信息,通过抓获可看到内容为:abcdefghijklmnopqrstuvwabcdefghi 三、IPSec协议配置: 1、新建一个本地安全策略。如图1-5。 图1-5 2、添加IP安全规则。如图1-6.

数据传输过程详解

数据传输过程详解 一、FTP客户端发送数据到FTP服务器端,详述其工作过程。两台机器的连接情况如下图所示: 详细解答如下 1.1、假设初始设置如下所示: 客户端FTP端口号为:32768 协议是水平的,服务是垂直的。 物理层,指的是电信号的传递方式,透明的传输比特流。 链路层,在两个相邻结点间的线路上无差错地传送以帧为单位的数据。 网络层,负责为分组交换网上的不同主机提供通信,数据传送的单位是分组或包。 传输层,负责主机中两个进程之间的通信,数据传输的单位是报文段。 网络层负责点到点(point-to-point)的传输(这里的“点”指主机或路由器),而传输层负责端到端(end-to-end)的传输(这里的“端”指源主机和目的主机)。 1.3、数据包的封装过程 不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报(datagram),在链路层叫做帧(frame)。数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部,最后将应用层数据交给应用程序处理。两台计算机在不同的网段中,那么数据从一台计算机到另一台计算机传输过程中要经过一个或多个路由器。 1.4、工作过程 (1)在PC1客户端,将原始数据封装成帧,然后通过物理链路发送给Switch1的端口1。形成的帧为: 注:发送方怎样知道目的站是否和自己在同一个网络段?每个IP地址都有网络前缀,发送方只要将目的IP地址中的网络前缀提取出来,与自己的网络前缀比较,若匹配,则意味着数据报可以直接发送。也就是说比较二者的网络号是否相同。本题中,PC1和PC2在两个网络段。 (2)Switch1收到数据并对数据帧进行校验后,查看目的MAC地址,得知数据是要

实验1:网络数据包的捕获与协议分析

实验报告 ( 2014 / 2015 学年第二学期) 题目:网络数据包的捕获与协议分析 专业 学生姓名 班级学号 指导教师胡素君 指导单位计算机系统与网络教学中心 日期2015.5.10

实验一:网络数据包的捕获与协议分析 一、实验目的 1、掌握网络协议分析工具Wireshark的使用方法,并用它来分析一些协议; 2、截获数据包并对它们观察和分析,了解协议的运行机制。 二、实验原理和内容 1、tcp/ip协议族中网络层传输层应用层相关重要协议原理 2、网络协议分析工具Wireshark的工作原理和基本使用规则 三、实验环境以及设备 Pc机、双绞线、局域网 四、实验步骤 1.用Wireshark观察ARP协议以及ping命令的工作过程: (1)打开windows命令行,键入“ipconfig -all”命令获得本机的MAC地址和缺省路由器的IP地址;结果如下: (2)用“arp -d”命令清空本机的缓存;结果如下 (3)开始捕获所有属于ARP协议或ICMP协议的,并且源或目的MAC地址是本机的包。(4)执行命令:ping https://www.360docs.net/doc/705565752.html,,观察执行后的结果并记录。

此时,Wireshark所观察到的现象是:(截图表示) 2.设计一个用Wireshark捕获HTTP实现的完整过程,并对捕获的结果进行分析和统计。(截 图加分析) 3.设计一个用Wireshark捕获ICMP实现的完整过程,并对捕获的结果进行分析和统计。要求:给出捕获某一数据包后的屏幕截图。以16进制形式显示其包的内容,并分析该ICMP 报文。(截图加分析) 4. 设计一个用Wireshark捕获IP数据包的过程,并对捕获的结果进行分析和统计(截图加分析) 要求:给出捕获某一数据包后的屏幕截图。以16进制形式显示其包的内容,并分析在该数据包中的内容:版本首部长度、服务类型、总长度、标识、片偏移、寿命、协议、源Ip地址、目的地址 五、实验总结

网络数据包捕获工具的实现

本文来自中国协议分析网技术论坛,转载请注明 sniffer tcp http ospf rtp dhcp Sniffer EtherealWinpcap 其它技术返回首页当前位置: 网站首页>>协议分析>>Winpcap>> 利用WinPcap技术捕获数据包时间:2006-11-14 来源: 作者: 点击:849次收藏到: 前言随着网络入侵的不断发展,网络安全变得越来越重要,于是网络入侵取证系统的研究也变得日益重要。在网络入侵取证系统中,对网络上传送的数据包进行有效的监听即捕获包是目前取证的关键技术,只有进行高效的数据包捕获,网络管理员才能对所捕获的数据进行一系列 前言 随着网络入侵的不断发展,网络安全变得越来越重要,于是网络入侵取证系统的研究也变得日益重要。在网络入侵取证系统中,对网络上传送的数据包进行有效的监听即捕获包是目前取证的关键技术,只有进行高效的数据包捕获,网络管理员才能对所捕获的数据进行一系列的分析,从而进行可靠的网络安全管理。 1winpcap简介 WinPcap 是由伯克利分组捕获库派生而来的分组捕获库,它是在Windows 操作平台上来实现对底层包的截取过滤。WinPcap 为用户级的数据包提供了Windows 下的一个平台。WinPcap 是BPF 模型和Libpcap 函数库在Windows 平台下网络数据包捕获和网络状态分析的一种体系结构,这个体系结构是由一个核心的包过滤驱动程序,一个底层的动态连接库Packet.dll 和一个高层的独立于系统的函数库Libpcap 组成。底层的包捕获驱动程序实际为一个协议网络驱动程序,通过对NDIS 中函数的调用为Win95、Win98、WinNT、和Win2000 提供一类似于UNIX 系统下Berkeley Packet Filter 的捕获和发送原始数据包的能力。Packet.dll 是对这个BPF 驱动程序进行访问的API 接口,同时它有一套符合Libpcap 接口(UNIX 下的捕获函数库)的函数库。WinPcap的结构图如图1。 WinPcap 包括三个部分:第一个模块NPF(Netgroup Packet Filter),是一个虚拟设备驱动程序文件。它的功能是过滤数据包,并把这些数据包原封不动地传给用户态模块,这个过程中包括了一些操作系统特有的代码。第二个模块packet.dll为win32平台提供了一个公共的接口。不同版本的Windows系统都有自己的内核模块和用户层模块。Packet.dll用于解决这些不同。调用Packet.dll的程序可以运行在不同版本的Windows平台上,而无需重新编译。第三个模块Wpcap.dll是不依赖于操作系统的。它提供了更加高层、抽象的函数。 packet.dll和Wpcap.dll:packet.dll直接映射了内核的调用。Wpcap.dll提供了更加友好、功能更加强大的函数调用。WinPcap的优势提供了一套标准的抓包接口,与libpcap兼容,可使得原来许多UNIX平台下的网络分析工具快速移植过来便于开发各种网络分析工具,充分考虑了各种性能和效率的优化,包括对于NPF内核层次上的过滤器支持,支持内核态的统计模式,提供了发送数据包的能力。 2网络数据包捕获的原理 以太网(Ethernet)具有共享介质的特征,信息是以明文的形式在网络上传输,当网络适配器设置为监听模式(混杂模式,Promiscuous)时,由于采用以太网广播信道争用的方式,使得监听系统与正常通信的网络能够并联连接,并可以捕获任何一个在同一冲突域上传输的数据包。IEEE802.3 标准的以太网采用的是持续CSMA 的方式,正是由于以太网采用

计算机网络实验八 Sniffer Pro数据包捕获与协议分析汇编

惠州学院《计算机网络》实验报告 实验08 Sniffer Pro数据包捕获与协议分析 1. 实验目的 (1)了解Sniffer的工作原理。 (2)掌握SnifferPro工具软件的基本使用方法。 (3)掌握在非交换以太网环境下侦测、记录、分析数据包的方法。 2. 实验原理 数据在网络上是以很小的被称为“帧”或“包”的协议数据单元(PDU)方式传输的。以数据链路层的“帧”为例,“帧”由多个部分组成,不同的部分对应不同的信息以实现相应的功能,例如,以太网帧的前12个字节存放的是源MAC地址和目的MAC地址,这些数据告诉网络该帧的来源和去处,其余部分存放实际用户数据、高层协议的报头如TCP/IP 的报头或IPX报头等等。帧的类型与格式根据通信双方的数据链路层所使用的协议来确定,由网络驱动程序按照一定规则生成,然后通过网络接口卡发送到网络中,通过网络传送到它们的目的主机。目的主机按照同样的通信协议执行相应的接收过程。接收端机器的网络接口卡一旦捕获到这些帧,会告诉操作系统有新的帧到达,然后对其进行校验及存储等处理。 在正常情况下,网络接口卡读入一帧并进行检查,如果帧中携带的目的MAC地址和自己的物理地址一致或者是广播地址,网络接口卡通过产生一个硬件中断引起操作系统注意,然后将帧中所包含的数据传送给系统进一步处理,否则就将这个帧丢弃。 如果网络中某个网络接口卡被设置成“混杂”状态,网络中的数据帧无论是广播数据帧还是发向某一指定地址的数据帧,该网络接口卡将接收所有在网络中传输的帧,这就形成了监听。如果某一台主机被设置成这种监听(Snfffing)模式,它就成了一个Sniffer。 一般来说,以太网和无线网被监听的可能性比较高,因为它们是一个广播型的网络,当然无线网弥散在空中的无线电信号能更轻易地截获。 3. 实验环境与器材 本实验在虚拟机中安装SnifferPro4.7版本,要求虚拟机开启FTP、HTTP等服务,即虚拟机充当服务器,物理机充当工作站。 物理机通过Ping命令、FTP访问及网页访问等操作实验网络数据帧的传递。 4. 实验内容 介绍最基本的网络数据帧的捕获和解码,详细功能请参阅本教材辅助材料。 (1)Sniffer Pro 4.7的安装与启动 1)启动Sniffer Pro 4.7。在获取Sniffer Pro 4.7软件的安装包后,运行安装程序,按要求输入相关信息并输入注册码,若有汉化包请在重启计算机前进行汉化。完成后重启计算机,点击“开始”→“程序”→“Sniffer Pro”→“Sniffer”,启动“Sniffer Pro 4.7”程序。 2)选择用于Sniffer的网络接口。如果计算机有多个网络接口设备,则可通过菜单“File”→“Select Settings”,选择其中的一个来进行监测。若只有一块网卡,则不必进行此步骤。

数据包从源到目的地的传输过程

数据包从源到目的地的传输过程 步骤1:PC1 需要向PC2 发送一个数据包 PC1 将IP 数据包封装成以太网帧,并将其目的MAC 地址设为R1 FastEthernet 0/0 接口的MAC 地址。 PC1 是如何确定应该将数据包转发至R1 而不是直接发往PC2?这是因为PC1 发 现源IP 地址和目的IP 地址位于不同的网络上。 PC1 通过对自己的IP 地址和子网掩码执行AND 运算,从而了解自身所在的网络。同样,PC1 也对数据包的目的IP 地址和自己的子网掩码执行AND 运算。如果两次运算结果一致,则PC1 知道目的IP 地址处于本地网络中,无需将数据包转发到默认网关(路由器)。如果AND 运算的结果是不同的网络地址,则PC1 知道目的IP 地址不在本地网络中,因而需要将数据包转发到默认网关(路由器)。 注:如果数据包目的IP 地址与PC1 子网掩码进行AND 运算后,所得到的结果并非PC1 计算得出的自己所在的网络地址,该结果也未必就是实际的远程网络地址。在PC1 看来,只有当掩码和网络地址相同时,目的IP 地址才属于本地网络。远程网络可能使用不同的掩码。如果目的IP 地址经过运算后得到的网络地址不同于本地网络地址,则PC1 无法知道实际的远程网络地址,它只知道该地址不在本地网络上。 PC1 如何确定默认网关(路由器R1)的MAC 地址?PC1 会在其ARP 表中查找默认网关的IP 地址及其关联的MAC 地址。 如果该条目不存在于ARP 表中会发生什么情况?PC1 会发出一个ARP 请求,然后路由器R1 作出ARP 回复。

步骤2:路由器R1 收到以太网帧 1. 路由器R1 检查目的MAC 地址,在本例中它是接收接口FastEthernet 0/0 的MAC 地址。因此,R1 将该帧复制到缓冲区中。 2. R1 看到“以太网类型”字段的值为0x800,这表示该以太网帧的数据部分包含IP 数据包。 3. R1 解封以太网帧。

ip数据包的捕获与解析代码

// PackCaptureDlg.h:header file #define IPV4_WERSION 4 #define IPV6_WERSION 6 #define ICMP_PACKET 1 #define IGMP_PACKET 2 #define TCP_PACKET 6 #define EGP_PACKET 8 #define UDP_packet 17 #define OSPF_PACKET 89 class CPackCaptureDlg:public CDialog { public: //{{AFX_DATA(CFindHostDlg) enum {IDO=IDO_PACKCAPTURE_DIALOG}; int m_Count; CString m_Packet; //}}AFX_DATA protected: //{{AFX_MSG(CFindHostDlg) afx_msg void OnCapture(); //}}AFX_MSG private: typedef struct IP_HEAD //IP头部结构 { union { unsigned char Version; //版本(字节前四位) unsigned char HeadLen; //头部长度(字节后四位) }; unsigned char ServiceType; //服务类型 unsigned short TotalLen; //总长度 unsigned short Identifier; //标识符 union { unsigned short Flags; //标志位(字前三位) unsigned short FragOffset;

实验三 网络数据包的捕获与分析

实验三 网络数据包的捕获与分析 一、实验目的和要求 通过本次实验,了解sniffer 的基本作用,并能通过sniffer 对指定的网络行为所产生的数据包进行抓取,并分析所抓取的数据包。 二、实验内容 A :1、首先打开sniffer 软件,对所要监听的网卡进行选择 2、选择网卡按确定后,进入sniffer 工作主界面,对主界面上的操作按钮加以熟悉。 B :设置捕获条件进行抓包 基本的捕获条件有两种: 1、链路层捕获,按源MAC 和目的MAC 地址进行捕获,输入方式为十六进制连续输入,如:00E0FC123456。 2、IP 层捕获,按源IP 和目的IP 进行捕获。输入方式为点间隔方式,如:10.107.1.1。如果选择IP 层捕获条件则ARP 等报文将被过滤掉。 任意捕协议捕缓冲区基本捕获条件数据流链路层捕获获条件编辑 获编辑 编辑 链路层捕获IP 层捕获 方向 地址条件 高级捕获条件

在“Advance ”页面下,你可以编辑你的协议捕获条件,如图: 选择要捕捕获帧长错误帧是保存过滤获的协议 度条件 否捕获 规则条件 高级捕获条件编辑图 在协议选择树中你可以选择你需要捕获的协议条件,如果什么都不选,则表示忽略该条件,捕获所有协议。 在捕获帧长度条件下,你可以捕获,等于、小于、大于某个值的报文。 在错误帧是否捕获栏,你可以选择当网络上有如下错误时是否捕获。 在保存过滤规则条件按钮“Profiles ”,你可以将你当前设置的过滤规则,进行保存,在捕获主面板中,你可以选择你保存的捕获条件。 C :捕获报文的察看: Sniffer 软件提供了强大的分析能力和解码功能。如下图所示,对于捕获的报文提供了一个Expert 专家分析系统进行分析,还有解码选项及图形和表格的统计信息。 专家分析专家分析捕获报文的捕获报文的其他 系统 系统图形分析 统计信息 专家分析 专家分分析系统提供了一个只能的分析平台,对网络上的流量进行了一些分析对于分析出的

网络中数据传输过程的分析

网络中数据传输过程的分析 我们每天都在使用互联网,我们电脑上的数据是怎么样通过互联网传输到到另外的一台电脑上的呢?把自己的理解写一下,可能有很多细节还没有能的很清楚!希望在以后可以使之更加的完善!有不对的地方还请指正. 我们知道现在的互联网中使用的TCP/IP协议是基于,OSI(开放系统互联)的七层参考模型的,(虽然不是完全符合)从上到下分别为应用层表示层会话层传输层网络层数据链路层和物理层。其中数据链路层又可是分为两个子层分别为逻辑链路控制层(Logic Link Control,LLC )和介质访问控制层((Media Access Control,MAC )也就是平常说的MAC层。LLC对两个节点中的链路进行初始化,防止连接中断,保持可靠的通信。MAC层用来检验包含在每个桢中的地址信息。在下面会分析到。还要明白一点路由器是在网路层的,而网卡在数据链路层。 我们知道,ARP(Address Resolution Protocol,地址转换协议)被当作底层协议,用于IP地址到物理地址的转换。在以太网中,所有对IP的访问最终都转化为对网卡MAC地址的访问。如果主机A的ARP列表中,到主机B的IP地址与MAC地址对应不正确,由A发往B数据包就会发向错误的MAC地址,当然无法顺利到达B,结果是A与B根本不能进行通信。 首先我们分析一下在同一个网段的情况。假设有两台电脑分别命名为A和B,A需要相B发送数据的话,A主机首先把目标设备B的IP地址与自己的子网掩码进行“与”操作,以判断目标设备与自己是否位于同一网段内。如果目标设备在同一网段内,并且A没有获得与目标设备B的IP地址相对应的MAC地址信息,则源设备(A)以第二层广播的形式(目标MAC地址为全1)发送ARP请求报文,在ARP请求报文中包含了源设备(A)与目标设备(B)的IP地址。同一网段中的所有其他设备都可以收到并分析这个ARP请求报文,如果某设备发现报文中的目标IP地址与自己的IP地址相同,则它向源设备发回ARP响应报文,通过该报文使源设备获得目标设备的MAC地址信息。为了减少广播量,网络设备通过ARP表在缓存中保存IP与MAC地址的映射信息。在一次ARP 的请求与响应过程中,通信双方都把对方的MAC地址与IP地址的对应关系保存在各自的ARP表中,以在后续的通信中使用。ARP表使用老化机制,删除在一段时间内没有使用过的IP与MAC地址的映射关系。一个最基本的网络拓扑结构:

任务三计算机网络实验IP数据报捕获与分析

任务三计算机网络实验I P数据报捕获与 分析

任务三网络编程 一、实验目的 捕获本机网卡的IP包,对捕获的IP包进行解析。要求必须输出以下字段:版本号、总长度、标志位、片偏移、协议、源地址和目的地址。 二、实验环境 平台:Windows 编程环境:VC 6.0 语言:C++ 三、实验原理 3.1 数据报格式 以太帧由一个包含三个字段的帧头开始,前两个字段包含了物理地址,各六个字节,头部的第三个字段包含了 16 位的以太帧类型,帧头后面是数据区。根据帧类型可以判断是哪种数据包,一般常用的有 0X0080(IP 数据包)、0X0806(ARP 请求/应答)和 0X8035(RARP 请求/应答)三种类型。TCP/IP 协议簇中位于网络层的协议,也是最为核心的协议。所有的 TCP, UDP, ICMP 及 IGMP 数据都以 IP 数据报格式传输。IP 协议提供了无连接的、不可靠的数据传输服务。同时IP 协议的一个重要功能是为网络上的包传递提供路由支持。TCP/IP 协议使用 IP 数据报这个名字来指代一个互联网数据包。IP 数据报由两部分组成,前面的头部和后面的数据区,头部含有描述该数据报的信息,包括源 IP 地址和目的 IP 地址等。在 IP 数据报的报头中的众多信息可根据协议类型字段区分出该数据包的类型,常用的有TCP 包、 UDP 包、 ICMP 包等,各格式分别如下所示:

IP数据报格式 TCP数据报格式 ICMP数据报格式

UDP数据报格式 3.2 捕获数据包方法 目前常用的捕获数据包的方法有原始套接字、LibPcap、WinPcap和JPcap 等方法。本次实验选用套接字方法。套接字是网络应用编程接口。应用程序可以使用它进行网络通信而不需要知道底层发生的细节。有时需要自己生成一些定制的数据包或者功能并希望绕开Socket提供的功能,原始套接字(RawSocket)满足了这样的要求。原始套接字能够生成自己的数据报文,包括报头和数据报本身的内容。通过原始套接字,可以更加自如地控制Windows下的多种协议,而且能够对网络底层的传输机制进行控制。 网络数据包截获机制一般指通过截获整个网络的所有信息流,根据信息源主机,目标主机,服务协议端口等信息,简单过滤掉不关心的数据,再将用户感兴趣的数据发送给更高层的应用程序进行分析。一般数据包的传输路径依次为网卡、设备驱动层、数据链路层、 IP 层、传输层、最后到达应用程序。IP 数据包的捕获就是将经过数据链路层的以太网帧拷贝出一个备份,传送给 IP 数据包捕获程序进行相关的处理。 IP 数据包的捕获程序一般由数据包捕获函数库和数据包分析器组成。数据包捕获函数库是一个独立于操作系统的标准捕获函数库。主要提供一组可用于查找网络接口名称、打开选定的网络接口、初始化、设置包过滤条件、编译过滤代码、捕获数据包等功能函数。对捕获程序而言,只需要调用数据包捕获函数库的这些函数就能获得所期望的 IP 数据包。这种捕获程序与数据包捕获函数库分离的机制,使得编写的程序具有很好的可移植性。IP 数据包捕获程序的核心部分就是数据包分析器。数据包分析器应具有识别和理解各种协议格式

实验7.路由器基本功能实现程序

实验七路由器基本功能的设计和实现 序号:14姓名:邓博文学号:20131120014成绩指导教师:序号:11姓名:叶爽学号:20131120005成绩指导教师:序号:13姓名:徐润浩学号:20131120013成绩指导教师:序号:53姓名:王伟雄学号:20131170029成绩指导教师: 一、实验目的: (1) 实现静态路由表维护 (2) 实现IP数据包处理、处理IP数据包的TTL值、ARP请求与解析、重新计算IP数据包的头部校验值 (3) 熟悉生成和处理ICMP报文的方法 (4) 要求有良好的编程规范与注释信息,要求有详细的说明文档,包括程序的设计思想、活动图、关键问题以及解决方法。 二、实验环境: (1)VC6.0 (2)局域网能连接Internet。 三、程序设计的关键问题以及解决方法有哪些? 1、由于winpcap不提供获得本机MAC地址的方法,导致我们不知道怎样获得本机MAC地址。 解决方法:本程序采用发送ARP包的方式获得本机MAC,即首先发送目的IP 为本机的ARP请求包,再捕获ARP应答包即可获得本机的MAC地址。由函数unsigned char*GetSelfMac()实现,本函数负责获得本机的MAC地址,实现方法是给本机发送ARP请求数据帧,并解析本机的ARP应答数据帧,原理和获取其它主机MAC地址类似,唯一的区别是发送和接受在同一个线程中实现。2、如何更快高速的完成路由器的路由转发功能? 解决方法:建立两个全局的链表,即数据包的缓存列表SP和IP地址、MAC地址映射的缓存列表IP-MAC。数据包缓存列表SP用于存储需要转发但暂时没有下一跳MAC地址的IP数据包;缓存列表IP-MAC用于存储IP地址与MAC地址的映射关系。路由器得到需要转发的数据包后,可以首先在IP-MAC缓存列表查找下一跳的MAC地址,如果找到则转发该数据包,否则把数据包存入缓存队列SP中并向下一跳的MAC地址后再转发该数据包。

计算机网络-使用网络协议分析器捕捉和分析协议数据包

广州大学学生实验报告 开课学院及实验室:计算机科学与工程实验室2014年11月28日 学院计算机科学与 教育软件学院 年级/专 业/班 姓 名 学号 实验课 程名称 计算机网络实验成绩 实验项目名称使用网络协议分析器捕捉和分析协议数据包 指导 老师 熊伟 一、实验目的 (1)熟悉ethereal的使用 (2)验证各种协议数据包格式 (3)学会捕捉并分析各种数据包。 二、实验环境 1.MacBook Pro 2.Mac OS 10.10.1 3..Wireshark 三、实验内容 1.安装ethereal软件 2.捕捉数据包,验证数据帧、IP数据报、TCP数据段的报文格式。 3.捕捉并分析ARP报文。 4.捕捉ping过程中的ICMP报文,分析结果各参数的意义。 5.捕捉tracert过程中的ICMP报文,分析跟踪的路由器IP是哪个接口的。 6.捕捉并分析TCP三次握手建立连接的过程。 7.捕捉整个FTP工作工程的协议包 对协议包进行分析说明,依据不同阶段的协议分析,画出FTP工作过程的示意图 a.. 地址解析ARP协议执行过程 b. FTP控制连接建立过程 c . FTP 用户登录身份验证过程 d. FTP 数据连接建立过程 e. FTP数据传输过程 f. FTP连接释放过程(包括数据连接和控制连接) 8.捕捉及研究WWW应用的协议报文,回答以下问题: a. .当访问某个主页时,从应用层到网络层,用到了哪些协议? b. 对于用户请求的百度主页(https://www.360docs.net/doc/705565752.html,),客户端将接收到几个应答报文?具体是哪几个? 假设从本地主机到该页面的往返时间是RTT,那么从请求该主页开始到浏览器上出现完整页面, 一共经过多长时间? c. 两个存放在同一个服务器中的截然不同的Web页(例如,https://www.360docs.net/doc/705565752.html,/index.jsp,和 https://www.360docs.net/doc/705565752.html,/cn/research/index.jsp可以在同一个持久的连接上发送吗? d. 假定一个超链接从一个万维网文档链接到另一个万维网文档,由于万维网文档上出现了差错而 使超链接指向一个无效的计算机名,这时浏览器将向用户报告什么?

相关文档
最新文档