• 数据链路层 点对点协议 PPP


    点对点协议 PPP

    一、 PPP 协议应满足的需求


    简单。提供不可靠的数据报服务,比IP协议简单,不需要纠错,不需要序号,不需要流量控制。


    工作方式:接收方每收到一个帧就进行CRC校验,如正确就接受该帧,如错误就丢弃该帧,其他什么也不做。


    封装成帧:有帧界定符


    透明性:解决特殊字符的传递


    多种网络层协议


    多种类型链路:串行的或并行的,同步的或异步的,电或光的 。


    差错检测:立即抛弃有错误的帧,防止浪费网络资源。


    检测连接状态:自动检测链路是否正常工作


    最大传送单元:对每种类型的链路设置MTU,促进各种实现之间的互操作性。


    网络层地址协商

    二、PPP 协议的组成

    PPP 协议有三个组成部分


    一个将 IP 数据报封装到串行链路的方法。


    链路控制协议 LCP (Link Control Protocol)。

    建立、配置和测试数据链路的连接

    一套网络控制协议 NCP (Network Control Protocol)。
    支持不同的网络层协议,如IP、OSI、DECnet、

    三、PPP 协议的帧格式


    PPP帧的首部和尾部分别为4个字段和2个字段。
    标志字段 F(flag) = 0x7E (符号“0x”表示后面的字符是用十六进制表示。十六进制的 7E 的二进制表示是 01111110)。
    地址字段 A 只置为 0xFF。地址字段实际上并不起作用。
    控制字段 C 通常置为 0x03。
    PPP 是面向字节的,所有的 PPP 帧的长度都是整数字节。

    PPP 有一个 2 个字节的协议字段。
    当协议字段为 0x0021 时,PPP 帧的信息字段就是IP 数据报。
    若为 0xC021, 则信息字段是 PPP 链路控制LCP数据。
    若为 0x8021,则表示这是网络控制NCP数据。


    当 PPP 用在异步传输时,就使用一种特殊的字符填充法。


    将信息字段中出现的每一个 0x7E 字节转变成为 2 字节序列(0x7D, 0x5E)。
    若信息字段中出现一个 0x7D 的字节, 则将其转变成为 2 字节序列(0x7D, 0x5D)。
    若信息字段中出现 ASCII 码的控制字符(即数值小于 0x20 的字符),则在该字符前面要加入一个 0x7D 字节,同时将该字符的编码加以改变。
    如出现0x03就把它转变成(0x7D,0x23)。
    b7b6b5b4b3b2b1b0 —>(0x7D, b7b6b5b4b3b2b1b0)


    零比特填充 

    PPP 协议用在 SONET/SDH 链路时,是使用同步传输(一连串的比特连续传送)。这时 PPP 协议采用零比特填充方法来实现透明传输。
    在发送端,只要发现数据字段有 5 个连续 1,则立即填入一个 0。不会出现6个连续的1
    接收端对帧中的比特流进行扫描。每当发现 5 个连续1时,就把这 5 个连续 1 后的一个 0 删除。
    这样可以避免数据字段包含F字符(0x7E)引起帧边界的错误判断。

     

    四、PPP 协议的工作状态

     LCP协商:最大帧长、是否使用地址和控制字段。
    NCP协商:分配IP地址、网络层是否是IP。

    当用户拨号接入 ISP 时,路由器的调制解调器对拨号做出确认,并建立一条物理连接。
    PC 机向路由器发送一系列的 LCP 分组(封装成多个 PPP 帧)。
    这些分组及其响应选择一些 PPP 参数,和进行网络层配置,NCP 给新接入的 PC机分配一个临时的 IP 地址,使 PC 机成为因特网上的一个主机。
    通信完毕时,NCP 释放网络层连接,收回原来分配出去的 IP 地址。接着,LCP 释放数据链路层连接。最后释放的是物理层的连接。

     

    朝闻道
  • 相关阅读:
    国内开源缺陷管理系统PPM Bug v1.0发布
    LUA、python、注册表和正则表达式简述
    精通Windows API 线程同步控制源码
    博士生传给硕士生的经验 (转载)这实在是一篇少走许多学习弯路的好文章
    得到任务管理器的正在执行的程序列表 系统的临时路径及临时文件绝对路径
    创建设一个开机自动运行的计划任务,并且命名和当前登陆用户名相关
    刚踏实入IT行业几个月感悟
    给IT新人的15点建议:苦逼程序员的辛酸反省与总结
    char转换成WCHAR简单方法
    字符操作、文件操作和CMD命令的使用——c/c++编
  • 原文地址:https://www.cnblogs.com/wander-clouds/p/8963928.html
Copyright © 2020-2023  润新知