计算机网络(二)——物理层和数据链路层
一、物理层
1.作用
实现相信计算机节点之间比特流的透明传输,尽可能屏蔽具体传输介质和物理设备的差异。
2.数据传输单位
比特。
3.相关通信概念
①信源和信宿:即信号的发送方和接收方。
②数据:即信息的实体,比如图像、视频等,在计算机内部通常采用二进制表示。
③信道:信号传输的通道,通常一条物理链路对应两个信道:发送信道和接收信道。
④信号、码元:数据的载体,分为数字信号和模拟信号,数字信号值是离散的,模拟信号值 是连续的。可以用电压、电磁波等作为信号,其数值就是信号值。一个信号就是一个码 元。未经过调制的原始电信号称为基带信号。
⑤带宽:在通信中,带宽指的是信道允许通过的信号频带范围,单位为Hz、kHz、MHz等; 在计算机网络中,带宽指的是信道的最大传输速率,单位为bps、bit/s、kbps、Mbps等。 两种带宽都是反应信道的数据传输能力,带宽越大其数据传输能力越强。
⑥噪声:指影响信号在信道上传输速率、干扰信号传输的因素,如强磁场会对电磁波产生干 扰,强磁场就属于噪声。
⑦比特率和波特率:都是用来描述数据传输的速率,比特率即单位时间内可以传输多少比 特,单位是bps,波特率则是在一秒可以传输多少个码元,单位是码元/秒或波特。
⑧信噪比:即信号的功率和噪声的功率的比值,信噪比越大说明噪声对信号传输造成的影响 越小。在实际应用中,由于信号的功率往往远高于噪声的功率,所以信噪比的实际计算公 式为,单位为分贝或dB,其中S/N就是信号的功率和噪声的功率的比值。
4.奈奎斯特定理
在一个没有噪声、带宽有限的理想低通信道中,极限波特率为两倍的带宽(指通信中的带 宽)。奈奎斯特定理说明了在理想情况下带宽越大信道传输码元的能力越强,但波特率不 能太高,会导致码间串扰,即接收方无法识别码元。
5.香农定理
在一个有噪声、带宽有限的信道中,极限比特率为:带宽×,其中带宽也指 的是通信中的带宽,S/N为信号的功率和噪声的功率的比值。香农定理说明通过提高带宽和 信号功率、降低噪声功率能够提高信号的最大传输速率。
6.编码&解码、调制&解调
将二进制数据转换成数字信号就是编码,将数字信号转换为二进制数据就是解码;网络适配 器中有一部分就是编码-解码器。将二进制数据转换成模拟信号就是调制,将模拟信号转换 为二进制数据就是解调;光猫就是一种调制-解调器。
在将数字信号调制为模拟信号时,可以将数字信号通过调幅、调频、调相的方式转换成模拟 信号;若将数字信号转换成类似Asin(Bx+C)的模拟信号,那么A代表振幅,B代表频率,C 代表相位,通过改变A使得不同振幅的模拟信号代表不同的数字信号的调制被称为调幅或 AM(也称幅移键控,ASK),通过改变B使得不同频率的模拟信号代表不同的数字信号的 调制被称为调频或FM(也称频移键控,FSK),通过改变C使得不同相位的模拟信号代表不 同的数字信号的调制被称为调相或PM(也称相移键控,PSK)。还有一种调制方式是正交幅 度调制QAM,即通过改变振幅和相位来代表不同的数字信号,调幅和调相的结合。
7.传输介质
8.中继器和集线器
二、数据链路层
1.功能概述
补充:
①透明传输:发送方的数据链路层会给网络层传来的数据进行处理,在加上一些附加信息后再进行传输,如果接收方的数据链路层收到帧后将这些附加信息去掉后再传给网络层,那么从网络层的视角来看是“原封不动”传过来的。
②广播信道要进行介质访问控制:广播信道为总线型拓扑,所以会出现总线争用的问题,这就需要介质访问控制来解决总线争用问题。
2.封装成帧
封装成帧要解决两个问题:给数据加上界限来分清一个个帧,还需要将处理后的帧恢复原样传给网络层。
封装成帧有四种方法:
①字符计数法:在每个帧的开头加上一个定长的计数字段用来记录封装后的整个帧的长度,即所加计数字段的长度与数据部分的长度之和。这种方法实现简单但容易出错,如果一个计数字段出错,那么后面所有的数据都会出错。比如一组数据①②③④⑤,其中①②③、④⑤各为一帧,①和④为计数字段;此时①的数据出错,记录的帧长变成了2,那么接收方就会认为①②是一帧,所以后面的③会被视为下一帧的计数字段,进而形成连锁反应,导致后面所有的数据出错。
②字节填充法:设定三种特殊字符:标志帧起点的字符SOH和帧终点的字符EOT以及转义字符。在封装成帧时要在帧的前面和后面分别加上SOH和EOT字段以界定不同的帧。其中转义字符则是如果数据部分中出现了这三种特殊字符会被接收方误以为是特殊字符而不是数据,需要在这些特殊字符前面加上转义字符来告诉接收方这些是数据部分。
③零比特填充法:会在帧的前面加上一组字段01111110标志帧的开始,下一个帧的01111110既表示上一帧的结束也表示下一帧的开始。同时为了防止数据部分含有相同的字段,规定如果数据部分每出现5个连续的1就在后面加上一个0,这样数据部分就不会出现相同的字段了;同时接收方会对帧进行逆处理,去掉数据部分加上的0使其恢复成原来的数据。这种方式比较简单,并且HDLC和PPP协议都是采用的这种方式。
④违规编码法:数据在编码成数字信号时是有一定的规则的,如果将一个不会出现在规则内情况的数字信号加在开头,那么不仅能界定每一个帧,而且也不用担心数据部分出现相同的编码。虽然需要物理层的配合,但实现方法很简单,是比较常用的方式。
3.差错控制
差错控制有两种处理方式,一种是采用检错编码只检查传输过程中数据有没有出错,如果出现错误则会再重新发送一次;另一种是采用纠错编码在检查是否出错的同时来纠正出现的错误。
3.1检错编码
3.1.1奇偶校验码
奇校验码是在数据前面加上一位后将数据变成一个校验码。规定如果数据部分中1的个数为奇数,那么就在数据前面加上一个0使整个校验码中1的个数为奇数;如果数据部分中1的个数为偶数,那么就在数据前面加上一个1也使整个校验码中1的个数为奇数。
偶校验码同样的道理,只不过在数据前面加上的那一位要使得整个校验码中1的个数为偶数。
实际上使用偶校验码的更多一些,因为使用异或运算就可以判断出1的个数是否为偶数。
异或运算:
接收方会对整个校验码的每一位进行异或运算。由异或运算可以得出,出现偶数个1时结果为0,出现奇数个1时结果为1。如果在传输时有奇数个1变成了0,那么运算结果就会不同,这就可以检测出数据是否出现了错误;但如果有偶数个1变成了0则无法检测到,因为此时1的个数还是偶数个,异或运算的结果仍为0。
3.1.2CRC循环冗余校验码
补充:
①生成多项式为,如果少了其中的几项则说明该项前面的系数为0,将每一项前面的系数拼起来就形成了除数。除数有R+1位是因为还有一项1也就是。
②信息位是指原来的数据部分,使用二进制表示的。
③模二除:因为被除数和除数都是二进制数,所以要用二进制除法。所谓二进制除法,则是看被除数和除数的首位数字是否相同,如果相同则上1,不同则上0;随后对除首位之后的所有位数作对应的异或运算。例如1110÷101,首位相同则上1,变成111⊕101=10(因为首位不参与运算),随后和普通除法运算一样再向后取一位继续运算,即再计算100÷101,首位相同上1,变成100⊕101=01;所以1110÷101的商为11,余数为01。
④循环冗余校验码是有纠错能力的,是因为当选择合适的生成多项式且满足时,CRC码中每一位出现错误后对应的模二除的余数都不为0且余数各不向同,根据这个性质可以推断出是哪一位出现了错误,进而可以纠正单比特错误(如果出错的那一位上的数是1,那么根据二进制原来这一位上的数必然是0)。只不过纠错能力有限,在实际生活中传输的数据通常位数有很多,所以只用于检验是否出现了错误。下面是例子:
选择合适的生成多项式时:
选择不合适的生成多项式时:
3.2纠错编码——海明码
4.流量控制与可靠传输
之所以要给帧编号,是因为如果有两个帧的数据完全一样,发送方在成功发送了一个帧再继续发送下一个一模一样的帧时,接收方就无法判断这个帧是发送方发送了一个重复的帧还是发送方又发送了一个新的帧,需要给每个帧编号用于区分不同的帧。
4.1滑动窗口机制
在开始发送数据时:
接收方在接收完接收窗口内的帧后,会滑动接收窗口来接收其他帧,同时控制发送窗口滑动来发送其他帧:
4.2停止-等待协议
①正常发送和接收
②当发送的帧丢失时
发送方在发送一个帧的同时会启动计时器以等待接收方的确认帧。由于发送的帧丢失了,接收方就不会收到这个帧,也就不会发送确认帧和移动接收窗口,发送方也就不会收到对应的确认帧,进而也不会移动发送窗口。当发送方等待收到确认帧的时间超过一定值时,就会认为这一帧没有发送成功,便会再向接收方重新发送这一帧,同时计时器也会重新开始计时,直到在规定时间内收到接收方的确认帧才会滑动发送窗口,开始发送下一帧。
③当发送的帧出现错误时
当接收方检查到帧出现错误后会将其丢弃,同时也不会发送确认帧;此时发送方就无法收到确认帧,计时器也就会超时,一旦超时发送方会重新向接收方再次发送这个帧,计时器也会重新开始计时,直到在规定时间内收到确认帧。
④当接收方发送的确认帧丢失时
此时的状态是,发送方已经发送了这一帧并等待确认帧,接收方成功收到了这一帧且滑动了接收窗口以准备接收下一帧。由于确认帧丢失导致发送方迟迟收不到确认帧造成超时,发送方会重新发送这一帧;虽然接收方已经滑动了接收窗口,但还是会对这个重复帧进行响应:先丢弃这个重复帧,再向发送方重新发送一个确认帧,直到不再接收到重复帧为止(因为只有发送方成功收到了确认帧才不会重复发送)。
⑤为什么只用1bit来给帧编号?
因为接收窗口和滑动窗口的大小都是1,发送窗口只有收到接收方的确认帧后才会滑动且两者每次都只滑动1格,所以接收窗口与发送窗口最多也只相差1格,也就只用分清当前帧和前一个帧即可(用于区分重传帧和新发送的帧);这就说明只需要两个编号,而一个bit正好可以表示两种编号,所以只使用1bit给帧编号。
⑥为什么不存在数据帧失序的问题?
因为接收窗口和滑动窗口的大小都是1,且发送窗口只有收到接收方的确认帧后才会滑动,所以只有在接收方成功接收到帧时才会开始下一个帧的传输,这样就保证了每个帧都能成功传输且是按序传输。
4.3后退N帧协议
补充:
①由于发送窗口较多而接收窗口只有一个,并且GBN规定可以累计确认,所以正常情况下接收方会在接收完和发送窗口相同个数的帧后向发送方发送接收到的最后一个帧的确认帧。发送方在接收到这个确认帧后会将发送窗口滑动到下一组数据帧。
②当发送的帧丢失、出错或者确认帧丢失时,都会导致发送方接收不到确认帧使得计时器超时,引发重新发送。因为接收方是累计确认的,发送方并不知道哪些帧成功发送哪些帧需要重传,所以发送方会依次发送处于发送窗口的所有帧。而接收窗口的大小为1,此时接收方必然会收到不在接收范围内的帧,这些对于接收方来说都属于“非法帧”;遇到“非法帧”时接收方会将所有的“非法帧”丢弃并重新发送最后成功收到的帧的确认帧,发送方在收到确认帧后会将发送窗口滑动至确认帧对应的帧的下一个,然后继续依次发送发送窗口内的所有帧。
③相对于停止-等待协议,虽然不用每次都要发送确认帧,但是一旦出现了传输问题就需要重新发送更多的帧,而停止-等待协议只用每次重传1个帧即可,使得后退N帧协议在通信环境不好的情况下传输效率更为低下。
4.4选择重传协议
5.介质访问控制
为了解决总线中多个终端同时发送数据造成数据混乱的问题,需要使用介质访问控制。
5.1信道划分(时分复用、统计时分复用、频分复用、波分复用、码分复用)
时分复用:先将时间等分成一个个周期,再将每个周期的时间划分成n等分,并将每一份分给不同终端用于传输数据,其中n为这条总线上终端的个数。如果在一段时间内只有某个终端要发送大量数据,其他终端暂不会发送数据,这种时间分配方式就会导致不发送数据的终端依旧被分配给了时间片,需要发送大量数据的终端并不能得到更多的时间,这就会产生时间的浪费,信道利用率低。所以在时分复用的基础上产生了统计时分复用,会动态的分配时间,如果有需要,可以将一定时间都分配给某个终端;同时如果某台终端在一定时间内闲置,则可以不给它分配时间,这就使得信道利用率更高。
频分复用:给每台终端分配不同的子频带传输数据,这些子频带不会相交且每两个相邻的子频带之间会设置一个隔离频带用于防止不同子频带之间相互干扰。由于不会造成相互干扰,所以频分复用允许多个终端同时传输数据。但频分复用只能用于模拟信号传输数据,因为数字信号没有频带;频分复用会使得数据传输速率降低,每台终端都达不到最大传输速率,因为每台终端只能使用总带宽的一部分。
波分复用:针对光纤的一种技术,因为光速=波长×频率且光速一定,所以采用不同波长的光传输数据相当于也是采用不同频率传输数据。并且光的频带非常大,很适合采用波分复用。
码分复用:给每个节点分配不同的码片序列,所谓码片序列就是用一堆数字表示1,用与之每一位都相反的一堆数字表示0。引入向量来方便理解:如果给A终端分配的码片序列为(1,1,1,1),那么如果A终端发送数据(1,1,1,1)就表示A发送了1,发送(-1,-1,-1,-1)就表示A发送了0。在给不同终端分配不同的码片序列时,要保证不同的码片序列两两正交。当两个终端同时发送数据时,所发送的不同码片序列会叠加在一起形成一个新的序列;比如A发送(1,1,1,1),B发送(-1,1,-1,1),那么同时发送会叠加成(0,2,0,2)。接收方会对叠加序列进行处理来分别推出A和B发送了哪些数据:将叠加序列与不同的码片序列作规格化内积。规格化内积就是先对叠加序列和码片序列作点积,得出的结果再除以序列的位数,如果得到1则代表发送了1,如果得到-1则代表发送了0。以上面的例子为例,(0,2,0,2)·(1,1,1,1)÷4=1,(0,2,0,2)·(-1,1,-1,1)÷4=1,可得A发送了数据1、B发送了数据1。码分复用保证了即使不同终端同时发送数据,也能区分出不同终端发送了哪些数据。
5.2随机访问(ALOHA协议、CSMA协议、CSMA/CD协议和CSMA/CA协议)
纯ALOHA:优点是发送数据无限制,信道利用率高;缺点是发生冲突的可能性很大。
时隙ALOHA:优点是发生冲突的可能性较低,但会出现这种情况:只有某个终端想发送数据,但还没有轮到属于它自己的时间片无法发送数据,此时信道会一直空闲。信道利用率低。
1-坚持CSMA:优点是信道利用率高,一旦信道空闲就可以被其他终端使用;缺点是发生冲突的可能性大,当信道空闲时所有想发送数据的终端都会监听到并会同时发送数据造成冲突。
非坚持CSMA:优点是由于在监听到信道被占用后会等待随机一段时间再监听,使得不同终端监听到信道空闲的时机可能会错开,进而降低发生冲突的概率;缺点是会发生虽然信道空闲,但每个终端都处于等待重新监听的状态而不会发送数据的情况,使得信道利用率降低。
p-坚持CSMA:属于1-坚持CSMA和非坚持CSMA的折中方案,既能降低发生冲突的概率,又能保持较高的信道利用率。
CSMA/CD协议:
在发送前先监听信道是否有其他终端在发送数据,如果有那么会坚持监听信道,当信道空闲后会立即发送数据。在发送数据的同时也会持续监听有没有发生冲突,如果有则立即停止发送,在等待随机时间后重新发送。
什么是争用期?为什么争用期是两倍的最大单向传播时延?
争用期是指如果在一段时间内未发现冲突就能确保一定不会发生冲突的最短时间。
最大单向传播时延指的是总线上相距最远的两台终端的单向传播时延。现假设总线上相距最远的两台终端分别是A和B,只有A发送的数据到达了B,才能确保总线上的其他终端都会监听到A正在发送数据从而避免冲突,但此时仍无法保证不会发生冲突。在A向B发送的数据无限接近于B时B也想给A发送数据,由于信号还没有到达所以B会监听到信道是空闲的,便会立即发送数据,此时信道内必然会产生冲突;而只有等到B发送的信息传到A时A才能监听到发生了冲突进而停止发送数据来避免冲突,数据从B到达A需要一个最大单向传播时延。从A开始发送数据到监听到发生冲突的整个过程经历的时间无限趋近于两倍的最大单向传播时延。而如果在两倍的最大单向传播时延内A没有监听到冲突,那就说明距离最远的B也没有发送数据,进而可以得出总线上除A之外的其他终端也都没有发送数据,从而可以确保一定不会发生冲突。
为什么要设置最短帧长?为什么最短帧长是争用期×信道带宽?
由于CSMA/CD协议没有确认帧,所以在发送数据的时间内如果未检测到冲突便认为数据成功发送了。但如果所发数据的帧长过短,会出现还没有检测到冲突就发送完数据的情况,此时发送方认为数据传输过程中没有发生冲突,但实际上却是发生了冲突。为了尽可能保证数据传输的可靠性,需要规定一个最短帧长,所有小于最短帧长的数据都会视为无效帧;即使要发送的数据确实很少,也要给所发送的数据补充内容使其长度达到最小帧长。
因为争用期是能确保不发生冲突的最短时间,所以要保证在争用期内即使以最大传输速率发送数据也不会被全部发送,所以最短帧长就是争用期×信道带宽。
为什么要设置最长帧长?
这是为了防止某台终端一直发送数据占用信道,致使其他终端长时间不能发送数据。最长帧长的设定在不同情况下有不同的设定。如果一个数据帧的长度大于最长帧长,那么就会给这个数据帧进行分片传输。
为什么r的随机取值区间会随着监测到冲突的次数k的增大而增大?
因为监测到冲突的次数越多,就认为信道越忙碌,就需要更大的取值区间来增加随机等待时间错开的可能性,尽可能避免冲突。
CSMA/CD协议由于没有发送确认帧机制,所以为了尽可能使数据在传输过程中不发生错误,通常应用于有线网络中(如以太网)。
CSMA/CA协议:
发送方在发送前先监听信道是否空闲,如果空闲会等待DIFS的时间间隔后直接发送数据并会一直发完,如果不空闲则会进行随机退避:先利用二进制指数退避算法得到随机等待的时间,进入倒计时状态;然后开始持续监听信道,如果信道忙碌则倒计时停止,只有监听到信道空闲时倒计时才会继续。基于随机退避的规则,可以推断出当倒计时结束时监听到的信道一定是空闲的,所以倒计时一旦结束就会立即发送数据,并不会再次监听。
DIFS:每次发送数据帧之前都要等待的时间,为了等待在上一个帧的确认帧收到后再发送新的帧,配合接收方完成停止-等待协议。
SIFS:收到一个帧后需要进行处理的时间(如进行差错检测)。
AS:接入点,即设备连接无线网时连接的其实是接入点,通过接入点再连接到网络上。
RTS帧:需要预约信道时就要给AS发送RTS帧来请求预约,其中包括源地址-谁要预约、目的地址-找谁预约、时间-需要占用信道多少时间。因为设备和AS都是以广播的形式发送数据的,所以要有源地址和目的地址。
CTS帧:AS同意预约后就要发送CTS帧,对于这个设备来说表示AS同意了预约,对于广播域的其他设备来说就是告诉他们信道已被预约。同样CTS帧中也包括源地址、目的地址、占用信道的时间。
接收方使用停止-等待协议接收数据,在接收到数据后会等待SIFS的时间间隔用来校验发送的数据是否出现差错,若没有错误则发送一个确认帧。如果发送方超时未收到确认帧,则也进行随机退避,然后重传帧。
当发送的数据帧较长时会启用信道预约机制,发送的数据帧较短时不会启用信道预约机制。在启用后,发送方会先监听信道是否空闲,如果空闲则在等待DIFS的时间间隔后向AS发送RTS帧来请求预约信道,否则随机退避。当AS收到RTS帧后如果允许预约则先监听信道是否空闲,如果信道忙碌则进入随机退避,如果空闲则会给所有终端广播CTS帧,其他终端收到这个CTS帧后会推迟发送数据。当发送方收到AS同意预约的CTS帧后要先等待SIFS的时间间隔检查CTS帧是否出错,如果未出现错误就开始传输数据。
CSMA/CD、CSMA/CA的对比:
共同点:
CSMA/CD协议和CSMA/CA协议都是先听后发,在发送前都会监听信道是否空闲。
不同点:
CSMA/CD协议侧重于在发送过程中如何避免冲突,CSMA/CA协议侧重于在发送之前尽可能降低冲突发生的可能性。
监听到信道空闲后的处理方式不同:CSMA/CD协议在监听到信道空闲后会立即发送数据,而CSMA/CA协议则是需要等待DIFS的时间间隔后再立即发送数据。
监听到信道忙碌后的处理方式不同:CSMA/CD协议是随机重传,而CSMA/CA协议则是随机退避。
CSMA/CD协议在发送数据时会同时监听信道是否发生了冲突,边听边发;而CSMA/CA协议只是发送数据,只发不听。
CSMA/CD协议不会发送确认帧,遇到差错帧直接丢弃;而CSMA/CA协议使用停止-等待协议,会给发送方返回确认帧。
CSMA/CA协议有信道预约机制,而CSMA/CD协议则没有。
CSMA/CD协议适用于有线以太网,CSMA/CA协议适用于无线网络。
5.3轮询访问(令牌传递协议)
6.物理链路层的设备(网桥和交换机)
网桥:根据数据帧的目的地址(MAC地址)进行转发和过滤。当网桥收到一个帧时不会将帧广播到所有接口,而是根据帧中的目的地址转发到相应的接口;如果不能转发则直接丢弃(过滤)。
网桥有两种,分别是透明网桥和源路由网桥。
透明网桥:“透明”是指以太网的节点所发送的帧并不知道要经过哪些网桥,是一种即插即用的设备。透明网桥采用自学习算法来丰富自己的转发表:初始状态下转发表为空,如果有数据帧经过了网桥,网桥会先根据帧中的源地址查看自己的转发表中是否有源地址和对应接口号的记录,如果没有记录则会记录这个源地址以及对应的接口号;然后再根据目的地址查找转发表找到对应的接口以将帧转发出去,如果没有找到目的地址的记录则会将帧从所有接口转发出去,如果有记录则会将帧从指定的接口转发出去。网桥会每隔一定时间清空自己的转发表,然后开始新一轮自学习。
源路由网桥:在发送帧时,会将最佳路由信息(哪条路由传输时间最短、哪条路由经过的节点最少)放在帧的首部中再发送 。源站先以广播的方式向欲通信的目的站发送发现帧,每个发现帧都记录自己所经过的路由。当发现帧到达目的站时就沿各自的路由返回源站。源站在得知这些路由后,会从所有可能的路由中选择出一个最佳路由。并规定凡从该源站向该目的站发送的帧的首部,都必须携带源站所确定的这一路由信息。
交换机本质上是一个多接口的网桥,包括直通式交换机和存储转发式交换机等。交换机内部也会维护一个转发表,且拥有和透明网桥相同的自学习机制和更新机制。
直通式交换机在查完数据帧的目的地址(MAC地址)后会直接转发,不会进行差错检测。直通式交换机转发时延小,同时可靠性较差,且不支持不同传输速率端口的数据交换。
存储转发式交换机在收到帧时会先放入高速缓存中并检查数据帧是否出现差错,如果数据帧无误则会转发,如果出现错误则直接丢弃。存储转发式交换机虽然有一定的转发延迟,但可靠性高且支持不同传输速率端口的数据交换。