计算机网络考研辨析(后续整理入笔记)

文章目录

考完研补充题目图片进来。

方老师课程还有一些细节不够到位,不影响学习,但是初期如果想得多了,会有一些迷惑,后续要把这些补进去文章里,让文章更加好。

这里做出细化,尤其是针对数字,计算,保证无误。

体系结构

OSI模型会考,相比于5层模型,在应用层和传输层之间,多了表示层和会话层。

  1. 高三层=资源子网
    • 应用层是应用程序的所在
    • 表示层用于统一不同系统之间数据格式的差异
    • 会话层用于建立进程之间的通信(会话)
  2. 传输层,承上启下,TCP,UDP
  3. 低三层=通信子网

注意流量控制,在笔记里,我是把流量控制放在传输层了,但是实际上传输层,网络层,链路层都可以进行流量控制,区别在于:

  1. 传输层,端到端流量控制
  2. 网络层,整个网络
  3. 链路层,相邻结点之间

物理层

速率辨析

计算题型二:

注意奈氏准则,香农定理,以及波特率。

波特率(调制速率)是码元传输速率,因此实际速率=码元大小×波特率

实际上奈氏准则公式里的2W就是带宽为W前提下的波特率,反过来算波特率也别忘了码元。

交换方式辨析

三+1种交换的区别:

  1. 电路交换:一条路走到黑
  2. 报文交换:电路交换灵活版,一段路走到黑,但是可以分开几段走
  3. 分组交换,不仅分开几段走,数据报也要切分成分组
    • 数据报交换,最基本的分组交换(注意区分报文交换≠数据报交换)
    • 虚电路交换
      • 流程类似电路交换,先建立连接,之后分配一个虚电路号
      • 具有电路交换的顺序性,但是其他方面和分组一致,发送是很灵活的,不用分配带宽(20年真题),且不会占用(可交叉)

三种交换模式的时间计算

数据报交换,假设忽略节点处理时间以及传播时延,只关注发送的时间,那么要按照流水线的思路分析。

假设有n段,那么总时间T=第一个节点发送完全部分组+其余n-1个节点逐级转发完最后一个分组的时间

以10年真题看,首先确定有1000个分组,每一个分组有1000B。第一个节点发送要80s,而之后还要转发3-1=2级,因此还要有2×0.08ms的时间,选C

如果用报文交换呢?每一级都要消耗全部分组的时间,也就是说要3×80s

如果用电路交换呢?已经建立好链接的前提下,就是一级的时间即80s

总的来说,电路交换是最快的,报文交换比电路交换灵活点,但是损耗太大了,而分组交换相当于细分程度很高的流水线,可以逼近电路交换的速度,同时兼顾完美的灵活性。

再论2013年真题,直接用上述思路,报文交换是800×2,而分组交换是800+1

编码调制辨析

  1. RZ(归零)
  2. NRZ(不归零)
  3. NRZI(NRZ invert),翻转NRZ
    • 思想像差分曼彻斯特
    • 遇到0则翻转
    • 差异有二,NRZI反转的是电平,而差分曼彻斯特是跳变方向,其次是NRZI遇0翻转,而差分曼彻斯特遇1翻转
  4. 曼彻斯特,跳变方向代表0或者1
  5. 差分曼彻斯特
    • 曼彻斯特的导数(差分)
    • 跳变方向改变代表1,不变代表0(导数为零)

具体做题的时候,先通过波形判断是R系的,还是曼彻斯特系的,之后再内部区分。

不同调制:

  1. ASK(Amplify SK),调幅
  2. FSK(Frequency SK),调频
  3. PSK(Phase SK),调相
  4. QAM,相当于ASK和PSK杂交

链路层

链路层功能

我们学的只是无确认的无连接服务,实际上链路层有三种功能,逐级递进

  1. 无确认+无连接
  2. 有确认+无连接
    • 加入重传机制,用于错误率较高的信道,比如无线
  3. 有确认+有连接
    • 这里就非常像传输层那边的可靠传输了,但是仅仅实现了停等协议

可靠传输到底在哪一层?

实际上可靠传输是很复杂的,因此实际中都是在传输层实现,正好和TCP一起,方老师是这样讲的,但是在408考纲里面,可靠传输极限情况下可以放在链路层,因此考出来的话,实际上链路+网络+传输,都可以可靠传输。

可靠传输分类:

  1. ARQ,使用确认+重传机制确保可靠
    • 非连续ARQ:停等
    • 连续ARQ
      • GBN
      • SR

具体的讲解仍然是放在传输层里面。

介质访问控制(MAC)

分类:

  1. 信道划分控制:
    • 是一种集中控制的思路,用户服从整体
    • 具体来说就是复用,在后面加个A就是xx多址复用
      • FDM(Frequency)
      • TDM,进阶版是STDM(Static TDM),时隙不固定
      • WDM(Wawe)
      • CDM(Code),码分复用
    • 重点是CDMA,14年真题考了,得学一下细节
  2. 随机访问控制
    • 本质是争用,用户平等,不受控
      • ALOHA
      • CSMA
      • CSMA/CD
      • CSMA/CA
信道划分控制之------CDMA

题型1:CDMA细节(14年真题)

王道考研CDMA

一个bit用一个码片表示,下图长度为8

乍一看浪费了8倍的空间,别急,还有一个要求,就是多个站点之间的码片要正交,结合线性代数的知识可以知道,8维向量,正交的向量个数最多是8个,也就是说,极限情况下可以同时让8个站点使用8个正交的码片。

这个情况下是不存在浪费的,8bit的融合数据里面能包含8×1个bit

好了,继续分析码片的性质,1对应原始码片,要表示0,就把码片01翻转,此时有趣的现象来了,这操作相当于码片对应的向量前面给负号,并不改变正交性。

发送过程很简单:

  1. 发送端,把向量线性叠加
  2. 接收端,用向量乘以接收到的叠加数据,就可以提取出我要的信号

为什么呢?根源在于所有码片是正交的,那么叠加后的数据乘以某个码片,只有对应码片才能有结果,其他码片的内积都是0,所以实际上叠8个都是可以的

所以CDMA,效果好,抗干扰,保密性好,且不浪费,优点突出。

举例14年真题

首先审好题,C收到A发的数据,也就是说要用A的码片去解析

随机访问控制

ALOHA,很老,简陋

ALOHA采用ack机制,如果发送方没有收到ack,代表冲突了,则经过随机事件后重发

时隙ALOHA将时间对齐,规定发送帧必须在时间片开头发送,这样可以降低碰撞率

CSMA整个系列的都可以一起讲,最开始讲一下CSMA/CD,之后的进行简化就可以。

CSMA是弱化版CSMA/CD协议,有三种,区分一下:

  1. 坚持和非坚持的区别在于,信道忙的时候是否要暂停监控
  2. 坚持内部,1和p的区别在于信道空闲的时候立即发送的概率

上图只列出两种情况,其实还有一种冲突的情况,就是争用期内发生碰撞,此时这几个协议都会暂停一段时间再监听,注意,这个冲突是通过监听实现的,而不是ack

CSMA/CA,CA是Avoid,CD是Detect,区别在于CD只能检测,而CA只能避免:

  1. CD,手法简陋,重点在发送过程的检测
  2. CA,有详细的预约机制和确认机制
    • 通过RTS(Request)和CTS(Clear)进行握手,实际上是建立了两个站点之间的链接,保证发送过程不被打扰。
    • 发送过程是停等协议的过程,有ack机制
    • 弱化检测,因此广泛用于无线网络(反正无线网络在发送过程中也很难检测)

11年真题:在随机访问控制里面,ALOHA是用ack的,CSMA全系里面,只有CSMA/CA用ack

20年真题:CA的监听是通过RTS实现的,在第一个RTS被回复之前,前面所有RTS消耗的时间就是监听消耗的时间,是最长的。这道题图里给的RTS是被回复的第一个RTS,前面其实还有RTS,只不过被隐藏在IFS1里面了,因此IFS1就是最长的。

轮询访问控制

前两种MAC方式,都是平等的,但是轮询需要有一个主机,控制整个系统。

缺点在于,轮询过程本身有消耗,其次主机万一坏了就尴尬了(单点故障)

令牌传递协议是轮询的优化,去除了主机控制,用令牌去代替。

注意,令牌环网是逻辑环网,实际上还是星形的物理拓扑。

发送过程就是令牌在不断转圈:

  1. 如果不发送,就不断地传下去
  2. 如果发送
    • 修改占用位
    • 附加数据
    • 此时仍然是转圈,其他非目标节点接收到令牌后,发现不是给自己的,就继续传下去,直到目标节点,接受了数据,继续把令牌传下去

说白了,令牌永远都在按顺序转,只是把发送数据和商量的过程藏在了转的过程里。

虽然去掉了主机,但是仍然会有单点故障,让环路断掉,好在可以用备用机顶替。

扩展以太网

线缆区分看后缀(19真题)

BASE5:同轴电缆(数字后缀)

BASE-T:双绞线

BASE-F:光纤

以太网协议区分:

  1. IEEE 802.3
    • 有线以太网,和V2并称,一般混起来用
  2. IEEE 802.11
    • 无线局域网,注意4个地址,在不同情况下代表含义不同
    • 第一种情况是两个终端,两个基站转发,记忆方法是按目的-源,基站-终端来记
      • 1,RA,Receive,目的AP基站
      • 2,TA,Trans,源AP基站
      • 3,DA,Destination,目的终端
      • 4,SA,Source,源终端
    • 第二种情况是两个终端,一个基站转发,又要分两种情况,此时不区分AP和终端,怎么记呢?前两个地址代表方向,<目的站,源站>,最后一个用剩下的终端填就行
      • 发送端,基站,S,D,从S发到基站
      • 接收端,D,基站,S,从基站发到D

以17年真题为例,首先确定是一个基站,然后确定<目的站,源站,剩余>,即<AP,S,D>,所以B

交换机

交换机两点:

  1. 自学习
  2. 无目标则广播(本端口不播)

以14年为例,首先无目标,则广播23端口

此时自学习,记录a1-1端口,因此ack有目标不需要广播

16年同理,因为自学习机制,H2会被记录,因此H4反馈ack的时候,交换机端口上只有H2所在端口会转发ack,但是注意H4在到达交换机之前,还经过一个Hub,这里无条件广播的。

网络层

这一章是重中之重,不会的话大题就没了。

网络层功能

注意SDN这个考点,22年新加入,细化了。

SDN说白了就是集中管理,并且将控制层单独抽离出来,进行软件层面的编辑,然后下放给数据层,进行转发控制

SDN控制层在中间,向上把北向接口提供给程序员,进行软件的设计,向下把南向接口提供给硬件设备,至于如何兼容,就要靠Openflow之类的南向接口协议了。

22年真题考的就是南向接口,那么如果要继续考,无非就是流表本身或者北向接口了。

IPv4协议

IP地址

首先是ABCDE类IP地址,其次是CIDR,最后就是子网划分。

注意,CIDR中,子网号没有特例,分3位就是8个子网,而网内主机号要去掉两个特例(10,11)

出于网络安全考虑,专门划分了一些IP地址专用于局域网,比如10,172,192中的一些IP地址,专用与本地,又叫可重用地址

看12年真题,网络内部全1,因此子网掩码为0的位,都要置1,不要只置最后一节(那样就会选到B)

18年真题,考虑两个特例,全0为本地,只能作为源地址,全1为网内广播,只能作为目的地址

19年真题考察变长子网号分配法,类似于计组里面的指令条数计算,因为这里是2进制的,所以当前位使用0,留出1给下一级用,因此前3级子网号为0,10,110,然后第四级要终止了,所以不留了,全用光,为1110,1111,即4位子网号

思路拓展一下,如果是6个子网呢?那就要多分一级了,前4级给4个子网号,最后一级用2个子网号,总结一下,k级变长分配,可以制造k+1个子网号。

21年的子网划分考的比较难,但是本质上无非就是两种子网划分方法的情况,考虑变长形式,3个子网就分两级,那么题干给的10,既可以作为变长的第一级,即10,110,110分法,也可以作为变长的第二级,即0,10,11分法,此时已经可以把(0,11,110,111这4个选项排除了),为什么00错了呢?因为00只能是定长,就得分00,01,10,11,4个子网了

IP数据报分析

之前说过,如果MTU=1500,那么偏移位恰好是可以满足8的倍数的,因此数据可以装满1480B

但是在21年真题里面,MTU换了一下

因此需要在数据(780B)范围内进行对齐,对8取余,把余数剪掉剩下的就是可以被整除的长度了,这里余4,776B就是极限的IP数据部分

所以切分成3个IP数据报,776+20,776+20,8+20,第二个分片总长度为796(算上报头),后面还有分片,所以MF=1

ICMP

类型区分:

  1. 终点不可达。因为各种原因导致发不过去,最常见的错误。
    • 曾经有一个源点抑制报文,专门用于处理拥塞问题的,通知源点抑制一下窗口,现在废除了
  2. 时间超过。路由器收到TTL=0的报,无法转发而丢弃
  3. 参数问题。IP首部出错
  4. 改变路由。重定向,下次有一条更好的路走

网络拓扑与转发分析(重点)

选择题:

11年考路由表,明确路由表是针对网络的,所以为了到达所有子网,需要把那两个未达子网的目标网络号统筹起来,因此得到子网掩码是255.255.255.0,下一跳是目标路由器的IP接口,即~.2,选D。注意区分下一跳和接口字段,下一跳是目标,而接口字段通常隐藏,就是从哪个门出去的意思。

15年考最长前缀匹配原则

16年考了一道看起来挺吓人的,仔细分析。通过网关和子网掩码可以提取出网络号,发现H1,H2在一个局域网,H3和H4在一个局域网。注意,对于IP通信来说,同一个局域网段的(网络号相同),才可以进行链路层通信,否则必须走网络层路由器,也就是说H1和H3要通信,就得走路由器R2,但是R2上面只给了一个网关,是给H3和H4的网关,因此H1压根就走不了网络层,更别说和H3通信了。

16年又考了一道狠的,考察了访问广域网的过程。首先是局域网发出一个分组,然后经过网关的NAT转换,变成路由器转发端口的IP,问题来了,这个IP是多少呢?关键在于30的网络号,在主机号里忽略掉两个特例00和11,剩下的就是01和10,分别对应201.1.3.9和201.1.3.10,R1占了一个9,因此这里用10。这道题综合考察了互联网转发过程,NAT,和IP地址,挺好。

18年本质上考的是ARP原理,这道题只是考了其中的MAC地址转换过程

22年真题,考网关是什么?首先,网关是一个局域网内部的IP地址,因此网关的网络号就是局域网的网络号(子网掩码同理),其次,网关要连在路由器上,所以用距离本网络最近的路由器的端口当网关

若干大题

TODO,后面写

路由算法和路由协议

这一块能出大题,所以同样重点,不可以糊弄。

这些协议都是应用层协议

  1. IGP
    • 最常用RIP,搭配距离向量算法,使用UDP
    • 规模大则用OSPF,搭配链路状态算法,尽可能精简数据,使用IP,直接把数据塞到IP数据报里面,没有UDP报头
  2. EGP
    • 最常用BGP-4,搭配路径向量算法,需要保证稳定,因此使用TCP协议

选择题挺简单,最难的是16年真题,这道题考了"坏消息传的慢"的过程。

R1,R2此时都为(目标网络,2,R3),R3为(目标网络,16,-),题目告诉你,R3只向R2通告了,R1是不受影响的,所以R2会先变成(目标网络,16,-),之后又会收到R1的通告,变成(目标网络,2+1,R1),此后就是满收敛的过程了,没有继续深入考了。这道题的关键在于,R3只向R2通告,而题目说的R2更新,是包括R3,R1各自通告一次后的结果,如果只考虑R3那一次,就会选C,其实还有一次R1呢,这是命题人的目的。

还有就是,我的笔记里那个例子没有说明(a,b,c)到底是代表什么,所以我自己复习都没看懂,实际上应该是(目标网络号,距离,下一跳),后面补上

传输层

可靠传输

ACK是标记,用于表示是否是反馈,而ack是确认号

ack到底是多一位还是正好,实际上普遍是ack多一位,比如收到了100,那么就ack(101),这样比较方便,发送方直接把窗口起始位置调成ack的值就可以,非常直观。后面你看到方老师给的图,基本都是这样。

注意区分,题目给出"收到x号帧的确认",这是一种文字性描述,代表已经收到了x,但是如果是"ack=x",那么实际上只代表收到了x-1

题型1:传输过程分析,11,12年真题,这个简单

题型2:窗口大小限制(17年真题)

首先明确帧号(数据下标)默认从0开始,比如2bit编号,数据号就是0,1,2,3,而窗口大小,确实就是长度,从1开始

GBN和SR是统一看的,凡是采用窗口协议,nbit编码,那么两方窗口之和≤ 2 n 2^n 2n

GBN协议中,接收至少=1,那么发送端窗口尺寸最大 2 n − 1 2^n-1 2n−1

考虑SR协议,两方窗口要相等才最好,因此单方窗口最大是 2 n − 1 2^{n-1} 2n−1,最佳也应该是这个值。

举个极端的例子证明为什么窗口总和最大为 2 n 2^n 2n,以n=3举例,如果窗口大小为8(危险),那么最多同时发0-7,那么接下来0号帧就会有歧义:

  1. 如果确认帧正常,下一个0代表有效帧
  2. 确认帧丢失,那么0代表重传的帧

关键是接收方无法确定确认帧是否丢失,所以窗口大小要让出一个来,不可以是 2 n 2^n 2n

17年真题直接秒了

题型3:信道利用率(超高频考点,基本每年)

本质上,是单个周期内,发送数据的时间占比(剩余的时间就是空闲时间)

停等协议最好计算,一个周期=发送一个帧+RTT

GBN协议和SR本质上是流水线,因此需要让流水线跑满才能保证信道利用率最大(反之,退化为停等)

此时就要考虑传播时延,你要保证在一帧的整个周期内,数据帧发送是不间断的,即一个窗口的传输时间≥周期,左右同乘数据率,则一个窗口的数据量≥一个周期内的最大数据传送量

以13年举例。

首先,桢长度不确定,取最小的极限情况,原因是如果帧更大,那么发送的数据量绝对满足流水线要求,但是反过来就不一定了,帧变小会导致窗口的数据量缩水,不见得可以满足。

之后计算一个周期发送的帧数量为10.4,也就是说窗口大小至少要有11,对应4bit编码

在看14年,先算一帧周期,0.08ms+2×50ms,约等于100ms,此时一个窗口的数据量为8Mb<10Mb的周期极限数据量,就知道跑不满流水线,此时效率为80%,因此实际速率是80Mb/s

15年,本质一样,你先算极限情况下一个周期可以发多少帧,单帧62.5ms,一个周期有9个帧,然后用效率卡一下是7.2个帧,也就是说至少8个帧,注意陷阱,GBN窗口大小限制是 2 n − 1 2^n-1 2n−1,所以最后是4bit编码

16题更简单,停等,设未知数套公式,信道利用率=传输时间/一帧周期

18年把确认帧改为1000B,因此周期公式要变长一点,所以周期是2000ms,但是注意,ACK虽然也是传输时延,但是并不是数据的传输时延,因此真正的数据发送时间只有800ms,结果为40%

UDP

报头计算,伪首部之类

TCP

到底是面向字节传输还是数据报传输

拥塞控制

关于ssthresh,cwnd在慢开始过程中是指数增长的,但是ssthresh并不是指数级,比如ss=12,但是cwnd原来是8,下一轮到底是从16开始进入拥塞避免还是从12呢?

很显然,是12,符合直觉,所以拥塞避免算法的开端一定是ssthresh。

关于下调,无论是拥塞还是3ACK,都代表ssthresh不合理,通通要腰斩。区别仅在于cwnd,拥塞下调的彻底,直接归1,慢开始,而3ACK要跳过慢开始,直接拥塞避免,因此从ssthresh开始,即cwnd=ssthresh(下调后的)

TCP建立和断开

我们默认都是消耗序号的。

三次握手比较简单,四次挥手有一点细节。

就是断开连接的通知,FIN=1,而响应则FIN=0.

其次就是,被动方第一次是响应,第二次是断开,细节在于这两次实际上可以理解为一次通知分开了,为什么呢?一来,他们的ACK=1,二来他们的ack值相等,都是u+1,所以本质上算是一次的,只不过这里分开了,更加灵活。

应用层

http协议

不同版本的交互流程

1.0

建立,发送,断开

1.1

建立,发送多个(可能是流水线),断开

2.0

加密+1.1

两个服务器

本地域名服务器和代理服务器的区别,代理服务器是针对URL资源的,比如你的b站视频,网页,而本地域名服务器是针对<域名,IP>的键值对的。

相关推荐
大筒木老辈子30 分钟前
Linux笔记---协议定制与序列化/反序列化
网络·笔记
草莓熊Lotso38 分钟前
【C++】递归与迭代:两种编程范式的对比与实践
c语言·开发语言·c++·经验分享·笔记·其他
我爱挣钱我也要早睡!4 小时前
Java 复习笔记
java·开发语言·笔记
汇能感知8 小时前
摄像头模块在运动相机中的特殊应用
经验分享·笔记·科技
阿巴Jun9 小时前
【数学】线性代数知识点总结
笔记·线性代数·矩阵
茯苓gao9 小时前
STM32G4 速度环开环,电流环闭环 IF模式建模
笔记·stm32·单片机·嵌入式硬件·学习
是誰萆微了承諾9 小时前
【golang学习笔记 gin 】1.2 redis 的使用
笔记·学习·golang
DKPT10 小时前
Java内存区域与内存溢出
java·开发语言·jvm·笔记·学习
lwewan10 小时前
26考研——内存管理_内存管理策略(3)
考研
ST.J10 小时前
前端笔记2025
前端·javascript·css·vue.js·笔记