二层封装

为什么需要了解二层封装呢? 因为在一个路由器转发数据包的时候,除了知道目的地怎么去(有路由),还需要二层的正确封装,否则就算有路由的话,也无法进行通信。


这是卷一提到过的,虽然没有像协议卷一说得那么细,但是,它也说明了,必须获取数据链路层的信息才能正常进行封装,而这个二层的信息通常就是目的mac地址,而提供这个IP对应MAC的机制,就通过ARP来完成,并且通过缓存保存下来。而网络层,则是通过静态或者动态路由协议获取相关的信息,保存在路由表中,也叫路由选择信息库 RIB。


这个拓扑主要介绍ARP和代理ARP在以太网类型中起一个什么作用。IP地址信息如图上所示

证明一

第一个证明,二层如果没有获取到封装的信息,则数据包都不会发送出去。
根据这个图就配置了IP地址,右边路由有一跳缺省路由,这时候随便测试一个不存在的地址,查看数据包发送的情况。
在R2上telnet 12.1.1.3,一个不存在的地址 。


没有响应是正常的,但是这个没响应,到低是因为找不到二层的封装,还是应用层没有响应呢。 三层信息路由是没有问题的,因为是直连网段,,那么以太网通信,必须知道对方的MAC地址,而默认情况下,是不知道的,那么就需要一个机制来进行查询,就是ARP了。


发送了三个ARP查询,而网络中没有人进行响应,所以,二层无法得到封装(没有获取12.1.1.3的MAC地址)则通信失败。

这时候,我们做一个静态ARP绑定,然后在进行telnet,MAC地址可以随意定义。


其中1.1.1就是表示MAC 0001.0001.0001 可以省略写的。



发现了什么? 因为MAC地址有了封装(就是手工绑定的),它直接发送TCP连接给12.1.1.3了,发送了4个SYN的包,因为对方没有响应SYN+ACK,所以这个TCP会话没有继续进行下去。

结论: 无论在一个相同网段,还是不同网段的情况下,如果二层的介质是以太网,那么就必须获取对方的MAC地址信息,相同网段则是目的地址的MAC地址,不同网段则是路由表中的下一跳 ,一种特殊情况下,就是启用了代理arp的话,那么也是目的地址,但是MAC则是下一跳。 这也是在当前IPV4的网络中,ARP是一个非常不安全的协议,因为很容易就实现攻击了,只要网关的MAC被攻击者以错误的MAC告诉当前网络的设备,那么整个网络就通信不正常了。

证明二

第二个证明:路由器在路由模式和主机模式下,数据包是怎么通信的。


还是这个拓扑,在右边路由器上关闭路由功能,no ip routing,那么能与 1.1.1.1通信么?

答案是:可以的。

通了是通了,那么它是怎么通的呢

在show arp后,发现除了有12.1.1.1的MAC地址信息(之前ping过了),还有1.1.1.1对应的MAC信息,另外一个重要的信息就是12.1.1.1和1.1.1.1的MAC地址信息都是关于12.1.1.1的,这是为什么? 这就是所谓的代理ARP和主机模式工作的工程。

主机模式工作:

1、无网关情况下:当没有网关的情况下,它会对当前网络进行ARP查询,询问访问的目的地址的MAC地址信息,如果这个时候,网关知道怎么去这个目的地址,并且开启了代理ARP的功能,那么就会回应这个ARP响应,那么回应的内容就是这个目的地址的MAC地址是自己,这对于PC或者主机路由器来说是不知道的,它就认为这个MAC是对应目的主机,每次发送去往这个目的地址的时候,二层就封装这个目的MAC,然后发送出去。

2、有网关的情况下:当有网关的情况下,它只会询问网关的MAC是多少,如果网关响应了后,那么PC或主机路由器,就会把这个数据包发送出去,它不管网关是否知道怎么去往这个目的地址不。

可以进行证明:1、在没有网关的情况下,把R1的代理ARP给关闭了,默认是打开的,并且把ARP 缓存清掉 shutdown接口,clear arp


不通,因为R1的接口已经关闭了代理ARP了,所以不不会去响应这个ARP的Request。

2、设置网关为R1的接口,并且发送一个去往2.2.2.2的telnet的会话,看TCP会话是否会发出去,如果出去了,就证明之前说的是对的,不管网关是否知道目的地可达,PC或主机路由器都会发送。


这时候开始telnet 2.2.2.2


telnet2.2.2.2 ,提示目的不可达,或者网关和主机是downde


首选,路由器发送ARP的Request选为12.1.1.1(GW)的MAC地址是多少。R1响应这个ARP的请求。紧接着一个TCP会话发送出去,R1直接回复一个ICMP的差错报文,主机不可达。

路由模式下的路由器:

路由模式的数据包转发,不跟主机模式一样,主机模式是只要设置了网关或者没设置都会发送arp请求,但是,路由模式的话,先查看路由表,如果路由表中没有该路由,则不做任何动作。




可以看出,因为路由表没有去往2.2.2.2的路由信息,所以不采取任何动作,连ARP都没有发送。

证明三

第三个证明:两个不同网段的主机,能否进行通信?
在设置有GW的情况下,肯定是不可能的,但是,在某种情况下,它却成为可能,那就是两个主机都不设置IP,并且有代理ARP功能。


说明:R1和R2都是关闭了路由功能的路由器,并且接口开启了代理ARP功能。IP地址与图

从R1开始ping 2.2.2.2,并且抓取R1的数据包进行分析。


没看错,R1与R2可以通信了,仔细看抓包的内容,首先R1发送一个arp的查询,{how has 2.2.2.2? tell 1.1.1.1}一个询问2.2.2.2的MAC Request包就发送出去了,因为R2与R1是直连(链路),所以,R2收到了这个ARP 的Request,而且R2是开启了代理ARP功能的,也就是说只要R2知道2.2.2.2怎么去,就会响应这个ARP的请求(这里明显就是自己),所以第二个诉举报就是arp的reply{2.2.2.2 is at c0:01:05:04:00:00},那么这时候R1就有R2的mac地址映射了,所以就发送了数据包出去,也就是icmp的echo,这时候R2收到,需要回应这个数据包,但是,它并不知道对方的MAC是什么,紧接着也发送了一个ARP的请求过去,询问1.1.1.1的MAC,然后,R1回复这个ARP请求。后续,通信就正常了。
注意:如果是正常的ARP询问,那么只要一方放送ARP请求,另外一份响应的时候,还会把请求方的ARP的信息缓存起来。并且在主机模式下的路由器是不能关闭代理ARP的,就算接口下关闭了,也一样会响应请求。

其实,不只有代理ARP能实现这个需求,比如在PC的情况下,因为PC没有代理ARP机制,所以,可以直接把1.1.1.1的网关设置为2.2.2.2,2.2.2.2的网关为1.1.1.1,它一样能通信,因为它会发送ARP信息来请求网关。

注意:并不是所有的操作系统都是能执行的,有些是禁止的,之所有说明这个案例,主要是说明ARP在MAC和IP对应时候的作用,已经二层封装。

如果大家有任何疑问或者文中有错误跟疏忽的地方,欢迎大家留言指出,博主看到后会第一时间修改,谢谢大家的支持,更多技术文章尽在网络之路Blog(其他平台同名),版权归网络之路Blog所有,原创不易,侵权必究,觉得有帮助的,关注、转发、点赞支持下!~。

TCPIP卷一(1):二层封装与路由器转发数据过程相关推荐

  1. 交换机与路由器技术:远程管理交换机和路由器工作原理、路由器转发数据包的封装过程

    目录 一.通过远程管理方式连接交换机 1.teInet是应用层协议基于传输层TCP,默认端口号:23 2.ssh是应用层协议基于传输层TCP默认端口号:22 3.思路 3.1.telnet 3.2.s ...

  2. 路由器转发数据包的封装过程

    ** 原理: ** 1.当一个高层的数据包到达传输层,由于telnet使用TCP协议,传输层将上层传过来的数据不变在封装TCP的包头以便目标主机可以正确解包,继续向下层(网络层)传递. 2.网络层同样 ...

  3. 计算机网络学习--交换机和路由器转发数据原理

    转自知乎: 作者:网工Fox 链接:https://www.zhihu.com/question/20099434/answer/1861866418 来源:知乎 著作权归作者所有.商业转载请联系作者 ...

  4. TCPIP卷一(2):二层封装之–PPP与FR

    说明 之前介绍了以太网二层封装在TCP/IP协议里面工作的过程,其实除了EtherⅡ的封装以外,二层封装还有PPP.FR等许多协议,这里注意介绍两个常用到的,PPP和FR,FR其实在实际中用的并不多了 ...

  5. 路由器的工作原理,形成,转发数据包的过程

    一.路由器的工作原理 二.路由表的形成 三.静态路由和默认路由 四.路由器转发数据包的封装过程 五.静态路由和默认路由的配置 概述: 在只有一个网段的网络中,包可以很容易地从源主机到达目标主机,但是如 ...

  6. 路由器转发IP包的过程

    IP数据包到路由器之后,它首先要读去IP包头的目标IP地址,然后查看路由表,根据路由协议算法,确定一条最佳的路径,为什么要这样做呢,那是因为要确定这个数据包应该从路由器上的那个接口上转发出去,很明显路 ...

  7. 路由器转发规则【转】

    (转自:https://blog.51cto.com/echo1937/1281746) 源主机在发起通信之前,将Self IP与目的主机的IP进行比较,如果两者位于同一网段(用子网掩码计算后具有相同 ...

  8. 网络设备转发数据包的整个流程_网络工程师(33):路由转发工作原理

    网络中各种网络设备对业务数据的转发主要有二层转发和三层转发.二层转发主要由交换机在同一个VLAN内实现,其转发依据是MAC地址表.如果MAC地址表中存在目的MAC地址表项,就从对应接口发出去,否则会从 ...

  9. 二层交换机 不在同一子网_从二层交换机来说为什么三层交换机比路由器转发速率快...

    我们都知道二层交换机工作的数据链路层,依靠mac地址来进行数据通信的,而路由器是工作在网络层,依靠ip地址来通信的,为了说明三层交换机比路由器的转发速率快,那我们还是先从二层交换机入手. 首先我们来比 ...

最新文章

  1. 每日一皮:CPU的新用途,要不要试试?
  2. html5中高德、腾讯、百度 地图api调起手机app
  3. HDU-2829 Lawrence (DP+四边形不等式优化)
  4. Java8-本地缓存
  5. 三年白干!程序员因违反《竞业协议》赔偿腾讯97.6万元,返还15.8万元
  6. QTextEdit显示中文乱码解决,中文GB2312转Unicode,QString、QByteArray 转换,16进制显示,toUtf8与toLocal8Bit区别
  7. java web 中的servlet讲解
  8. 备案号链接工信部_网站主页底部网站备案号的悬挂和链接的工作通知
  9. 为什么时间是60进制的啊? ? ?
  10. Atitit 网络存储协议 远程存储协议 目录 1. Email类 1 1.1. Eas Exchange Activesync介绍 1 1.2. Imap pop3 1 2. 网盘类远程存储web
  11. matlab里面计算相关系系数的显著性,数学建模笔记——相关系数
  12. [源码和文档分享]基于QT的英文文献的编辑与检索系统的实现
  13. 详解Win10家庭版/专业版/企业版功能区别
  14. android视图工具栏,Android studio预览视图工具栏不见了
  15. c++ stl list实现简单的学生信息管理系统
  16. Python CF入门实验
  17. 简单实现可拖拽的div
  18. 博图V15,V16,单部六层电梯控制SCL实现, 方便适配多部电梯,带注释。
  19. 听说没,原来Python抢京东的飞天茅台作者没更新,现在又来了一个Go语言版本的
  20. spring security 方法安全表达式 使用参数 调用bean 自定义校验方法

热门文章

  1. 机器学习之基本算法总结
  2. org.opensaml.common.SAMLException: Response issue time is either too old or with date in the future
  3. 苹果台式机_韩媒曝苹果台式机将首次采用京东方LCD
  4. android仿地铁行进线路图
  5. educoderpython入门之元组与字典_python元组与字典
  6. 《痞子衡嵌入式半月刊》 第 61 期
  7. CSS学习中|插入图片和背景图片区别
  8. 设置VS2015 的背景图片边写代码边看美女
  9. 线上图书租赁绘本馆多门店支持手机端管理后台
  10. 博途PLC 1200/1500PLC轴控功能块Servo_Axis(PN总线轴)