计算机网络-数据链路层

数据链路层

帧的组成

封装帧是由数据链路层-网卡完成的。

帧/帧长 = 帧头 + IP数据报(IP 包) + 帧尾

对于帧而言,所能传送的数据长度也就是不包括帧头、帧尾的数据部分 上限(IP数据报的长度)叫做最大传送单元(Maximum Transfer Unit)

SOH 和 EOT有什么用?

确定一个帧是否完整

Start Of Header-SOH-位于帧的最前面,表示帧的开始-16进制-01-二进制-00000001

End Of Transmission-EOT-位于帧的最后面,表示帧结束-16进制-04-二进制-00000100

当一个帧,发送途中出现了问题,这时接收方收到的帧是没有帧尾的。这时发送方重新发送的这个帧,也已经传输过来了,所以面对

A- 和 A-B,这种情况,接收方就可以知道A-是一个无用的帧。因为A-在A-B前面,A-B是一个完整的帧,A-肯定是在中途出现了丢失

当发现传递的数据如下

00000001 + 0110 1111 0110 1011+ 00000100 = 帧头+ok + 帧尾

代表数据帧是对的。

特殊情况

当传输的数据中有一个字节恰好为00000100,按照上面说的情况,接收方,会错误的认为该帧已经结束,会将后面的剩余部分丢弃,因为找不到帧头的标识SOH。
在这里插入图片描述

就像正则一样,对于这种本来就有特殊含义的二进制,在他的前面加一个转义ESC。对于数据链路层来说,这叫字节填充

对应的二进制为0001 1011

具体流程为

发送方:当数据链路层接收到网络层的IP数据报时,开始进行封装帧的操作,如果这是发现IP数据报中有这种(指的是SOH,EOT分别的二进制表示)特殊含义的二进制,则会将其转义

接收方:当数据链路层接收到帧的时候,会对帧进行解包装,就是去掉帧头、帧尾。并且将IP数据报中的刚才的转义字符删除
在这里插入图片描述

如何确定一个帧的数据部分丢没丢失?

对于整个帧,可以通过SOH和EOT判断是不是完整。但是在物理层的时候,还是要一个比特一个比特进行传输,如何确定在传输过程中数据部分是完整的没有发生错误的呢。即数据部分发送前为100110,接收方接收到的数据部分也应该为100110,而不是101110,或者100010等等。即0和1发生变化的情况(术语叫比特差错)

循环冗余检测-Circle Redundancy Check-CRC

前提条件:需要定一个除数P

发送方:接收到上层网络层的IP数据报,可能很大,由于MTU的限制,要对这个IP数据报分成几组发送,每组k个bit,数据101001-k是6,因为0/1就是一位。用帧的数据部分,后面拼上冗余码位数个0(假设冗余码位数为3,001,则在101001后面拼3个0,101001000),再对除数P做除法,什么时候除法可以结束呢?得到的余数的位数比除数的位数少一位,即可结束除法,得到的余数,作为标识,跟在正常帧的数据部分。假设余数为010,则数据帧变为101001(数据部分)010(冗余码)

得到的余数叫做冗余码 术语叫Frame Check Sequence-帧检测序列

接收方:接收到帧之后,去掉帧头、帧尾,对除数P做除法,如果得到的余数为0,则认为这个帧的数据部分是完整的,并且没有丢失的、出错的。反之,则认为这个帧的数据部分是有问题的

CRC是由硬件部分完成的。

为什么会出现帧丢失、帧失序、帧重复?

既然会出现这种情况,说明,数据链路层的协议都不是可靠的传输协议。(对于通信质量差的链路,数据链路层还增加了帧的确认、重传机制)

适配器-adapter-即网卡

计算机和外界联网是通过适配器完成的

适配器又叫网络接口卡-Network Interface Card、网卡

网卡 有两个处理器RAM、ROM

ROM 中存放本机物理地址

RAM 中存放要发送的数据,或者在网络上接收的数据

组装帧,解封帧的操作是由网卡完成的
在这里插入图片描述

目前的计算机主板均嵌入了网卡。原来的计算机是需要插网卡的。适配器和计算机主机通信是通过I/O总线完成的。当主板上插入适配器时,必须把管理适配器的驱动程序安装在操作系统中,驱动程序会告诉适配器,把数据发送到网络中去.

Mac地址

一台计算机的物理地址,也叫Mac地址。主机A和主机B通信,必须知道对方的物理地址,才能进行链路的通信。Mac地址是放在网卡的ROM中,为什么?因为Mac地址是不变的,ROM-Read Only Memory-只读存储器。将不变的信息放到ROM中,需要的时候,直接读出即可。当一个主机有多个网卡,那么对应的就有多个Mac地址。对应的,当主机更换网卡时,对应的物理地址就会改变。如果不更换网卡,仅仅从北京带到上海,其物理地址也不会变。Mac地址是由全球统一的机构颁发的,生产适配器的厂家需要从机构购买

适配器接收帧

当适配器从网络上收到一个Mac帧时,启用硬件检查Mac帧中的目的地址,如果是目的地是本机,则收下。如果不是本机,则丢弃。

Mac帧 = 目的地地址(6字节) + 源地址(6字节) + 类型(2字节,标识上一层使用的是什么协议) + 数据(46-1500字节之间)+FCS(4字节,冗余码)

一个Mac帧的最小长度为64字节=6+6+2+46+4
在这里插入图片描述

调制解调器-猫

概念:将一种信号转为另一种信号的设备。比如将数字信号转为模拟电话信号

一开始的 宽带接入-即用户通过物理线路连接至ISP提供的网络中-也可以简单理解为家里接宽带,是利用电话线的不同频率实现的(直接利用原有电话线,无需重新布线),低频的模拟电话信号是用来打电话(0-4k Hz),把高频的用来上网。将数字信号转换为模拟信号,就是调制解调器,干的工作。

远距离传输就则使用光纤,进行更快传输。

光纤调制解调器

在过去,主机间的链路通信 可以简单理解为布线方式,通常都是铜线的粗缆或者细缆,这种做法的坏处是,当主机距离较远,那么经过通线传输的信号就会衰减,到达接收方的时候,可能都无法识别了。于是当时大量使用转发器。当光纤出现后,使用光信号进行传输,光纤传输时延小、带宽很宽。但是如何在发送时将电信号转为光信号,在接收时又如何将光信号转为电信号的呢。

利用光纤调制解调器。

主机A通过物理线路,连接光纤调制解调器A,光纤调制解调器A将电信号转为光信号。因为信号传输是一个bit一个bit传输,所有最开始是01的高低电流。调至解调器A通过光纤将光信号传送至调制解调器B,调制解调器B将光信号转为电信号后,又通过物理线路转发给源主机B

发送数据完整流程-广播信道

确定目的主机Mac地址

主机A向主机B请求通信,首先要在当前网络里查找是否存在主机B。主机B如果在当前网络中,主机B的适配器(适配器有过滤功能)会检测从网络上收到的Mac帧,如果Mac帧中的目的地址是本机,则收下,否则将帧丢弃

单播帧-一对一-收到的帧的目的地就是本机

广播帧-一对全体-收到的帧目的地是网络里的所有主机

多播帧-一对多-只是发给网络中的部分帧

准备发送数据

  1. 适配器将IP数据报封装成帧

  2. 进行信道检测。确保信道中没有其他主机在发送数据

    信道一般为广播信道-即多个主机使用一条信道、点对点信道。

发送数据

  1. 适配器发送数据,发送数据的同时,适配器依旧要检测信道。当出现碰撞-即在总线上,有多个主机在发送数据,会造成总线的信号电压幅度会增大,当超过固定阈值时,认为发生了碰撞。
  2. 一旦出现碰撞,适配器会立刻停止发送,等待一段时间后,再重新回到上面第二步,进行发送步骤

第二步和第三步所使用的协议叫CSMA/CD-载波监听多点接入/碰撞检测。也就是广播信道所使用的的协议

以上是依赖总线结构的网络,现在为止,是星型结构的网络。

为什么会发生这种变化?

备注

  1. 以太网交换机自学习功能
    在这里插入图片描述

  2. 利用多台交换机构建不同的网络
    在这里插入图片描述

  3. 双绞线的作用?

    减少信号干扰还便宜。详情见知乎

    网线 = 双绞线+RJ-45插头(网线两端的水晶头)

  4. 集线器、交换机、路由器的区别?

    详情见知乎

  5. 主机A-通过双绞线连接-路由器-双绞线-调制解调器A(猫)-光纤-调制解调器B-双绞线-路由器-双绞线-主机B

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值