河南航天建设工程有限公司网站,wordpress怎样批量修改时间,广州陈村网站建设,网站单页别人是怎么做的文章目录1.第2次握手传回了ACK#xff0c;为什么还要传回SYN#xff1f;2.断开连接-TCP 四次挥手3.为什么要四次挥手#xff1f;4.为什么不能把服务器发送的 ACK 和 FIN 合并起来#xff0c;变成三次挥手#xff1f;5.如果第二次挥手时服务器的 ACK 没有送达客户端#x…
文章目录1.第2次握手传回了ACK为什么还要传回SYN2.断开连接-TCP 四次挥手3.为什么要四次挥手4.为什么不能把服务器发送的 ACK 和 FIN 合并起来变成三次挥手5.如果第二次挥手时服务器的 ACK 没有送达客户端会怎样6.为什么第四次挥手客户端需要等待 2*MSL报文段最长寿命时间后才进入 CLOSED 状态1.第2次握手传回了ACK为什么还要传回SYN 服务端传回发送端所发送的 ACK 是为了告诉客户端“我接收到的信息确实就是你所发送的信号了”这表明从客户端到服务端的通信是正常的。回传 SYN 则是为了建立并确认从服务端到客户端的通信。
SYN 同步序列编号(Synchronize Sequence Numbers) 是 TCP/IP 建立连接时使用的握手信号。在客户机和服务器之间建立正常的 TCP 网络连接时客户机首先发出一个 SYN 消息服务器使用 SYN-ACK 应答表示接收到了这个消息最后客户机再以 ACK(Acknowledgement消息响应。这样在客户机和服务器之间才能建立起可靠的 TCP 连接数据才可以在客户机和服务器之间传递。
2.断开连接-TCP 四次挥手 断开一个 TCP 连接则需要“四次挥手”缺一不可
第一次挥手 客户端发送一个 FINSEQX 标志的数据包-服务端用来关闭客户端到服务器的数据传送。然后客户端进入 FIN-WAIT-1 状态。
第二次挥手 服务器收到这个 FINSEQX 标志的数据包它发送一个 ACK SEQX1标志的数据包-客户端 。然后此时服务端进入CLOSE-WAIT状态客户端进入FIN-WAIT-2状态。
第三次挥手 服务端关闭与客户端的连接并发送一个 FIN (SEQy)标志的数据包-客户端请求关闭连接然后服务端进入LAST-ACK状态。
第四次挥手 客户端发送 ACK (SEQy1)标志的数据包-服务端并且进入TIME-WAIT状态服务端在收到 ACK (SEQy1)标志的数据包后进入 CLOSE 状态。此时如果客户端等待 2MSL报文最大生存时间 后依然没有收到回复就证明服务端已正常关闭随后客户端也可以关闭连接了。
只要四次挥手没有结束客户端和服务端就可以继续传输数据
3.为什么要四次挥手
TCP是全双工通信可以双向传输数据。任何一方都可以在数据传送结束后发出连接释放的通知待对方确认后进入半关闭状态。当另一方也没有数据再发送的时候则发出连接释放通知对方确认后就完全关闭了 TCP 连接。
举个例子A 和 B 打电话通话即将结束后。 第一次挥手 A 说“我没啥要说的了” 第二次挥手 B 回答“我知道了”但是 B 可能还会有要说的话A 不能要求 B 跟着自己的节奏结束通话 第三次挥手 于是 B 可能又巴拉巴拉说了一通最后 B 说“我说完了” 第四次挥手 A 回答“知道了”这样通话才算结束。
4.为什么不能把服务器发送的 ACK 和 FIN 合并起来变成三次挥手
因为服务器收到客户端断开连接的请求时可能还有一些数据没有发完这时先回复 ACK表示接收到了断开连接的请求。等到数据发完之后再发 FIN断开服务器到客户端的数据传送。
5.如果第二次挥手时服务器的 ACK 没有送达客户端会怎样
客户端没有收到 ACK 确认会重新发送 FIN 请求。
6.为什么第四次挥手客户端需要等待 2*MSL报文段最长寿命时间后才进入 CLOSED 状态
第四次挥手时客户端发送给服务器的 ACK 有可能丢失如果服务端因为某些原因而没有收到 ACK 的话服务端就会重发 FIN如果客户端在 2*MSL 的时间内收到了 FIN就会重新发送 ACK 并再次等待 2MSL防止 Server 没有收到 ACK 而不断重发 FIN。
ACK 并再次等待 2MSL防止 Server 没有收到 ACK 而不断重发 FIN。 MSL(Maximum Segment Lifetime) : 一个片段在网络中最大的存活时间2MSL 就是一个发送和一个回复所需的最大时间。如果直到 2MSLClient 都没有再次收到 FIN那么 Client 推断 ACK 已经被成功接收则结束 TCP 连接