路由器可以对到来的数据报进行下三层的解封装和再封装(路由器转发数据包时,封装过程的规律是什么)

二层封装为什么需要了解二层封装呢? 因为在一个路由器转发数据包的时候,除了知道目的地怎么去(有路由),还需要二层的正确封装,否则就算有路由的话,也无法进行通信。这是卷一提到过的,虽然没有像协议卷一说得那么细,但是,它也说明了,必须获取数据链路层的信息才能正常进行封装,而这个二层的信息通常就是目的mac地址,而提供这个IP对应MAC的机制,就通过ARP来完成,并且通过缓存保存下来。而网络层,则是通过静态或者动态路由协议获取相关的信息,保存在路由表中,也叫路由选择信息库 RIB。这个拓扑主要介绍ARP和代理A

为什么您需要了解第2层封装?因为路由器在转发数据包时,除了要知道如何到达目的地(有路由),还需要第二层的正确封装,否则即使有路由也无法通信。

这一点在第一卷中有提到,虽然没有协议第一卷详细,但是也说明了必须获取数据链路层的信息才能正常封装,而这个第二层的信息通常是目的mac地址,提供这个对应MAC的IP的机制是由ARP完成,缓存保存。而网络层则通过静态或动态路由协议获取相关信息,并存储在路由表中,也称为路由信息库RIB。

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

证明第一个证明。如果在第二层中没有获得封装的信息,则数据包将不会被发送出去。根据这个图,配置了IP地址,右路由有一跳默认路由。此时,只需测试一个不存在的地址来检查数据包的发送。Telnet 12.1.1.3 R2,一个不存在的地址。

没反应是正常的,但是这个没反应。低是因为找不到第二层封装,还是应用层没反应?三层信息路由是没有问题的,因为是直连网段,所以以太网通信必须知道对方的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告知当前网络中的设备,整个网络的通信就会异常。

证据2第二个证据:路由器处于路由模式和主机模式时,数据包如何通信。

还是那个拓扑。关掉右边路由器的路由功能,没有ip路由,所以你能和1.1.1.1通信吗?

答案是:可以。

如果有效,就有效,那么它是如何起作用的呢?

显示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就是对应的目的主机。每次发送到这个目的地址,第2层都会封装这个目的MAC并发送出去。

2.有网关的时候:有网关的时候,只会问网关的MAC是什么。如果网关做出响应,那么无论网关是否知道如何到达该目的地址,PC或主机路由器都会发送该数据包。

可以证明:1。在没有网关的情况下,R1的代理arp是关闭的,默认是开启的,ARP缓存清除关闭接口,清除ARP。

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

2.将网关设置为2.2.2.2的R1接口,向其发送一个telnet会话,看看是否会发出TCP会话。如果出去了,证明之前说的是对的。无论网关知道目的地是否可达,PC或主机路由器都会发送它。

Telnet 2.2.2.2在此时启动。

telnet2.2.2.2,表示目的地不可达,或者网关和主机已关闭。

首先,路由器选择发送ARP请求的12.1.1.1(GW)的MAC地址是什么?R1响应这个ARP请求。TCP会话发出后,R1立即直接回复ICMP错误消息,主机不可达。

路由模式下的路由器:路由模式下的包转发不同于主机模式下的包转发。在主机模式下,无论是否设置了网关,都会发送arp请求。但是,在路由模式下,首先检查路由表,如果路由表中没有这样的路由,则什么也不做。

可以看出,由于路由表中没有到2.2.2.2的路由信息,所以没有采取任何措施,甚至没有发送ARP。

证明3第三个证明:不同网段的两台主机可以通信吗?在设置GW的情况下,肯定是不可能的,但在某些情况下是可能的,就是两台主机都不设置IP,都有代理ARP功能。

注意:R1和R2是关闭了路由功能的路由器,接口打开了代理ARP功能。IP地址和映射

从R1找到2.2.2.2,然后拿到R1的包裹进行分析。

没错。R1和R2可以交流。仔细查看数据包捕获的内容。首先,R1发送了一个arp查询,{ 2.2.2.2怎么样?告诉1.1.1.1}一个询问2.2.2.2的MAC请求包被发出。因为R2和R1是直连的(链接),R2收到了这个ARP请求,而R2已经开启了代理ARP功能,也就是说只要R2知道怎么去2.2.2.2,就会响应这个ARP请求(这里显然是它自己)。因此,第二个投诉是arp {2.2.2.2在C0: 01: 05: 04: 00: 00}的回复。此时R1有R2的mac地址映射,所以它发送了一个数据包,也就是icmp的echo。这时,R2收到了数据包,需要对其进行响应。然而,它不知道对方的MAC是什么,然后它还发送了一个ARP请求来询问1.1.1.1。随后,通讯正常。注意:如果是正常的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信息请求网关。

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

如有疑问或文中有错误或遗漏,欢迎留言指出,博主们一看到就会修改。谢谢你的支持。更多技术文章在网路博客,版权归网路博客所有。原创不易,侵权必究。如果觉得有帮助,请注意转发。谢谢你。

以前的审查

下一项研究

TCPIP第1卷(2):双层封装——PPP和FR