康复训练 7
TCP四次挥手的过程每一步的状态变化假如客户端要断开连接在第一次挥手客户端确认没东西发送后发送fin报文给服务端自己状态从established变为fin wait 1服务端收到fin后从established变为close wait并回复ack报文客户端收到后状态变为fin wait 2这是第二次挥手。然后是第三次挥手服务端把数据处理好没有东西发送时发送fin报文给客户端状态从close wait变为last ack然后是第四次挥手客户端收到服务端的fin报文回复ack状态变为time wait(等待2wsl后变为closed)服务端收到后从last ack变为closed。为什么挥手不和握手一样是三次呢因为服务端收到fin后可能还有数据要发送ack和fin报文不能同时发。· 为什么需要四次挥手TIME_WAIT状态的作用为什么要等待2MSL确保连接完全断开因为tcp是全双工双方都需要独立关闭连接。time wait确保服务端收到最后的ack如果服务端没有收到ack会重新发fin确保这个fin被回复/msl是报文的最长存活时间等待2msl是为了防止已经关闭的连接的报文污染下一个连接(可能有的报文因为网络问题阻塞住了)确保服务端收到最后的ack安全关闭(比如最后一个ack丢失服务端重传的fin可以在一个wsl到达ack能在一个wsl到达服务端)/TCP和UDP的区别什么时候用TCP什么时候用UDPTCP面向连接的可靠的面向字节流传输更可靠需要三次握手建立连接四次挥手断开连接还有确认重传流量控制等机制开销会大一点延迟高一点一般在文件传输量化系统高性能服务等需求时使用。UDP无连接的不可靠的是面向数据报传输不保证数据安全送达但是头部字段开销小发送效率高正常广播和多播一般在需要数据实时传输那种容忍数据在传输过程中丢失一点的需求下使用。整体评价8.0/10优点四次挥手过程描述准确状态变化清晰能结合全双工特性解释需要四次的原因。TIME_WAIT的作用和2MSL的解释抓住了关键防止旧包干扰、确保最后一个ACK被收到。TCP/UDP区别从连接性、可靠性、传输方式、头部开销等方面对比场景举例恰当。语言简洁没有冗余。主要可改进点为什么是四次挥手TCP是全双工协议双方需独立关闭各自的发送通道。服务端收到FIN时可能仍有数据待发因此先回ACK确认待数据发完再发自己的FIN导致ACK和FIN分开发送形成四次交互。TIME_WAIT的作用与2MSL原因TCP与UDP对比及应用场景特性TCPUDP连接性面向连接三次握手无连接可靠性可靠传输确认重传、按序到达不可靠可能丢包乱序传输方式面向字节流无边界面向数据报有边界流量控制有滑动窗口无拥塞控制有无首部开销20字节8字节广播/多播不支持支持适用场景部分表述不够严谨如“确认重传”应为“确认与重传机制”“头部字段开销小”应为“首部开销小”。TIME_WAIT和2MSL的细节可以更深入如2MSL的时间来源、实际含义。TCP/UDP对比中“高性能服务”用TCP需限定如要求可靠性的高性能服务UDP的广播多播特性正确。改进后的综合回答参考版TCP四次挥手过程假设客户端主动关闭第一次挥手客户端发送FIN报文进入FIN_WAIT_1状态。第二次挥手服务端收到FIN回复ACK进入CLOSE_WAIT状态客户端收到ACK后进入FIN_WAIT_2状态。第三次挥手服务端数据发送完毕发送FIN报文进入LAST_ACK状态。第四次挥手客户端收到FIN回复ACK进入TIME_WAIT状态等待2MSL后自动关闭服务端收到ACK后立即进入CLOSED状态。TIME_WAIT作用①确保最后一个ACK能被服务端收到若丢失服务端重传FIN客户端可在TIME_WAIT期间重发ACK②让旧连接的报文在网络中消散避免干扰后续使用相同四元组的新连接。TCP要求数据完整、可靠的场景如文件传输FTP、网页浏览HTTP/HTTPS、电子邮件SMTP、数据库连接、量化交易系统等。UDP实时性要求高、可容忍少量丢包的场景如直播、视频会议、在线游戏、DNS查询、网络时间协议NTP等。2MSL原因MSLMaximum Segment Lifetime是报文在网络中的最大生存时间。等待2MSL能保证若最后一个ACK丢失服务端重传的FIN最多1MSL到达能被客户端收到客户端重传的ACK再1MSL也能到达服务端。同时2MSL后网络中不再有本连接的旧报文保证新连接的安全。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2425885.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!