起因

搞计算机的平时有资料去技术博客查是非常自然的,不过国内csdn的博客质量确实堪忧。许多博客转发转发再转发,一个错误从头开始错到尾。
这给需要资源的人带来很大的问题。Errata系列专门写一下勘误,顺便方便自己查询。

错误点 和 勘误

博文链接

图片引用

首先的错误呢是这个FIN标志位,该标志位代表这个tcp包是用来关闭一个连接的。所以如果是想要关闭连接,直接置1就可以了。

第二个错误是回发的Ack,这里的ack代表确认码,应该是发来的包的seq+1,所以Client第一次发送的包应当是 FIN=1 Seq=M,Server第一次回发的包应当是Ack=M+1,ACK=1

其他的一些总结

简单的总结一下三次握手和四次挥手。

三次握手

简单的说从Client开始交替的发送报文。
前两次SYN置1代表要简历连接,后两次ACK置1代表确认接收到包。
同时回发的包的Ack=接收包的Seq+1

四次挥手

如错误图所示,首先一边提出释放连接,发送FIN=1的包,收到包的回发ACK=1 Ack=seq+1的包。另外再发一个FIN=1的包。
比三次多的一次是不能同时将释放连接确认和请求释放连接同时发出,因为需要一段时间确认能够释放连接。