计算机网络数据链路层
Posted coderlin_
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了计算机网络数据链路层相关的知识,希望对你有一定的参考价值。
数据链路层的基本概念
- 结点:主机或者路由器都成为结点
- 链路:网络中两个节点之间的物理通道,链路的传输介质主要有双绞线,光纤和微波。分为有线链路和无线链路。主要是物理通道。
- 数据链路:网络中两个节点之间的逻辑通道,控制数据传输协议的硬件+软件+链路 = 数据链路
- 帧:数据链路层的协议数据单元,封装网络层的数据报。
- 数据链路层就是负责通过一条链路,从一个节点向另一个节点(该节点必须是物理链路直接相连)传送网络层交下来的数据包。就好像搬运工的角色。
数据链路层功能概述
- 在物理层提供服务的基础上,向网络层提供服务,最基本的服务是将来自网络层的数据,可靠的传输到相邻节点的目标机网络层。
- 主要作用就是加强物理层传输原始比特流的功能。
- 将物理层提供的可能出错的物理连接,改造成逻辑上无差错的数据链路,使之对网络层表现为一条无差错的链路。
- 说白一点,就是物理层提供的服务可能有毛病,数据链路层要处理这些毛病,不让网络层看到,让网络层知道我们的服务是安全的。
例子
由物理层负责传输,数据链路层负责差错控制。
功能
- 1 网络层提供服务,无确认无连接服务,有确认无连接服务,有确认面向连接服务。
- 2 链路管理,即连接的建立,维持,释放(用于面向连接的服务)
- 3 组帧
- 4 流量控制(控制发送端的速度)
- 5 差错控制(帧错、位错)
封装成帧,透明传输
- 封装成桢:将网络层传递下来的数据报,加上头部,尾部,就变成了帧。接收端在收到物理层上交的比特流之后,就可以通过头部和尾部判断帧的开始和结束。
- 首部和尾部包含很多控制信息,比如帧定界(确定帧的界限)
- 帧同步:接收方可以通过头部和尾部识别帧的开始与结束。
透明传输
- 指不管传输什么,都应当能在链路上传送。
组帧
字符计数法
以第一个字符来表示当前帧有多少个字符,如果第一个字符出错,整个帧就会出错。
字符填充法
以SOH为帧开始,以EOT为帧结束。,
如果数据里面也包含EOT,那么就跟编程一样,需要转义了。
在所有特殊字符之前填充子节,充当转义的功能。
零比特填充法
帧的头部和尾部由 0+6个1+0组成,而发送方只需要在数据中扫描,如果遇到有5个1的,就在后面加上0,决不允许6个1出现,这样接收方就可以通过特定的字符标识头部尾部,再扫描数据,发现5个1之后将0去掉。
差错控制(检错编码)
差错主要是由噪声引起的,主要原因是局部性的,外界特定的短暂原因所造成的冲击噪声。
差错分为两种,位错,帧错。
- 位错:比特位出现错误。
- 帧错:丢失,重复,失序等。
链路层为网络层提供的服务有:无确认无连接服务(通信质量好,有线传输链路),有确认无连接服务,有确认面向连接服务。
数据链路层的差错控制
提前发现帧的错误,并且将其抛弃。可以避免无意义的传输。
差错控制(比特错)
-
物理层的编码针对的是单个比特,它主要是解决比特传输的时候比特同步的问题。
-
数据链路层是针对一组比特,通过冗余码的技术检测一组二进制比特流在传输的过程中是否发现问题。
-
冗余码:
简单的理解就是买了六本书发快递,箱子外面写上了六本,这个六本的信息就是冗余码,你接收到的时候发现如果五本,那么就知道错了。
差错控制的方法:
- 非常接近1的概率认为,只要接收端接收到帧了,那么这个帧均无差错,因为通过了循环冗余CRC差错检测技术。
- 但这并不是可靠传输,
差错控制(检错编码)
海明码
- 发现双比特错,纠正单比特错。
流量控制与可靠传输机制
数据链路层的流量控制
- 较高的发送速度和较低的接受能力的不匹配,会造成传输出错,因此流量控制也是数据链路层的一项重要工具。
- 数据链路层的流量控制是点对点的,而传输层的流量控制是端到端的。
- 数据链路层流量控制手段是:接收方收不下就不回复确认
- 传输层流量控制手段:接收端给发送端一个窗口公告。
例子就是铲屎官给猫喂食,如果猫还吃得下,那么就会撒娇释放信号,需要再吃。如果吃不下,就不会释放信号。
流量控制的方法
- 停止等待协议:每次发送一个帧就停止发哦是那个,等待对方的确认,再发送。
效率低下。
滑动窗口协议
- 后退N帧协议(GBN)
- 选择重传协议(SR)
- 停止-等待协议可以看作是发送窗口=1,接收窗口=1的滑动窗口。
- 后退N帧协议(GBN)发送窗口》1,接收窗口=1
- 选择重传协议:发送窗口》1,接收窗口》1
可靠传输,滑动窗口,流量控制的概念
- 可靠传输:发送端发啥,接收端收啥。
- 流量控制:控制发送速率,使接收方有足够的缓冲空间来接收每一个帧。
滑动窗口解决:流量控制,可靠传输(发送方自动重传。)
停止-等待协议
- 在以前数据链路质量较差的时候,数据链路层就承担了可靠传输的角色,使用停止-等待协议,重传等,保证传输的可靠性。
- 现在发展也来越好,停止等待协议等由传输层做,数据链路层负责更快的传输信息。
除了比特出差错还有可能会出现丢包。再者为了实现流量控制,
无差错情况
有差错情况
- 假设发送1帧之后丢失了,迟迟没有收到接收方的确认通知。发送方会在超时计时器到点的时候重新发送一个数据。
- 发送方每发送一个数据,都会开启一个超时定时器。
- 注意事项:
保留副本和编号是为了超时重传。
ACK丢失
确认帧丢失:发送方会继续超时重传,而接收方收到同样的一帧之后会将他丢弃,然后重新传ACK帧。
ACK迟到
确认帧超时之后才收到:
发送方继续超时重传,接收方继续重传确认帧。而当发送方再收到延迟的ACK的时候,会直接丢弃掉。
利用这样的停止-等待协议,可以在不可靠的传输链路上,建立稍微可靠的传输。
停止等待协议特点
- 简单
- 信道利用率低
信道利用率
信道吞吐率 = 信道利用率 * 发送方数据传输率。
后退N帧协议(GBN)
停止等待协议效率太低,几乎一半的时间都在等待接受确认。
那么能不能增加信道利用率呢?
提高发送的帧数,比如每一次发送三个帧。
这样也带来其他问题:
- 必须增加序号范围,每一帧都必须标上序号标识
- 发送方需要缓存多个分组,才能知道到时候丢失重传的是哪一个。
为了解决这两个问题,就出现了后后退N帧协议(GBN)和选择重传协议 (SR)。
后退N帧协议的滑动窗口。
上面说过,停止-等待协议其实就是发送窗口为1,接受窗口也为1。
而后退N帧协议,发送窗口>1,接受窗口 = 1
- 接收窗口还是1,但是发送窗口大于1,发送方可以同时发送如图6个帧,而接收方一次只能接收一个帧,只要当发送方接收到0号帧的确认收到信息,窗口才会继续往下挪动,发送6号帧。
发送方的状态分成了四种。 - 发完被确认的
- 已经发送但是等待确认
- 还能发送
- 还不能发的。
GBN发送方必须响应的三件事情
1 上层的调用(网络层)
上层调用的时候,需要检查发送窗口是否已经满,满了可以先缓存,等窗口腾出来位置继续发送。
2 收到了一个ACK
这是对接收方来说的,在GBN协议中,对帧的确认采用的是累计确认的方式,必须你只要返回了确认收到5号帧的数据,那么就标识你之前0-4号帧的数据都已经收到了。
3 超时事件
协议的名字为后退N帧协议,就是来源于,当出现丢失和时延过长帧时,发送方的行为会后退。就跟停止-等待协议一样,定时器将再次用于恢复数据或者确认帧的丢失,出现超时,那么发送方将重传所有已发送但未被确认的帧。
GBN接收方要做的事情
- 如果正确收到n号帧,并且按序,那么接收方为n帧发送一个AKC,并将该帧中的数据部分交付给网络层。
- 其余情况都会丢弃帧,并为最近按序接收的帧重新发送AKC,接收方无需缓存任何失序帧,只需要维护一个信息。expectedseqnum(下一个按序接收的帧序号)
如上是发送方和接收方互相工作。
- 发送方一口气接收了5个帧。但是2帧丢失了,所以接收方在接收到3帧的时候就开始丢弃了,然后一直重传ACK 1。
- 等到发送方法发现2帧超时了,那么他就会重新发送2号帧以及2号帧之后的东西。
滑动窗口长度
- 比如现在用2个比特对帧编号,那么窗口应该满足1和3。如果我们用窗口为4来进行发送,就可能会出现。那么每个帧的序号范围就是 00 01 10 11,也就是0123,只能用0123来对帧进行编序。
- 而如果用窗口为4,假设发送的是0123 0123八个帧,用四个窗口来发送,如果四个帧都被丢失了,那么就会重新发0123,但是接受端这时候并不知道0123 是前四个帧,还是后四个帧。所以才规定帧长度必须满足一定的条件。
GBN重点总结
- 接收方累计确认
- 接收端只按序接受,不按序丢掉,并且重新发送一个ACK。
- 发送窗口为2^n-1,接受窗口必须是1.
性能分析
- 比对 停止等待洗协议,GBN大大提高了信道利用率。
- 在重传的时候,会把已经正确发送的帧重新发送一遍。
- 为了解决第二个问题,就出在了选择重传协议。
选择重传协议(SR)
GBN协议的弊端:批量重传。
解决办法:设置单个确认,同时加大接受端口,设置接受缓存,缓存乱序到达的值。
选择重传协议的发送窗口》1,接收窗口》1
发送方的状态:发完被确认的,已经发送但等待确认的,发完而且被确认的,还能发送的,还不能发的。
接收方的状态:与GBN后退N帧协议不同的是,接收方的窗口大于1,并且假设5帧是没收到的,然后收到了后面的六帧,这时候其实是会将6帧缓存的,然后7和0也是继续等待接受的。这是和GBN不同的点。缓存。
SR发送方必须相应的三件事。
- 上层的调用,跟GBN类似,收到网络层的数据之后,发送方要检查下一个可用于帧的序号,是否符合发送情况,不符合会先缓存。
- 收到了一个ACK,发送方会这样处理:
2号帧并没有收到确认,3号帧收到了确认,如果这时候收到了2的确认帧, 那么窗口就是往前挪到4号帧的位置,
然后发送567号帧。
那么如果收到的不是2号帧,而是4号帧,那么窗口不会变,只会将4号帧的状态改为已接受确认帧。 - 超时事件,每一个帧都有自己的定时器,超时事件发生后,只会重传一个帧。
接收方要做的事
- 对于接收窗口内的帧,来者不拒。比如收到了处于窗口内,但不是按序的帧,那么收到谁,确认谁,只有窗口内第一个帧收到之后,才会将连续的帧交给网络层,然后向前继续移动滑动窗口。
比如
5号帧待接收,6号帧确认接受,这时候来了7号帧,那么缓存7号帧,
又来了5号帧的话,那么该窗口的第一个帧已经收到了,所以会将连续的,就是567三个帧交给网络层,然后窗口往前挪动到0的位置,
如果收到了窗口序号外,窗口左边的帧,很有可能是确认帧丢失了,所以会返回一个ACK,继续告诉发送方,这些我已经接收到了。
- 如上,当接收窗口收到0的时候,就返回确认0,并且0处于接受窗口的第一个,所以窗口移动。
- 2号帧丢失了,接收方迟迟没收到2号帧,那么它会将后面收到的345号帧缓存并且返回确认帧。
- 发送方法线2号帧超时之后,才继续重传2号帧,此时接收方终于等到了2号帧,一次性将2-5帧交付,发送2号帧的确认,然后窗口移动。
- 发送方此时才收到3号帧的确认,但由于2号帧迟迟未来,所以窗口不敢移动。只有等到收到2号桢的确认才窗口才可以向前移动。
滑动窗口长度
- 发送窗口最好等于接收窗口。
- 窗口的最大值是2^(n-1),n个比特来排序 ,比如2个比特,能表示的数字有00 01 10 11四个,也就是0,1,2,3,那么窗口的最大值就是2.
总结:
- 对数据帧逐一确认,收到一个确认一个。
- 只重传出错的帧。
- 接收方有缓存。
- 窗口最大值等于2^(n-1)
信道划分介质访问控制
传输数据使用的两种链路。
- 点对点链路:两个相邻节点通过一个链路相连,没有第三者,比如PPP协议,常用语广域网。比如电话。
- 广播式链路:所有主机共享通信介质。比如你说话,介质为空气,在场的所有人都听得到。应用:早起的总线以太网,无线局域网,常用语局域网。比如对讲机 ,典型的拓扑结构:总线型,星型。
介质访问控制
采取一定的措施,使得两队节点之间的通信不会发生相互干扰的情况。
分为两类:静态划分信道。动态分配信道。
信道划分介质访问控制
将使用介质的每个设备与来自同一信道的其他设备的通信隔离开,把时域和频域资源合理的分配给网络上的设备。
频分多路复用FDM
按频率划分。
时分多路复用TDM
按时间划分。
频分复用很像并行。时分复用很像并发。
改进的时分复用-统计时分复用STDM
波分多路复用。
码分多路复用CDM
ALOHA协议
随机访问介质访问控制
想发就发,成功率较低。
CSMA协议
如果说ALOHA协议比喻成不听别人说话自己就说,想说就说。那么CSMA协议就是先听再说。
CS就是指载波监听
MA就是多点接入。
介质访问控制总结
局域网基本概念和体系结构
- 局域网:简称LAN,是指在某一区域内由多台计算机互联成的计算机组,使用广播信道。
特点:
局域网拓扑结构:
星型拓扑
总线型拓扑
总线型拓扑就是日常生活中经常使用的。以太网其实就是逻辑上的总线型拓扑结构。
环型拓扑
树形拓扑
传输介质
局域网介质访问控制方法
局域网分类
- 以太网
以太网是最广泛的局域网,包括标准以太网,快速以太网,千兆以太网,和10G以太网。 - 令牌环网
物理上采用了星型拓扑结构,逻辑上是环形拓扑结构。 - FDDI网
- ATM网
- 无线局域网
MAC子层和LLC子层
以太网
- 以太网提供无连接,不可靠的服务。
10BASE-T以太网
适配器和MAC地址
- 计算姐和外界局域网的链接就是靠通信适配器的。
*
就是我们常说的网卡。现在计算机内部一般已经有内嵌的了。 - 适配器上面有处理器(RAM)和存储器(ROM)
- ROM存储器上就有计算机硬件地址MAC地址。
- 在局域网中,硬件地址又称为物理地址,或者MAC地址。就是标识符(身份证)全球唯一
以太网MAC帧
- 物理层会对以太网帧插入一个8字节的前导码,其中包括帧开始定界符。
- 以太网帧的头部一共14个字节,对应目的MAC地址,源MAC地址,类型。而尾部的FCS是冗余编码。
- 每一个帧的最小字节是64个字节,除去头部尾部18个字节,所以数据最小有46个字节才有意义, 1500是硬性规定好的。
- 桢只有帧开始定界符,但没有帧结束定界符,因为以太网帧使用的是曼彻斯特编码,每一个帧的发送有一定的间隔,遇到了没有变化的电压,就表示帧结束了。
高速以太网
IE802.11无线局域网
- 802.11的MAC帧头
- 与以太网v2不同,这里的MAC枕头,不仅有目的MAC地址,源MAC地址,还有接收端也就是基站和发送端基站的MAC地址。
- 比如A发送给B,交给基站P1去发送,而基站p1发送给基站p2,然后p2再交给B。
- 对应的接收端和发送端的地址就是P2MAC地址和P1MAC地址。
无线局域网的分类
-
有固定基础设施的无线局域网。
图中的基站比如wf,它可以使局域网内的电脑互相通信,也可以漫游,就是Ap1的局域网和Ap2的局域网通信,通过Ap1进行转发。通过分配系统DS找到Ap2。 -
无固定基础设施的无线局域网的自组织网络。
广域网
- 通常跨接很大的物理范围,所覆盖的范围从几十公里到几千公里,他能连接多个城市或国家,或横跨几个州并能提供远距离通信。形成国际性的远程结构。
- 广域网还包括节点交换机,这也是与局域网的区别,广域网覆盖了物理层,数据链路层以及网络层。
- 而局域网只覆盖了物理层和数据链路层。
- 广域网主要负责点对点的通信,在于资源功共享,而局域网一般是总线型拓扑结构,重在资源传输,
PPP协议的特点
- 点对点ppp协议是目前使用最广泛的数据链路层协议。用户使用拨号电话接入因特网的时候,一般使用ppp协议。(只支持全双共链路)
ppp协议应满足的要求
无需满足的要求
三个组成部分
- 一个把IP数据宝封装到串行链路的方法
- 链路控制协议LCP:建立并维护数据链路连接,身份验证。
- 网络控制协议NCP:
链路层的设备
上面的集线器的最大通信范围是100m,超出这个范围就恢复不了信息。
物理层扩展以太网。
- 光纤扩展范围
将电信号通过光纤调制器转成光信号,然后传输,再通过光纤解调器转成电信号。
- 多个集线器
使用多个集线器扩展范围,每个集线器及其他所链接的主机就是一个冲突域。同一个冲突域的两台主机同时发送信息就可能导致冲突。
- 链接到主干集线器。
链路层的设备
- 网桥&交换机。
网桥是交换机的前身。
跟集线器的区别:集线器是接受什么转发什么,没有脑子。而网桥会简单的识别帧的MAC地址进行转发。
每一个冲突域通过网桥连接,也称为网段。
网段:指一个计算机网络中使用同一物理层设备(传输介质,中继器,集线器等),能够直接通讯的那一部分。
优点:
- 过滤通信量,增大吞吐量。
- 扩大了物理范围
- 提高了可靠性。
- 可以连接不同物理层,不同MA子层和不同速率的以太网。
网桥分类-透明网桥
透明网桥:透明,指以太网上的站点并不知道所发送的帧要经过那几个网桥,是一种即插即用的设备。(自学习,网桥会生成转发表)
比如A->B,网桥一开始并不知道拓扑结构。
- 当A发送消息的时候,会在当前的网断发送,那么B和G以及网桥都可以接收到信息。
- 然后B正确收到了信息,此时发送还未停止,网桥1端口收到了A发送的信息,在转发表里面查询,发现没有,那么就记录下来。A==1,之后只要收到了别人给A发送的信息就给1端口就可以了。
- 假如这个时候B=>A,那么B也会在当前网段发送信息,A,G,网桥都可以接收到,这时候A正常接受信息。
- 而网桥A收到了B=>A的信息,就先将B—1记录到转发表,以后只要接收到目的MAC地址是B的就往1号端口发。
- 然后判断帧目的地址,发现是A,此时在转发表有记录A—1,那么网桥就知道了他们两个都在同一个网断内,那么就会丢弃该帧。
源路由网桥。
在发送帧之前,先将最佳路径放在了帧首部,怎么知道最佳路径呢?那就是先发送一个发现帧,让他去探路。
交换机(多接口网桥)
网桥通常只有两个端口,要扩展以太网一般需要多个网桥,那是比较浪费的,所以就诞生了交换机,他是一个有多个接口的网桥。
交换机的工作原理同网桥类似。
交换机的交换方式
直通式交换机
- 查完目的地址之后就立刻转发。
- 延迟小,可靠性低,无法支持具有不同速率的端口交换。
存储转发式交换机
解决直通式交换机的缺点。
- 将帧放入高速缓存,并且检查是否正确,正确则转发,错误则丢弃。
- 延迟大,可靠性高,可以支持具有不同速率的端口的交换。
冲突域和广播域
以上是关于计算机网络数据链路层的主要内容,如果未能解决你的问题,请参考以下文章