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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/danneel/article/details/71076648

数据链路层的功能:

(1) 链路管理:链路的简历、维持和释放
(2) 帧定界
(3) 流量控制
(4) 差错控制
(5) 将数据和控制信息区分开来
(6) 透明传输
(7) 寻址:每一帧都能找到目的站

数据链路层的通信信道:

  1. 点对点信道:一对一进行通信
  2. 广播通信:一对多的通信方式

重要的三个概念:

  1. 物理链路:两个结点的一段物理线路,中间没有任何的交换结点。链路是 一条路径的组成部分。
  2. 逻辑链路:物理链路 + 必要的通信协议的实现硬件和软件
  3. 帧:点对点信道的数据链路层的协议数据单位。

通信的步骤:

这三个步骤,也体现了数据链路层的基本问题。
1、封装成帧:将网络层交付的IP数据报添加首部和尾部。(封装成帧)
2、发送:将封装好的帧进行发送(透明传输)
3、接收分析:检验接收到的帧是否有差错,若无,提取IP数据报,提交上层网络层,如果有错,丢弃帧。(差错检测)

封装成帧:

将上层的数据按照帧协议的最大传输单元(mtu) + 帧头(有控制字符soh,十六进制编码为01)和帧尾(有控制字符eof,十六进制编码为04)(这两者还有一个帧定界的作用)

透明传输:

在文本文件传输的情况下,任何8比特的组合不会出现帧定界符的编码一样的情况;不管键盘输入什么字都可以放在帧中传输。问题,在非ASCII文件中万一在数据段出现了帧的控制字符,传输过程中接受数据被提前结束怎么办?
解决方法:字符填充(字节填充),发送端的数据链路层在数据中出现的控制字符前插入一个转义字符esc(十六进制为1b)。在接收端的数据链路层在发往网络层的时候删除这个插入的转义字符。

差错检查:

比特差错:0变1,1变0
误码率:在一段时间内,传输错误的比特占所传输比特总数的比率称为误码率(ber)。
循环冗余检查(crc):在数据链路层使用的检错技术。

现假设选择的CRC生成多项式为G(X) = X4 + X3 + 1,要求出二进制序列10110011的CRC校验码。下面是具体的计算过程:
(1)首先把生成多项式转换成二进制数,由G(X) = X4 + X3 + 1可以知道(,它一共是5位(总位数等于最高位的幂次加1,即4+1=5),然后根据多项式各项的含义(多项式只列出二进制值为1的位,也就是这个二进制的第4位、第3位、第0位的二进制均为1,其它位均为0)很快就可得到它的二进制比特串为11001。
(2)因为生成多项式的位数为5,根据前面的介绍,得知CRC校验码的位数为4(校验码的位数比生成多项式的位数少1)。因为原数据帧10110011,在它后面再加4个0,得到101100110000,然后把这个数以“模2除法”方式除以生成多项式,得到的余数(即CRC码)为0100,如图5-10所示。注意参考前面介绍的“模2除法”运算法则。

(3)把上步计算得到的CRC校验0100替换原始帧101100110000后面的四个“0”,得到新帧101100110100。再把这个新帧发送到接收端。
(4)当以上新帧到达接收端后,接收端会把这个新帧再用上面选定的除数11001以“模2除法”方式去除,验证余数是否为0,如果为0,则证明该帧数据在传输过程中没有出现差错,否则出现了差错。

ppp协议

PPP(点到点协议)是为在同等单元之间传输数据包这样的简单链路设计的链路层协议。这种链路提供全双工操作,并按照顺序传递数据包。设计目的主要是用来通过拨号或专线方式建立点对点连接发送数据,使其成为各种主机、网桥和路由器之间简单连接的一种共通的解决方案。

功能:

链路控制
  PPP为用户发起呼叫以建立链路;在建立链路时协商参数选择;通信过程中随时测试线路,当线路空闲时释放链路等。PPP中完成上述工作的组件是链路控制协议。

LCP(Link Control Protocol,LCP)。
网络控制
  当LCP将链路建立好了以后,PPP要开始根据不同用户的需要,配置上层协议所需的环境。PPP使用网络控制协议NCP(Network Control Protocol,NCP)来为上层提供服务接口。针对上层不同的协议类型,会使用不同的NCP组件。如对于IP提供IPCP接口,对于IPX提供IPXCP接口,对于APPLETALK提供ATCP接口等。

组成部分:

1、将IP数据报封装到串行链路的方法,即支持异步链路,也支持面向比特的同步链路。
2、一个用来简历、配置 和测试数据链路连接的链路控制协议LCP。
3、一套网络控制协议NCP。

帧格式:

PPP帧的首部为四个字段,尾部为两个字段;

首部的第一个字段和尾部的第二个字段都是十六进制的0x7E,标志字段表示一个帧的开始或者结束,标志字段也是PPP帧的定界符,连两个帧之间只要一个定界符,如果连续出现两个定界符,则表示是空串。

PPP首部的第四个字段是2个字节的协议字段。当协议字段为0x0021时,PPP帧的信息字段就是IP数据报;若为0Xc021,则信息字段是PPP链路控制协议LCP的数据;而0x8021表示这是网络层的控制数据。

数据完整:

字节填充:

当信息字段出现和标志字段一样的比特,将采用字节填充的方式避免出现歧义。
1、信息字段出现的每个0x7E转换===>为0x7D和0x5E,
2、信息字段出现的0x7D转换====>为0x7D和0x5D
3、小于0x20的控制字符,添加0x7D。

零比特填充法:

每出现5个连续的1,立即填入一个0。

PPP回话的四个阶段

既然要对PPP协议详解,那么肯定需要对PPP协议的四个阶段进行了解了。一次完整的PPP回话过程包括四个阶段: 链路建立阶段、确定链路质量阶段、网络层控制协议阶段和链路终止阶段(如图2所示)。

PPP回话过程包括四个阶段

(1) 链路建立阶段:PPP通信双方用链路控制协议交换配置信息,一旦配置信息交换成功,链路即宣告建立。配置信息通常都使用默认值,只有不依赖于网络控制协议的配置选项才在此时由链路控制协议配置。值得注意的是,在链路建立的过程中,任何非链路控制协议的包都会被没有任何通告地丢弃。

(2) 链路质量确定阶段:这个阶段在某些文献中也称为链路认证阶段。链路控制协议负责测试链路的质量是否能承载网络层的协议。在这个阶段中,链路质量测试是PPP协议提供的一个可选项,也可不执行。同时,如果用户选择了验证协议,验证的过程将在这个阶段完成。PPP支持两种验证协议:密码验证协议(PAP)和握手鉴权协议(CHAP)。

(3) 网络层控制协议阶段:PPP会话双方完成上述两个阶段的操作后,开始使用相应的网络层控制协议配置网络层的协议,如:IP、IPX等。

(4) 链路终止阶段:链路控制协议用交换链路终止包的方法终止链路。引起链路终止的原因很多:载波丢失、认证失败、链路质量失败、空闲周期定时器期满或管理员关闭链路等。

局域网的拓扑:

分类:星形网,环形网,总线网,树形网

共享信道的划分:

1、静态划分信道:频分,时分,波分,码分等,一旦分配到信道就不会与其他用户冲突。
2、动态媒体接入控制:
随机接入:所有用户随机发送信息,会出现碰撞的现象。
受控接入:用户服从控制,轮询地发送信息。

适配器的作用:

进行串行\并行的转换;对数据进行缓冲;在计算机操作系统安装驱动设备;实现以太网协议

CSMA/CD:

载波监听多点接入/碰撞检测。一个站不能同时进行发送和接收,因此,不能进行全双工通信而进行双向交替通信(半双工通信)

MAC地址:

实际是适配器地址或适配器标识符EUI-48,有两个字节的也有6个字节的,目前使用的是6个字节的。全球由IEEE的注册管理机构RA(局域网全球地址法定管理机构)负责分配地址字段的6个字节中的前三个字节(也叫地址块,也叫组织唯一标识符OUI,通常也叫公司标示符);一般后面的三个字节由厂家来进行分配,也叫做扩展标示符;一个地址块可以有2的24次方个不同的地址,这种地址也叫做MAC-48(通用简写EUI-48,英文为扩展的唯一标识)

例题:

eg1:
一个PPP帧的数据部分(用十六进制写出)是7D 5E FE 27 7D 5D 7D 5D 65 7D 5E。试问真正的数据是什么??
解:
根据:字节填充的法则,可以得到:
具体的做法是将信息字段中出现的每一个0x7E字节转变成2字节序列(0x7D,0x5E)。若信息字段中出现一个0x7D的字节,则将其转变成2字节序列(0x7D,0x5D)。若信息字段中出现ASCII码的控制字符,则在该字符前面要加入一个0x7D字节。这样做的目的是防止这些表面上的ASCII码控制字符被错误地解释为控制字符。

真正的16进制数据是7E FE 27 7D 7D 65 7E

eg2:
假定1KM长的CSMA/CD协议网络的数据率为1Gb/s。设信号在网络上的传播速率为200000KM/S。求能够使用此协议的最短帧长??
解:
对于 1km 电缆,单程传播时间为1÷200000=5×,即5us,来回路程传播时间为10us。为了能够按照CSMA/CD工作,最小帧的发射时间不能小于10us。以1Gb/s速率工作,10us可以发送的比特数等于:

10x10的-6次方/1x10的-9次方 = 10000,因此,最短帧是10000 位或 1250 字节长。


all

猜你喜欢

转载自blog.csdn.net/danneel/article/details/71076648