array(2) { ["docs"]=> array(10) { [0]=> array(10) { ["id"]=> string(3) "428" ["text"]=> string(77) "Visual Studio 2017 单独启动MSDN帮助(Microsoft Help Viewer)的方法" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(8) "DonetRen" ["tagsname"]=> string(55) "Visual Studio 2017|MSDN帮助|C#程序|.NET|Help Viewer" ["tagsid"]=> string(23) "[401,402,403,"300",404]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400964" ["_id"]=> string(3) "428" } [1]=> array(10) { ["id"]=> string(3) "427" ["text"]=> string(42) "npm -v;报错 cannot find module "wrapp"" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "zzty" ["tagsname"]=> string(50) "node.js|npm|cannot find module "wrapp“|node" ["tagsid"]=> string(19) "[398,"239",399,400]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400760" ["_id"]=> string(3) "427" } [2]=> array(10) { ["id"]=> string(3) "426" ["text"]=> string(54) "说说css中pt、px、em、rem都扮演了什么角色" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(12) "zhengqiaoyin" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400640" ["_id"]=> string(3) "426" } [3]=> array(10) { ["id"]=> string(3) "425" ["text"]=> string(83) "深入学习JS执行--创建执行上下文(变量对象,作用域链,this)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "Ry-yuan" ["tagsname"]=> string(33) "Javascript|Javascript执行过程" ["tagsid"]=> string(13) "["169","191"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511399901" ["_id"]=> string(3) "425" } [4]=> array(10) { ["id"]=> string(3) "424" ["text"]=> string(30) "C# 排序技术研究与对比" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "vveiliang" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(8) ".Net Dev" ["catesid"]=> string(5) "[199]" ["createtime"]=> string(10) "1511399150" ["_id"]=> string(3) "424" } [5]=> array(10) { ["id"]=> string(3) "423" ["text"]=> string(72) "【算法】小白的算法笔记:快速排序算法的编码和优化" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "penghuwan" ["tagsname"]=> string(6) "算法" ["tagsid"]=> string(7) "["344"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511398109" ["_id"]=> string(3) "423" } [6]=> array(10) { ["id"]=> string(3) "422" ["text"]=> string(64) "JavaScript数据可视化编程学习(二)Flotr2,雷达图" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "chengxs" ["tagsname"]=> string(28) "数据可视化|前端学习" ["tagsid"]=> string(9) "[396,397]" ["catesname"]=> string(18) "前端基本知识" ["catesid"]=> string(5) "[198]" ["createtime"]=> string(10) "1511397800" ["_id"]=> string(3) "422" } [7]=> array(10) { ["id"]=> string(3) "421" ["text"]=> string(36) "C#表达式目录树(Expression)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "wwym" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(4) ".NET" ["catesid"]=> string(7) "["119"]" ["createtime"]=> string(10) "1511397474" ["_id"]=> string(3) "421" } [8]=> array(10) { ["id"]=> string(3) "420" ["text"]=> string(47) "数据结构 队列_队列实例:事件处理" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "idreamo" ["tagsname"]=> string(40) "C语言|数据结构|队列|事件处理" ["tagsid"]=> string(23) "["246","247","248",395]" ["catesname"]=> string(12) "数据结构" ["catesid"]=> string(7) "["133"]" ["createtime"]=> string(10) "1511397279" ["_id"]=> string(3) "420" } [9]=> array(10) { ["id"]=> string(3) "419" ["text"]=> string(47) "久等了,博客园官方Android客户端发布" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(3) "cmt" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511396549" ["_id"]=> string(3) "419" } } ["count"]=> int(200) } 222 分析ARP及IP协议(计算机网络) - 爱码网

1、用PacketTracer(5.3或以上版本)打开文件31_ARP&IP_Testing.pkt.pkt。注意:Router1的Eth1/0的MTU=1420Byte,其余均为1500Byte。

2、分析ARP的工作原理。

(1)在Realtime模式下,尽量清除所有设备(PC机及路由器)中的ARP缓存信息,对于不能清除(有些路由器中的ARP缓存信息不能清除)的记录下相关缓存信息。

分析ARP及IP协议(计算机网络)

注:PC机中查看ARP缓存的命令为arp –a,清除ARP缓存的命令为arp–d。

路由器中查看ARP缓存的命令为Router#showarp,清除的命令为Router#clear arp-cache。

(2)在simulation模式下,由PC(1.10)向PC(1.20)发送一个Ping包,观察包(ICMP及ARP)的传递过程,同时注意相关PC机、路由器的ARP缓存变化情况,记录下相关信息,并对其中的ARP包进行协议格式分析。注意:在Filter中同时选中ICMP及ARP。

分析ARP及IP协议(计算机网络)

路由器的第一条ARP地址格式,正是PC1.11的默认网关的地址。

(3)重复(2)一次,观察结果有何不同,分析原因。

第二次发送数据包的时候,数据包到达交换机后,直接到达PC1.20,并不会传送到路由器了。

(4)在simulation模式下,由PC(1.10)向PC(3.11)发送一个Ping包,观察包的传递过程,同时注意相关PC机、路由器的ARP缓存变化情况,记录下相关信息,并对其中的ARP包进行协议格式分析。

数据包第一次返回PC1.10,并没有传送到PC3.11,PC机1.10的ARP增加了一条记录:

PC(1.10)的ARP表

分析ARP及IP协议(计算机网络)

PC(3.11)的ARP表

分析ARP及IP协议(计算机网络)

分析ARP及IP协议(计算机网络)

 

(5)重复(4)一次,观察结果有何不同,分析原因。

数据包能够直接通过路由器,到达交换机1,并且直接到达PC机3.11。

(6)试分析此时,由PC(1.20)向PC(12.12)发送一个Ping包的处理过程,并验证之。

数据包从PC1.20发送出去后,到达路由器1,直接返回到PC1.20。此时PC机1.20的ARP中保存了它的默认网关地址

再次点击数据包的发送,这时数据包能够直接通过路由器R1,并且到达路由器R2,此时数据包又从R2返回来:

(7)总结ARP工作机器,包括什么时候启动ARP、APR高速缓存更新机制、ARP数据包协议格式,

总结:PC主机中都有自己的ARP缓冲区,用来表示IP地址和MAC地址的对应关系,当主机发送数据包到目的主机时,就启动ARP协议,它首先会查看自己的ARP列表中是否有目的主机的ARP对应的IP地址,如果有,就直接将数据包发送出去;如果没有,就向它所在的网段发起一个ARP请求的广播包,查询能够到达该目的主机的对应的MAC地址。

ARP更新机制:主机发送数据包后,此网段的主机就会检查数据包中的目的IP地址是否和自己的IP地址一致,如果不相同就忽略此数据包,如果相同,则该主机就把源主机的MAC地址和IP地址添加到自己的ARP列表中;如果ARP列表中已经存在该IP地址,就直接覆盖,以完成ARP的更新。

ARP数据包协议格式:路由器的ARP列表中包括三个信息:一个是主机的IP地址,一个是主机所在的物理地址,另一个是接口名称。IP地址包括源主机的IP地址和主机的默认网关,还包括该主机所在的网段。

 

3、IP协议格式分析:在simulation模式下,由PC(1.10)向PC(3.11)发送一个Ping包(开始几次有可能失败,试分析原因),从其中随机取几个包,分析该包的MAC首部及IP首部信息,特别注意该包进入该设备及离开该设备时相关信息的变化情况。注意:在Filter中仅选中ICMP或者仅选中IP。

 数据包第一此传送时 的确会失败  是因为刚开始建立的链接并不稳定

以下窗口是点击相对应的设备分析ARP及IP协议(计算机网络) Info就会出现  8~14 14~18 是MAC地址   SRC IP  DST IP   分别表示为源地址和目的地址

比较两图可以知道  传送数据包过程中源地址和目的地址并没有发生改变  只有MAC地址再改变,因为经过的设备不一样

4.IP分段机制分析。

(1)在Realtime模式下,由PC(1.10)向PC(12.12)发送一个Ping包。(试分析此步骤的作用)

 分析ARP及IP协议(计算机网络)

(2)在simulation模式下,由PC(1.10)向PC(12.12)发送一个自定义Ping包(长度为2000字节),跟踪数据包的流动情况,特别注意:该包在PC(1.10)出来时是否进行了分段,该包在Router1出来时是否进行了分段,该包在Router2出来时是否进行了重组,该包到达PC(12.12)后是否进行了重组,回复的Ping命令包是否在PC(12.12)处进行了分段,回复的Ping命令包是否在Router2出来时进行了分段。在每一处发生了分段的地方,观察包中与分段有关的几个字段的信息(数据包长度、标识号、标志、偏移值),并记录下必要的信息。

点击  这是自定义PING包  然后设置信息

数据包在PC(1.10)出来分成了两段

第一段  TL为1500

第二段 TL为548

数据包到达R1时也分段了

TL变成了100

  

四、实验后应能回答的问题

1.关于ARP协议:

(1)ARP请求数据包内容是什么,ARP应答数据包内容是什么?

请求内容是主机的IP地址和物理地址,以及目的主机的IP地址和物理地址;应答内容是:将网络层地址解析为数据链路层的mac地址,并且把经过的ARP地址记录下来。

 

(2)ARP协议的工作方式是怎样的?比如:谁发出ARP请求,谁回复ARP应答。

当主机发送数据包时,就启用ARP协议,如果目的主机在同一网段,则可以直接通信;如果不在同一网段,则不能直接通信,需要保存一条能够通往目的主机的MAC地址。在同一网段的主机,如果数据包的目的地址不是它,则它会显示拒绝接收数据包的错误请求。

(3)什么时候会调用ARP?调用ARP时是希望获取谁的MAC地址?比如:在不考虑高速缓存影响的情况下,PC(1.10)访问PC(1.30)时,会调用ARP吗,若调用ARP是用来获得谁的MAC地址;PC(1.10)访问PC(3.22)呢;PC(1.10)访问PC(12.12)呢。

当源主机发送数据包请求时,就启用了ARP协议;希望获取的是目的主机的MAC地址;PC机1.10访问PC机1.30时,会调用ARP,它希望来获取PC机1.30的MAC地址。其它的访问依然如此。

2.关于ARP高速缓存:

(1)ARP高速缓存中每条记录包含哪些信息?

包含了源主机的IP地址,源主机所在的网段,源主机的默认网关,目的主机的IP地址,以及目的主机所在的网段和默认网关。

(2)什么时候会向ARP高速缓存中添加记录,添加的记录是什么?

主机发送数据包后,此网段的主机就会检查数据包中的目的IP地址是否和自己的IP地址一致,如果不相同就忽略此数据包,如果相同,则该主机就把源主机的MAC地址和IP地址添加到自己的ARP列表中;如果ARP列表中已经存在该IP地址,就直接覆盖,以完成ARP的更新。

(3)ARP高速缓存可以起到什么样的作用,是如何起作用的?

PC主机中都有自己的ARP缓冲区,用来表示IP地址和MAC地址的对应关系,当主机发送数据包到目的主机时,就启动ARP协议,它首先会查看自己的ARP列表中是否有目的主机的ARP对应的IP地址,如果有,就直接将数据包发送出去;如果没有,就向它所在的网段发起一个ARP请求的广播包,查询能够到达该目的主机的对应的MAC地址。

 

3.关于IP协议:

(1)IP数据包中MAC首部及IP首部的格式是怎样的,相关信息是如何获得的?

MAC首部格式是:000n(n代表不同数字),IP首部是占4位,可表示的最大十进制数值是15。主要是通过主机所在的局域网决定的。

(2)若PC(1.10)用IP包传输信息到PC(12.12),整个过程中MAC首部及IP首部中哪些信息会发生变化,是如何发生变化的?

从PC机1.10发送到PC12.12过程中,MAC首部不断发生变化,因为数据包要经过不同的网络设备,而每个网络设备的物理地址都是不相同的。IP首部不会发生变化,因为数据包的IP地址就是PC机12.12的IP地址。

4.关于IP分片与重组:

(1)什么条件下,在什么地方会发生IP分片?比如:当PC(1.10)向PC(12.12)发送一个长度为2000字节(包括IP首部,但不包括MAC首部)时,在哪些地方会发生分片;若是PC(12.12)向PC(1.10)发送数据呢。

数据链路层具有最大传输单元MTU这个特性,它限制了数据帧的最大长度,如果IP层有数据包要传送,而且数据包的长度超过了MTU,那么IP层就要对数据包进行分片,是每一个片的长度都小于或者等于MTU;分片后的IP数据包,只有到达目的主机才进行重新组装。

 

(2)一个IP数据包如何进行分片?比如:分片时哪些信息会被继承,哪些信息会发生改变;如何识别同一个IP数据包的多个分片;如何对同一个IP数据包的多个分片进行排序。

对于发送端发送的每份IP数据包来说,其标识符字段都包含一个唯一值,该值在数据包分片时被复制到每个片中。除了最后一片外,其他每个组数据包的片都要把该片的自己置为1。分片时,除最后一片外,其它每一片中的数据部分,必须是8字节的整数倍。


相关文章: