【学习笔记】计算机网络——第二章 物理层
【学习笔记】计算机网络——第三章 数据链路层
本文作为王道考研——计算机网络的学习笔记,笔者在学习的过程中对相关重点进行总结。
结点:主机、路由器
链路:网络中两个结点之间的物理通道,链路的传输介质主要有双绞线、光纤和微波。
数据链路:两个结点之间的逻辑通道,把实现控制数据传输协议的硬件和软件加到链路上就构成数据链路
帧:链路层的协议数据单元,封装网络层数据
物理层比较傻,容易把数据弄丢,因此数据链路层就必须提前预知好,实现无差错的数据传输
功能一:为网络层提供服务。无确认无连接服务,有确认无连接服务,有确认面向连接服务
功能二:链路管理,即连接的建立、维持、释放(用于面向连接的服务)
功能三:组帧
功能四:流量控制
功能五:差错控制
就是在一段数据的前后添头添尾,这样就构成了一帧。接收端在收到物理层上交的比特流后,就能根据首部和尾部的标记,从收到的比特流种识别帧的开始和结束。
首部和尾部包含很多控制信息,他们的一个重要作用:帧定界。
帧同步:接收方应当能从接收到的二进制比特流中区分出帧的起始和终止
尽量使数据部分大于帧的首尾
不管所传输的数据是什么样的比特组合,都应当能够在链路上传送。数据链路层看不见自己在传输什么。
如果第一帧出错,接下来都会出错
假设以SOH作为帧首,EOT作为帧尾,如果中间出现EOT的话,可能会错误找到边界,因此我们可以先进行字符填充,引入转义字符。告诉接收端不用管后面的东西是什么了。
当传送的帧是由文本组成时,不管从键盘上输入什么字符都可以放在帧里传过去,即透明传输。
如果我们想以01111110作为帧的首和尾,为了避免中途01111110造成错误识别
我们需要做如下操作:
采用一般不用的编码作为起始和终止
比如11或00是不存在的编码,就可以用来做起始和终止。
传输中的差错是由噪声引起的
链路层为网络层提供服务:
【注】我们通常默认接收端数据链路层接受的帧均无差错。
确定校验码位数
校验码位数需要满足海明不等式: 2^r ≥ k + r + 1
比如:要发送的数据:D=101101 位数是k=6,满足不等式的最小r是4,因此海明码就有k+r=10位。即原始数据6位,校验码4位
确定校验码和数据的位置
将校验码放在2的几次方的位置,其他位置上按数据位的序将它填满。填上实际值后我们就需要计算校验码的值了。
求出校验码的值
如何直到某一位校验码可以校验哪些数据? 我们观察P1,其第一位为1,所以它能够校验第一位为1的D,即D1,D2,D4,D5。
令Pi和它所有校验位异或等于0,就能够求出Pi。
综上,101101的海明码为0010011101
检错并纠错
那么海明码是怎么校验并纠正错误的呢?
假设第五位出错,接受的消息为0010111101
令所有要校验的位异或运算
异或的结果倒着写得到0101=5,所以第五位出错。
较高的发送速度与较低的接受能力不匹配,会造成传输出错,因此流量控制也是数据链路层的一项重要工作。
数据链路层的流量控制是点对点,而传输层的流量控制是端到端的。
数据链路层流量控制手段:接收方收不下就不回复。
传输层流量控制手段:接收端给发送一个窗口公告。
滑动窗口协议:后退N帧协议(BGN)、选择重传协议(SR)
停止等待协议:每发送完一帧就停止发送,等待对方的确认,在收到确认后再发送下一帧。(滑动窗口是1)
可靠传输:发送端发啥,接收端接啥。
流量控制:控制发送速率,使接收方有足够的缓冲空间来接受每一帧。
停止等待协议
滑动窗口动作原理
发送窗口发送0号帧给接收窗口,接受窗口成功接收到0号帧的信息后会发送0号的确认帧。发送窗口接收到确认帧后窗口整体向前移动一格。
停止等待协议就是每发送一个分组就停止发送,等待对方确认,在收到确认后再发送下一个分组。
为什么要有停止等待协议?
研究停等协议的前提?
虽然现在常用全双工通信方式,但是为了讨论问题方便,仅考虑一方发送数据,一方接受数据。
因为是在讨论可靠传输的原理,所以并不考虑数据是在哪一层次上传送的。
【无差错情况】
每发送一个帧就停止并等待,确认帧(ACK)只需要能够区分上一帧和这一帧就行了,因此用1bit来编号足够。
【有差错情况】
数据帧丢失或者检测到帧出错
引入超时计时器,每次发送一个帧就启动一次计时器。超时计时器设置的重传时间应当比帧传输的平均RTT更长。
【TIP】发送完一个帧后,必须保留它的副本
数据帧和确认帧必须编号
ACK迟到
对于迟到的ACK0,发送方直接丢弃。
停等协议简单但信道利用率太低。
信道利用率指发送方在一个发送周期中,有效地发送数据所需要的时间占整个发送周期的比率。
【滑动窗口】
发送窗口:发送方维持一组连续的允许发送的帧的序号(蓝色的框框)
接受窗口:接收方维持一组连续的允许接受帧的序号。
GBN发送方必须响应的三件事
** GBN接收方要做的事**
4. 如果正确收到n号帧,并且按序,那么接收方为n号帧发送一个ACK,并将该帧中的数据部分交付给上层。
5. 其余情况都丢弃帧,并为最近按序接受的帧重新发送ACK。接收方无需缓存任何失序帧,只需要维护一个信息:expectedseqnum (下一个按序接收的帧序号)
【运行中的GBN】
解读
首先发送方连续发送0,1,2,3号帧,接收方接收到0号帧后发送ACK 0,接收方收到1号帧后发送1号ACK,此时2帧丢失,因为接收方是顺序接受的,然而无法收到2号帧,它会将收到的3,4,号帧都丢弃。此时,发送方的2号帧始终超时,会重新发送2号帧。
【GBN重点】
【习题】
答案:C 因为接收方是顺序接受的,发送方能收到3号确认帧证明接收方成功接受了0,1,2,3号帧。至于发送方为何没收到1号ACK,可能是1号ACK丢失了。因此,发送方只需要传送4,5,6,7号帧就行了。
SR协议是为了解决GBN协议的弊端而提出的。总结一点就是引入缓存机制
【SR发送方必须响应的三件事】
【SR接收方要做的事情】
来者不拒(窗口内的帧)
SR接收方将确认一个正确接受的帧而不管是否按序。失序的帧将被缓存,并返回发送方一个该帧的确认帧**【收谁确认谁】**,直到所有帧按序交付给上层,然后向前移动滑动窗口。如果收到窗口序号外的帧,就返回一个ACK,特别是在该窗口之前一个窗口的帧,因为发送方可能没有接收到当时的ACK,所以接收方需要再发送一次。
【探讨】滑动窗口的长度可以是无线的吗?
发送窗口最好等于接收窗口。
滑动窗口最好小于帧序号。这样就能判断出接收到的帧是否是重传的旧帧。
【SR协议重点】
点对点链路:两个相邻节点通过一个链路相连,没有第三者。应用:PPP协议,常用于广域网。
广播式链路:所有主机共享通信介质。应用:早期的总线以太网、无线局域网,常用于局域网。典型拓扑结构:总线型,星型。
介质访问控制的内容就是,采取一定的措施,使得两对节点间的通信不会发生互相干扰的情况。
信道划分介质访问控制:将使用介质的每个设备与来自同意信道上的其他设备的通信隔离开,把时域和频域资源合理地分配给网络上的设备。
【多路复用技术】把多个信号组合在一条物理信道上进行传输,使得多个计算机或终端设备共享信道资源,提高信道利用率。
4. 码分多路复用CDMA
码分多址是码分复用的一种方式。
1个比特分为多个码片,每个站点被指定一个唯一的m位芯片序列。
发送1时站点发送芯片序列,发送0时发送芯片序列反码。
如何不打架:多个站点同时发送数据时,要求各个站点芯片序列相互正交。
如何合并:各路数据在信道中被线性相加。
如何分离:合并的数据和源站规格化内积
纯ALOHA协议思想:不监听信道,不按时间槽5发送,随即重发。想发就发。
冲突如何检测? 如果发生冲突,接收方就会检测出错,然后不予确认,发送方在一定时间内收不到就判断发生冲突。
冲突如何解决?超时后等一随机时间再重传。
时隙ALOHA协议
时隙ALOHA协议的思想:把时间分成若干相同的时间片,所有用户在时间片开始时刻同步接入网络信道,若发生冲突,则必须等到下一个时间片开始时刻再发送。
【总结】
CSMA:载波监听多路访问协议
CS:载波监听,每一个站在发送数据前要检测一下总线上是否有其他计算机在发送数据。
MA:多点接入,表示许多计算机以多点接入的方式连接在一根总线上。总线型网络
协议思想:发送帧之前,监听信道。
CD:碰撞检测,“边发送边监听”,适配器边发送数据边检测信道上信号电压的变化情况,以便判断自己在发送数据时其他站是否也在发送数据。
CD可以检测碰撞,而CA只能避免碰撞不能检测碰撞。
发送数据前,先检测信道是否空闲。
空闲则发出RTS,RTS包括发射端的地址、接收端的地址、下一份数据将持续发送的时间等信息;信道忙则等待。
接收端收到RTS后,将响应CTS。
发送端收到CTS后,开始发送数据帧(同时预约信道:发送方告知其他站点自己要传多久数据)。
接收端收到数据后,将用CRC来检验数据是否正确,正确则响应ACK帧。
相同点:核心都是先听再说。换言之,两个在接入信道之前都需要进行监听。当发现信道空闲后,才能进行接入。
不同点: