Hanzhe Zhang
Hanzhe Zhang
“对于 TCP 头部来说,以下几个字段是很重要的: 序列号 (Sequence number),这个序号保证了 TCP 传输的报文都是有序的,对端可以通过序号顺序的拼接报文 确认号 (Acknowledgement Number),这个序号表示数据接收端期望接收的下一个字节的编号是多少,同时也表示上一个序号的数据已经收到 窗口大小 (Window Size),表示还能接收多少字节的数据,用于流量控制……” [这一段](https://github.com/huyaocode/webKnowledge/blob/master/%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%9F%BA%E7%A1%80/%E7%BD%91%E7%BB%9C/TCP.md)包括之后三步握手部分确实把确认号和ACK标识符区分开了,但是在输入URL到页面加载过程分析[那一段](https://github.com/huyaocode/webKnowledge/blob/master/%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%9F%BA%E7%A1%80/%E7%BD%91%E7%BB%9C/%E4%BB%8E%E8%BE%93%E5%85%A5URL%E5%88%B0%E9%A1%B5%E9%9D%A2%E5%8A%A0%E8%BD%BD%E5%AE%8C%E6%88%90%E7%9A%84%E8%BF%87%E7%A8%8B.md)的三步握手里出现了: “端口建立 TCP 链接,三次握手如下: 客户端发送一个 TCP 的SYN=1,Seq=X的包到服务器端口 服务器发回SYN=1, ACK=X+1, Seq=Y的响应包 客户端发送ACK=Y+1, Seq=Z” 这部分应该是把ACK标识符和确认号混淆了,应该是ACKbit为1,确认号为X+1,因为确认号就等于下一个client request的序列号,而当前client request序列号为X且request大小只有1bit,所以下一个SN就是X+1。