数据链路层的基本概念
- 结点:主机或者路由器都成为结点
- 链路:网络中两个节点之间的物理通道,链路的传输介质主要有双绞线,光纤和微波。分为有线链路和无线链路。主要是物理通道。
- 数据链路:网络中两个节点之间的逻辑通道,控制数据传输协议的硬件+软件+链路 = 数据链路
- 帧:数据链路层的协议数据单元,封装网络层的数据报。
- 数据链路层就是负责通过一条链路,从一个节点向另一个节点(该节点必须是物理链路直接相连)传送网络层交下来的数据包。就好像搬运工的角色。
数据链路层功能概述
- 在物理层提供服务的基础上,向网络层提供服务,最基本的服务是将来自网络层的数据,可靠的传输到相邻节点的目标机网络层。
- 主要作用就是加强物理层传输原始比特流的功能。
- 将物理层提供的可能出错的物理连接,改造成逻辑上无差错的数据链路,使之对网络层表现为一条无差错的链路。
- 说白一点,就是物理层提供的服务可能有毛病,数据链路层要处理这些毛病,不让网络层看到,让网络层知道我们的服务是安全的。
例子 由物理层负责传输,数据链路层负责差错控制。
功能
- 1 网络层提供服务,无确认无连接服务,有确认无连接服务,有确认面向连接服务。
- 2 链路管理,即连接的建立,维持,释放(用于面向连接的服务)
- 3 组帧
- 4 流量控制(控制发送端的速度)
- 5 差错控制(帧错、位错)
封装成帧,透明传输
- 封装成桢:将网络层传递下来的数据报,加上头部,尾部,就变成了帧。接收端在收到物理层上交的比特流之后,就可以通过头部和尾部判断帧的开始和结束。
- 首部和尾部包含很多控制信息,比如帧定界(确定帧的界限)
- 帧同步:接收方可以通过头部和尾部识别帧的开始与结束。
透明传输
- 指不管传输什么,都应当能在链路上传送。
组帧
字符计数法
以第一个字符来表示当前帧有多少个字符,如果第一个字符出错,整个帧就会出错。
字符填充法
以SOH为帧开始,以EOT为帧结束。, 如果数据里面也包含EOT,那么就跟编程一样,需要转义了。 在所有特殊字符之前填充子节,充当转义的功能。
零比特填充法
帧的头部和尾部由 0+6个1+0组成,而发送方只需要在数据中扫描,如果遇到有5个1的,就在后面加上0,决不允许6个1出现,这样接收方就可以通过特定的字符标识头部尾部,再扫描数据,发现5个1之后将0去掉。
差错控制(检错编码)
差错主要是由噪声引起的,主要原因是局部性的,外界特定的短暂原因所造成的冲击噪声。 差错分为两种,位错,帧错。
链路层为网络层提供的服务有:无确认无连接服务(通信质量好,有线传输链路),有确认无连接服务,有确认面向连接服务。
数据链路层的差错控制
提前发现帧的错误,并且将其抛弃。可以避免无意义的传输。
差错控制(比特错)
简单的理解就是买了六本书发快递,箱子外面写上了六本,这个六本的信息就是冗余码,你接收到的时候发现如果五本,那么就知道错了。
差错控制的方法:
- 非常接近1的概率认为,只要接收端接收到帧了,那么这个帧均无差错,因为通过了循环冗余CRC差错检测技术。
- 但这并不是可靠传输,
差错控制(检错编码)
海明码
流量控制与可靠传输机制
数据链路层的流量控制
- 较高的发送速度和较低的接受能力的不匹配,会造成传输出错,因此流量控制也是数据链路层的一项重要工具。
- 数据链路层的流量控制是点对点的,而传输层的流量控制是端到端的。
- 数据链路层流量控制手段是:接收方收不下就不回复确认
- 传输层流量控制手段:接收端给发送端一个窗口公告。
例子就是铲屎官给猫喂食,如果猫还吃得下,那么就会撒娇释放信号,需要再吃。如果吃不下,就不会释放信号。
流量控制的方法
- 停止等待协议:每次发送一个帧就停止发哦是那个,等待对方的确认,再发送。
效率低下。
滑动窗口协议
- 停止-等待协议可以看作是发送窗口=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地址。
无线局域网的分类
广域网
- 通常跨接很大的物理范围,所覆盖的范围从几十公里到几千公里,他能连接多个城市或国家,或横跨几个州并能提供远距离通信。形成国际性的远程结构。
- 广域网还包括节点交换机,这也是与局域网的区别,广域网覆盖了物理层,数据链路层以及网络层。
- 而局域网只覆盖了物理层和数据链路层。
- 广域网主要负责点对点的通信,在于资源功共享,而局域网一般是总线型拓扑结构,重在资源传输,
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,那么网桥就知道了他们两个都在同一个网断内,那么就会丢弃该帧。
源路由网桥。
在发送帧之前,先将最佳路径放在了帧首部,怎么知道最佳路径呢?那就是先发送一个发现帧,让他去探路。
交换机(多接口网桥)
网桥通常只有两个端口,要扩展以太网一般需要多个网桥,那是比较浪费的,所以就诞生了交换机,他是一个有多个接口的网桥。 交换机的工作原理同网桥类似。
交换机的交换方式
直通式交换机
- 查完目的地址之后就立刻转发。
- 延迟小,可靠性低,无法支持具有不同速率的端口交换。
存储转发式交换机
解决直通式交换机的缺点。
- 将帧放入高速缓存,并且检查是否正确,正确则转发,错误则丢弃。
- 延迟大,可靠性高,可以支持具有不同速率的端口的交换。
冲突域和广播域
|