计算机网络-数据链路层

带宽是指网络设备所支持的最高速度,与信号在介质中的传播速度无关,
由发送方的发送能力确定?
网络运营商提供的带宽,是通过链路上路由器的出口带宽决定的,
如果路由器出口带宽不够,数据在路由器中等待,则由数据链路层的协议,
发送端会自动将发送速度降下来,从而实现了流量控制。

某一链路带宽为1Mb/s, 则发送方在1us内可向链路发1bit数据,
也就是发送时延=数据长度/信道带宽(发送速率)

什么是端到端,什么是点到点?
端到端,指从发送方到接收方;点到点,指节点到节点。

中继器:
1. 模拟信号和数字信号都可以放大?
2. 不会存储转发
集线器:
多个口,将信号从多个口传出,连在集线器上的工作主机平分带宽
不会隔离冲突域。什么是冲突域?

数据链路层的流量控制是点对点的,而传输层的流量控制是端对端的。

数据链路层的功能:

为网络层提供服务,将网络层的数据“可靠的”传输到相邻节点的目标机网络层(这里的可靠是指?)。
将物理层提供的可能出错的物理连接改造成“逻辑上无差错的数据链路”,使之对网络层表现为一条无差错的链路。

(1) 为网络层提供服务:
		无连接无确认(通信质量好,有线传输链路)
		无连接有确认
		面向连接有确认(通信质量差的无线传输链路)
(2) 组帧: 
	将上层的数据加上头和尾,发送到物理层。头和尾用于帧定界。
	(头和尾的长度是多少?)
	帧的数据部分有个最大长度限制,称为MTU
	组帧的四种方法: 
	
	-  字符计数法: 帧首部有个字段表示帧的数据长度。
		缺点,一个错,全部都错
		
	-  字符填充法
		使用SOH和EOT两个字节分别来表示帧的开始和结束,在碰到帧的原始数据中包含有控制字节时,
		在原始数据中的控制字节前加一个转义字符,接受端去除转义字符
		
	- 零比特填充法
		使用01111110来表示帧的开始和结束,只有这个字节有连续的6个1.
		在帧的数据部分,一旦碰到连续的5个1,就在后面添0;接收端先寻找界定符,然后如果5个1后为0,则删除0。
		这样在寻找帧界定符时,肯定不会找到帧的数据部分。
		实现了透明传输,不会引起对帧边界的判断错误
		
	-  违规编码法
		在曼彻斯特编码中,一个比特中使用低-高或高-低来表示1或0,那使用违规的高-高、低-低来表示帧的开始和结束。

差错控制:

	- 为什么有差错?
		差错来自于噪声,
	- 差错的结果
		帧错(丢失、重复、失序)
		位错(比特位出错)

	对于比特错的情况,有差错控制,包括检错编码和纠错编码(都是针对一组比特位进行的编码)
		- 检错编码:奇偶校验码、CRC循环冗余码
		- 纠错编码:海明码
		(这都要求接收端对收到的数据检查并做出回应?)

经过比特位错的检错和纠错编码,保证了接收到的帧都是无差错的,但还不能保证可靠传输,即“发送端发什么,接收端就收到什么”,因为这只是比特位的检错机制。

【数据链路层的可靠传输通常使用确认和超时重传两种机制来完成 】
数据链路层的流量控制:接受方收不下,就不回复确认。
传输层的流量控制:接受端给发送端一个窗口公告。
(这三个协议都是用来实现可靠传输的,因此也能用在传输层?)

流量控制与可靠传输

在数据链路层中流量控制机制和可靠传输机制是交织在一起的,根据确认和重传机制,在实现了可靠传输时,就自动实现了流量控制。
底层信道可能出现丢包问题,因此需要确认机制。
流控/可靠传输方法: 停等协议、滑动窗口协议(后退N帧、选择重传)。

(1) 停止等待协议: 
		发送-确认-发送-确认……,信道利用率低
		正常与异常情况:
			- 正常, 发送-确认,再发送,再确认
			- 异常,
			 - 发送帧错误或丢失
			 - 确认ack丢失
			 - 确认ack延迟
			 发送数据需要存在副本,发送完需要有计时器,超过计时需要重传
			 发送的帧是否需要编号?因为帧是一个一个发的,等前一个的确认明确收到到才发送下一帧,
			 在出现帧的确认延迟时,假设刚发出去一帧,收到了之前已发送帧的确认帧,
			 按道理讲应该立即丢弃,什么都不做,那么是如何完成的呢?
			 应该是确认帧中包含一个序号,收到时比较此序号和当前序号,发现小则忽略?
		视频中讲,发送帧的序号只有0和1,对应的ack则是ack0和ack1.
   由于停止等待协议整个周期内发送数据时间占比过低,大部分时间都在等待帧确认,
   因此改进采用流水线技术,连续发送多个帧,必须要:
		增大帧序号范围
		需要缓存多个帧
	则引申出来了两个滑动窗口协议
(2)后退N帧协议-GBN
	发送窗口为N,接收窗口为1
	发送窗口分为四部分:已发送已确认(在窗口外),已发送等确认(窗口内),能发送还未发送(窗口内),不能发送(窗口外)
	基本的发送流程: 发送、确认、发送窗口和接收窗口前移(对于发送方,收到了窗口下限帧的确认才前移;对于接收方,收到窗口下限的帧才前移)

	注意点:
		GBN中采用累计确认,接收方不必每个帧都回复确认,可以等一会回复一个最新的帧的确认。
		这个N号帧的确认,表明N号帧和它之前的帧,都被接收方成功接收。

		出现超时时,发送方会重传所有已发送未确认的帧。

		接收方维护一个期望帧序号,expectseqnum,下一个按序接收的帧序号。
		只有在正确且按序收到N号帧时会回复ack,其余情况丢弃该帧且重新回复一个最近已按序接收帧的ack。

		如果发送的滑动窗口特别大,则窗口内可发送的数据越多;
		则某个帧重发时,重发帧的数量也越多;
		如果采用n个比特对帧进行编号,则发送窗口W的范围是 1 <= W <= 2**W - 1,相当于窗口内帧序号要保留一位,
			不然如果本次用完下次从0开始则有可能是重发的0或者是序号用完了的新帧0
	重点:
		1. 累积确认(偶尔捎带确认)
		2. 接受方只按顺序接收帧,不按序则丢弃
		3. 确认序号是已接收最大序号的帧
		4. 接收窗口为1,发送窗口最大为2**n - 1

	缺点: 一个帧出差,后续的帧都需要重传
(3) 选择重传协议-SR
	由累积确认改为单个确认,增大接收窗口,设置好接收缓存,缓存乱序到达的帧。
	这样出错时只需要重传该帧即可。

	SR有发送窗口和接收窗口,发送窗口和GBN一样,也是分为已发送已确认(在窗口外),已发送等确认(窗口内),能发送还未发送(窗口内),不能发送(窗口外)四种状态,接收窗口有已接收(窗口外)、未接收(窗口内)、已接收并缓存(窗口内)、等待接收(窗口内)、不能接收(窗口外)这些状态。
	发送窗口中的帧乱序到达,只有窗口底部帧到达时,才会将数据交付给上层网络层,并移动窗口。

	注意点:
		1. 发送窗口的移动
			收到窗口内帧的回复ack,如果是窗口下界,则移动窗口到相连的已接收到ack且缓存的帧位置
		2. 接收方,对于窗口内的帧来者不拒,如果不是下界则缓存;窗口外的帧直接回复ack(这里的窗口外是指当前窗口外的已接收数据,且不能是太久远的数据?)
		3. 接收窗口的移动
			乱序收到数据缓存,直到收到窗口下届帧,才移动窗口
	接收窗口和发送窗口大小一致,最大值为2**(n-1),n为表示帧序号的比特位,主要是为了区别新帧和旧帧

介质访问控制

两种传输链路: 
	- 点对点链路, 两节点通过一链路相连,没有第三者。 应用广域网,如ppp协议
	- 广播式链路, 所有主机共享通信链路(发出的数据被所有主机接收?),应用:早期的总线网、无线局域网,常用于局域网,典型拓扑结构:总线型、星型(逻辑总线型)

静态访问控制: 通过复用技术使得多个信号组合在一条物理信道上进行传输,多个终端共享信道资源,提高信道利用率
	有频分、时分、波分、码分复用技术

动态访问控制: 信道并非在通信时固定划分给用户,分为随机访问控制和轮询访问控制。
	随机访问: 所有用户可随机发送信息,发送时占用全部带宽(与静态划分信道共享带宽不同)
		- ALOHA协议(不听就说)
			纯ALOHA,不监听信道,不按时间槽发送,随机重发,即想发就发。
			(发送端根据电平变化检测是否有冲突,有则不回复确认,发送端超时未收到回复则认为冲突立即重发数据帧)
		- 时隙ALOHA协议()
			将发送时间片分为多个时间槽,只能在时间片的开始发送数据帧
		- CSMA协议(先听再说)
			发送前监听信道,空闲则发送,忙则等待
			有1坚持、非坚持、p坚持
			(发送端仍然根据是否有确认帧返回判断是否冲突)
		- CSMA-CD协议(先听再说,边听边说), 检测碰撞
			发送前监听信道,边发送边检测信道上信号电压的变化(属于半双工网络)
			检测是否发生碰撞,是接收端收到帧后进行检测,如果数据帧在传播过程中有碰撞,则会检测出来,丢弃此帧。
			发送端发送数据后,数据在路程中发生了来自接收端发送帧的碰撞,则发送端最迟经历2T时间收到接收端的碰撞帧,也就检测到了碰撞。

			不能检测到碰撞后就立即重发
			截断二进制指数规避算法,重传需要退出的时间随重传次数的增大而增大,减少发生碰撞的概率,重传上限16次

			为了使得在检测到碰撞时,帧并未发送结束,从而使得CSMA-CD协议有意义,则需要定义最小帧长。
			那么就要求 数据帧的传输时延 >= 2T, 即最小帧长 = 总线传播时延 * 数据传输速率 * 2 = 2T * 数据传输速率

			以太网规定的最小帧长是64字节
		- CSMA-CA协议(先听再说), 避免碰撞
			CD协议应用于有线网络,总线型网络,CA协议应用于无线局域网
			有礼貌?

			发送数据前,先检测信道是否空闲
			空闲时,先发出RTS,等待CTS帧(相当于先建立连接,为了解决隐蔽站的问题),同时预约信道(发送方告知其他站点自己要传多久数据)

			与CD的区别:
				介质不同
				监听信道的方式不同
				一个检测碰撞,一个避免碰撞
	轮询访问介质访问控制
		既不产生冲突,又要发送时占全部带宽。
		- 轮询协议,主节点轮流“邀请”从属节点发送数据
			问题 1 轮询开销 2 等待延迟 3 单点故障
		- 令牌传递协议
			令牌在环形网络中传递,需要发送数据的主机获取到令牌,将数据帧附加到令牌上,然后传递令牌。
			实现了某一时刻只有一个节点独占信道,无碰撞。
			每个节点都可以在一定的时间内(令牌持有时间)获得发送数据的权利,并不是无限制的持有令牌。

			问题:
				1. 令牌开销 2. 等待延迟 3. 单点故障
			应用于令牌环网(物理上星型,逻辑上环形)
			常用于网络负载重、通信量大的网络

CSMA-CD协议没有确认机制,如果没有检测到冲突就认为帧已被正确接收,假如真的没有被接收,上面的传输层会自动重传(基于传输层的确认机制)
CSMA-CA协议有确认机制,

局域网

使用广播信道,各站为平等关系,共享传输信道
决定局域网的三个要素: 拓扑结构、传输介质和介质访问控制方法

拓扑结构:星型、总线型、环形、树形

传输介质: 有线(光纤、双绞线、同轴电缆),无线(电磁波)
机制访问控制方法: CSMA-CD(总线型、树形局域网),令牌总线、令牌环

分类: 
	- 以太网: 逻辑拓扑总线型,使用CSMA-CD协议
	- 令牌环网: 逻辑环形拓扑
	- FDDI网: 逻辑环形拓扑
	- ATM网: 较新的单元交换技术,使用53固定字节长度的单元进行交换
	- 无线局域网:采用IEEE 802.11标准

以太网

两个标准:V2和IEEE 802.3标准
基带总线局域网规范,使用CSMA-CD协议,因此提供无连接、不可靠的服务
无连接: 发送和接收方直接无握手过程
不可靠:不对发送方的数据帧编号,接受方不向发送方进行确认,差错帧直接丢弃,差错纠正由高层负责
只实现无差错接收,不实现可靠传输

使用集线器,物理上星型,逻辑上线型
采用曼特斯特编码

MAC帧的组成
目的地址 | 源地址 | 类型 | 数据    | FCS
6		|    6  |  2   | 46~1500 | 4

以太网MAC帧长最小64,所以数据部分最小为64-6-6-2-4=46字节。
以太网帧有7字节的前导码和1字节的帧开始定界符,由于以太网帧不连续发送,两帧址间有间隔,同时采用曼彻斯特编码,
因此可以不用帧结束定界符。

无线局域网

802.11的MAC帧格式
无线局域网MAC帧的帧头中,包含源地址、目的地址、发送端地址(基站1),接收端地址(基站2)

有基础设施的无线局域网(有基站)
无基础设施的无线局域网(自组织,无基站)

PPP协议与HDLC协议

广域网(WAN, Wide Area Network), 通常跨接很大的物理范围。
广域网的通信子网主要使用**分组交换**技术,将分布在不同地区的局域网或计算机互联起来,达到资源共享的目的。

PPP协议是点对点协议
PPP协议满足的要求:
	- 简单 			帧无需纠错,无需编号,无需流量控制
	- 封装成帧		帧定界符
	- 透明传输		与帧定界符一样比特组合的数据应该如何处理;异步线路用字节填充,同步线路用比特填充
	- 多种网络层协议  封装的IP数据报可以采用多种协议
	- 多种链路类型	串行、并行, 同步、异步, 电、光
	- 差错检测 		错就丢弃
	- 检测连接状态	链路是否正常工作
	- 最大传送单元	数据部分最大长度MTU
	- 网络层地址协商  知道通信双方的网络层地址
	- 数据压缩协商	
	- 
ppp协议无需满足的要求
	- 纠错
	- 流量控制
	- 序号
	- 不支持多点线路
PPP协议的三个组成部分
		1. 将一个IP数据包封装到串行链路(同步串行/异步串行)的方法
		2. 链路控制协议LCP: 建立并维护数据链路连接。  即身份验证
		3. 网络控制协议NCP: PPP可支持多种网络层协议,每个不同的网络层协议都要一个相同的NCP来配置,为
			网络层协议建立和配置逻辑连接。

	PPP协议帧格式
		使用头/尾帧定界符01111110, 信息部分插入转义字符或0比特填充,实现透明传输。

总结: 
	只支持全双工链路,实现透明传输,实现差错检测,但不纠正差错。
	面向字节,无序号和确认机制,不可靠传输。

链路层设备

在使用集线器连接主机的模型中,主机与集线器距离不能超过100m,为了范围,我们可以在物理层扩大:
	1. 在主机和集线器质检使用光纤连接
	2. 将多个主机分组,每组使用一个集线器连接组内主机,多个组再使用集线器相连
		但有个缺点:尽管所有主机被分为不同的组,但由于组和组仍然使用集线器相连,因为所有主机
		仍在一个冲突域中。

也可以在链路层进行扩大,如下:
网桥是交换机的前身
网桥根据MAC帧的目的地址对帧进行转发和过滤。当它收到一个帧时,并不会向所有接口转发此帧,而是
	先检查此帧的目的MAC地址,然后再确定将该帧转发到哪一个接口,或者是把它丢弃(即过滤)。
ps: 可以看到,与集线器无脑转发相比,网桥多了一层判断机制。

网桥连接两个局域网,也叫做两个网段,每个局域网或网段都是一个冲突域。
	优点:
		1. 过滤通信量,增大吞吐量。
			由于隔离了冲突域,各冲突域内的通信互不干扰
		2. 扩大了物理范围
		3. 提高了可靠性
			一个网段内出故障,只影响此网段内通信
		4. 可互联不同物理层、不同MAC子层和不同速率的以太网
			就是说连接不同的局域网
	网桥的分类
		1. 透明网桥
			透明是指以太网上的站点并不知道所发送的帧将经过哪些网桥,即链路上的网桥对它来讲是透明的,
			这种网桥即插即用,通过自学习来记录各主机mac地址和接口的对应关系

		2. 源路由网桥
			在发送时,把详细的最佳路由信息(路由最少/时间最短)放在帧的首部中。
			方法: 源站以广播方式向欲通信的目的站发送一个发现栈。
			源站发送一个发现帧,根据目的站返回的结果,取一个最短路径。

多接口网桥(以太网交换机),
	独占传输媒体带宽,而之前的集线器是多接口共享带宽
	集线器不管有多少个端口,所有端口都共享一条带宽,在同一时刻只能有两个端口传送数据,其他端口只能等待;只能工作在半双工模式下。交换机每个端口都有一条独占的带宽,当两个端口工作时并不影响其他端口的工作,交换机可以工作在半双工模式下也可以工作在全双工模式下。

	以太网交换机的两种交换方式
		- 直通式交换机
			查完目的地址就立刻转发
			延迟小,可靠性低,无法支持具有不同速率的端口的交换
		- 存储转发式交换机
			将帧放入高速缓存,并检查是否正确,正确则转发,错误则丢弃
			延迟大,可靠性高,可以支持具有不同速率的端口的交换

冲突域和广播域
		|能否隔离冲突域|能否隔离广播域|
		物理层设备(中继器、集线器)| 不能 |不能|

		链路层设备(网桥、交换机)|能|不能

		网络层设备(路由器) | 能 | 能
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值