网站 建设在作用是什么意思,征信报告,适合团购报名的网站开发,广东佛山网站建设文章目录TCP为什么要三次握手#xff0c;而不是两次或四次#xff1f;三次握手才可以阻止重复历史连接的初始化#xff08;主要原因#xff09;同步双方初始序列号避免资源浪费小结TCP为什么要三次握手#xff0c;而不是两次或四次#xff1f;
TCP连接时用于保证可靠性和…
文章目录TCP为什么要三次握手而不是两次或四次三次握手才可以阻止重复历史连接的初始化主要原因同步双方初始序列号避免资源浪费小结TCP为什么要三次握手而不是两次或四次
TCP连接时用于保证可靠性和流量控制维护的某些状态信息这些信息的组合包括Socket序列号和窗口大小称为连接。 以上三个方面分析三次握手原因
三次握手才可以阻止重复历史连接的初始化主要原因
首要原因为了防止旧的重复连接初始化造成混乱 网络堵塞情况下如果一个旧的SYN报文比新的SYN报文早到达了服务端那么此时服务端就会回一个SYNACK报文给客户端此时报文中的确认号是91901. 客户端收到后发现自己期望收到的确认号应该是1001而不是91于是就会回RST报文。 服务端收到RST报文后就会释放连接。 后续最新的SYN抵达服务端后就完成正常的三次握手。 旧的SYN报文成为历史连接TCP三次握手最主要的原因就是防止历史连接初始化了连接。
两次握手情况下服务端没有中间状态给客户端阻止历史连接导致服务端可能建立一个历史连接造成资源浪费。 上图可见服务端在向客户端发送数据前并没有阻止历史连接导致服务端建立了一个历史连接又白白发送数据浪费了服务端资源。 因此解决这种现象最好的就是在服务端发送数据前也就是建立连接前组织掉历史连接要是实现这个功能就要三次握手
同步双方初始序列号
序列号作用接收方可以去除重复数据接收方可以根据数据包的序列号按序接受可以标识发送出去的数据包那些已经被对方收到了ACK 四次握手也能够可靠的同步双方的初始化序号但第二步和第三步可以优化成异步所以成了三次握手。 而两次握手只保证了一方的初始序列号能被对方成功接收。
避免资源浪费
两次握手如果客户端发送的SYN报文在网络堵塞了重复发送多次SYN报文那么服务端在收到请求后就会建立多个冗余的无效链接重复分配资源造成不必要的资源浪费。
小结
TCP建立连接通过三次握手能防止历史连接的建立减少双方不必要的资源开销能帮助双方同步初始化序列号。序列号能保证数据包不重复不丢序和按序传输。 不使用「两次握手」和「四次握手」的原因
「两次握手」无法防止历史连接的建立会造成双方资源的浪费也无法可靠的同步双方序列号「四次握手」三次握手就已经理论上最少可靠连接建立所以不需要使用更多的通信次数。