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

文章目录

    • 体系结构
    • 物理层
      • 速率辨析
      • 交换方式辨析
      • 编码调制辨析
    • 链路层
      • 链路层功能
      • 介质访问控制(MAC)
        • 信道划分控制之——CDMA
        • 随机访问控制
        • 轮询访问控制
      • 扩展以太网
      • 交换机
    • 网络层
      • 网络层功能
      • IPv4协议
        • IP地址
        • IP数据报分析
        • ICMP
      • 网络拓扑与转发分析(重点)
      • 路由算法和路由协议
    • 传输层
      • 可靠传输
      • 拥塞控制
      • TCP建立和断开
      • UDP/TCP综合
      • 校验和报头总结
    • 应用层
      • DNS协议
      • FTP协议
      • http协议
      • 两个服务器

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

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

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

体系结构

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协议

在这里插入图片描述

OSPF细化一下吧,总共分为两大阶段:

  1. 邻居关系构建
    • 对于一个路由器,通过HELLO问候文组发现周围邻居
    • 进一步设置metric=成本,储存在数据库中
  2. 洪泛
    • 路由器:简要描述,发送DD(Description)数据库描述分组,发送一个简化版的数据库给邻居
    • 邻居:对比反馈,如果有更新的条目,则通过LSR(Request)链路状态请求分组,反馈给路由器,表示邻居需要更新
    • 路由器:发送具体更新条目,以LSU(Update)链路状态更新分组的形式发送
    • 邻居:更新反馈,把条目更新后反馈一个ack,以LSAck(Ack)链路状态确认分组的形式反馈

在这里插入图片描述

补充一下:

  • 2过程是一个一石激起千层浪的过程,以一个路由器为中心,其DD可以顺着网络蔓延到整个自治系统,这个过程成本比较大,所以OSPF主要在链路状态变化时洪泛,当然也可以一定时间间隔再发送,只是间隔更长
  • 每个路由器都储存了整个AS的地图,因此可以使用Dijkstrea算法构建路径,但是路由表只存下一跳的信息

选择题挺简单,最难的是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 2n1

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

举个极端的例子证明为什么窗口总和最大为 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 2n1,所以最后是4bit编码

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

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

拥塞控制

关于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,所以本质上算是一次的,只不过这里分开了,更加灵活。

UDP/TCP综合

前面说,TCP是面向字节流传输的,但是却是封装在数据报里面的,所以到底怎么传输的?

在窗口控制中,数据是以字节为单位的,比如一轮发送半个窗口的数据,而这些数据要传输,必然是要封装TCP报头的,如果1B数据就要一个TCP报头,很显然不合理,因此实际上是把一轮数据封装到TCP报头的,也就是一个TCP段。

所以这两者不冲突,面向字节流,指的是窗口单位是字节,而一轮GBN可以发送很多数据,这些数据被一次性打包到TCP报文里了。

再提一嘴段长的概念,其实就是有效载荷,最大段长和MSS字段一致

题型1:TCP首部细节计算

ack与seq,段长的关系,seq代表第一个字节的下标,因此本段最后一个字节的下标为seq+段长-1,因为ack要下一段的第一个字节,因此要再加一,正好和-1抵消,因此ack=seq+段长,所以ack为下一个段的第一字节,这种设定是非常优秀的,计算很简洁,如果选择题碰上了考的很细节的,不确定请务必画个图分析一下下标到底差多少。

09年真题,直接加
11年真题,1段的确认号=2段的seq,直接用3段seq-2段长度
13年真题,新的seq=收到的ack,而反馈的ack=收到的seq+段长,因此是2013,注意不要算成2014(如果真考出来可能就会有一批人错)

题型2:TCP建立连接/断开细节

三次握手中,前两次必然消耗序号,最经典的考法就是考两侧的seq和ack

进阶一点还会考第三次握手,假如第一次握手用的是seq,关键在于,第三次握手如果不带数据,就不会消耗序号,这句话其实有更深层次的统一性。如果你第三次握手不带数据,那么不消耗序号,发送第一个数据的时候,seq=seq+1,如果第三次握手带数据,则消耗序号,实际上你发送第一段数据的时候的seq也是seq+1,也就是说,无论你是否选择在第三次握手带数据,反正你第一次发数据的seq一定是第一次握手的seq+1

看20年真题,你无需管他到底第三次握手带不带数据,反正第一次发数据的seq=1000+1=1001,所以最后总数据=5000-1001+1=4000B,选C

4次挥手中,还会考C/S端的状态变化细节,就是那张图:

  1. 第一次挥手,C发出FIN后变成FIN_WAIT-1
  2. 第二次挥手,S发出ack后变成CLOSE-WAIT,C收到ack后变成FIN-WAIT-2,此时S还可以向C端单向传输数据
  3. 第三次挥手,S发出FIN后变为LAST-ACK,C收到FIN后,变成TIME-WAIT
  4. 第四次挥手,C在TIME-WAIT状态中,每隔一段时间都发送一次ack,直到一个设定的时间间隔(2MSL,两倍最长报文段寿命)后才撤掉,这样几乎能100%保证S收到ack(虽然不能完全保证)

21年真题,直接秒了,三次挥手后C变成TIME-WAIT,选B,送分。
22年真题,考了2MSL的细节知识点,最短时间的条件是2,3次挥手无间隔,也就是说S端的close-wait时间段掐没了

题型2:拥塞控制:

其实过程已经很详细了,这里再稍微多点做题细节

首先需要明白cwnd变化的时机,就是在收到ack的一瞬间就变化,以09年真题为例,第4个RTT···收到应答时,也就是说,这一瞬间cwnd已经变化了,所以在8的基础上线性增1即可,即9

其次注意发送窗口,拥塞窗口,接受窗口三者的关系,如14年真题,一看题干就是考你拥塞控制+两窗口取最小,拥塞控制结果为cwnd=12,但是rwnd=10,所以取10,选A

15年真题打烟雾弹,首先是拥塞控制初始阈值,其实就是ssthresh,然后还有一个接受窗口的隐含条件,即接收方有一个缓存,这个缓存剩余的空间就是反馈的rwnd,因为缓存数据没有被取走,所以rwnd是一直在减少的,cwnd又在增加,因此这道题考的绕了个弯,最后还是考这俩窗口的关系,最后rwnd=1,cwnd=16,取1,选A

注意“最快”,“最慢”的表述,有的题不告诉你ssthresh,让你求到达一个wnd的时间,比如17年是最快,所以慢开始,而20年是最慢,所以直接用拥塞避免线性增长。

校验和报头总结

  1. 链路层帧校验和,校验内容和首部
  2. 网络层校验和,仅校验首部
    • 因为网络层传输内容基本不变,所以校验首部最高效
  3. 传输层UDP校验和,校验内容和首部
    • 需要添加伪首部,形成一个涵盖了网络层和传输层两层首部的伪首部

应用层

DNS协议

需要区分1+4级机构:

  1. 用户
  2. 服务器
    • 本地
    • 顶级
    • 权限

16年真题,问的是域名服务器的DNS查询,因此用户那一次请求不算,从本地服务器算起,因此最少是0,最多的话,分了4段就是就是4次。具体过程为,先从根得到com的IP,然后从com得到xyz的IP,然后从xyz得到abc的IP,然后abc得到www的IP,此时已经可以直接访问www的IP了。

20年真题结合了HTTP协议考察上网过程,该过程包括了DNS解析+数据传输(TCP建立连接+网页数据传输),后者需要2个RTT,DNS解析最小和最大分别是0和3个RTT,因此选D

还需要再辨析一下TCP建立连接的消耗时间,从TCP三次握手过程来看,乍一看TCP建立连接要1.5个RTT,但是你要知道第三次握手是可以带数据的,也就是说第三次握手本身已经相当于开始与服务器进行交互了,所以第三次握手完全可以和http请求绑定在一起,从这个角度来看,建立TCP链接实际上只需要1个RTT,因此从建立连接到获取数据其实是2个RTT

FTP协议

两个要点:

  1. 协议,无论是控制还是数据,都用TCP链接
  2. 端口,控制端口是服务器的21,数据端口不一定,用x,y表示任一端口
    • PORT模式(默认),服务器开放20端口,连接客户端的x端口
    • PASV模式(被动模式),服务器开放y端口,客户端用x端口链接y端口,也就是说,PASV模式下,数据端口完全就是协商而来的

http协议

不同版本的交互流程:

  • 1.0,非持久链接,建立,发送,断开
  • 1.1,默认持久链接,建立,发送多个(默认是流水线),断开
  • 2.0,加密版本的1.1

HTTP报文分析,注意如下字段:

  1. Host:目标主机
  2. Connection:连接方式,Close代表非持续链接(发完就关闭,close),keep-alive是持续连接
  3. Cookie,是服务器分配给用户的唯一标识,用户第一次被响应后会保存cookie以便下次免登录身份识别,有Cookie代表访问过

从http协议开始,已经可以从头到脚把网络走一遍了:

  1. 浏览器访问万维网URL
  2. DNS请求,获取目标服务器IP地址
    • DNS基于传输层UDP协议
    • DNS请求的过程要熟悉
  3. 进行应用层HTTP协议的访问
    • HTTP基于传输层TCP链接,要先建立连接再传数据
    • 还要注意HTTP的版本号
    • 要注意可靠传输过程中的传输机制与拥塞控制
  4. 在23过程中,整体网络是基于网络层-链路层-物理层的层层转换发送的,需要不断地拆包封装
    • 网络层转发用路由表(以及硬件转发表)
    • 网络层-链路层,用IP地址获取MAC地址要用到ARP协议
    • 链路层进行交换机级别的转发,可能会用到链路层协议,广播或者PPP协议

14年真题本质上是在考这个,SMTP是应用层协议,如果不调用,那么后续就不可能用到了
15年真题考了HTTP报文,注意connection字段
16年真题考了HTTP传输过程,1.1协议下,问至少,就要用流水线传输,因此选B

拓展一下,在流水线+1.1协议的前提下,窗口是会不断增长的,如果一个文件的大小小于一个窗口,那么一轮发送多少文件呢?答案是一个,即使窗口大于文件大小,一次最多也只能发送一个对象,不然无法区分,也就是说如果考的难一点,就会出现一个现象:刚开始文件越发越快,后面文件发送速度就饱和了,一个RTT一个对象。

两个服务器

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/233215.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

阶段十-springsecurity总结

jwt认证流程 SpringSecurity 认证过程 第一步&#xff1a; 创建一个类实现UserDetailsService接口&#xff0c;重写其中的方法 通过重写 public UserDetails loadUserByUsername(String username) 方法 从数据库校验用户输入的用户名 配置SecurityConfig Bean注入 Passwor…

类中成员函数及普通函数地址获取方式

文章目录 代码准备测试演示注意事项成员函数类型申明测试演示总的打印输出 代码准备 头文件:Calc.h #pragma onceclass Calc { public:int add(int,int);//函数声明static int sub(int,int);//函数声明 public:int b;//定义了一个成员变量static int a;//声明了一个静态成员变…

SG3524控制的恒流源电路图

SG3524简介 SG3524是开关电源脉宽调制型控制器。应用于开关稳压器&#xff0c;变压器耦合的直流变换器&#xff0c;电压倍增器&#xff0c;极性转换器等。采用固定频率&#xff0c;脉冲宽度调制&#xff08;脉宽调制&#xff09;技术。输出允许单端或推挽输出。芯片电路包括电…

lvs负载均衡

lvs负载均衡群集 群集 特点&#xff1a;由多台主机构成&#xff0c;都干同一件事&#xff0c;对外显示一个整体 企业集群分类 负载均衡群集高可用群集高性能运算群集 负载均衡群集&#xff08;LB&#xff09; 负载均衡的作用 提高应用系统的响应能力可以处理更多的访问请…

Bifrost 中间件 X-Requested-With 系统身份认证绕过漏洞复现

0x01 产品简介 Bifrost是一款面向生产环境的 MySQL,MariaDB,kafka 同步到Redis,MongoDB,ClickHouse等服务的异构中间件 0x02 漏洞概述 Bifrost 中间件 X-Requested-With 存在身份认证绕过漏洞,未经身份认证的攻击者可未授权创建管理员权限账号,可通过删除请求头实现身…

动态加载库

no_mangle 不要改标识符 首先是认识这个标注&#xff1a;mangle&#xff0c;英文的含义“撕裂、碾压”。我第一次把这个单次误以为是manage&#xff0c;说实话两个单词还挺像的。 RUS中函数或静态变量使用#[no_mangle]这个标注属性后&#xff0c;编译器就不会修改它们的名字了…

Home Assistant 如何开启SSH服务

环境&#xff1a; Home Assistant 11.2 SSH & Web Terminal 17.0 问题描述&#xff1a; Home Assistant 如何开启SSH服务 解决方案&#xff1a; 通过添加一个名为Terminal & SSH的插件来在 Home Assistant 中启用 SSH 服务 下面是启用 SSH 服务的大致步骤&#x…

C++第一讲之初入C++

注&#xff1a;本文是对于学完C语言再学C同学的讲解&#xff0c;主要补充C与C语言不同之处&#xff0c;如果你没学过C语言&#xff0c;不建议观看本文。 一.C简介 我们都知道C语言是过程性语言&#xff08;强调的是实现过程&#xff09;&#xff0c;即对计算机语言要处理的两…

计算机组成原理(存储器的校验)

存储器的校验 说到存储器的校验就是海明码&#xff08;汉明码&#xff09;&#xff0c;这种题型有两种&#xff1a; 1.编码问题&#xff1a;根据要传送的二进制代码来确定其对应的海明码&#xff08;汉明码&#xff09; 2.检错问题&#xff1a;已知收到的汉明码&#xff0c;…

【Linux】Linux运维基础

Linux简介&#xff1a; Linux是一个开源的操作系统内核&#xff0c;最初由Linus Torvalds创建。它通常与GNU工具一起使用&#xff0c;以创建一个完整的操作系统。Linux操作系统有许多基于内核的发行版&#xff0c;如Ubuntu、CentOS、Debian等&#xff0c;每个发行版都有其独特的…

深度学习中常见的激活函数

前文介绍 我们在前面了解到了线性回归模型&#xff0c;其实我们可以把线性回归看成一个单个的神经元&#xff0c;它实际上就完成了两个步骤 1.对输入的特征的加权求和 2.将结果通过传递函数&#xff08;或者激活函数&#xff09;输出 这里我们提到了传递函数&#xff08;或者…

HarmonyOS4.0从零开始的开发教程18后台代理提醒

HarmonyOS&#xff08;十六&#xff09;后台代理提醒 简介 随着生活节奏的加快&#xff0c;我们有时会忘记一些重要的事情或日子&#xff0c;所以提醒功能必不可少。应用可能需要在指定的时刻&#xff0c;向用户发送一些业务提醒通知。例如购物类应用&#xff0c;希望在指定时…

PDF天花板工具 你值得拥有

今天带来的推送是PDF文档阅读器的鼻祖——Adobe 的 Arcobat。 Adobe Acrobat 是由Adobe公司开发的一款PDF&#xff08;Portable Document Format&#xff0c;便携式文档格式&#xff09;编辑软件。借助它&#xff0c;您可以以PDF格式制作和保存你的文档 &#xff0c;以便于浏览…

MATLAB 点云中心化 (40)

MATLAB 点云中心化 一、算法介绍二、算法实现一、算法介绍 使用点云集合中的坐标计算质心,这里将其作为中心,将每个点坐标减去该中心坐标,即可得到中心化的点云,这在很多处理中是必须进行的一个步骤:相当于点云移动到以质心为原点的坐标系 (主要是计算质心和点云偏移两个…

【Maven-Helper】利用 Maven-Helper 解决依赖冲突问题

【Maven-Helper】利用 Maven-Helper 解决依赖冲突问题 1&#xff09;安装 Maven-Helper 插件2&#xff09;Maven Helper 插件使用方法3&#xff09;Idea-Maven 可视化依赖树 1&#xff09;安装 Maven-Helper 插件 这里我们已经安装过了&#xff0c;如果没有安装过&#xff0c;点…

透视表美化——将透视表个别错误值去掉/取消自动更新表宽

1.问题&#xff1a;做透视表时&#xff0c;有时候有个别值求出来是错误值&#xff0c;但是不雅观需要删掉&#xff1b; 2.解决方案 点击数据透视表分析-选项框&#xff0c;将“对于错误值&#xff0c;显示&#xff1a;”选中&#xff0c;可以不填值或者填需要替代的值&#xf…

Ubuntu20.04 下编译安装 ffmpeg 和 ffplay

Ubuntu20.04 下编译安装 ffmpeg 和 ffplay 一、下载源码包二、安装依赖库三、编译四、添加环境变量五、验证是否成功六、问题 一、下载源码包 1.1 官方下载链接&#xff1a;http://ffmpeg.org/download.html 最新版本为6.1&#xff0c;点击 Download Source Code下载即可 &…

四、Spring IoC实践和应用(基于XML配置方式组件管理)

本章概要 基于XML配置方式组件管理 实验一&#xff1a; 组件&#xff08;Bean&#xff09;信息声明配置&#xff08;IoC&#xff09;实验二&#xff1a; 组件&#xff08;Bean&#xff09;依赖注入配置&#xff08;DI&#xff09;实验三&#xff1a; IoC 容器创建和使用实验四…

自助借还办证一体机软件需求说明书

1. 简介 1.1 项目概括 本项目主要实现读者自助办证、借书、还书、查询、续借的功能&#xff0c;减轻管理员的工作量&#xff0c;提升读者的借阅体验&#xff0c;提高了图书的借阅量与流通率&#xff0c;是图书馆智能化、无人化建设的重要步骤。 1.2 项目背景 ​ 目前各大图…

WEB渗透—PHP反序列化(四)

Web渗透—PHP反序列化 课程学习分享&#xff08;课程非本人制作&#xff0c;仅提供学习分享&#xff09; 靶场下载地址&#xff1a;GitHub - mcc0624/php_ser_Class: php反序列化靶场课程&#xff0c;基于课程制作的靶场 课程地址&#xff1a;PHP反序列化漏洞学习_哔哩…