计算机网络 第三章 数据链路层 ppp协议

在前面我们是了解了数据链路层要解决的三个问题封装成帧,透明传输,差错检测;对于封装成帧,协议不同封装出来的帧格式不同,使用帧定界的点对点传输需要解决透明传输问题,对于解决方法在前面一节我们只是给出了使用转义字符填充,对于差错检测,学习了奇偶校验和CRC循环冗余校验。

这一节要学习的是数据链路层中的点对点协议,该协议是在ISP和用户之间通信所使用的数据链路层协议。

一、ppp协议

ppp是在ISP和用户之间通信所使用的数据链路层协议。,也可以被叫做是PPPoE协议。

先来看下ppp协议的组成

  • 封装成帧
  • LCP 是链路控制协议,在用户和ISP进行连接的时候,就需要LCP链路控制协议来进行连接。
  • NCPS 是不同网络控制协议,因为网络层用到的协议不同,向下层交付的数据类型就不同,就需要被交付方数据链路层能够有效的识别出上层交付的数据类型。

封装成帧

在ppp协议中,封装成帧就是在网络层交付的网络层链路数据单元加上帧的首部信息和尾部信息

  • 在ppp协议中帧的标志,即帧的定界符为0x7E
  • 地址和控制字段无意义
  • p字段是表示上层接受交付的数据类型,因为网络层的协议不同,交付的数据会有所差异。
  • FCS字段存储CRC的校验码
  • 帧的数据部分是不超过1500字节的

透明传输

在ppp协议中,数据的传输方式有两种,第一种是面向字节的异步链路,一种是面向比特的同步链路,传输方式的不同,实现透明传输的方式也不同,对于面向字节的采用字节填充法,对于面向比特的同步链路采用比特填充法。

字节填充, 对于ppp协议,它的字节填充做出以下规定

  • 在数据部分遇见帧定界符7E,将其变为7D5E
  • 对于遇见转义字符7D,将其变为7D5D,其实不难发现,ppp协议中当遇见转义字符或者帧定界符的时候,都是在前方插入7D,然后转义字符或者帧定界符减去0x20
  • 当出现小于0x20的ASSIC码时,也需要在其其那方插入7D,同时让其加0x20。

比特填充,对于面向比特传输的ppp协议,由于帧定界符时0x7E,也就是01111110B,为实现透明传输,只需要在数据部分出现连续的五个1的话,就插入一个0,以破环连续的六个1的情况。

差错检测

ppp协议的差错检测使用CRC冗余码校验,FCS字段用于存储循环冗余校验码

  • 发送方的数据到达发送发主机的数据链路层时,计算循环冗余校验码,存储在FCS字段,封装成帧
  • 接收方接受到物理链路传输的数据,通过帧定界符分割出一个帧,然后检验帧中的数据是否出错,不出错就接受,出错就不接受,直接丢弃。

LCP链路控制协议

LCP是如何运作的?为什么需要LCP协议?

是因为用户刚刚和ISP建立连接的时候其实就是ISP接了一根物理的网线到自己的家里,这时就实现了链路的建立(物理上的连接) ,然后我们作为用户开始和ISP进行通信,此时就会使用到LCP链路控制协议,即用户向ISP发送LCP分组,就是协议字段是0xC021,就表示发送LCP分组;发送LCP分组的目的就是为了进行LCP协商,LCP分组里面就是一些配置选项,协商通过后,就会进入鉴别状态,此时状态已经是建立LCP链路 了,此时就会进入到网络层的协议,进行NCP配置协商,其实也就是为了实现不同的网络层协议交付的数据,都能使用同一个ppp协议来封装,配置完成后就会进入链路打开的状态,这样完成了两个点之间的连接控制,也就是链路控制协议的作用;其具体过程如下

相关推荐
速盾cdn22 分钟前
速盾:vue的cdn是干嘛的?
服务器·前端·网络
安於宿命27 分钟前
【Linux】简易版shell
linux·运维·服务器
丶Darling.30 分钟前
MIT 6.S081 Lab1: Xv6 and Unix utilities翻译
服务器·unix·lab·mit 6.s081·英文翻译中文
黄小耶@38 分钟前
linux常见命令
linux·运维·服务器
叫我龙翔40 分钟前
【计网】实现reactor反应堆模型 --- 框架搭建
linux·运维·网络
粤海科技君1 小时前
如何使用腾讯云GPU云服务器自建一个简单的类似ChatGPT、Kimi的会话机器人
服务器·chatgpt·机器人·腾讯云
傲骄鹿先生1 小时前
阿里云centos7.9服务器磁盘挂载,切换服务路径
服务器·阿里云·磁盘
不爱学习的YY酱2 小时前
【计网不挂科】计算机网络期末考试——【选择题&填空题&判断题&简述题】试卷(4)
网络·计算机网络
装睡的小5郎2 小时前
家庭宽带如何开启公网ipv4和ipv6
网络
yfs10242 小时前
压缩Minio桶中的文件为ZIP,并通过 HTTP 响应输出
网络·网络协议·http