网站备案方案,263企业邮箱登录入口收费,阿里云服务器如何用IP做网站,苏州注册公司可以用住宅地址吗文章目录 一、两种状态图二、常见问题1、MSL是什么 3、为何等待2MSL3、为何三次握手#xff0c;不握手、握手一次、两次行吗4、为何四次挥手#xff0c;三次行吗#xff0c;两次行吗 一、两种状态图 四次挥手 二、常见问题
1、MSL是什么
MSL是Maximum Segment Lifetime的英… 文章目录 一、两种状态图二、常见问题1、MSL是什么 3、为何等待2MSL3、为何三次握手不握手、握手一次、两次行吗4、为何四次挥手三次行吗两次行吗 一、两种状态图 四次挥手 二、常见问题
1、MSL是什么
MSL是Maximum Segment Lifetime的英文缩写可译为“最长报文段寿命”它是任何报文在网络上存在的最长时间超过这个时间报文将被丢弃。
3、为何等待2MSL
为了保证客户端发送的最后一个ACK报文段能够到达服务器。因为这个ACK有可能丢失从而导致处在 LAST-ACK 状态的服务器收不到对 FIN-ACK 的确认报文。服务器会超时重传这个FIN-ACK接着客户端再重传一次确认重新启动时间等待计时器。最后客户端和服务器都能正常的关闭。假设客户端不等待2MSL而是在发送完ACK之后直接释放关闭一但这个ACK丢失的话服务器就无法正常的进入关闭连接状态。即 保证客户端发送的最后一个ACK报文段能够到达服务端。
这个ACK报文段有可能丢失使得处于 LAST-ACK 状态的B收不到对已发送的 FINACK 报文段的确认服务端超时重传 FINACK 报文段而客户端能在2MSL时间内收到这个重传的FINACK 报文段接着客户端重传一次确认重新启动2MSL计时器最后客户端和服务端都进入到 CLOSED 状态若客户端在 TIME-WAIT 状态不等待一段时间而是发送完ACK报文段后立即释放连接则无法收到服务端重传的 FINACK 报文段所以不会再发送一次确认报文段则服务端无法正常进入到 CLOSED 状态。
2防止“已失效的连接请求报文段”出现在本连接中。
客户端在发送完最后一个ACK报文段后再经过2MSL就可以使本连接持续的时间内所产生 的所有报文段都从网络中消失使下一个新的连接中不会出现这种旧的连接请求报文段。
3、为何三次握手不握手、握手一次、两次行吗
1、无法确保双方通信能力 在三次握手过程中客户端和服务器都发送和接收了数据包以此来确认彼此具备发送和接收数据的能力。如果缺少握手步骤服务器可能无法确认客户端的接收能力这可能导致通信过程中的数据丢失或错误. 2、可能导致过期连接请求被接受 网络中数据包可能因网络拥塞、路由错误等原因延迟到达 。若只有两次握手客户端可能因等待服务器响应超时而重发连接请求服务器可能会接收到多个连接请求导致资源浪费和数据混乱。而三次握手的第三次握手可以避免这种情况确保双方确认通信状态是新的而非旧连接. 3、难以同步初始序列号 三次握手过程中客户端和服务器会交换彼此的初始序列号该序列号在后续数据传输中用于确保数据的顺序性和完整性。若缺少第三次握手可能无法正确地同步这些序列号从而影响数据的可靠传输. 4、容易出现半开连接状态 只进行两次握手可能会导致半开连接状态的出现即一端已经准备好发送数据但另一端却没有确认连接建立。这种状态可能会导致资源浪费或者连接泄漏。而第三次握手可以确保双方都已经确认了连接的建立避免了半开连接状态的出现. 5、存在安全隐患 减少握手次数会增加遭受攻击的风险例如 SYN 洪泛攻击。攻击者可能会发送大量伪造的 SYN 请求导致服务器建立大量半连接消耗服务器资源甚至使服务器瘫痪.
4、为何四次挥手三次行吗两次行吗
1、为什么三次挥手不太合适 在 TCP 连接关闭过程中需要考虑到双向的数据传输通道。假设客户端A和服务器B之间有数据传输当 A 想要关闭连接时A 发送一个 FIN结束标志给 B此时 A 到 B 这个方向的数据传输通道 A 认为可以关闭了这是第一次挥手。 B 收到 FIN 后会回复一个 ACK确认标志给 A这表示 B 已经收到了 A 的关闭请求此时这个 ACK 只是确认了 A 到 B 方向的通道关闭请求这是第二次挥手。但是 B 可能还有数据要发送给 A所以不能直接关闭 B 到 A 方向的通道。 只有当 B 发送完自己的数据后B 再发送一个 FIN 给 A这是第三次挥手表示 B 到 A 这个方向的数据传输通道也可以关闭了。 最后 A 收到 FIN 后回复一个 ACK 给 B这是第四次挥手确认 B 到 A 方向的通道关闭。 如果只有三次挥手就可能出现 B 还有数据没发送完但是连接却被强制关闭的情况导致数据丢失。 2、两次挥手存在的问题 如果只有两次挥手当 A 发送 FIN 给 B 后B 回复 ACK然后直接关闭连接。这就完全没有考虑 B 到 A 方向的数据传输情况。 例如B 可能还有大量的数据正在发送给 A 的途中或者 B 还没来得及处理 A 的关闭请求比如 B 的接收缓冲区还有数据没处理完这种情况下直接关闭连接会导致数据丢失、数据不完整等问题。 而且从网络状态的维护角度来看两次挥手不能准确地告知双方两个方向的连接都已经妥善处理完毕会使得网络状态变得混乱不利于网络资源的合理回收和再利用。