169v 条目不存在_通过问题看本质-PPP中你不知道的那些事儿

PPP(point-to-point protocol)协议是一种点到点的链路层协议,主要用于全双工的同异步链路上进行点对点的数据传输。

我们主要针对一下两个问题来对PPP的基本原理进行解析:

为什么PPP链路两端的ip地址不在一个网段可以实现互通?

PPP中会出现三层环路么?如何产生的?如何避免?

第一个问题,关于PPP链路两端的ip地址不在一个网段可以实现互通的问题:

首先,能够互通这是毋庸置疑的,那么为什么可以实现互通呢,我们通过一个小实验来进行分析

0b11b42d49187b027045b18281754a04.png

实验拓扑

如图,AR1和AR2的ip地址规划如图所示,链路类型为PPP。

570dc912e98ccca79dd64dd8de57b26e.png

AR1

befacd071596dc0f8e4812395f0e7e7a.png

AR2

通常,对于以太网链路,双方需要通信,需要知道对方的ip地址所对应的接口的mac地址,也就是我们常说的ARP表项;满足了这个条件以后,还需要有到达对方ip网段的路由条目。主要涉及两个方面,也就是数据链路层和网络层的通信。

但是对于PPP链路,不需要获得对方ip地址所对应的接口的mac地址,也就是说在本地不需要有对方的ARP表项,因为PPP本身就是一个链路层协议,对于PPP的链路,双方只要在一条链路上,就可以满足底层通信的条件。

其次是路由层面,对于路由条目来说,PPP可以通过自身的IPCP协议进行ip地址自协商,双方通过IPCP协议中的报文进行交互,以此得知彼此接口的ip地址,并在本地生成关于对方接口ip地址的主机路由(掩码/32))条目,那么这个时候满足了路由的层面。

当有去往对端的数据,查询本地路由表,然后将数据发到PPP链路上,对端收到数据也是按照自己本地的路由表中的路由条目进行回包,此时双方就完成了通信。

067a5579b8a422644fc241c801afc2c1.png

AR1

5d6d41f6d7fff69e6446a2b2be444b29.png

AR2

那么在这过程中,双方是通过怎样的机制知道彼此接口的ip地址并且生成主机路由的呢?留意可以发现,上文中我们有提到"IPCP”这个词,那么到底什么是IPCP呢?双方又是通过怎么的机制确定彼此的呢?

IPCP--ip control protocol是NCP(network control protocol)中的一个协议,其中除IPCP外,还包括MPLSCP等,IPCP主要负责的就是ip地址的协商。

IPCP的协商报文主要有:configure requset、configure-ack、configure-nak,在静态协商ip地址(可以理解为手动配置ip地址)的过程中只会交互两种报文类型,那就是configure-requst和configure-ack报文。

358d34dc2a25dfc56fee0b832bdb7a1d.png
f283e24f33791ab07e363206f28f7fd4.png

AR1

7e388a65dc8076e96e47d0e09454203e.png

AR2

configure-requst报文中包含了自己接口配置的ip地址,当对方收到以后,如果确定对端地址和自身接口ip地址不冲突,也就意味着同意对端使用该ip地址,此时会发送configure-ack报文予以确认。

a2ff9e7cb96d6adb57ef0140af63efe2.png

AR1

99d52a15efdd66042f9cf83c009ae0fa.png

AR2

此时NCP协商成功,接下来双方可以建立正常的通信。因此,即使双方接口ip地址不在一个网段,也是可以完成通信的,在PPP链路中,不使用ARP协议进行地址的解析,取而代之的是IPCP协议来协商网络层的参数,也就意味着,在PPP的链路中,双方是不检查接口是否在同一网段,掩码是否一致的,只要双方地址不冲突,就可以建立正常的通信。

那么对于PPP中会出现三层环路么?如果会,又该如何避免呢?

还是一个小实验来看一下,如图规划ip地址,AR1和AR2配置同网段接口ip地址。

b0b88a98ae1d1995ce0cc1edd0c5011d.png

实验拓扑

当AR1去pingAR2的时候,会发现

47dc859281745bd1b99e697e74e32ad6.png

AR1

9641db6b1777c99fc532db80507797f3.png

AR2

0ab286ec871ad02d5b118338e62a4ea0.png

可以正常通信,但是当我们用tracert去测试一个属于这个网段但是并没有在这个网络中出现的ip地址(比如1.1.1.3)的时候会发现环路的产生。

8eccce79748ee4bc88f6383fa0811548.png

导致这个问题的原因是当配置/24位掩码的时候,双方除了在本地生成一条对端接口ip地址的主机路由外还会额外的生成一条/24的路由条目:

3413f38318894b8d191b3cf4ccb803d0.png

AR1

d6e59d77c7e0315ca2c86447b759a6e5.png

AR2

当去tracert一个不存在的ip地址的时候,双方由于在本地有这样的一条路由条目就会将数据发送到PPP的链路上,从而导致了路由环路,虽然TTL可以搞定,但是这也是我们不愿意看到的情况,那么这种情况下怎么处理呢?

接口配置/30位的掩码就可很好的解决这个问题,配置/30位的掩码在可以解决路由环路的同时还可以节省ip地址。

以上就是本章的内容,需要特别注意的是,上面没有提到在NCP前还有一个LCP的PPP链路的协商过程,由于本章内容主要是围绕着以上两个问题做解释,因此不涉及其他内容,谢谢!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值