前文我们了解了地址转换技术NAT相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15168042.html;今天我们来聊一聊广域网中的两个二层封装协议HDLC和PPP协议;

  什么是广域网?广域网(Wide Area Network),简称WAN;是一种跨越大的、地域性的计算机网络的集合。通常跨越省、市,甚至一个国家。广域网中经常会使用串行链路来提供远距离的数据传输;HDLC(High-Level Data Link Control)高级数据链路控制协议和PPP(Point to Point Protocol)点对点协议是两种典型的串口封装协议;在前边的博文中我们提到过,串口链路和以太网链路最根本的区别就在于二层的封装不同;以太网二层封装是需要封装源mac和目标mac,而串口链路不需要;对于二层以上的封装两者没有太大区别;

  HDLC协议应用

  提示:HDLC是一种面向比特的链路层协议;HDLC传输的信息单位为帧,是面向比特的同步数据控制协议的典型;

  HDLC的配置

  实验:如下拓扑,配置R1和R2使用HDLC封装传输数据

  配置R1

sys
sys R1
int s4/0/0
link-proto hdlc
y
ip add 1.0.0.1 24
d th

  配置R2

sys
sys R2
int s4/0/0
link-proto hdlc
y
ip add 1.0.0.2 24
d th

  提示:默认华为的设备串口都是ppp封装,我们只需要在对应的串口接口模式下使用link-protocol hdlc命令来更改接口的封装为hdlc即可。这里需要注意一点,通信双方的协议必须相同,双方才可以正常通信;

  HDLC接口地址借用

  什么是地址借用呢?我们知道在路由器上一个接口如果没有ip地址就无法自动生成直连路由,也就无法转发报文;ip地址借用是指允许一个没有IP地址的接口从其他接口借用ip地址。这样一来可以避免一个接口独占ip地址,节约ip地址资源;一般建议使用回环接口的ip地址,因为回环接口总是处于up状态,从而能稳定的提供可用的ip地址;

  配置上述拓扑,串口ip地址借用lo1接口ip地址

  在R1上删除原有接口的ip地址,在lo1上配置ip地址

  在R2上删除原有接口的ip地址,在lo1上配置ip地址

  配置R1的s4/0/0接口借用lo1接口的地址

  配置R1的s4/0/0接口借用lo1接口的地址

  提示:可以看到在对应串口接口下使用ip address unnumbered interface loopback 1命令就可以将lo1上的地址配置在对应的串口接口下;

  验证:R1和R2可以正常通信吗?

  提示:可以看到虽然地址都配置上了,但是无法正常通信;

  查看路由

  提示:可以看到对应路由的出接口是lo1并不是对应的串口,对于R2的路由也是一样的;所以导致R1pingR2(或者R2pingR1)时数据包是发送不出去;解决办法,添加静态路由,指定对应的出接口为串口s4/0/0接口;

  在R1上添加静态路由

  在R2上添加静态路由

  提示:这里需要注意,如果回环接口不是32位掩码,这里添加静态路由要添加明细路由,其原因是明细路由会最优先匹配上;如果是网段路由,对应静态路由的优先级没有直连路由的优先级高,所以在对应路由表中,直连路由优先;如果回环接口是32位掩码,这里配置网段路由和明细路由都可以;总之添加了静态路由以后,在路由表中对应路由的出接口是对应的串口即可;

  验证:现在R1和R2是否能够正常ping通呢?

  提示:可以看到现在R1pingR2就能正常ping通;说明我们配置的静态路由生效;

  PPP协议应用

  提示:PPP协议是一种点到点链路层协议,主要用于在全双工的同步或异步链路上进行点到点的数据传输;

  HDLC和PPP协议对比

  PPP协议特点

  1、PPP既支持铜鼓传输有支持异步传输,而x.25、FR等数据链路层协议仅支持同步传输,SLIP仅支持异步传输;

  2、PPP协议具有很好的扩展性,例如当需要以太网链路层在ppp协议是,ppp可以扩展为PPPoE;

  3、PPP提供了LCP(link control protocol)协议,用于各种链路层参数协商;

  4、PPP提供了各种NCP(network control protocol)协议;如ipcp,ipxcp;用于个网络层参数的协商,更好地支持了网络层协议;

  5、PPP提供了认证协议:CHAP(challenge-handshake authentication protocol)和PAP(password authentication protocol),更好的保证了网络的安全性;

  6、无重传机制,网络开销小,速度快;

  PPP组件

  提示:PPP为了能够适应多种多样的链路类型,定义了链路控制协议LCP;LCP可以自动检测环路环境;协商链路参数,如最大数据包长度,使用何种认证协议等等;与其他链路层协议相比,ppp协议一个重要的特点是可以提供认证功能,链路两端可以协商使用何种认证协议来实施认证过程,只有认证成功之后才会建立连接;NCP主要用于协商网络层地址等参数;对于不同的网络层协议,对应着不同的NCP协议;例如IPCP用于协商控制ip协议,IPXIP用于协商控制IPX协议等;

  PPP链路建立过程

  提示:dead阶段是物理层不可用阶段,当通信双方的两端检测到物理线路激活时,就会从dead阶段迁移至establish阶段,即链路建立阶段;在establish阶段,ppp链路进行了LCP参数协商,协商内容包括最大接受单元MRU、认证方式、魔术字(magic number)等选项;LCP参数协商成功后会进入Opened状态,表示底层链路已经建立;在多数情况下,链路两端的设备是需要经过认证后才能够进入网络层协议阶段;ppp链路在缺省情况下是不要求进行认证的,如果要求认证,则在链路建立阶段必须指定认证协议。认证方式是在链路建立阶段进行协商的。如果在这个阶段再次受到了configure-request报文,则优惠返回到链路建立阶段;在network阶段,ppp链路进行NCP协商;通过NCP协商来选择和配置一个网络层协议并进行网络层参数协商。只有相应的网络层协议协商成功以后,该网络层协议才可以通过这条ppp链路进行数据的收发;如果在该阶段受到了configure-request报文,也会返回到链路建立阶段;ncp协商成功后,ppp链路将保持通信状态;在ppp运行过程中,可以随时中断连接,例如物理链路断开、认证失败、超时定时器时间、管理员通过配置关闭连接等等都可能导致链路进入terminate阶段;在terminate阶段,如果所有的资源都被释放,通信双方回到dead阶段,知道通信双方重新建立ppp连接;

  LCP报文类型

  1、configure-request(配置请求):链路层协商过程中发送到第一个报文,该报文表示点到点双方开始进行链路层参数协商;

  2、configure-ack(配置响应):收到对端发来的configure-request报文,如果参数取值完全接受,则以此报文响应;

  提示:ppp链路层封装协议,需要建立ppp链路的两端设备都必须发送configure-request报文,只有当每个设备都收到对端的configrue-ack类型的报文才表示链路的建立过程已经成功完成;

  3、configure-nak(配置不响应):收到对端发来的configure-request报文,如果参数取值不被本端认可,则发送此报文并携带本端可接受的配置参数;

  提示:configure-nak报文中包含RTB可以接受的取值(或取值范围),RTA收到configure-nak报文后,会将对应参数修改为RTB能接受的取值或取值范围,然后再次发送configure-request报文;

  4、configure-reject(配置拒绝):收到对端发来的configure-request报文,如果本端不能识别对端发送的configure-request中的某些参数,则发送此报文并携带那些本端不能识别的配置参数;

  提示:在重新发送的configure-request报文中就不会再包含对端不被识别的参数;

  LCP协商参数

  1、在vrp平台上,MRU参数使用接口上配置的最大传输单元(MTU)值表示。

  2、常用的ppp认证协议有pap和chap,一条ppp链路的两端可以使用不同的认证协议认证对端,但是被认证方必须支持认证方要求使用的认证协议并正确配置用户名和密码等认证信息;

  3、LCP使用魔术字来检测链路环路和其他异常情况。魔术字是一个随机产生的数字,随机机制需要保证两端产生相同魔术字的可能性为0;

  4、收到一个configure-request报文之后,其中包含的魔术字需要和本地产生的魔术字进行对比,如果不同表示链路无环路,则使用configure-ack报文确认(如果其他参数也协商成功),表示魔术字协商成功。在后续发送的报文中,如果报文中有魔术字字段,则该字段设置为协商成功的魔术字;

  IPCP静态地址协商

  提示:IPCP使用和LCP相同的协商机制、报文类型、但IPCP并非调用LCP,只是工作过程、报文等和LCP相同;ip地址协商的方式有两种,一种是静态配置协商,一种是动态配置协商;上图就是静态配置协商示意图;

  静态ip地址协商过程

  1、通信双方都要发送configure-request报文,在此报文中包含本端配置的ip地址;

  2、通信双方接收到对端发送的configure-request报文之后,检查其中的ip地址,如果ip地址是一个合法的单播ip地址,而且和本地配置的ip地址不同(不冲突),则认为对端可以使用该地址,回应一个configure-ack报文进行确认;

  IPCP动态地址协商

  动态ip协商ip地址过程

  1、RTA向RB发送一条configure-request报文,此报文中会包含一个ip地址0.0.0.0,表示向对端请求ip地址;

  2、RTB收到双数configure-request报文后,认为其中包含的ip地址(0.0.0.0)不合法,使用configure-nak回复包含一个新ip地址10.1.1.1给ra;

  3、RTA收到此cinfigure-nak报文之后,更新本地ip地址,并重新发送一条configure-request报文,该报文包含新配置的ip地址10.1.1.1;

  4、RTB收到configure-request报文之后,认为其中包含的ip地址为合法地址,回应一个configure-ack报文;

  5、在向RTA回复configure-ack报文的同时,RTB也要向RTA发送configure-request报文,请求使用地址10.1.1.2;

  6、RTA收到configure-request报文后,认为其中包含的ip地址为合法地址,回应一个configure-ack报文;

  PPP配置

  提示:ppp的配置和hdlc的配置一样,我们只需要在对应的串口接口模式下使用link-protocol 命令来修改对应的接口封装为ppp即可;华为ARG3系列路由器默认串行接口就是ppp协议封装;

  PPP认证模式-PAP

  提示:PAP认证协议为两次握手认证协议,密码以明文方式在链路上传输;首先LCP协商完成以后,认证方要求被认证通过方使用PAP进行认证;被认证方将配置的用户名和密码信息使用authenticate-request报文以明文方式发送给认证方;认证方收到被认证方发送到用户名和密码后,它会根据本地配置的用户名和密码被认证方发送过来的用户名和密码是否匹配;如果匹配则返回authenticate-ack报文,表示认证成功;否则返回authenticate-nak报文,表示认证失败;PAP认证协议可以做无限次的尝试(这意味则我们可以进行暴力破解),只有在链路建立的阶段进行认证,一旦链路建立成功,后续不再做认证;

  实验:如下拓扑,配置PPP认证模式为PAP

  在认证方创建用于ppp认证的用户名和密码

  在认证方对应串口接口配置认证模式为pap

  提示:建立好的链路如果中途修改认证,此时链路并不会立刻断开;要想生效,我们可以把对应接口宕掉在启动;

  shutdown R1的s4/0/0接口,再启动

  提示:可以看到当我们把s4/0/0接口shutdown后在启动,对应链路就断掉,重新建立链路时,提示我们R1的s4/0/0接口启用了PAP认证,认证失败的原因是对端没有启用PAP认证;

  在被认证方配置pap认证

  验证链路是否正常建立?

  提示:可以看到链路正常建立;对应接口都up起来了;

  抓包看看是否能够抓到用户名和密码?

  提示:可以看到在链路上抓包可以抓到被认证方发送的PAP认证的用户名和密码都是使用明文进行传输;

  验证链路是否正常建立

  提示:在链路任意一段查看对应的接口信息,如果对应接口中显示LCP opened 和IPCP opened表示lcp和ipcp都建立和协商成功;

  PPP认证模式-CHAP

  提示:CHAP(Challenge Handshake Authentication Protocol)挑战/质询握手认证协议,以MD5来隐藏密码,三次握手机制,由认证方发起认证有效避免暴力破解,在链路建立成功后具有再次认证检测机制,目前在企业网的远程接入环境中用的比较常见。

  CHAP认证过程需要进行三次报文的交互;为了匹配请求报文和回应报文,报文中包含有identifier字段,一次认真过程所使用的报文均使用相同的identifier信息;

  认证过程

  1、LCP协商完成后,认证方发送一个challenge报文给被认证方,报文中包含有id信息和一个随机产生的challenge字符串,此id即为后续报文所使用的id;

  2、被认证方收到challenge报文之后,进行一次加密运算,运算公式为md5(id+密码+challenge随机字符串),意思是将id,密码和challenge三部分连成一个字符串,然后对该字符串进行md5运算,得到一个16字节长的摘要信息,然后将此摘要信息和端口上配置的CHAP用户名一起封装在response报文中发送给认证方;

  3、认证方收到被认证方发送的response报文后,按照启用的用户名在本地查找对应的密码信息,得到密码信息后,进行一次加密运算,运算方式和被认证方运算方式相同,md5(id+密码+challenge随机字符串),其中id和challenge是一样的;然后对比加密运算后的摘要信息和Response报文中封装的摘要信息,如果两者一样,则表示认证成功,不一样则表示认证失败;

  实验:将上述PAP认证模式更改为CHAP认证模式

  在认证方的对应接口下修改认证模式为CHAP

  提示:认证的用户名和密码,如果存在则不需再创建,如果没有需要创建;其次用户名和密码都是在认证方创建;

  在被认证方的对应接口下配置CHAP认证信息

  提示:PAP的认证信息其实可以不用删除;

  重启端口,让其配置生效

  验证链路是否建立

  抓包查看认证过程

  认证成功抓包

  认证失败抓包

  提示:可以看到CHAP认证每次都会经历三次握手;认证成功对应给出欢迎消息,认证失败给出非法的用户或密码;

HCNA Routing&Switching之广域网协议HDLC和PPP的更多相关文章

  1. HCNA Routing&Switching之PPPoE协议

    前文我们了解了广域网中的HDLC和PPP协议相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15174240.html:今天我们来聊一聊PPPoE协议相 ...

  2. HCNA Routing&Switching之动态路由协议OSPF DR和BDR

    前文我们了解了OSPF建立邻居关系的条件,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15032907.html:今天我们来聊一聊OSPF中的DR和BDR: ...

  3. HCNA Routing&Switching之动态路由协议RIP

    前文我们了解了动态路由的基本概念,以及动态路由和静态路由的区别,优缺点,动态路由的分类,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/14995317.html ...

  4. HCNA Routing&Switching之静态路由

    前文我们聊到了路由的相关概念和路由基础方面的话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/14947897.html:今天我们聊聊静态路由相关话题: 回顾 ...

  5. HCNA Routing&Switching之路由基础

    在开始聊路由之前,我们首先要明白在网络通讯里,什么是路由?什么是路由表.路由器以及网关的相关术语:路由简单讲就是指网络数据包从源头到目标的路径,主要用来为不同网络间通讯提供数据包转发依据:路由表就是多 ...

  6. HCNA Routing&Switching之动态路由基本概念

    前文我们了解了静态路由的相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/14965433.html:今天我们来聊一聊动态路由相关概念: 首先我们要清楚什 ...

  7. HCNA Routing&Switching之动态路由协议OSPF基础(二)

    前文我们主要了解了OSPF的区域.区域分类.路由器类型.OSPF的核心工作流程,回顾请参考:https://www.cnblogs.com/qiuhom-1874/p/15025533.html:今天 ...

  8. HCNA Routing&Switching之动态路由协议OSPF基础(一)

    前文我们了解了基于路径矢量算法的动态路由协议RIP防环以及度量值的修改相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15012895.html:今天我 ...

  9. HCNA Routing&Switching之交换技术基础

    什么是交换机?顾名思义,交换机就是用来数据包交换的:广泛用于终端接入:它的前身是hub(集线器),hub是一个古老的设备,它的作用也是用于终端接入,但hub有一个最大的缺点是它不能隔离冲突域:所谓冲突 ...

随机推荐

  1. 使用过redis做异步队列么,你是怎么用的?有什么缺点?

    Redis设计主要是用来做缓存的,但是由于它自身的某种特性使得它可以用来做消息队列. 它有几个阻塞式的API可以使用,正是这些阻塞式的API让其有能力做消息队列: 另外,做消息队列的其他特性例如FIF ...

  2. 使用命令行操作MySQL 及 语法

    在使用之前先要确保服务中的MySQL 已启动,否则会报错:ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (10061 ...

  3. Pytest学习笔记12-配置文件pytest.ini

    前言 pytest配置文件可以改变pytest的运行方式,它是一个固定的文件pytest.ini文件,读取配置信息,按指定的方式去运行. 常用的配置项 marks 作用:测试用例中添加了自定义标记( ...

  4. 修改gitlab默认的nginx

    目录 1. 修改gitlab的配置文件 2. nginx配置 3. 重载 前言: 本文将介绍,如何禁用gitlab自带的nginx,用已经安装的nginx提供web服务. 1. 修改gitlab的配置 ...

  5. CentOS 命令提示符

    命令提示符的设置就是对PS1的配置: export PS1="\[\e[35;40m\][\[\e[32;40m\]\u\[\e[37;40m\]@\[\e[36;40m\]\h  \[\e ...

  6. JVM优化过头了,直接把异常信息优化没了?

    你好呀,我是why. 你猜这次我又要写个啥没有卵用的知识点呢? 不好意思,问的稍微有点早了,啥提示都没给,咋猜呢,对吧? 先给你上个代码: public class ExceptionTest {   ...

  7. 得力e+考勤机更新网络连接

    1.进入APP,"企业信息"最下面"设备" 2.显示对应的设备的在线或离线 3.点击 >>>,点击"离线",连接蓝牙(手机 ...

  8. JAVA基础之JDK、JRE、JVM关系

    什么是JRE和JDK JDK(Java Development Kit Java开发工具包) JDK是提供给Java开发人员使用的,其中包含了java的开发工具,也包括了JRE.所以安装了JDK,就不 ...

  9. Beautifulsoup网页解析——爬取豆瓣排行榜分类接口

    我们在网页爬取的过程中,会通过requests成功的获取到所需要的信息,而且,在返回的网页信息中,也是通过HTML代码的形式进行展示的.HTML代码都是通过固定的标签组合来实现页面信息的展示,所以,最 ...

  10. 初探SpringRetry机制

    重试是在网络通讯中非常重要的概念,尤其是在微服务体系内重试显得格外重要.常见的场景是当遇到网络抖动造成的请求失败时,可以按照业务的补偿需求来制定重试策略.Spring框架提供了SpringRetry能 ...