考试后复习诸多议题
其实,我自己也未知读者和用户对 ShoelessCai.com 的总体感觉,我自己在考试的时候,总是觉得非常焦灼,很多问题做不出来。以前看过 Drew 的演讲,就是 Dropbox 创始人,人家说,感受 SAT 考场上,周围人做不出题目的快感。仔细一想,自己就是做不出题目的那一拨中的,一个。于是我就很释然了。
无论考场上多么焦灼,即便平时漂亮话也掩盖不了,这知识还得学,对不对?
所以,我就启用启发式的,提问法。考试后,再复习 408 的时候,对于知识还能深化一些。
1. 网络空间中,数据报在外网之间传输的时候,报文内部的 IP 地址,MAC地址是怎么变的?
参考:
https://www.zhihu.com/question/383634626
https://www.zhihu.com/question/624821901
https://www.cnblogs.com/ranyonsue/p/9713992.html
2. 释放连接一定要用四次握手吗?
TCP释放连接时之所以需要“四次挥手”,是因为FIN释放连接报文与ACK确认接收报文是分别由第二次和第三次"挥手"传输的。为何建立连接时一起传输,释放连接时却要分开传输?
- 建立连接时,被动方服务器端结束CLOSED阶段进入“握手”阶段并不需要任何准备,可以直接返回SYN和ACK报文,开始建立连接。
- 释放连接时,被动方服务器,突然收到主动方客户端释放连接的请求时并不能立即释放连接,因为还有必要的数据需要处理,所以服务器先返回ACK确认收到报文,经过CLOSE-WAIT阶段准备好释放连接之后,才能返回FIN释放连接报文。
参考:
https://www.cnblogs.com/AhuntSun-blog/p/12037852.html
从解释来看,如果释放连接的时候,正好没有数据需要 Delay,也可以三次握手对不对?这种 Case 是一个子集,就统一使用四次握手。
关于 TCP 三次/四次握手,整理如下:
(直接记忆吧!)
1.主机建立连接,建立连接标志 SYN=1,seq=x (这里 seq 与 SYN 是成对出现的)
2.服务器回复 SYN=1(双方都要发送 SYN=1,并且只发一次!),ACK=1,seq=y, ack=x+1 (这里 ack = seq+1 需要背出来的)
3.主机发送 ACK=1, ack=y+1
题目是这么说的,
(A) 建立连接报文段(SYN=1),不携带数据,消耗一个序号。这句话的含义是,但凡SYN=1都是不携带数据,但是消耗序号。
(B) SYN/seq 一起出现,ACK/ack 一起出现;
(C) ack=seq+1
3.以太网帧和ARP Request 中 【目的 MAC】怎么思考?
首先,先看结论。
可以看出,在以太帧中,目的地址和源地址分别为:ff-ff-ff-ff-ff-ff和本机MAC地址,而ARP请求中,目的地址则是00-00-00-00-00-00,源地址为本机MAC地址.
Jingyi 在网上找到一张图,ARP Request 了。
其次,针对上图。我们知道 ARP Request 发出的时候,除了自己数据要写上 4 个地址,在头部还要再协商【以太网目的地址】、【以太网源地址】。
以太网目的 MAC 全1
目的 MAC 全0
4.【指令系统】 更新 2024.1.17
(A)什么时候要计算(PC)自增,什么时候只要知道指令起始地址即可?
相对寻址,会先计算 PC 自增。变址寻址,直接用寄存器内容作为原点地址,加上偏移量,再间址。
(B)考试中,一般会考 PC 怎么变动的。PC 自增的单元数 = 指令长度 / 颗粒度。例如,指令 16 位,按字节编址,则 (PC) -> (PC)+2
(C)如何判断指令 跳转? 是否传参数【入口地址】
(D)如何计算第 N 条指令? 入口地址 + N * 指令长度
欢迎关注 ShoelessCai.com 值得您的关注!