文章目录
- 体系结构
- 物理层
- 速率辨析
- 交换方式辨析
- 编码调制辨析
- 链路层
- 链路层功能
- 介质访问控制(MAC)
- 信道划分控制之——CDMA
- 随机访问控制
- 轮询访问控制
- 扩展以太网
- 交换机
- 网络层
- 网络层功能
- IPv4协议
- IP地址
- IP数据报分析
- ICMP
- 网络拓扑与转发分析(重点)
- 路由算法和路由协议
- 传输层
- 可靠传输
- 拥塞控制
- TCP建立和断开
- UDP/TCP综合
- 校验和报头总结
- 应用层
- DNS协议
- FTP协议
- http协议
- 两个服务器
考完研补充题目图片进来。
方老师课程还有一些细节不够到位,不影响学习,但是初期如果想得多了,会有一些迷惑,后续要把这些补进去文章里,让文章更加好。
这里做出细化,尤其是针对数字,计算,保证无误。
体系结构
OSI模型会考,相比于5层模型,在应用层和传输层之间,多了表示层和会话层。
- 高三层=资源子网
- 应用层是应用程序的所在
- 表示层用于统一不同系统之间数据格式的差异
- 会话层用于建立进程之间的通信(会话)
- 传输层,承上启下,TCP,UDP
- 低三层=通信子网
注意流量控制,在笔记里,我是把流量控制放在传输层了,但是实际上传输层,网络层,链路层都可以进行流量控制,区别在于:
- 传输层,端到端流量控制
- 网络层,整个网络
- 链路层,相邻结点之间
物理层
速率辨析
计算题型二:
注意奈氏准则,香农定理,以及波特率。
波特率(调制速率)是码元传输速率,因此实际速率=码元大小×波特率
实际上奈氏准则公式里的2W就是带宽为W前提下的波特率,反过来算波特率也别忘了码元。
交换方式辨析
三+1种交换的区别:
- 电路交换:一条路走到黑
- 报文交换:电路交换灵活版,一段路走到黑,但是可以分开几段走
- 分组交换,不仅分开几段走,数据报也要切分成分组
- 数据报交换,最基本的分组交换(注意区分报文交换≠数据报交换)
- 虚电路交换
- 流程类似电路交换,先建立连接,之后分配一个虚电路号
- 具有电路交换的顺序性,但是其他方面和分组一致,发送是很灵活的,不用分配带宽(20年真题),且不会占用(可交叉)
三种交换模式的时间计算
数据报交换,假设忽略节点处理时间以及传播时延,只关注发送的时间,那么要按照流水线的思路分析。
假设有n段,那么总时间T=第一个节点发送完全部分组+其余n-1个节点逐级转发完最后一个分组的时间
以10年真题看,首先确定有1000个分组,每一个分组有1000B。第一个节点发送要80s,而之后还要转发3-1=2级,因此还要有2×0.08ms的时间,选C
如果用报文交换呢?每一级都要消耗全部分组的时间,也就是说要3×80s
如果用电路交换呢?已经建立好链接的前提下,就是一级的时间即80s
总的来说,电路交换是最快的,报文交换比电路交换灵活点,但是损耗太大了,而分组交换相当于细分程度很高的流水线,可以逼近电路交换的速度,同时兼顾完美的灵活性。
再论2013年真题,直接用上述思路,报文交换是800×2,而分组交换是800+1
编码调制辨析
- RZ(归零)
- NRZ(不归零)
- NRZI(NRZ invert),翻转NRZ
- 思想像差分曼彻斯特
- 遇到0则翻转
- 差异有二,NRZI反转的是电平,而差分曼彻斯特是跳变方向,其次是NRZI遇0翻转,而差分曼彻斯特遇1翻转
- 曼彻斯特,跳变方向代表0或者1
- 差分曼彻斯特
- 曼彻斯特的导数(差分)
- 跳变方向改变代表1,不变代表0(导数为零)
具体做题的时候,先通过波形判断是R系的,还是曼彻斯特系的,之后再内部区分。
不同调制:
- ASK(Amplify SK),调幅
- FSK(Frequency SK),调频
- PSK(Phase SK),调相
- QAM,相当于ASK和PSK杂交
链路层
链路层功能
我们学的只是无确认的无连接服务,实际上链路层有三种功能,逐级递进
- 无确认+无连接
- 有确认+无连接
- 加入重传机制,用于错误率较高的信道,比如无线
- 有确认+有连接
- 这里就非常像传输层那边的可靠传输了,但是仅仅实现了停等协议
可靠传输到底在哪一层?
实际上可靠传输是很复杂的,因此实际中都是在传输层实现,正好和TCP一起,方老师是这样讲的,但是在408考纲里面,可靠传输极限情况下可以放在链路层,因此考出来的话,实际上链路+网络+传输,都可以可靠传输。
可靠传输分类:
- ARQ,使用确认+重传机制确保可靠
- 非连续ARQ:停等
- 连续ARQ
- GBN
- SR
具体的讲解仍然是放在传输层里面。
介质访问控制(MAC)
分类:
- 信道划分控制:
- 是一种集中控制的思路,用户服从整体
- 具体来说就是复用,在后面加个A就是xx多址复用
- FDM(Frequency)
- TDM,进阶版是STDM(Static TDM),时隙不固定
- WDM(Wawe)
- CDM(Code),码分复用
- 重点是CDMA,14年真题考了,得学一下细节
- 随机访问控制
- 本质是争用,用户平等,不受控
- 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翻转,此时有趣的现象来了,这操作相当于码片对应的向量前面给负号,并不改变正交性。
发送过程很简单:
- 发送端,把
向量
线性叠加 - 接收端,用向量乘以接收到的叠加数据,就可以提取出我要的信号
为什么呢?根源在于所有码片是正交的,那么叠加后的数据乘以某个码片,只有对应码片才能有结果,其他码片的内积都是0,所以实际上叠8个都是可以的
所以CDMA,效果好,抗干扰,保密性好,且不浪费,优点突出。
举例14年真题
首先审好题,C收到A发的数据,也就是说要用A的码片去解析
随机访问控制
ALOHA,很老,简陋
ALOHA采用ack机制,如果发送方没有收到ack,代表冲突了,则经过随机事件后重发
时隙ALOHA将时间对齐,规定发送帧必须在时间片开头发送,这样可以降低碰撞率
CSMA整个系列的都可以一起讲,最开始讲一下CSMA/CD,之后的进行简化就可以。
CSMA是弱化版CSMA/CD协议,有三种,区分一下:
- 坚持和非坚持的区别在于,信道忙的时候是否要暂停监控
- 坚持内部,1和p的区别在于信道空闲的时候立即发送的概率
上图只列出两种情况,其实还有一种冲突的情况,就是争用期内发生碰撞,此时这几个协议都会暂停一段时间再监听,注意,这个冲突是通过监听实现的,而不是ack
CSMA/CA,CA是Avoid,CD是Detect,区别在于CD只能检测,而CA只能避免:
- CD,手法简陋,重点在发送过程的检测
- CA,有详细的预约机制和确认机制
- 通过RTS(Request)和CTS(Clear)进行握手,实际上是建立了两个站点之间的链接,保证发送过程不被打扰。
- 发送过程是停等协议的过程,有ack机制
- 弱化检测,因此广泛用于无线网络(反正无线网络在发送过程中也很难检测)
11年真题:在随机访问控制里面,ALOHA是用ack的,CSMA全系里面,只有CSMA/CA用ack
20年真题:CA的监听是通过RTS实现的,在第一个RTS被回复之前,前面所有RTS消耗的时间就是监听消耗的时间,是最长的。这道题图里给的RTS是被回复的第一个RTS,前面其实还有RTS,只不过被隐藏在IFS1里面了,因此IFS1就是最长的。
轮询访问控制
前两种MAC方式,都是平等的,但是轮询需要有一个主机,控制整个系统。
缺点在于,轮询过程本身有消耗,其次主机万一坏了就尴尬了(单点故障)
令牌传递协议是轮询的优化,去除了主机控制,用令牌去代替。
注意,令牌环网是逻辑环网,实际上还是星形的物理拓扑。
发送过程就是令牌在不断转圈:
- 如果不发送,就不断地传下去
- 如果发送
- 修改占用位
- 附加数据
- 此时仍然是转圈,其他非目标节点接收到令牌后,发现不是给自己的,就继续传下去,直到目标节点,接受了数据,继续把令牌传下去
说白了,令牌永远都在按顺序转,只是把发送数据和商量的过程藏在了转的过程里。
虽然去掉了主机,但是仍然会有单点故障,让环路断掉,好在可以用备用机顶替。
扩展以太网
线缆区分看后缀(19真题)
BASE5:同轴电缆(数字后缀)
BASE-T:双绞线
BASE-F:光纤
以太网协议区分:
- IEEE 802.3
- 有线以太网,和V2并称,一般混起来用
- 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
交换机
交换机两点:
- 自学习
- 无目标则广播(本端口不播)
以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
类型区分:
- 终点不可达。因为各种原因导致发不过去,最常见的错误。
- 曾经有一个源点抑制报文,专门用于处理拥塞问题的,通知源点抑制一下窗口,现在废除了
- 时间超过。路由器收到TTL=0的报,无法转发而丢弃
- 参数问题。IP首部出错
- 改变路由。重定向,下次有一条更好的路走
网络拓扑与转发分析(重点)
选择题:
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,后面写
路由算法和路由协议
这一块能出大题,所以同样重点,不可以糊弄。
这些协议都是应用层协议
- IGP
- 最常用RIP,搭配
距离
向量算法,使用UDP - 规模大则用OSPF,搭配链路状态算法,尽可能精简数据,使用IP,直接把数据塞到IP数据报里面,没有UDP报头
- 最常用RIP,搭配
- EGP
- 最常用BGP-4,搭配
路径
向量算法,需要保证稳定,因此使用TCP协议
- 最常用BGP-4,搭配
OSPF细化一下吧,总共分为两大阶段:
- 邻居关系构建
- 对于一个路由器,通过HELLO问候文组发现周围邻居
- 进一步设置metric=成本,储存在数据库中
- 洪泛
- 路由器:简要描述,发送DD(Description)数据库
描述
分组,发送一个简化版的数据库给邻居 - 邻居:对比反馈,如果有更新的条目,则通过LSR(Request)链路状态
请求
分组,反馈给路由器,表示邻居需要更新 - 路由器:发送具体更新条目,以LSU(Update)链路状态
更新
分组的形式发送 - 邻居:更新反馈,把条目更新后反馈一个ack,以LSAck(Ack)链路状态
确认
分组的形式反馈
- 路由器:简要描述,发送DD(Description)数据库
补充一下:
- 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 2n−1
考虑SR协议,两方窗口要相等才最好,因此单方窗口最大是 2 n − 1 2^{n-1} 2n−1,最佳也应该是这个值。
举个极端的例子证明为什么窗口总和最大为 2 n 2^n 2n,以n=3举例,如果窗口大小为8(危险),那么最多同时发0-7,那么接下来0号帧就会有歧义:
- 如果确认帧正常,下一个0代表有效帧
- 确认帧丢失,那么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%
拥塞控制
关于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端的状态变化细节,就是那张图:
- 第一次挥手,C发出FIN后变成FIN_WAIT-1
- 第二次挥手,S发出ack后变成CLOSE-WAIT,C收到ack后变成FIN-WAIT-2,此时S还可以向C端单向传输数据
- 第三次挥手,S发出FIN后变为LAST-ACK,C收到FIN后,变成TIME-WAIT
- 第四次挥手,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年是最慢,所以直接用拥塞避免线性增长。
校验和报头总结
- 链路层帧校验和,校验内容和首部
- 网络层校验和,仅校验首部
- 因为网络层传输内容基本不变,所以校验首部最高效
- 传输层UDP校验和,校验内容和首部
- 需要添加伪首部,形成一个涵盖了网络层和传输层两层首部的伪首部
应用层
DNS协议
需要区分1+4级机构:
- 用户
- 服务器
- 本地
- 根
- 顶级
- 权限
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协议
两个要点:
- 协议,无论是控制还是数据,都用TCP链接
- 端口,控制端口是服务器的21,数据端口不一定,用x,y表示任一端口
- PORT模式(默认),服务器开放20端口,连接客户端的x端口
- PASV模式(被动模式),服务器开放y端口,客户端用x端口链接y端口,也就是说,PASV模式下,数据端口完全就是协商而来的
http协议
不同版本的交互流程:
- 1.0,非持久链接,建立,发送,断开
- 1.1,默认持久链接,建立,发送多个(默认是流水线),断开
- 2.0,加密版本的1.1
HTTP报文分析,注意如下字段:
- Host:目标主机
- Connection:连接方式,Close代表非持续链接(发完就关闭,close),keep-alive是持续连接
- Cookie,是服务器分配给用户的唯一标识,用户第一次被响应后会保存cookie以便下次免登录身份识别,有Cookie代表访问过
从http协议开始,已经可以从头到脚把网络走一遍了:
- 浏览器访问万维网URL
- DNS请求,获取目标服务器IP地址
- DNS基于传输层UDP协议
- DNS请求的过程要熟悉
- 进行应用层HTTP协议的访问
- HTTP基于传输层TCP链接,要先建立连接再传数据
- 还要注意HTTP的版本号
- 要注意可靠传输过程中的传输机制与拥塞控制
- 在23过程中,整体网络是基于网络层-链路层-物理层的层层转换发送的,需要不断地拆包封装
- 网络层转发用路由表(以及硬件转发表)
- 网络层-链路层,用IP地址获取MAC地址要用到ARP协议
- 链路层进行交换机级别的转发,可能会用到链路层协议,广播或者PPP协议
14年真题本质上是在考这个,SMTP是应用层协议,如果不调用,那么后续就不可能用到了
15年真题考了HTTP报文,注意connection字段
16年真题考了HTTP传输过程,1.1协议下,问至少
,就要用流水线传输,因此选B
拓展一下,在流水线+1.1协议的前提下,窗口是会不断增长的,如果一个文件的大小小于一个窗口,那么一轮发送多少文件呢?答案是一个,即使窗口大于文件大小,一次最多也只能发送一个对象,不然无法区分,也就是说如果考的难一点,就会出现一个现象:刚开始文件越发越快,后面文件发送速度就饱和了,一个RTT一个对象。
两个服务器
本地域名服务器和代理服务器的区别,代理服务器是针对URL资源的,比如你的b站视频,网页,而本地域名服务器是针对<域名,IP>的键值对的。