简介

点对点协议简称PPP协议,工作在数据链路层。设计目的主要是用来通过拨号或专线方式建立点对点连接发送数据,使其成为各种主机、 网桥和路由器之间简单连接的一种共通的解决方案。

PPP协议的组成

  1. 建立、配置数据链路连接的LCP(Link Control Protocol)
  2. 网络控制协议NCP(Network Control Protocol)
  3. 将IP数据报封装到串行链路的方法

帧格式

PPP协议的数据单元称为帧,格式如图

总体格式是首部+数据部分+尾部。

首部从左至右依次是帧定界符,表示帧开始;

地址字段,因为点对点协议仅作用于两个实体,发送方无需知道对方的地址,所以没有实际作用;

控制字段,也没有实际作用;

协议类型,指定信息部分的类型。

尾部从左至右依次是帧检验序列,用于校验帧在传输过程中是否出现差错;

帧定界符,表示帧的结束

如何解决数据链路层的三个基本问题

PPP是工作在数据链路层协议的,自然要解决数据链路层的三个基本问题
1. 封装成帧

根据PPP帧的帧格式,可以发现,帧首部和尾部各有一个定界符,这两个定界符封装了一个帧

2. 透明传输

PPP协议实现透明传输的方式有两种。第一种是字节填充的方式,在帧首部和尾部的定界符前面插入一个转义字符,
当信息部分出现了转义字符,则在转义字符前面再填充一个转义字符,另外,当信息部分出现了控制字符时,也会在其前面填充一个转义字符。
第二种就是零比特填充的方式,PPP帧定界符用二进制表示是01111110,中间有6个1,只要保证信息部分不出现连续的6个1就可以实现透明传输。
所以,在发送端,发送前会扫描整个信息字段,当发现有连续的5个1时就立即填充一个0。
在接收端,接受后也会扫描整个信息字段,一旦发现有连续的5个1,就把其后面的0删除。这样就保证了透明传输。

3. 差错检测

PPP帧的尾部有一个FCS,配合CRC实现差错检测,发现帧出现错误就丢弃

PPP链路建立过程

PPP协议一般用于用户拨号接入ISP,工作流程如下

1. LCP配置协商

用户点击“连接”,建立了物理层连接后,双方就要进行链路层上某些配置的协商,比如链路上的最大帧长、采用什么鉴别协议等。

2. 用户验证

这个阶段,ISP为了防止用户恶意使用网络资源,会对用户的账号密码进行校验,使用PAP(Password Authentication
Protocol)或者CHAP(Challenge-Handshake Authentication
Protocol)协议,其中PAP协议的安全性较低

3. NCP配置协商

当用户通过用户验证,双方就要用进行网络层上某些配置的协商,比如网络层采取什么协议,用户的IP地址是什么

引用

    1. 谢希仁《计算机网络》
    2. 博客
      2.1 http://www.cnblogs.com/haitao-fan/archive/2012/04/07/2436120.html
      2.2 http://www.cnblogs.com/gtarcoder/p/6259105.html
      Edit By MaHua

最新文章

  1. BootStrap学习笔记,优缺点总结
  2. 我的window10
  3. [C++11][数据结构]自己的双链表实现
  4. 解析XML
  5. 【ORACLE】记录通过执行Oracle的执行计划查询SQL脚本中的效率问题
  6. android:style.xml
  7. [C/C++][文件操作] 对比目录并列出同名较新文件、较旧文件 0.1
  8. python核心编程第六章练习6-8
  9. bzoj1216 [HNOI2003]操作系统
  10. 纯互联网项目“失宠”乐博资本杨宁称今后只投O2O
  11. eclipse中的js文件报错的解决办法
  12. TensorFlow安装与测试
  13. 用户home目录下的.gitconfig 和 库文件夹目录下的 .gitignore 示例
  14. NodeJS用Express建立project
  15. nutch solr 配置
  16. Dynamics 365 启用跟踪及读取跟踪文件工具
  17. java多线程中的三种特性
  18. MyEclipse has detected that less than 5% of
  19. c++中结构体sort()排序
  20. WebBrowser中html元素如何触发winform事件

热门文章

  1. javascript入门笔记3-dom
  2. java XML 通过BeanUtils的population为对象赋值 根据用户选择进行dom4j解析
  3. Eclipse+Python环境配置
  4. Linux实战教学笔记16:磁盘原理
  5. html常用的实体符号
  6. 一件安装lnmp
  7. elasticsearch 5.x 系列之二 线程池的设置
  8. PAT Basic 1057
  9. Android Url相关工具 通用类UrlUtil
  10. Hibernate---数据操作示例BY实体类注释