计算机网络——数据链路层(PPP)

数据链路层使用的信道主要有以下两种类型:

(1)点对点信道

(2)广播信道

使用点对点信道的数据链路层

首先明确一下“链路”和“数据链路”并不是一回事。

所谓链路,指的是从一个结点到相邻结点的一段物理线路,而中间没有任何其他的交换结点。

数据链路除了必须有一条物理线路以外,还必须有一些必要的通信协议来控制这些数据的传输。若把视线这些协议的硬件和软件加到链路上,就构成了数据链路。

点对点信道的数据链路层的协议数据单元为

点对点信道的数据链路层在进行通信时的主要步骤:

(1)结点A的数据链路层把网络层交下来的IP数据报添加首部和尾部封装成帧。

(2)结点A把封装好的帧发送给结点B的数据链路层。

(3)若结点B的数据链路层收到的帧无差错,则从收到的帧中提取出IP数据报上交给上面的网络层;否则丢弃这个帧。

三个基本问题

封装成帧

封装成帧就是在一段数据的前后分别添加首部和尾部。接收端在收到物理层上交的比特流后,就能根据首部和尾部的标记,从收到的比特流中识别帧的开始和结束。

一个帧的长度等于帧的数据部分长度加上帧首部和帧尾部的长度。

每一种链路层协议都规定了所能传送的帧的数据部分长度上限——最大传送单元MTU

透明传输

由于帧的开始和结束标记是使用专门指明的控制字符( SOT和EOT),因此,所传输的数据中的任何8比特的组合一定不允许使用和用作帧定界的控制字符,否则就会出现帧定界的错误。

为了解决透明传输的问题,就必须设法使数据中可能出现的控制字符在接收端不被解释为控制字符。具体方法是:发送端的数据链路层在数据中出现控制字符的前面插入一个转义字符(ESC)。而在接收端的数据链路层在把数据送往网络层之前删除这个插入的转义字符。

差错检测

比特在传输过程中可能会产生差错。

在一段时间内,传输错误的比特占所传输比特总数的比率称为误码率BER。为保证数据的可靠性,在计算机传输数据时,必须采用各种差错检测措施。目前数据链路层广泛使用了循环冗余检测CRC

M长数据,n位冗余码计算:

用二进制的模2(不进位加法)运算进行2^n乘M的运算,这相当于在M后面添加n个0。得到的(k+n)位的数除以收发双方事先商定的长度为(n+1)的除数P,得出商是Q而余数是R。这个余数R就作为冗余码拼接在数据M的后面发送出去。

接收端把接收到的数据以帧为单位进行CRC检验:把收到的每个帧都除以同样的除数P(模2运算),然后检查得到余数P。

如果传输无差错,则CRC检验后得出的余数R一定是0.

注意:我们现在并没有要求数据链路层向网络层提供可靠传输服务。

点对点协议PPP

PPP协议有三个组成部分

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

(2)一个用来建立、配置和测试数据链路连接的链路控制协议LCP

(3)一套网络控制协议NCP,其中的每一个协议支持不同的网络层协议。

PPP协议的帧格式

PPP帧的首部和尾部分别为四个字段和两个字段。

首部第一个字段和尾部第二个字段都是标志字段F(Flag)规定为“0x7E”。标志一个帧的开始或结束。因此标志字段就是PPP帧的定界符。

连续两个帧之间只需要一个标志字段。如果连续出现两个标志字段,就表示这是一个空帧,应当丢弃。

首部中第二个字段A规定为“0xFF”第三个字段C规定为“0x03”并无意义。

PPP首部第四个字段是2字节协议字段。

IANA网站公布的定义:

http://www.iana.org/assignments/ppp-numbers/ppp-numbers.xhtml#ppp-numbers-2

RFC1662规定如下填充方法:

(1)把信息字段中出现的每一个0x7E字节转变为2字节序列(0x7D,0x5E)

(2)若信息字段中出现了一个0x7D的字节(即出现了转义字符一样的比特组合),则把0x7D转变成2字节序列(0x7D,0x5D)

(3)若信息字段中出现ASCII码的控制字符(即数值小于0x20)则在前面加入0x7D,同时将该字符的编码加以改变。

零比特填充(针对于异步传输的解决方案)

在发送端,先扫描整个信息字段,只要发现5个连续1,则立即填入一个0.因此经过零比特填充数据后的数据,就可以保证信息字段中不会出现6个连续1.

PPP协议的工作状态

PPP链路的起始和终止状态永远是“链路静止”状态。

当用户PC通过调制解调器呼叫路由器的时候,路由器能够检测到调制解调器发出的载波信号,在双方建立了物理层链接之后,PPP就进入“链路建立”状态,其目的是建立链路层的LCP连接。

LCP开始协商配置选项,即发送LCP的配置请求帧。其协议字段置为LCP对应的代码,而信息字段包含特定的配置请求。

协商结束后,双方建立了LCP链路,进入“鉴别”状态。只允许传送LCP协议的分组、鉴别协议的分组。若鉴别身份失败,则转到“链路终止”状态,若鉴别成功,则进入“网络层协议”状态。

PPP链路两端的网络控制协议NCP根据网络层的不同协议相互交换网络层特定的网络控制分组。

当网络层配置完毕后,链路进入可进行数据通信的“链路打开”状态。

数据传输结束后,可以由链路的一端发出终止请求LCP分组。

时间: 2024-10-09 15:18:29

计算机网络——数据链路层(PPP)的相关文章

计算机网络 —— 数据链路层

计算机网络 -- 数据链路层 一. 基本概念 链路(link):物理链路,一条无源的点到点的物理线路段,中间没有其他交换结点.一条链路只是一条通路的一个组成部分. 数据链路(data link):逻辑链路,= 物理链路 + 通信协议(控制数据传输).现在最常用的方法是使用 适配器(网卡) 来实现协议(硬件+软件).一般的适配器都包括了数据链路层和物理层这两层的功能. 帧(frame):数据链路层的协议数据单元 二. 基本问题 封装成帧:在一段数据的前后分别添加首部和尾部,这样就构成了一个帧. 首

计算机网络数据链路层

1.数据链路层使用的信道类型: 点对点信道(1对1) 广播信道(1对多),如:集线器.交换机 2.链路与数据链路: 链路:点对点的物理线路段,中间无任何其他交换结点 数据链路:通信协议 + 软件 + 硬件(一般用适配器即网卡来实现这些协议的软硬件,一般的适配器都包含了链路层和物理层这两层的功能) 3.数据链路层要解决的3个基本问题: 封装成帧:帧头尾用于界定帧 透明传输:发送前用转义字符(ESC)插入到数据包中包含的帧头.尾相同字符 差错检测:接收端用循环冗余检测(CRC)技术计算无余数时,才接

计算机网络--数据链路层

物理层 数据链路层:研究怎么从一个主机传送到另一个主机(在一个局域网内) 使用点对点信道 桢--点对点信道数据链路层的协议数据单元 IP数据报(PDU)--网络层的协议数据单元网络层 传送方式:见下图 三个基本问题 封装成桢:在一段数据前后添加首部和尾部7 首部和尾部作用就是:帧定界 最大传送单元MTU--帧的数据部分小于这个值 帧定界符:SOH和EOT(他们是二进制代码:分别为1和4).(这个东西在传输出现差错的时候作用明显,传送不完全的时候,我们可以通过帧定界符判断这个帧是否完全. 透明传输

数据链路层--PPP协议

数据链路层使用的信道主要有两种类型:点对点信道和广播信道. 点对点 路由器在转发分组时只使用了下面的三层. 链路是从一个结点到相邻结点的一段物理线路,中间没有其他交换结点. 必须有一些必要的通信协议来控制这些数据在链路上的传输.把实现这些协议的硬件和软件加到链路上,就构成了数据链路.现在使用网络适配器来实现这些协议. 点对点信道的数据链路层的协议数据单元--帧. 数据链路层把网络层交下来的数据构成帧发到链路上,以及把接收到的帧中的数据取出并上交给网络层.网络层协议的数据单元是IP数据报. 点对点

第二章 TCP/IP 基础知识

? TCP/IP ?transmission control protocol and ip internet protocol 是互联网众多通信协议中最为著名的. ? 2.2 TCP/IP 的标准化 2.2.2 TCP/IP 标准化精髓 TCP/IP 协议始终具有很强的实用性. 相比于TCP/IP ,OSI 之所以未能达到普及,主要原因在于未能尽早的制定可行性较强的协议.未能提出应对技术快速更新的协议以及没有能及时进行后期的改良的方案. 2.2.3 TCP/IP 规范 --RFC 那些需要标准

五层网络体系结构

一.五层网络体系结构 五层协议的网络体系结构从顶至下包括下面五层: 1.应用层: 2.运输层: 3.网络层: 4.数据链路层: 5.物理层. 二.每一层对应的协议与硬件 名称 对应的协议 对应的硬件 应用层 FTP(文件传输协议),TELNET(远程终端协议),HTTP(超文本传送协议),SMTP(简单邮件传送协议),DHCP(动态主机配置协议),SNMP(简单网络管理协议) 运输层 TCP,UDP 四层交换机,工作在第四层的路由器 网络层 IP,ARP,ICMP,RARP,AKP,UUCP 路

ECC协议栈学习总结

            ECC协议栈学习总结 目录 1 前言    3 2  ECC通讯原理... 3 2.1   ECC通讯模型... 3 2.2   ECC通讯实现... 5 2.2.1 物理层实现..................................................................................................... .5 2.2.2 数据链路层实现...............................

从输入url开始,完善前端体系架构

原文链接: https://segmentfault.com/a/1190000013662126 从输入URL到页面加载的过程?如何由一道题完善自己的前端知识体系! javascript 前端 232 前言 见解有限,如有描述不当之处,请帮忙指出,如有错误,会及时修正. 为什么要梳理这篇文章? 最近恰好被问到这方面的问题,尝试整理后发现,这道题的覆盖面可以非常广,很适合作为一道承载知识体系的题目. 关于这道题目的吐槽暂且不提(这是一道被提到无数次的题,得到不少人的赞同,也被很多人反感),本文的

[技术栈]CRC校验原理及C#代码实现CRC16、CRC32计算FCS校验码

1.CRC.FCS是什么 CRC,全称Cyclic Redundancy Check,中文名称为循环冗余校验,是一种根据网络数据包或计算机文件等数据产生简短固定位数校验码的一种信道编码技术,主要用来检测或校验数据传输或者保存后可能出现的错误.它是利用除法及余数的原理来作错误侦测的. FCS,全称Frame Check Sequence,中文名称为帧校验序列,俗称帧尾,即计算机网络数据链路层的协议数据单元(帧)的尾部字段,是一段4个字节的循环冗余校验码. 注:CRC循环冗余校验和FCS帧校验序列是