泉州做网站公司,科技资讯网站有哪些,提供网站建设价格,网络营销的一般流程文章目录 一、三次握手为什么不是两次握手? 二、四次挥手四次挥手原因 三、总结参考文献 一、三次握手
三次握手#xff08;Three-way Handshake#xff09;其实就是指建立一个TCP连接时#xff0c;需要客户端和服务器总共发送3个包
主要作用就是为了确认双方的接收能力和… 文章目录 一、三次握手为什么不是两次握手? 二、四次挥手四次挥手原因 三、总结参考文献 一、三次握手
三次握手Three-way Handshake其实就是指建立一个TCP连接时需要客户端和服务器总共发送3个包
主要作用就是为了确认双方的接收能力和发送能力是否正常、指定自己的初始化序列号为后面的可靠性传送做准备
过程如下
第一次握手客户端给服务端发一个 SYN 报文并指明客户端的初始化序列号 ISN©此时客户端处于 SYN_SENT 状态第二次握手服务器收到客户端的 SYN 报文之后会以自己的 SYN 报文作为应答为了确认客户端的 SYN将客户端的 ISN1作为ACK的值此时服务器处于 SYN_RCVD 的状态第三次握手客户端收到 SYN 报文之后会发送一个 ACK 报文值为服务器的ISN1。此时客户端处于 ESTABLISHED 状态。服务器收到 ACK 报文之后也处于 ESTABLISHED 状态此时双方已建立起了连接 上述每一次握手的作用如下
第一次握手客户端发送网络包服务端收到了 这样服务端就能得出结论客户端的发送能力、服务端的接收能力是正常的。第二次握手服务端发包客户端收到了 这样客户端就能得出结论服务端的接收、发送能力客户端的接收、发送能力是正常的。不过此时服务器并不能确认客户端的接收能力是否正常第三次握手客户端发包服务端收到了。 这样服务端就能得出结论客户端的接收、发送能力正常服务器自己的发送、接收能力也正常
通过三次握手就能确定双方的接收和发送能力是正常的。之后就可以正常通信了
为什么不是两次握手?
如果是两次握手发送端可以确定自己发送的信息能对方能收到也能确定对方发的包自己能收到但接收端只能确定对方发的包自己能收到 无法确定自己发的包对方能收到
并且两次握手的话, 客户端有可能因为网络阻塞等原因会发送多个请求报文延时到达的请求又会与服务器建立连接浪费掉许多服务器的资源 二、四次挥手
tcp终止一个连接需要经过四次挥手
过程如下
第一次挥手客户端发送一个 FIN 报文报文中会指定一个序列号。此时客户端处于 FIN_WAIT1 状态停止发送数据等待服务端的确认第二次挥手服务端收到 FIN 之后会发送 ACK 报文且把客户端的序列号值 1 作为 ACK 报文的序列号值表明已经收到客户端的报文了此时服务端处于 CLOSE_WAIT状态第三次挥手如果服务端也想断开连接了和客户端的第一次挥手一样发给 FIN 报文且指定一个序列号。此时服务端处于 LAST_ACK 的状态第四次挥手客户端收到 FIN 之后一样发送一个 ACK 报文作为应答且把服务端的序列号值 1 作为自己 ACK 报文的序列号值此时客户端处于 TIME_WAIT状态。需要过一阵子以确保服务端收到自己的 ACK 报文之后才会进入 CLOSED 状态服务端收到 ACK 报文之后就处于关闭连接了处于 CLOSED 状态 四次挥手原因
服务端在收到客户端断开连接Fin报文后并不会立即关闭连接而是先发送一个ACK包先告诉客户端收到关闭连接的请求只有当服务器的所有报文发送完毕之后才发送FIN报文断开连接因此需要四次挥手 三、总结
一个完整的三次握手四次挥手如下图所示 –
参考文献
https://zhuanlan.zhihu.com/p/53374516https://segmentfault.com/a/1190000020610336 希望本文能够对您有所帮助如果您有任何问题或建议请随时在评论区留言联系 章挨踢章IT 谢谢阅读