1.HDLC封装协议

HDLC是思科路由器串行接口默认的封装协议,由于串行线路在远距离通信中的优势,远距离传输数据一般都使用串行线路,而一些计算机的内部通信一般采用并行通信。标准的HDLC封装只能支持单协议,即IP协议,思科对标准的DHLC进行了改进,增加了协议域字段来支持多种网络层协议。虽然改进后的DHLC是思科私有的,但是现在大多网络设备都能够使用它。

在”Cisco Packet Tracer 5.3″中添加一台2811路由器,给这个路由器添加”WIC-2T”串行接口模块,然后通过下面的命令来查看串行接口默认的封装协议:

0

思科路由之所以默认使用HDLC封装是因为路由器之间用同步串行接口连接时,Cisco HDLC封装要比PPP封装效率高很多。但是其他网络设备不一定支持思科HDLC,所以在不同厂商设备混用的时候,最好采用PPP作为串口封装协议。

可以使用下面这条命令将串行接口的封装改成PPP:

0

2.同步和异步串行通信

串行通信分为同步传输和异步传输,下面分别介绍着两种传输技术。

(1)异步传输

通常,异步传输是以字符为传输单位的,每个字符添加一位起始位和一位停止位,用来标记一个字符的开始和结束。这种传输方式每传输一个字符都要附加2-3位,通信效率较低。这种传输方式发送方发出数据后,不等对方发回响应,接着发送下一个数据包。

(2)同步传输

通常,同步传输是以数据块为传输单位,每个数据块的头部和尾部附加一个特殊的字符或比特序列,标记一个数据块的开始和结束,一般还附加一个效验序列,以便对数据块进行差错控制。这种传输方式发送方发出数据后要等待接收方发回响应,然后再发下一个数据包。路由器的串行接口属于快速的同步接口,所以需要在DCE端配置”时钟”来进行信号同步。

0

上图中R1的s0/0/0是DCE端,可以通过下面的命令配置DCE端的时钟:

0

3.PPP特点

PPP是IETF(因特网工程任务组)推出的点到点类型线路的数据链路层封装协议,PPP支持下面几类物理接口:

§  同步串行接口

§  异步串行接口

§  高速串行接口(HSSI)

§  综合业务数字网(ISDN)

此外PPP还被广泛的应用在ATM上(PPPover ATM,简称PPPoA)以及以太网上(PPPover Ethernet,简称PPPoE)。

PPP利用下面三个组件来解决网际网络连接问题:

§  在点对点链路上使用高级数据链路控制(HDLC)封装数据。PPP帧格式以HDLC帧格式为基础,做了少许改动。

§  使用LCP(Link Control Protocol,链路控制协议)来建立、设定和测试数据链路连接。

§  使用NCPs(Network Control Protocols,网络控制协议系列)建立和设定不同的网络层协议。

4.PPP分层体系结构

PPP分层体系架构是一个逻辑模型,下图是这一构架和OSI参考模型的对比:

0

只要是点到点类型的线路都可以运行PPP,在数据链路层PPP通过LCP协议进行链路管理,相当于以太网数据链路层的MAC子层,在网络层NCP为不同协议提供服务,相当于以太网数据链路层的LLC子层。

下面是PPP的LCP子层和NCP子层的简单介绍:

1.LCP(Link Control Protocol)子层

LCP子层位于物理层之上,除了用来建立、配置和测试数据链路连接外,还提供下面这些功能:

§  身份验证:提供了PAP和CHAP验证。

§  压缩:将需要传输的数据先压缩再传输。支持Stac、Predictor、MPPC以及TCP头部压缩。

§  错误检测:保证链路的质量。

§  多链路:实现链路的负载均衡。

§  PPP回拨:可以提高安全性和节约用户拨号费用。

2.NCP(Network Control Protocol)子层

当LCP将链路建立好后,PPP开始根据不同用户的需要配置上层协议所需环境,NCP被用来为上层服务提供服务接口,针对不同的上层协议NCP提供不同的服务组件。

5.PPP会话建立过程

PPP从开始发起呼叫到最终通信完成后释放链路一共要经历下面四个步骤:

§  第一步:链路的建立和配置协商,主要由LCP完成,通信的发起方发送LCP帧来配置和检测数据链路。

§  第二部:链路质量检测(可选),属于LCP的可选功能,主要是测试链路的质量能否满足要求。

§  第三步:网络层协议的配置阶段,主要是NCP的功能,通信双方交换一系列NCP分组来配置网络层,NCP配置好后双方的逻辑通信链路就建立完成了。

§  第四部:链路终止,当数据传送完成,或者一些外部事件发生的时候,一方会发起断开连接的请求,这时,首先使用NCP来释放网络层的链接,然后使用LCP来关闭数据链路层的链接,最后双方的通信设备关闭物理链路。

6.PPP身份验证协议

PPP有两种可选的身份验证协议PAP和CHAP:

1.PAP(Password Authentication Protocol,密码验证协议)

这是一种两次握手协议,采用明文传输方式传输用户口令,验证步骤如下:

0

首先被验证方主动发起验证请求,将本地配置的用户名和密码用明文的方式发送给验证方,验证方接收到验证请求后检查此用户名和密码是否正确(在验证方的数据库中也配置有此用户名和密码),正确就发回接受报文,错误就发送拒绝报文。这种验证方式是采用明文传输,很容易被破解。

2.CHAP(Challenge HandshakeAuthentication Protocol,挑战握手验证协议)

这是一种三次握手协议,它只在网络上传输用户名,密码并不在网络上传输,下图为CHAP验证示意图:

0

CHAP的验证过程如下:

在PPP链路建立阶段完成后(R1作为被验证方拨入),验证方R2主动发起验证挑战”Challenge”,挑战报文中”01″是序列号;R2上可能有多个拨入请求,”ID”用来识别是哪个拨入者发起的挑战;”Random”是一个随机数;”R2″是发起挑战路由器的名字。

0

被验证方收到验证方发来的请求后,根据这个报文中的路由器名称(R2),在本地数据库中找到这个名称对应的密码,如果找到对应的密码,则用验证方发送过来的报文的ID和随机数加上本地数据库中找到的密码,以MD5算法生成一个”hash”值。

0

生成hash之后,再将这个hash值、验证方R2发送过来的ID号以及本路由的名称R1,发回给验证方R2。其中报文的序列号是”02″,”ID”是R2发送过来的那个ID不变,”hash”是R1计算后得到的哈希值。

0

R2接收到这个报文后,利用报文中的ID值找到储存在本地数据库中的随机数,并且根据发送过来的报文中路由器的名称(R1)找到本地数据库对应这个名称的密码,然后利用ID、随机数、R1对应的密码使用MD5算法生成一个hash值,最后用这个hash值与R1发送过来的hash比较,相同则验证通过,发回序号是”03″的确认报文,如果不相同则验证失败,发回序号是”04″的验证失败报文。

从这个步骤可以看出,只要双方配置相同的验证密码,即可完成验证,并且这个密码是不会在链路上传输的,传输的只是一个随机数、一个ID值、路由器的名称和发回的hash值。