计算机网络温习-数据链路层概述

OSI七层模型与TCP/四层模型的对应关系

 

数据链路层要做什么工作?

①封装成帧

"帧"是数据链路层数据的基本单位,发送端在网络层的一段数据前后添加特定标记形成"帧",接收端根据前后特定标记识别出"帧",物理层不会管你是不是帧,仅传输比特位。

 

②透明传输

"透明"在计算机领域是非常重要的一个术语,"一种实际存在的事物,却又看起来不存在一样","即是控制字符在帧数据中,但是要当做不存在去处理"。

在一个帧数据中,帧的首部和尾部是特定的控制字符(特定比特流),帧的首部用SOH(SOH:00000001)表示,帧的尾部用EOT(EOT:00000100)表示。如果数据里面恰好有这些类似SOH、EOT这样的比特流怎么办呢?

 

 

咱们可以在帧数据里边的EOT这种特殊的比特流,加上一个转移字符ESC。

 

那。。。如果在帧数据里边,发送的数据中包含转义字符怎么办呢?我们两次使用转义字符就OK了。就例如发送2个反斜杠,"\\\\",我们可以用4个反斜杠来表示即可,第一个反斜杠用来说明第二个反斜杠不是用来转义的,以此类推。

 

③差错监测

物理层只管传统比特流,无法控制是否出错

数据链路层负责起"差错监测"的工作。

那么差错监测试的方法有哪些呢?

第一种是奇偶校验码,第二种是循环冗余校验码。

【奇偶校验码】

例如:

00110010 => 1    0+0+1+1+0+0+1+0 = 3(奇数)

00111010 => 0    0+0+1+1+1+0+1+0 = 4(偶数)

用和来计算起奇偶性,来决定校验码是0还是1,但是有局限性。如果有2个比特位出错了,起奇偶性没有改变,就会差错监测不靠谱。

【循环冗余校验码】

如何求可校验的位串?

1.选定一个用于校验的多项式G(x),并在数据尾部添加r个0

2.将r个0后的数据,使用模"2"除法除以多项式的位置串

3.得到的余数填充在原数据r个0的位置得到可校验的位串

例子1:

使用CRC(循环冗余校验码)计算101001的可校验位串。其中G(x)=x³+x²+1

解:

多项式G(x)是1101

在101001添加r个0,得到101001000,这个r是G(x)的最高阶,r=3

然后将101001000用模"2"除法,除以1101,得出余数是001

再次将余数001,填充回给添加的那3个0,得到可校验位串101001001

最终得出:咱们要发送的数据是101001,它的可校验位串是101001001,那么接收端就用这个校验位串101001001,去除以接收的数据,如果余数是0,那么接收的数据是正确的,否则余数不为0,接收的数据就是有错误的

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值