点对点协议PPP(Point-to-Point Protocol)

目录

PPP协议具体的使用场景

PPP协议的组成部分

PPP协议帧的格式

PPP协议解决透明传输问题的两种办法

字节填充法(插入转义字符)——面向字节的异步链路

比特填充法(插入比特0)——面向比特的同步链路


由于可靠传输的实现机制2、3——回退N帧协议GBN和选择重传协议SR实在是难以用一篇博客讲清楚,所以我把视频链接发在下面,感兴趣的同学可以去学习一下:

【计算机网络微课堂(有字幕无背景音乐版)】 https://www.bilibili.com/video/BV1c4411d7jb?p=27&share_source=copy_web&vd_source=97b6ca34a029129aad2f5e8177ba05f1

以下图片均来自UP主:湖科大教书匠

我们来回到正题,讲解一下点对点协议PPP(目前使用最广泛的点对点数据链路层协议)

PPP协议具体的使用场景

  1. 一般用户想要接入到因特网,需要通过ISP,也就是因特网服务供应商。我国有著名的三大ISP,也就是中国电信,中国联通和中国电信。这些ISP已经在因特网管理机构申请到了一批IP地址,用户在与ISP通信获取IP地址时,所使用的数据链路层协议一般就是PPP协议(以太网所使用的是PPPoE协议)(Point-to-Point over Ethernet )
  2. PPP协议也广泛应用于广域网路由器之间的专用线路

PPP协议的组成部分

PPP协议由以下三部分组成:

  1. 封装成帧
  2. 链路控制协议LCP      用于建立,配置以及测试数据链路的连接
  3. 一套网络控制协议NCPs    用于支持不同的网络层协议

PPP协议帧的格式

大家想想,封装成一个帧,需要哪些要素呢?

帧其实就是由一些数据封装而成,数据的传输其实就是一个个比特进行传输,在比特流中,接收端如何知道哪些比特是一个帧呢?

就好像你打字时输入xi an ,可能打出来”西安“,也可能打出来“先”,如果不做声明的话,输入法也搞不懂你是要打一个字还是两个字

这里就需要定界符定界符存放在帧头的最前端和帧尾的最末端

在PPP协议的组成部分中我们讲了,PPP协议中是有一套网络控制协议NCPs来支持不同的网络层协议,所以要有一部分比特用来标识该PPP协议帧究竟是支持哪种网络层协议

另外就是要有差错检测(FCS)的字段

明白了这些我们再来看下面这个图片,这样就会清晰直观许多

点对点协议PPP(Point-to-Point Protocol)_第1张图片

PPP协议解决透明传输问题的两种办法

有些细心的同学会发现,标志字段取值为0x7E,如果帧的数据部分中也出现了值为0x7E的字节的话,那这个7E不就会被识别成帧尾的标志字段,认为该帧已经结束,这样不就出错了嘛?这也就是我们要解决的透明传输问题

确实如此,接下来我们就来了解如何解决该问题

有两种解决办法,采用哪种解决办法取决于所使用的链路类型

链路类型一共有两种:面向字节的异步链路,面向比特的同步链路

字节填充法(插入转义字符)——面向字节的异步链路

点对点协议PPP(Point-to-Point Protocol)_第2张图片

发送方的处理方法如下:

1、将数据部分中出现的每一个7E(PPP帧的定界符)字节转变为2字节序列(7D,5E),7D是转义字符,这里的5E是7E减去十六进制的20所得到的

为什么是20,是因为十进制的32等于十六进制的20,而在ASCII编码中,第 0~31 个字符(开头的 32 个字符)都具有一些特殊功能,被称为控制字符( Control Character)或者功能码(Function Code)

2、将数据部分中出现的每一个7D(转义字符)字节转变成二字节序列(7D,5D)

3、将数据部分中出现的每一个ASCII码控制字符(小于0x20的字符),在该字符前插入一个7D字节,同时加上0x20

而接收方只需要进行反变换就能够恢复出原来的帧的数据部分

比特填充法(插入比特0)——面向比特的同步链路

发送方只要发现5个连续的比特1(一般通过硬件扫描发现),就立即填充一个比特0,如下图所示

点对点协议PPP(Point-to-Point Protocol)_第3张图片

同样,接收方只需要将每个填充的比特0去掉就可以恢复出原来的帧的数据部分了

今天的学习记录到此结束啦,咱们下篇文章见,ByeBye!

你可能感兴趣的:(计算机网络,网络,学习,网络协议)