这系列文章为计算机网络理论的学习笔记,学习笔记基于老师给的的PPT、他人学习笔记和维基百科、百度百科等一系列权威资料。学习笔记仅个人学习用,便于记录和复习,无广泛传播之意,若有侵权,请联系我删除。欢迎各位大佬指正和交流。
1 HDLC
HDLC(High-level Data Link Control,高级数据链路控制)是一种面向比特的链路层协议,其最大特点是对任何一种比特流(传输的时候是以比特为单位进行传输),均可以实现透明的传输。
HDLC在同步串行线路上封装数据,最常用于点对点链接。
1.1 HDLC帧格式
一个完整的HDLC帧最多由六个字段组成:标志字段(Flag)、地址字段(Address)、控制字段(Control)、信息字段(Information)、帧校验序列字段(FCS)构成。
标志字段:标志帧的起始
HDLC采用固定的标志字段01111110作为帧的边界。当接收端检测到一个F标志时就开始接收帧,在接收的过程中如果发现F标志就认为该帧结束了。
地址字段:用来寻址目的设备
地址字段用在多点链路中,它是用来存放从站的地址的。
控制字段:构成各种命令以及响应
HDLC定义了3种不同的帧,可以根据控制字段区分:
- 信息帧(l帧):传送数据、捎带流量控制和差错控制的应答信号。
- 管理帧(S帧):是在不使用捎带机制的情况下管理帧控制的传输过程。
- 无编号帧(U帧):具有各种链路的控制功能。
- 控制字段使用前1位或前2位用来区别不同格式的帧,基本控制字段长度是8位。扩展控制字段是16位。
信息字段:有效信息或者数据
I帧和一部分的U帧含有控制字段。这个字段可以包含用户数据的所有比特序列,无长度限制。
帧校验:校验帧错误
校验字段包含地址字段、控制字段、信息字段的校验和,但不包括标志字段。
1.2 HDLC状态检测(HDLC链路状态轮询机制)
HDLC协议使用轮询机制来确认链路状态是否正常。
- HDLC设备以轮询时间间隔为周期,向链路上发送Keepalive消息。
- 3个周期内无法收到对方发出的Keepalive消息,HDLC设备就认为链路不可用,对端故障,上报链路层down。
- 同一链路两端设备的轮询时间间隔应设为相同的值,即keepalive周期相同。
配置方法:
- 设置接口链路层协议为HDLC
- [Router-Serial1/0] link-protocol hdlc
- 设置HDLC的Keepalive轮询时间间隔
- [Router-Serial1/0] timer hold seconds
1.3 HDLC协议特点
- 对于任何一种比特流都可透明传输,并且有着较高的数据链路传输效率。
- 所有的帧(包括响应帧)都有FCS,传输可靠性高。
- 用统一的帧格式来实现传输。
1.4 HDLC协议使用限制
- HDLC协议只支持点到点链路,不支持点到多点。
- HDLC不支持IP地址协商,不支持认证,缺乏安全性。协议内部通过keepalive报文来检测链路状态。
- HDLC协议只能封装在同步链路上。支持HDLC协议的接口有:工作在同步模式下的Serial接口和POS接口。
1.5 HDLC传输模式
HDLC支持两种类型的传输模式:同步传输模式、异步传输模式。
- 异步传输模式:是以字节为单位来传输数据,并且需要采用额外的起始位和停止位来标记每个字节的开始和结束。因此,每个字节的发送都需要额外的开销。可以面向点对点或点对多点的传输。
- 同步传输模式:是以帧为单位来传输数据,在通信时需要使用时钟来同步本端和对端设备的通信。只能用于面向点对点的传输。DCE(数据通信设备),提供了一个用于同步DCE设备和DTE设备之间数据传输的时钟信号,通常情况下使用DCE产生的时钟信号。
可参考学习:H3C的HDLC配置
2 PPP
PPP协议(Point to Point Protocol,点对点协议)是一种点对点的链路层协议,是一种用于全双工的同异步的链路上的点到点传输。它能够提供用户认证,易于扩充,并且支持同/异步通信。
2.1 PPP协议的组成
PPP定义了一整套协议(由LCP、NCP以及用于网络安全的可选验证协议族组成),包括:
- 链路控制协议(Link Control Protocol,LCP):用来建立、拆除和监控数据链路。
- 网络控制协议(Network Control Protocol,NCP):用来协商在数据链路上所传输的网络层报文的一些属性和类型。
- 认证协议:用来对用户进行认证,包括PAP(Password Authentication Protocol,密码认证协议)、CHAP(Challenge Handshake Authentication Protocol,质询握手认证协议)、MSCHAP(Microsoft CHAP,微软CHAP协议)和MSCHAPv2(微软CHAP协议版本2)。
2.2 PPP会话
2.2.1 PPP会话建立过程
2.2.2 PPP会话流程
- Dead阶段,即物理层不可用阶段。当物理层连接上,就会转入至Establish阶段,即链路建立阶段。
- Establish阶段,即建立阶段。PPP链路进行LCP参数协商,包括最大接收单元MRU、认证方式、魔术字等选项,协商完成后会进入Opened状态,表示底层链路已经建立。
- Authenticate阶段,即认证阶段。多数情况下,链路两端的设备是需要经过Authenticate后才能够进入到网络层协议阶段,默认不认证,在这个阶段如果收到参数协商请求(Configure-Request报文),将会返回Establish阶段。
- Nerwork阶段,即网络层阶段。认证成功或不需要认证/无认证将到Nerwork阶段,进行NCP协商。NCP协商成功后,PPP链路将保持通信状态。在这个阶段如果收到参数协商请求(Configure-Request报文),将会返回Establish阶段。
- Terminate阶段,即终止阶段。PPP运行过程中,可以随时中断连接,例如物理链路断开、认证失败、超时定时器时间、管理员通过配置关闭连接等动作都可能导致链路进入该阶段。
- 在Terminate阶段,如果所有的资源都被释放,通信双方将回到Dead阶段,直到通信双方重新建立PPP连接。
2.3 PPP认证
PPP提供了在其链路上进行安全认证的手段,使得在PPP链路上实施AAA变的切实可行。将PPP与AAA结合,可在PPP链路上对对端用户进行认证、计费。
PPP支持如下认证方式:PAP、CHAP、MSCHAP、MSCHAPv2。
2.3.1 PAP 认证
PAP为两次握手协议,它通过用户名和密码来对用户进行认证。
- 被验证方首先发起验证请求,两次握手验证。
- 密码以明文传送。
PAP在网络上以明文的方式传递用户名和密码,认证报文如果在传输过程中被截获,便有可能对网络安全造成威胁,缺乏安全性。
2.3.2 CHAP 认证
CHAP为三次握手协议。
- CHAP认证过程分为两种方式:认证方配置了用户名和认证方没有配置用户名。推荐使用认证方配置用户名的方式。
- 主验证方首先发起验证请求,三次握手验证。
- 不发送密码,安全性比PAP高。
CHAP只在网络上传输用户名,并不传输用户密码(准确的讲,它不直接传输用户密码,传输的是用MD5算法将用户密码与一个随机报文ID一起计算的结果),因此它的安全性要比PAP高。
2.3.3 MSCHAP 认证
MSCHAP为三次握手协议,认证过程与CHAP类似。
- MSCHAP采用的加密算法是0x80。
- MSCHAP支持重传机制。在被认证方认证失败的情况下,如果认证方允许被认证方进行重传,被认证方会将认证相关信息重新发回认证方,认证方根据此信息重新对被认证方进行认证。认证方最多允许被认证方重传3次。
2.3.4 MSCHAPv2 认证
MSCHAPv2为三次握手协议,认证过程与CHAP类似。
- MSCHAPv2采用的加密算法是0x81。
- MSCHAPv2通过报文捎带的方式实现了认证方和被认证方的双向认证。
- MSCHAPv2支持重传机制。在被认证方认证失败的情况下,如果认证方允许被认证方进行重传,被认证方会将认证相关信息重新发回认证方,认证方根据此信息重新对被认证方进行认证。认证方最多允许被认证方重传3次。
- MSCHAPv2支持修改密码机制。被认证方由于密码过期导致认证失败时,被认证方会将用户输入的新密码信息发回认证方,认证方根据新密码信息重新进行认证。
2.4 PPP配置
请前往H3C的PPP配置学习:点我!!点我!!
2.5 PPP MP
- MP(Multilink PPP)将多个PPP链路捆绑后当作一条链路使用。
- MP可以实现增加带宽、负载分担、链路备份以及降低报文时延的目的。
2.5.1 PPP MP实现方式
- 通过配置虚拟模板接口(Virtual-Template,VT)来实现MP:
- 可利用用户名确定捆绑。
- 一个VT接口可派生多个捆绑。
- 利用MP-Group接口实现MP:
- Mp-Group是MP专用接口,一个MP-group只能对应一个绑定。
2.5.2 PPP MP配置
请前往H3C的PPP MP配置学习:点我!!点我!!
2.6 PPP显示与调试
- 显示接口的PPP配置和运行状态
-
[Router] display interface interface-name
-
- 查看已创建的MP-Group接口的状态信息
-
[Router] display interface mp-group [ mp-number ]
-
- 显示指定MP接口的接口信息和统计信息
- [Router] display ppp mp [ interface interface-type interface-number ]
- 显示PPP验证的本地用户
- [Router] display user
- 查看PPP的调试信息
- <Router> debugging ppp all
2.6.1 用display interface命令显示接口信息
2.6.2 用debugging ppp all命令调试PPP
想要具体命令学习的道友,请前往学习:点我!!点我!!
3 FR(帧中继)
FR(Frame Relay,帧中继)协议,是一种简化的X.25广域网协议,是一种统计复用的协议,它能够在单一物理传输线路上提供多条虚电路,是在数据链路层用简化的方法传送和交换数据单元的快速分组交换技术。
本章内容参考学习来自 H3C帧中继配置 :点我!!点我!!
3.1 帧中继协议特点
- 帧中继协议以帧的形式传递数据信息。
- 帧中继协议是面向连接的交换技术。
- 帧中继可以在一条物理链路上提供多条虚电路。
- 帧中继链路层完成统计复用、帧透明传输和错误检测等功能。
- 帧中继提供一套合理的带宽管理和防止拥塞的机制。
3.2 帧中继基本原理
3.2.1 帧中继协议栈
3.2.2 帧中继接口类型
帧中继网络提供了用户设备(如路由器和主机等)之间进行数据通信的能力。帧中继设备和封装帧中继协议的接口根据在网络中的作用不同,可以分为下列四种:
- DTE:用户设备被称作DTE(Data Terminal Equipment,数据终端设备)。
- DCE:为用户设备提供接入的设备,属于网络设备,被称为DCE(Data Circuit-terminating Equipment,数据电路终接设备)。
- UNI:DTE和DCE之间的接口被称为UNI(User Network Interface,用户网络接口)。
- NNI:网络与网络之间的接口被称为NNI(Network-to-Network Interface,网间网接口)。
在实际应用中,DTE接口只能和DCE接口连接,NNI接口只能和NNI接口连接。如果把设备用做帧中继交换机,帧中继接口类型应该为NNI或DCE。
如上图所示,两台DTE设备(Router A和Router D)通过帧中继网络实现互连,Router B和Router C用来代表一个简单的帧中继交换网。可以看出,DTE和DCE只是在UNI处才进行区分;对于两台DTE之间建立的虚电路,不同虚电路段可以对应不同的DLCI。
3.2.3 帧中继虚电路
虚电路VC(Virtual Circuit)是建立在两台网络设备之间共享网络的逻辑电路。根据建立方式的不同,可以将虚电路分为两种类型:
- PVC(Permanent Virtual Circuit,永久虚电路):手工设置产生的虚电路。
- SVC(Switched Virtual Circuit,交换虚电路):通过协议协商自动创建和删除的虚电路。
目前在帧中继中使用最多的方式是永久虚电路方式。永久虚电路方式需要检测虚电路是否可用。LMI协议就是用来检测虚电路是否可用的。
注意:在同一个物理连接上可以复用多条虚电路。
3.2.4 帧中继网络拓扑
帧中继一般有三种拓扑结构,分别是:全网状拓扑、星型拓扑、部分网状拓扑。
- 全网状拓扑:全网状拓扑指在这个帧中继拓扑中,任何两个节点间都存在一条虚电路,如果把各节点用直线两两一组连接起来,会形成一张网。它可以提供最大限度的相互容错能力,但是费用较贵。
- 星型拓扑:星型拓扑是最常用的帧中继拓扑结构,由中心节点来提供主要服务与应用。星型拓扑有一个中心节点和许多的分支节点,所有的分支节点的通讯都必须通过中心节点,效率可能不高,但是价格便宜。
- 部分网状拓扑:部分网状拓扑是星型拓扑的衍生,不同的在于部分网状拓扑的重要结点采取多链路互连方式,有一定的互备份能力。
3.2.5 DLCI(帧中继数据链路标识)
帧中继用DLCI标识不同的虚电路,DLCI只在本地接口和与之直接相连的对端接口有效,只具有本地意义,不具有全局有效性。
在帧中继网络中,不同的物理接口上相同的DLCI并不表示是同一个虚电路。
3.2.6 LMI
LMI协议通过状态请求报文(Status Enquiry)和状态报文(Status)维护帧中继的链路状态和PVC状态。包括:通知PVC的增加、探测PVC的删除、监控PVC状态的变更、验证链路的完整性。
LMI协议的基本工作方式是:DTE设备每隔一定的时间间隔发送一个状态请求报文去查询虚电路的状态,DCE设备收到状态请求报文后,立即用状态报文通知DTE当前接口上所有虚电路的状态。(轮询机制)
系统支持三种标准的LMI协议:
- ITU-T的Q.933 Annex A
- ANSI的T1.617 Annex D
- 非标准兼容协议
为了保证正常通信,DTE侧和DCE侧需要采用相同的LMI协议。
3.2.7 帧中继地址映射
帧中继地址映射是把对端设备的协议地址与对端设备的帧中继地址(本地的DLCI)关联起来,使高层协议能通过对端设备的协议地址寻址到对端设备。
因为发送IP报文时,路由表只能知道报文的下一跳地址,所以发送前必须由该地址确定它对应的DLCI。为了确定DLCI,我们可以查找帧中继地址映射表(地址映射表中存放的是下一跳IP地址和与其对应的DLCI的映射关系(MAP))。
地址映射表可以通过静态配置或InARP(逆向地址解析协议)动态维护。
InARP的工作机制如下:
每当发现一条新的虚电路时,如果本地接口上已经配置了协议地址,InARP就在该虚电路上发送InARP请求报文给对端。该请求报文包含有本地的协议地址。对端设备收到该请求时,可以获得本地的协议地址,从而生成地址映射,并发送InARP响应报文进行响应,这样本地同样生成地址映射。
如果已经手工配置了静态MAP或已经建立了动态MAP,则无论该静态MAP中的对端地址正确与否,都不会在该虚电路上发送InARP请求报文给对端,只有在没有MAP的情况下才会向对端发送InARP请求报文。
通过Inverse ARP可以自动发现对端路由器的网络地址,从而简化了帧中继的配置。
3.2.8 帧中继子接口
可以为帧中继物理接口配置点到点(point-to-point)和点到多点(point-to-multipoint)两种子接口。
3.2.9 帧中继应用
帧中继比较典型的应用之一是帧中继接入。帧中继接入即作为用户端承载上层报文,接入到帧中继网络中。
帧中继网络可以是公用网络或者是某一企业的私有网络,如图1所示。
帧中继网络也可以是直接连接,如图2所示。
3.3 配置帧中继
3.4 帧中继与RIP
3.4.1配置RIP peer
- 帧中继网络不支持RIP更新的广播发送。
- 需要在路由器上配置各个RIP邻居路由器的IP地址,以便通过单播发送更新。
3.4.2 帧中继与水平分割
帧中继NBMA网络可能与水平分割产生冲突。
水平分割导致RTA不会把RTD发来的路由告知RTB和RTC。如左图。
关闭水平分割可能导致环路。
解决方案:为每个虚电路配置子接口。如右图。