三次握手
\
为什么是三次握手?
(两次握手情况)如果客户端发送的第一次握手请求延迟了,服务器接收到这个失效的请求,同意建立连接,但是客户端没有信息传来,服务器的资源就浪费了。
简单来说就是:防止服务器收到无效链接的情况,要保证双方都收到了最新的链接。
ISN(initial sequence number初始序列号)机制
当新建一个连接时,ISN生成器就会就会生成一个唯一的ISN
如何确保ISN唯一?
这个生成器用了32位的时钟,4µs 增长一次,大概4.55小时一个循环,而最大分段寿命(Maximum Segment Lifetime (MSL)默认是2分钟长,所以我们可以认为ISN是唯一的
发送方和接收方都有自己的ISN,就是双方发送的第一个seq。
发送双方都不知道当前收到的这个ISN是否延迟了很久,所以都要向对方确定一次。
因为双方创建ISN的规则可能不同,所以需要向对方确定,如果有一个全局时钟,那就可以直接确定这个包有没有延迟了。
SYN同步序列编号(Synchronize Sequence Numbers)
SYN=1,,,提示TCP连接的服务端检查序列编号
四次挥手
为什么要四次挥手
TCP是全双工通信,不能单方面完全断开连接
客户端发送FIN:只能断开 客户端 -> 服务端 方向的连接
服务端发送FIN:只能断开 服务端 -> 客户端 方向的连接
参考文章:
http://www.mamicode.com/info-detail-2995715.html
https://blog.youkuaiyun.com/weixin_44478378/article/details/108069625
https://blog.youkuaiyun.com/weixin_44478378/article/details/108069625