Skip to main content
A cup of beer
  1. Posts/

计算机网络-补充笔记

·811 words·4 mins

网络概念 #

吞吐量 单位时间内通过某个网络(信号,或接口)的数据量。

交换类型 电路交换,报文交换,分组交换。

计算机网络的定义 由自治的计算机互联的集合

局域网和广域网的区别 使用的协议不同。前者使用广播协议,后者使用点对点协议。

计算机网络的拓扑结构的影响因素 通信子网的结构。

网状拓扑常用于 WAN

星形拓扑的结点数 n-1

不需要网络层的网络是 广播式链路。因为不存在路由问题。

世界上最早的计算机网络 ARPANET

面向字节和面向报文的区别在与 是否区分报文边界。

数据链路层功能 在不可靠的物理链路上提供可靠传输。成帧,差错控制,流量控制,链路管理

数据链路层协议 HDLC,PPP,STP,ATM,帧中继

网络层功能 用户到用户,路由选择,差错控制,流量控制,拥塞控制,互联

网络层协议 IP,IGMP,ARP,RARP等

传输层功能 端到端,可靠传输,流量控制,差错控制,QoS,传输控制

TCP/IP和OSI的区别

  1. OSI在面向对象上比较先进;
  2. TCPIP非常契合实际协议但是没有普氏性;TCPIP考虑到异构网络互联问题;
  3. OSI在网络层支持面向连接和无连接通信,但是传输层只能面向连接;TCPIP在网络层支持无连接通信,在传输层支持面向连接和无连接的通信。

分组交换的缺点 额外信息开销大。

数据分组的好处 便于差错控制,便于提升公平性

协议的定义 为对等实体间逻辑通信而定义的规则的集合。

端到端 传输层及以上的通信。

文件传输中断恢复 会话层完成。

TCPIP模型网络层提供的是 可靠无连接的数据报服务。

服务访问点SAP 某层的SAP是某层的上层可以调用它的地方。例如应用层的SAP是用户界面。

网络层的PDU 又称分组。

计算机网络和分布式系统的区别 用户操作一个分布式系统,看起来就像是同一台计算机。但是计算机网络需要地址。显然不是同一台。两者的区别主要是软件上的区别。

通信基础 #

数字信号和模拟信号 可以连续变化的信号是模拟信号。只能取离散值的信号是数字信号。

码元 用某段时间内的波形代表一个状态。因此一个码元可以代表若干比特的信息(假设这种状态有2^n种情况,那就是带了n比特信息,则数据率也得乘n)。

码元宽度 上述时间的长度。

比特率和波特率 前者是数据率,后者是码元的变化速率,可以以单位Hz来衡量,即单位时间内码元的变化率。比特率和波特率的关系可以用尼奎斯特定理给出。

尼奎斯特定理 指出了理想信道极限比特率波特率的关系。

香农定理和Rdt 只要数据率不超过香农定理给出的极限,就一定能找到方法来实现Rdt.

曼彻斯特编码 1:信号中心处H变L;0:信号中心处L变H。

差分曼彻斯特编码 1:前半个电平保持;0:前半个电平跳变。

QAM的码元种类 其ASK和PSK造成的码元种类的乘积。

电路交换的缺点 连接建立过慢;必须要求双方规格完全相同。

报文交换的缺点 需要大缓存;存储转发时延;

分组交换的缺点 需要较多额外信息;存储转发时迟;乱序;

信道和物理电路 一条物理电路可以分出来多条信道。

报文交换不能用于流媒体 因为包的延迟长,且每个包延迟不固定。

以太网的交换方式 分组交换

物理层 #

双绞线 价格便宜,用于电话线和局域网。传输距离近,速率慢。可利用中继器(数字信号)和放大器(模拟信号)整形。

同轴电缆 按特性阻抗分为50的(基带同轴电缆)和75(宽带同轴电缆)的,分别用于局域网和电视。传输距离和速率都比双绞线好。

光纤 利用光的有无表示0和1.由于可见光频率很高,所以光纤的带宽很大。利用LED让多束光同时在其中全反射传播,就是多模光纤,但是传输距离近;利用激光二极管,在光纤的粗细约等于光波波长的光纤中传播时,光可以直线传播,距离更远。这是单模光纤。但是由于要造很细,所以贵。

无线电波 无线电波的越障能力很强,传输距离很远,且信号呈WIFI标志状(向四处以张角扩散),常用作WLAN。

红外线和激光 需要以特定的红外线信号、激光信号进行传播。信号具有严格的方向性。但是带宽很高。

微波 同红外线和激光。其带宽很高,复用能力强。常用中继站来无线接力(因为也是有严格的方向性)。

卫星微波通信 卫星可以作为中继站来作微波通信。120度的3个卫星即可覆盖地球表面。但是传播延时过大。

物理接口的特性 机械特性,电气特性,功能特性,规程特性。

双绞线为什么双绞 减少相互电磁干扰。

经典以太网是什么工网络 经典以太网是半双工的。因为是广播链路,集线器连接。

同轴电缆为什么比双绞线快 因为屏蔽性更强。

规程特性 例如描述时序关系。

中继器为什么只能连接同协议的网段 因为没有存储转发功能。

为什么中继器不能无限制地连接 因为会带来较大延迟,导致网络不能正常工作。

以太网543原则 只能用4个中继器,且其中5条链路上只能有3条用来连接主机。剩下的只能做延长线路使用。

802.3分段标准 每过500m就要对链路进行分段,其中用中继器进行连接。

中继器和集线器 集线器就是多端口的中继器。集线器也具有放大作用。

中继器用词严谨 注意,是再生信号,而不是放大信号。

传输媒体和介质及其信号不属于物理层 因为它们不清楚当前跑的这个信号是代表0还是代表1.这个问题只有物理层才能解释。因此我们认为传输媒体是低于物理层的,即第0层。

为什么还要引入dB来表示信噪比 因为在现实条件下,信噪比要么过大要么过小。此时这样就很方便。

数据链路层 #

数据链路层的链路管理功能 即链路地连接、维持、拆除。这主要针对面向连接的服务。

数据链路层的流量控制功能和其他高层的类似功能的区别 只是控制的对象不同罢了。链路层的此功能只会管相邻两结点之间的链路上的流量控制。

为什么帧要加首加尾,而其他DU都不用? 因为链路层是从一串比特流里面区分自己的传输单元。而比特流是连续的。其他DU都是直接提取数据部分就可以,不存在这种问题。

实现帧同步、帧定界和透明传输的四种常见方法 字符计数、字节填充、比特填充、违规编码。

违规编码法 这种方法适用于存在冗余状态的编码集中。例如曼彻斯特编码只能是0变1或者1变0,但是如果使用1变1和0变0就可以在不添加其他信息的情况下实现透明传输。

差错的来源(冲击噪声) 信道噪声分为热噪声和冲击噪声。热噪声可以通过提升信噪比解决,但是后者只能通过检错纠错机制解决。

随机差错和突发差错 前者是热噪声引起,后者是冲击噪声引起。

ARQ 自动重传请求 Automatic Retransmission request法 即如果检测出错误就丢弃,等待发送方超时重传。它很高效,几乎不需要其他额外信息就能实现差错控制。通常是采用检错码。

FEC 前向纠错 Forward Error Correction法 即接收端接收到错误码字后,主动纠错,无需发送方重发。通常是采用纠错码。

数据链路层也提供纠错 注意,数据链路层也提供纠错。这是通过FEC实现的。

数据链路层的可靠传输和流量控制 是交织在一起的。六大协议中,除了乌托邦,都实现了流量控制;除了乌托邦和无错信道单工,都实现了可靠传输(通过ARQ、连续ARQ实现)。

发送方滑动窗口当且仅当 接收方窗口向前移动了才有向前移动的可能(在ACK不丢失的情况下)。

数据链路层滑动窗口协议和TCP的滑动窗口的区别 传输层滑动窗口大小是定值。

停止等待协议的滑动窗口大小 可以看作都是1.

窗口对应的缓冲区大小 本身就等于这个窗口的大小。发送方当且仅当收到了ACK才能把它从缓存中删除;接收方当且仅当成功交付上层才能把它从缓存种删除。

GBN对落在窗口外的帧完全无视,连ACK都不返回 GBN中,接收方可能不对落在窗口外的帧进行确认(例如从2号帧开始丢,那么之后接收到2以上的帧,不会每次都返回ACK1,而是什么也不说。),直接丢弃。

GBN的单计时器怎么判定超时 只要计时器超时,则到现在为止还没收到ACK的那个帧就说明有问题。回退到那个帧重新发送。注意,这个超时机制的是建立在GBN接收方的无情上的(上面一条所讲)。

SR协议中,接收窗口最大值 接收窗口最大值不应该超过发送窗口,否则没有意义。因此,最大情况就是两者相等。根据发送+接收=序号,可知双方的窗口都是2^(n-1)大小。实际上,接收方和发送方窗口大小一般是相等的。

SR协议中,接收方的NAK 在SR中,接收方有NAK机制。只要接收方认为收到的帧可能出现错误(CRC不通过),则会发送NAK+序号。这样也可以构成快速重传机制。

随机访问MAC 并不去分配信道。它是让发送站互相竞争,然后**建立属于赢家的点对点**链路。

ALOHA协议 纯ALOHA是大家想发就发,如果冲突了就等待;Slotted ALOHA是大家只能在规定的时间槽里面发送。纯ALOHA的吞吐量最大值取在网络负载G=0.5,1/2e。Slotted ALOHA的吞吐量最大值取在网络负载G=1,其为1/e.

传播延迟对1-坚持CSMA的影响 使其更容易导致“发送间隔太小”问题。

坚持两个方面 CSMA的坚持体现在两个方面:一是在忙的时候是否在当前时隙监听信道;二是当前不忙了是否要直接发送。各个坚持CSMA的侧重点不同。

1-坚持CSMA和非坚持CSMA 两者都是只要一空闲就发送。区别在与是否立即监听信道。

p-坚持CSMA p坚持是STDM的思想,把时间划分为时隙。这与1坚持和非坚持完全不是一个概念。它在每个时隙内的行为如下:

每个时隙,先监听一下(不持续监听)信道,根据信道情况作出相应行为:

信道状况 行为
空闲 有1-p的几率什么也不做(即不监听,不发送)
占用 有1的几率什么也不做(即不监听,不发送)

做完此行为,推迟到下一时隙,再重复上述行为。

时隙 这样使p坚持-CSMA中,大家的侦听都是规则的时间阶段。大家可能发送的时间也都是规则的时间阶段。

CSMA/CD 采用1-坚持CSMA和二进制指数退避。适用于半双工总线型以太网。

CSMA/CA 采用二进制指数退避、分布式帧间隔。适用于802.11a/b/g/n.

各发送站统一进入二进制指数退避状态 当有冲突,会有站发送拥塞信号。此是所有站都准备开始二进制指数退避。

争用期(希腊字母tao) 即RTT,信号在两个端点之间往返的传输时间。根据推导,发送站把信息发到对方再回来的所用时间。发送站必须发送时间持续大于争用期长度,CSMA/CD协议才能正常工作。

实际上,本站发出的信号不会到接收方再反射回来。这里之所以会往返,是因为对面有过来的信号,与是发生了冲突。对面过来的信号就夹杂着乱码过来了。这些信号在信道上的传播延时是一致的,所以看起来像是原速反射回来了。

10BaseT以太网最小帧长(64B)计算

以太网规定争用期为51.2us.
10BaseT是10Mbps,则可以发送51.2us*10Mbps=512bit=64B.

二进制指数退避的基本退避时间 所有退避都是这个基本时间乘倍数。此时间一般是争用期。

CSMA/CA重传 当ACK没有收到,发送站会重转

轮转访问MAC 适用于负载较高的网络。

令牌环网 只需要逻辑上是环形即可。

MAC层实现点对点链路。链路层实际上还是在研究点对点链路通信 因为MAC层的存在,链路层可以把任何的广播信道换成点对点链路!

TDM的原理 把数字带宽较大的信道分成若干数字带宽较小的信道。

FDM不如TDM 因为FDM不好传播数字信号。

CSMA/CD与CSMA/CA在可靠传输上的区别 CD不保证,但是CA保证。因为CA并不以成功发送作为发送成功的标志,而是需要额外的ACK。

CSMA/CD效率 当RTT=0时,CSMA/CD信道利用率为100%。

ALOHA的通信负载G 所谓通信负载就是每个Slot的平均发送次数。

LLC子层 LLC子层是为网络层直接提供服务的。它和MAC层的区别是MAC是直接为物理层提供服务的。MAC负责的是成帧、差错流量控制等传输问题,而LLC负责的是为网络层提供有确认无连接、有确认有连接、无确认无连接的服务。

帧的长度结构 帧头部包含6B的SMAC和6B的DMAC,2B的类型,共14B。帧尾部包含4B的CRC码(32位CRC,用于校验除前导码外的部分)。因此,帧头+帧尾部是18B。

帧的64B和1518B限制 64B可以根据计算题知道。1518是因为1500的MTU+18B的帧头帧尾部。注意,这个1500的MTU是认为规定的,没有为什么。

100BASE-T以太网和吉比特以太网 用双绞线和同轴线传输,两者都可以工作在半双工模式(CSMA/CD)、全双工模式(不需要使用CSMA/CD协议,也无冲突发生)。其帧格式和10Base-T完全相同。

10吉比特以太网 改用光纤传输,只能工作在全双工模式,所以不需要使用CDMA/CD,且不存在冲突问题。

CSMA/CA冲突处理 如果发生了冲突,也不会停止发送。它只是以ACK作为判断。

IEEE 802.5 令牌环网 令牌环网是一种物理星型,逻辑环形的网络。其中采用环接口干线耦合器TCU进行发送和接收。其中,空令牌是一个特殊的不带数据的MAC帧。到了某机器要发送数据,它就修改这个令牌帧的某字段,然后装进去自己的数据。每个主机负责转发,走一圈以后,源主机会拿下来不转发,并且检查是否出错(如果出错就重新发送。)之后,源主机重新生成一个令牌,交出链路访问权限。

以太网命名规范 前缀,即BASE前的数字代表速率,单位为Mbps;BASE代表采用基带传输和曼彻斯特编码;BASE后的数字代表每段电缆最长长度,单位m;T是双绞线,F是光纤。

例如:

以太网规范 解释
10BASE-2 10Mbps,基带传输曼彻斯特编码,每段电缆最大长度为200m
10BASE-5 10Mbps,基带传输曼彻斯特编码,每段电缆最大长度500m
100BASE-F 100Mbps,基带传输曼彻斯特编码,光纤传输。

所以注意,以太网采用曼彻斯特编码。

IEEE802为局域网制定的标准相当于 OSI中的物理层和数据链路层。因此以太网包括了链路层和物理层。NIC卡也是这样。

快速以太网为什么快速 保持最短帧长不变(注意,它和慢速以太网的帧格式完全相同!),但是缩短网段长度到100m.

802.11的3个MAC地址 前两个正常填此局域网内的源MAC和目的MAC。第三个地址是局域网外的。如果是ToAP就是局域网外的目的MAC,如果是ToAP=0则是来自局域网外的哪个地址。这么做是因为AP具有帧格式转换的功能,它需要知道两边的地址。

广播链路 以太网是广播链路。所以只要有人发送,则所有人都能听见。

PPP和HDLC 前者面向字节,后者面向比特。PPP只能提供无差错接收(CRC校验),HDLC增加了编号和确认机制,可以保证可靠传输。连接的两端可以运行不同的上层协议;两者由于都是面向点对点链路的,所以不使用CSMA协议,所以没有最小帧长限制。PPP和HDLC都是用作广域网的点对点通信协议。虽然PPP和HDLC属于广域网,但是它们还都是链路层协议。HDLC帧包括无编号帧U、信息帧I、监督帧S三类。

广域网层次 广域网包含网络层、数据链路层、物理层。广域网在层次上比局域网多一个层次。**广域网中会用到路由器进行连接。**虽然广域网利用了路由器,但是广域网主要还是同种类型网络。其与互联网的不同是:互联网是网络的网络,是各种网络的连接。

比特填充和字节填充是为了 实现透明传输。

网桥可以存储转发 ,因此它可以连接不同协议的局域网,可以防止自己被淹没。

生成树算法 只是为了去掉环路。它并不能提供最佳路由。

直通式和存储转发式 前者不支持不同类型网络之间的转发。不支持不同速率之间的转发。

隔离冲突域的好处 能让更少的用户去平分带宽,从而为用户提升带宽和提升网络吞吐量。例如10Mbps的经典以太网接入N个用户,则每个用户的平均带宽是10/NMbps,整个网络的吞吐量是10Mbps;但是如果利用网桥把它分成3个网段,那么就是30/NMbps,整个网络的吞吐量是30Mbps;如果直接用交换机构成交换式以太网,那么就是10N/N=10Mbps,整个网络的吞吐量是10NMbps。

所谓冲突域和广播域 交换机隔离两个链路。路由器隔离两个网络。即:各自层的设备隔离各自的东西。

连接不同的网络和连接不同协议的局域网的区别 路由器能连接不同网络层协议的网络。但是交换机只能连接两个不同协议的局域网。所以,并不时说交换机就起不到连接不同协议的作用了,而是它们的协议层次不同。

链路和数据链路 前者是一条电路;后者是包含协议硬件和软件的,实现例如成帧、流量控制等功能的逻辑链路。

为什么不保证可靠传输,却要坚持检查错误 这样能保证凡是交付的数据都是正确的。不正确的不应该交付(用其他Rdt算法处理)。否则这种传输没有意义。这就是无差错接收的不可靠传输

网络层 #

网络层以上的中继系统 网关。其层次比路由器高。

网络层的基本任务 实现在任意结点之间的数据传输。这相比链路层是质的飞跃。因为链路层只能实现相邻两个物理结点之间的。

拥塞的概念 网络的负载增加,但是吞吐量却下降。

异构网络网际互联的条件 除了物理层和链路层可以不同以外,从网络层往上的所有协议都要完全一致。

路由是完全分布式的 每一跳的路由器都不知道完整的路由路径。下一条该怎么走一定是需要到了下一跳才知道。

链路状态路由全网路由器存储的拓扑 是完全同步的。因为是泛洪转发。

链路状态路由不存在无穷计数问题 因为它直接根据全网的拓扑计算路由,而不是听他人的意见去做。因此,OSPF具有快速收敛的优点。

路由回路问题 又称无穷计数问题。是由RIP协议的慢收敛问题导致的。

路由选择:直接交付和间接交付 直接交付是同一网段内的交付,因此不走路由器。间接交付是需要跨IP子网的,需要走路由器,但是最后进入目的子网必然要转换为直接交付,最终到达目的主机。

不同的分片具有相同的标识位。 因为标识是分组的标识。

IP的首部校验和 顾名思义,IP数据报的校验和帧校验不同,它只管首部部分的校验。而且IP的校验采用Internet Checksum。

IP数据报中常用上层协议字段 6是TCP,17是UDP。

TTL和路由转发 路由器收到数据报,需要对其进行处理。这个处理就包括TTL-1. 如果处理过程中,发现TTL-1=0,则停止处理,直接丢弃。

IP数据报头部的基本单位

字段 单位
首部长度 4B(因此有填充)
总长度 1B
分片偏移量 8B(因此除了最后一个分片以外,都是8的倍数)

常用分片数据部分大小 由于分片偏移量是8B,如果IP数据报在以太网(MTU=1500B)上传输,则数据大小一般是1480B,然后再加上20B的IP头,正好是1500B。所以,数据一般分成每片1480B

路由转发算法 先从IP数据报首部获得目的IP地址。如果此IP与路由器在同一网段直接相连,则直接交付(直接发给他);否则如果此IP在路由表中有特定主机路由,则发给其下一跳;否则如果有到达目的网络的路由,则发给下一跳;否则如果有默认路由,则发给默认路由器;否则报错。

get(Dest.IP);
if(在同一网段) 执行直接交付;
else if(有特定主机路由) 转发给此路由的下一跳;
else if(有转发表路由) 转发给此路由的下一跳;
else if(有默认路由) 转发给此默认路由器;
else error();

路由器不改变源IP和目的IP 路由器知道下一跳路由器的IP之后,并不会修改数据报的IP,而是根据此IP,利用ARP协议获得MAC,然后修改帧的目的MAC和源MAC。

类比:交换机不改变源MAC和目的MAC 同理。

每个IP子网的主机需要有一个相同的网络号 因此,路由器由于可以分隔IP子网,所以每个端口都要分配一个IP地址。

三个私有网络号 10号 1个A类网络、172.16-172.31号 16个B类网络、192.168.0-192.168.255 号256个C类网络。

工作在传输层和网络层的路由器 带NAT功能的路由器。

使用子网掩码对设备的要求 主机和路由器端口都要填写子网掩码;路由器转发表多了“子网掩码”一项。

使用子网掩码情况下的路有转发算法

get(Dest.IP);
if(在同一网段(判断方法是把目的IP和当前网络的子网掩码相与) 执行直接交付;
else if(有特定主机路由) 转发给此路由的下一跳;
else if(有转发表路由(判断方法是把目的IP和目标网络的子网掩码相与) 转发给此路由的下一跳;
else if(有默认路由) 转发给此默认路由器;
else error();

只是在判断网络(目标网络、当前网络)的时候采用了子网掩码的算法。

IP作为逻辑地址的强大之处 能够跨不同网络完成寻址。显然,在不同网络之间,由于路由器不同端口具有不同MAC地址,不可能通过MAC广播的方式进行寻址(因为不同网络下,经过路由器的转发,MAC地址会变)。但是IP不变,所以IP通过路由算法做到了。

直接交付 直接交付实际上就变成了链路层的事情了,与路由器没有任何关系。它利用MAC地址在局域网内寻址即可。

路由器比交换机更先进的地方在于 交换机的转发是对每个明确的MAC地址指定其出口;但是路由器的转发只是根据目的网络寻找下一跳,它根本就不管你这个IP地址具体是什么。只要知道你属于那个网络就可以了。

ARP的必要性 只要在链路上走,就需要MAC地址,这没有商量。IP只是一个长远目标,但是要走好每一步还是得看脚下。否则寸步难行。因此,IP称为逻辑地址,因为它和脚下的路关系不大,它只是一个指南针一样的存在罢了。

应用层协议的两种工作方式(模型) C/S和P2P.

DHCP为什么全程采用广播地址和UDP协议 因为不知道目的IP,所以只能广播;因为不知道目的IP,所以不可能面向连接点对点。

IP网络层相关协议的实际工作层级

协议 层级 封装
NAT 传输层(因为看到了端口) -
ARP 网络层(因为看到了IP地址) Frame
DHCP 应用层(因为采用C/S模型) UDP Segment
ICMP 网络层 IP Packet

ICMP几个报文

报文 解释
超时 路由器发现TTL=0;或者目的主机发现分片数据报没有在规定时间内全部到达。
源点抑制 路由器或主机防止被淹没
重定向 路由器发给主机,让主机下次把报文发给其他路由器,不要再发给自己了

IPv4的路由器负责分片,目的主机负责重组。 也就因此,目的主机也能够发送超时ICMP报文。

DF=1,且分组过大 则发送ICMP差错报文,丢弃。

划分IP子网的好处 减小广播域。

NAT的映射表需要 管理员设置。它不会自动映射。因此如果收到了找不到的表项,则它会直接丢弃,不进行转发。

ARP工作过程中,ARP请求是广播发送,ARP响应是单播发送。其中,广播的原因是并不知道目的MAC地址是多少。这不是为了去查询目的MAC吗。

ARP的重要性 实际上,分组只要在链路上走就需要ARP。或者说,一段链路就对应一次ARP使用。

IPv6的地址长度 128bits.

IPv6精简头部信息 是为了加快处理速度,提升吞吐率。

数据链路层 #

数据链路层服务 #

服务类型 #

注意,链路层给物理层提供传输保障,例如可靠传输、流量控制;传输层给网络层提供传输保障,例如可靠传输、流量控制;

数据链路层为网络层提供:

  • 无连接无确认服务
  • 有连接有确认服务
  • 无连接有确认服务

不提供有连接无确认服务。例如zhz的儿子找zhz要钱。

成帧 #

数据链路层要保证把比特流可靠地传输到下一个结点。

为了实现这一点,最容易想到的做法就是拆分比特流,把每个拆分部分**分别校验**,外加控制信息。

拆分比特流 #

帧同步 #

如何确定这段比特流就是一个“拆分”?它的边界在哪里?这就是帧同步要干的。

字节计数法 #

如果负责计数的字段出错了就gg。

字节填充 #

PPP协议中采用转义字节填充法。FLAG(定界符)=01111110,ESC(转义)=01111101.

比特填充 #

比特填充解决了必须以字节为单位进行帧划分。但是比特填充仍然把01111110作为定界符(保留了字节填充中的表示方法)。

发送方每次遇到5个1就添上一个0.

接收方收到数据,剔除首尾的01111110,然后见到5个1后面的0就剔除。

比特填充用于HDLC(高级数据链路控制)、USB(通用串行总线)。

差错控制 #

CRC码 #

所谓生成多项式,就是告诉你除数是多少。

例如生成多项式G(X)=X^4+X+1,按指数写出,就是除数是10011.

802.3标准采用的多项式高达33项,因此其CRC的除数有33位二进制。

CRC被802.3、802.11、PPP等协议一直在使用着。

流量控制 #

基于速率的流量控制和基于反馈的流量控制 #

前者是在协议中内置一种限速模式,让发送方主动限速;后者是接收方反馈一些控制信息,发送方通过控制信息直到自己应该怎么发送。

前者出现在传输层,后者同时出现在传输层和链路层。

实现链路层差错控制和流量控制的串行协议(1大小窗口) #

乌托邦(Utopia)单工协议 #

发送方一直发,接收方一直收,且都能收下(你发无穷个,我也能瞬间接收和处理无穷个。)

无错信道上的单工SW协议:通过SW实现了最小心的流量控制 #

所谓SW,就是停止等待。发送方要以最小心的方式确认自己没有淹没对方。

发送方发出去了就**停止,然后等待**ACK(Dumb Frame)的到来。

有错信道上的单工SW协议:通过计时器和数据帧序号实现了差错控制 #

利用计时器判断超时:接收方收到了出错的帧则直接丢弃(费发送方会超时)。否则返回ACK。

为什么使用帧序号:但是如果ACK在路上丢了,那么就会超时,协议就会出错,因为发送方会认为帧错了,重新发送刚才帧,造成重复。

解决方式是在数据帧,而非ACK帧上面加上序号。接收方只需要比较上次接收的序号和本次序号是否相等。

显然序号只需要0和1两个值。

实现链路层差错控制和流量控制的流水线协议(n大小窗口) #

稍带确认(Piggybacking)实现双工 #

虽然网络通信的信道是双工的,但是这些协议规定了发送方和接收方,因此接收方只能回复ACK却不能做别的事情,这直接浪费了这个支持双工的网络。

请注意,虽然上述几个协议是单工协议,但是必须跑在双工网络上。因为需要回复ACK。

ACK帧不再是Dumb Frame,而是可以携带数据部分。这就是稍带确认。A和B通信,则A和B互相发送带有ACK的数据帧即可实现双工。因为发送者不清楚自己什么时候会收到待发送的数据,所以需要一种机制来确定自己到底要发送带数据的ACK还是发空ACK。发送者可以等待固定时间,等待网络层给自己的数据。如果过了这个时间就发送只带有ACK的Dumb Frame,这样就可以在保证对方不超时的情况下实现带数据。

发送方滑动窗口基本概念 #

窗口内容 对于发送方,滑动窗口内的数据是**允许其发送的数据和发送了但是**还没ACK的数据。

缓存机制 发送方应该**缓存**其滑动窗口内的数据,以备重传。

拒绝 如果发送方窗口,那么网络层的任何调用都被拒绝。

滑动条件 如果窗口**最小序号**的帧被确认了,那么窗口向前滑动。

接收方滑动窗口基本概念 #

窗口内容 对于接收方,滑动窗口内的数据是**允许其接收的数据和接收了但是**还不能交付的数据。

缓存机制 接收方应该**缓存**其滑动窗口内未交付的数据。

丢弃 如果接收到的数据落在窗口外,那直接丢弃

滑动条件 如果窗口**最小序号**的帧收到了,那么交付此帧,并且窗口向前滑动。

接收方大小与缓存需求、顺序交付 #

如果接收方窗口为1,那么它只能顺序接收;如果接收方窗口>1,那么它需要设置缓存,并且能乱序接收且顺序交付了。

利用时延带宽积计算发送方滑动窗口大小 #

设时延带宽积时BD(以帧为单位),则滑动窗口的大小应该是2BD+1。即:利用整个RTT来发送。这样能让发送方不至于无事可作(即阻塞)。

注意,2BD+1是理想最大值。实际窗口会比这个小。

利用理想发送窗口大小和实际发送窗口大小计算链路利用率 #

即实际大小和2BD+1的比值。

GBN协议:为SW协议提速 #

SW协议是在忽略信道传播延时的前提下的。但是实际上这个延时可能会很大,整个系统效率都被ACK的等待而耽误。

快速重传机制 引入NAK:不用等到超时,只要收到了NAK此帧编号,就立即重传此帧。

单计时器 采用单一计时器。因为接收窗口大小为1,接收方只会管一个帧的情况,所以发送方只需要1个计时器。这个计时器在收到ACK时停止,在第一次发送时开启,在后续发送过程中不作操作。

SR协议:解决GBN重传浪费问题 #

多计时器 由于接收窗口大小>1,所以发送方应当设置多个计时器,对每个缓冲区都计时。对于每个计时器,当收到对应ACK时停止。

交付条件 如果序号小于此帧的都已经交付上层,那么很显然此时此帧就处于窗口序号最小位置,显然轮到他被交付了。或者说:当且仅当所有序号小于它的帧被交付,这个帧才能被交付。这样才能为网络层提供可靠的传输。

协议对比 #

协议 无帧序号的ACK 数据帧序号 单时钟 多时钟 带帧序号的NAK或带帧序号的ACK 累积确认 稍带确认 快速重传 发送方窗口 接收方窗口
乌托邦 - - - - - - - - 1 1
理想单工SW 1 - - - - - - - 1 1
有错单工SW 1 1 1 - - - - - 1 1
全双工GBN - 1 1 - 1 1 1 1 最大为2BS+1 1
全双工SR - 1 - 1 1 1 1 1 最大为2BS+1 最小为2^n-(2BS+1),其中n是帧序号位数

NIC卡 #

NIC卡是物理层和链路层设备。

NIC卡中运行物理层进程和部分链路层进程。

链路层的其他进程、包括网络层传输层运行在计算机的操作系统中。并不在NIC中。

数据链路层协议 #

数据链路层协议栈 #

PPP-AAL5-ATM-ADSL.从上到下。

PPP协议 #

PPP协议是以字节流为单位进行传输的,这就意味着它传输的数据量只能是整数个字节。这是其与HDLC最大的不同,因为HDLC是针对比特的传输。

PPP内容 #
  1. PPP协议提供成帧方法,其帧格式和HDLC一致,同时采用字节填充来确保帧同步。
  2. 提供LCP Link Control Protocol 链路控制协议,进行链路管理。
  3. 提供NCP Network Control Protocol 网络控制协议,协商网络层相关选项。PPP协议作为链路层协议,为上层例如IP、AppleTalk等提供传输服务,因此提供设置不同的NCP。

ATM协议 #

ATM即异步传输模式。

ATM是提供面向连接的服务。将信息分割成若干信元Cell,使用虚电路交换。

MAC Medium Access Control 协议 #

CSMA协议 #

之前没注意到的点:当碰撞发生,发送站会随机等一段时间再回来监听信道。

最好的CSMA #

0.01-坚持CSMA最好。甚至比非坚持还要好。

CSMA/CA下,CTS接收超时 #

如果某站发送了RTS但是没收到CTS,说明RTS可能发生了冲突,则等待一段随机时间再发(遵循CSMA基本方法)。

802.3 以太网 #

经典以太网和交换式以太网 #

后者采用了交换机。适应更多的速率。

经典以太网使用1-坚持CSMA/CD。

DIX以太网标准和802.3以太网标准的区别 #

802.3在帧开始位置加了帧定界符,即两个比特的1.

因此,802.3的前导是:10101010 .. 10101010 10101011.

DIX的帧前导是:10101010 … 10101010 10101010

交换机和网桥 #

多口交换机就是网桥。

交换机的堆叠和级联 #

堆叠是在背面用总线连接,用于扩充容量;

级联用于构成层级或者扩充距离。

802.11 无线局域网 #

无线扩频技术 #

根据香农定理,如果信号的模拟带宽够大,那么不管信噪比如何(因为括号里是1+S/N,所以log一定大于0),一定能把数字带宽乘得比较大。

因此,无线扩频就是用广频宽去换取更大地信噪比范围。这样,就算信噪比低得离谱,例如噪声直接淹没信号,但是信道地速率仍然是可观的。

除了802.11b,其余802.11标准大部分使用的是OFDM技术,而不是扩频。

802.11系列的NAV网络分配向量 Network Allocation Vector #

每个802.11帧存在Duration字段,它指导每个发送站设置自己的NAV。

注意,NAV是一个本地概念,它存储在发送站本身,并不会在局域网内传输。

NAV的设置应该让这个发送站等待其他站发送完成,并加上那个ACK的时间

802.11n的MIMO多入多出 Multiple Input & Multiple Output 技术 #

同时使用多条天线进行信息交流。利用MIMO技术可以避免它们之间相互干扰。可以理解为把不同天线的信号隔离为相互独立的多个信道。

大规模MIMO为5G的核心技术。

802.15 蓝牙 #

-

802.16 WiMAX #

WiMAX即全球微波接入互操作性 Worldwide Interoperability for Microwave Access.

同时采用OFDM和MIMO技术。用于4G LTE。

RFID #

-

LLC子层 #

LLC,即Logical Link Control,逻辑链路控制。位于比MAC再高一层。它的作用是将各种MAC协议的不同点隐藏起来,让网络层看起来数据链路层是一种东西。

数据链路层交换 #

网桥和交换机是一种东西 #

交换机是网桥的现代名称。

交换机的作用是:将两个物理LAN连接成一个逻辑LAN,还可以把一个物理LAN分割为两个逻辑LAN(VLAN)。

交换机Relay #

此操作是拆帧,重写帧头部。

注意,因为是“Relay”,所以交换机**没有帧转换的能力**,它不能连接两个不同的网络。

交换机的后向学习算法(用于交换机和主机之间) #

主机必须保持向交换机发送数据,否则交换机过一段时间就只能泛洪给他转发了 #

因为逆向学习而来的转发表中的入口有TTL。

802.1d 交换机的生成树网桥算法(用于交换机和交换机之间) #

生成树网桥确立了当交换机互相连结时,如果以交换机为结点,构成了一张有环图,那么在执行泛洪时,由于交换机的Relay操作(即每次发出的帧都是被换了头的,则每次都是新帧),那么总是会去转发,那么这个环就陷入了无穷无尽的转发。

因此,要剪掉一些边,让这个图变成无环图。显然可以找这个图的生成树来解决问题。

算法首先确定树的树根。当所有交换机都同意这个树根,就从树根开始构造生成树,且保证从这个树根到其他结点的距离越近越好。

802.1q VLAN #

-

常见设备 #

中继器 - 物理层 #

作用是放大并清理信号,发出去。

两个端口。

集线器 - 物理层 #

多个端口,但是没有放大作用。

要求连接完全相同的网络。要求连接速率一致

交换机 - 链路层 #

可以连接不同速率的两个网络。可以连接不同类型的网络,可以做到帧格式转换。但是做得不好

路由器 - 网络层 #

网关 - 运行在路由器上的一个进程(应用层?) #

为连接不同协议的两个网络而生,并做分组格式转换。

网络层 #

路由算法 #

泛洪算法 #

所谓泛洪算法就是路由器无脑地把收到的分组向所有端口转发。

杜绝逆向转发 #

虽然往每个端口转发,但是其收到此包的端口不应该被转发。

TTL法避免泛滥 #

给每个泛洪包一个TTL,这个TTL应该是期望跳数,或者是整个网络的直径。

包序号法避免泛滥 #

泛洪源路由器给每个泛洪包都加上序号。网络中的路由器可以观察来自此泛洪源路由器的包的序号是否已经被自己接收过了,如果接收了,那就不再转发了。

实际上只需要维护一个哈希表,记录收到各个路由器发给自己的到目前为止的最大泛洪包序号是多少即可。

泛洪法是最高效的路由算法,但是对链路要求高 #

泛洪的效率是最高的。因为它枚举出了最短的那个路径。这是其他算法做不到的。

泛洪法能在不确定网络完好性的情况下提供路由 #

例如战争时期,你不知道哪些路由器还安好。但是无脑泛洪,只要链路还通,就一定能发送到终点。