数据链路层--PPP协议
数据链路层使用的信道主要有两种类型:点对点信道和广播信道。
点对点
路由器在转发分组时只使用了下面的三层。
链路是从一个结点到相邻结点的一段物理线路,中间没有其他交换结点。
必须有一些必要的通信协议来控制这些数据在链路上的传输。把实现这些协议的硬件和软件加到链路上,就构成了数据链路。现在使用网络适配器来实现这些协议。
点对点信道的数据链路层的协议数据单元--帧。
数据链路层把网络层交下来的数据构成帧发到链路上,以及把接收到的帧中的数据取出并上交给网络层。网络层协议的数据单元是IP数据报。
点对点信道的数据链路层在进行通信时的主要步骤如下:
(1)结点A的数据链路层把网络层交下来的IP数据报添加首部和尾部封装成帧。
(2)结点A把封装好的帧发送给结点B的数据链路层。
(3)若结点B的数据链路层收到的帧无差错,则从收到的帧中提取出IP数据报上交给上面的网络层;否则丢弃这个帧。
数据链路层有很多种,但有三个基本问题是共同的。分别是:封装成帧、透明传输和差错检测。
封装成帧
封装成帧就是在一段数据的前后分别添加首部和尾部,这样就构成了一个帧。
网络层的IP数据报传送到数据链路层就称为帧的数据部分。每一种链路层协议都规定了所能传送的帧的数据部分长度上限--最大传送单元MTU。
控制字符名称SOH表示帧的首部,EOT表示帧的结束。
透明传输
当数据中碰巧有控制字符EOT时,后面的数据部分会被丢弃。
这时需要时数据中的控制字符不被当做帧结束的标志。要使其透明。
具体的方法是:发送端的数据链路层在数据中出现控制字符“SOH”或“EOT”的前面插入一个转义字符“ESC”。在接收端的数据链路层在把数据送往网络层之前删除插入的转义字符。
这种方法称为字节填充或字符填充。
差错检测
数据链路层广泛使用了循环冗余检验CRC。
用二进制的模2运算进行2n乘M的运算,这相当于在M后面添加n个0。得到的(k+n)位的数除以收发双方事先商定德 长度为(n+1)位的除数P,得出商Q(不重要)而余数是R(n位,比p少一位)。这个余数R就作为冗余码拼接在数据M的后面发送出去。这种为了进行检错而添加的冗余码常称为帧检验序列FCS。
在接收端把接收到的数据以帧位单位进行CRC检验:把收到的每一个帧都除以同样的除数p,然后检查得到的余数R。
(1)若得出的余数R=0,则判定这个帧没有出错。
(2)若得出的R!=0,则帧出错。
在数据链路层仅仅使用循环冗余检验CRC差错检测技术,则只能对帧的无差错接受。即:“凡是接收端数据链路层接收的帧,我们都以非常接近1的概率认为这些帧在传输过程总没有产生错误”。
这样认为:凡是接收端数据链路层接受的帧均无差错。
数据链路层不是可靠传输。可靠传输是:数据链路层的发送端发送什么,接收端就收到什么。除了比特出错,还有可能出现帧丢失、帧重复和帧失序。
在数据链路层使用CRC检验,能够实现无比特差错的传输,但这不是可靠传输。过去观点:必须让数据链路层向上提供可靠传输,增加了帧编号、确认和重传机制。
点对点协议PPP
是目前使用最广泛的数据链路层协议。
PPP(点到点协议)是为在同等单元之间传输数据包这样的简单链路设计的链路层协议。
PPP协议是用户计算机和ISP进行通信时所使用的数据链路层协议。
PPP协议应该满足的要求:
(1)简单;(2)封装成帧;(3)透明性;(4)多种网络层协议;(5)多种类型链路;(6)差错检测;(7)检测连接状态;(8)最大传输单元;(9)网络层地址协商;(10)数据压缩协商。
最大传输单元是数据链路层可以载荷的数据部分的最大长度,不是帧的总长度。IP数据报的长度是可变的,但是不超过1500字节。
PPP协议有三个部分组成:
(1)一个将IP数据报封装到串行链路的方法。
(2)一个用来建立、配置和测试数据链路连接的链路控制协议LCP。
(3)一套网络控制协议NCP,其中的每一个协议支持不同的网络层协议。
PPP帧的格式
PPP帧的首部和尾部分别为四个字段和两个字段。
首部的第一个字段和尾部的第二个字段都是标志字段F,规定为0x7E.标志字段表示一个帧的开始或结束。因此标志字段是PPP帧的定界符。

字段意义
首部中的地址字段A规定为0xFF,控制字段C规定为0x03。PPP首部的第四个字段是2字节的协议字段。当协议字段为0x0021时,PPP帧的字段就是IP数据报。若为0xC021,则信息字段是PPP链路控制协议LCP的数据,而0x8021表示这是网络层的控制数据。
字节填充
当信息字段中出现和标志字段一样的比特组合时,就采取措施使这种形式上和标志字段一样的比特组合不出现在信息字段中。
当PPP使用异步传输时,它把转义符定义为0x7D,并使用字节填充。
(1)把信息字段中出现的每一个0x7E字节转变成为2字节序列。
(2)若信息字段中出现一个0x7D的字节,则把0x7D转变成为2字节序列(0x7D,0x5D)。
零比特填充
使用零比特填充来实现透明传输。做法:扫描整个信息字段,只要发现有5个连续的1,则立即填入0。接收端在收到一个帧时,先找到标志字段F以确定一个帧的边界,扫描比特流,当发现5个连续的1时,就把这5个1后的一个0删除。
PPP协议的功能
PPP协议的工作状态
当用户拨号接入ISP后,就建立了一条从用户PC到ISP的物理连接。这时,用户PC向ISP发送一系列的链路控制协议LCP分组,以便建立LCP连接。接着还要进行网络层配置,网络控制协议NCP给新接入的用户PC分配一个临时的IP地址。这样PC用户就称为因特网上的一个有IP地址的主机了。
当用户通信完毕时,NCP释放网络层连接,收回原来分配出去的IP地址。接着,LCP释放数据链路层连接。最后释放的是物理层的连接。
当用户PC通过调制解调器呼叫路由器时,路由器就能检测到调制解调器发出的载波信号。在双方建立了物理层连接后,PPP就进入“链路建立”状态,其目的是建立链路层的LCP连接。
这时LCP开始协商一些配置选项,即发送LCP的配置请求帧。这是个PPP帧,其协议字段置为LCP对应的代码,而信息字段包含特定的配置请求。链路的另一端可以faso9ng以下几种响应中的一种:
(1)配置确认帧;(2)配置否认帧;(3)配置拒绝帧。
在“网络层协议”状态,PPP链路的两端的网络协议NCP根据网络的不同协议互相交换网络层特定的网络控制分组。这个步骤非常重要,因为现在的路由器都能够同时支持多种的网络层协议。
数据传输结束后,可以由链路的一端发出终止请求LCP分组请求终止链路连接,在收到对方发来的终止确认LCP分组后,转到“链路终止”状态。如果链路出现故障,也会从“链路打开”状态转到“链路终止”状态。
数据链路层--PPP协议的更多相关文章
- PPP协议
PPP协议PPP协议是二层(数据链路层)协议,常用于拨号上网时客户端向服务器获取IP地址.PPP支持在各种物理类型的点对点串行线路上传输上层协议报文.它具有很多特性,比如支持多协议.提供可选的身份认证 ...
- 2016.6.17 计算机网络复习要点之PPP协议
点对点协议PPP是目前使用最广泛的数据链路层协议. 1.PPP协议的特点: **我们知道因特网用户通常需要连接到某个ISP才能接入到因特网,PPP协议就是用计算机和ISP进行通信时所使用的数据链路层协 ...
- PPP协议总结
PPP协议总结 PPP协议是一种在点到点链路上传输.封装网络数据包的数据链路层协议,PPP支持同步/异步方式的链路上. 一. PPP支持的链路类型 1. 同步和异步专线 2. 同步拨号链路. 3. 异 ...
- ppp协议介绍(转)
原文:https://www.cnblogs.com/gtarcoder/p/6259105.html PPP协议PPP协议是二层(数据链路层)协议,常用于拨号上网时客户端向服务器获取IP地址.PPP ...
- ppp协议解析二
转:http://blog.csdn.net/yangzheng_yz/article/details/11526747 PPP(Point to Point Protocol,点对点协议)协议是为在 ...
- PPP协议(简述)
PPP协议(链路层协议):用于点对点信道.互联网用户通常需要连接到某个ISP(运营商)之后才能接入到互联网,PPP协议是用户计算机和ISP(运营商)进行通信时所使用的数据链路层协议.该协议可支持同一时 ...
- 计算机网络协议,PPP协议分析
一.基本特点 1.PPP协议是计算机网络体系中第二层(数据链路层)的协议 2.PPP帧格式是以HDLC帧格式为基础,做了很少的改动(区别:PPP是面向字符的,而HDLC是面向位的) 3.PPP协议使用 ...
- 计算机网络基础篇-ppp协议
所谓的PPP协议是点对点协议,是目前使用最广泛的数据链路层的协议.大部分用户使用电话线拨号入网的,从用户计算机到ISP的链路所使用的数据链路层协议就是PPP协议. 首先介绍下拨号入网的过程.因特网服务 ...
- PPP协议、PPPoE协议、L2TP协议的关系
1. 简述 首先对这3中协议做一个简单的描述: 协议 协议类型 描述 PPP 点对点链路层协议 应用最广泛的点对点协议,可应用在多种网络,改善了SLIP协议的不足 PPPoE 点对点链路层协议 对PP ...
随机推荐
- sublime Text的一些用法(emmet插件、)
在学的过程中,看到了一个非常方便的html的标签的写法:,插件emmet 一.安装emmet 看清楚哦~~这是Sublime text 3不是2的版本,两者的安装还是有区别的1 ONE:建议到官方下载 ...
- PLSQL 用的让自己更舒心点!
每天开发时候 ,有时候会疲劳! 改下你的PLSQL 字体吧!
- <2013 08 26> 雅思听力相关
近两日开始接触雅思题型,初步做了6套剑桥雅思题的听力部分,完成情况还可以,这里做个总结. 1.听力总共约40左右道题目,30min左右完成,结束后有十分钟把答案写到答题卷上.所有听力材料都只播放一遍! ...
- 常用代码块:java使用剪贴板复制文本
// 获得系统剪切板 Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard(); // 复制到剪切板上 String ...
- 我的Android进阶之旅------>解决Bug:打开eclipse报错,发现了以元素 'd:skin' 开头的无效内容。此处不应含有子元素。
今天来打开Eclipse 报错了,错误信息如下: [2015-08-01 09:07:43 - Android SDK] Error when loading the SDK: Error: Erro ...
- 常用模块一(random模块、time模块、sys模块)
一.random模块 import random # 1 取随机小数 应用:数学计算 ret = random.random() # 大于0且小于1之间的小数 print(ret) # 0.53559 ...
- Js算两经纬度间球面距离
function GetDistance( lat1, lng1, lat2, lng2){ var radLat1 = lat1 * Math.PI / 180.0 var radLat2 = la ...
- python 中 for使用小技巧
testDict = {i: i * i for i in xrange(10)} testSet = {i * 2 for i in xrange(10)} print(testSet) print ...
- 关于服务器jdk版本和代码编译调试兼容问题
首先代码是基于哪个版本编写和调试,有没有用到新版本jdk新的特性,类啊接口啊啥的,用到了的话,就不行了 其他都共有的是向下兼容的 最好开发环境的jdk版本和部署环境的jdk版本匹配.
- Java基础—Java运行原理
Java程序运行原理 在Java中引入了虚拟机(JVM,Java Virtual Machine)的概念,即在机器和编译程序之间加入了一层抽象的虚拟的机器.虚拟机在任何平台上都提供给编译程序一个的共同 ...