tcpip3次握手的通信过程是_tcp协议为什么要三次握手
大家好,又见面了,我是你们的朋友全栈君。
文章目录
TCP通信过程的三次握手和四次握手
三次握手:
此过程中: 第一次握手,客户端先发一个SYN请求并附带一个J的值给服务端 第二次握手,服务端收到请求后解堵塞,发送一个SYN请求并附带一个K值,还发送了第一次握手后对客户端的响应包并附带在之前接收到的J值的基础上加上1,即J+1 第三次握手,客户端收到服务端发来的SYN请求和K值后,再发送一个K+1的响应包给服务端 至此,三次握手成功完成,客户端和服务端之间成功建立tcp链接
四次挥手:
此过程中: 第一次挥手:客户端调用了close,发送一个结束请求附带一个x+2的值,和一个y+1的响应包给服务端 第二次挥手:服务端发送x+3的响应包给客户端(其实每次的响应包的附带值都是在之前接收到的seq的值上加上1的结果) 第三次挥手:服务端调用close,发送一个结束seq附带一个y+1的值给客户端,此时服务端成功断开连接 第四次挥手:客户端接收到服务端的响应包和FIN请求后,回递一个y+2的响应包给服务端,此时的客户端进入time_wait状态,即继续等待2MSL的时间再完全断开链接(至于为什么要等待2MSL的时间,请看下文的MSL详解 _ )
要点:在四次挥手的过程中,哪一方先调用close, 哪一方就会在第三次挥手后继续等待2MSL的时间
tcp通信过程中的2MSL的问题:
2MSL即为在四次挥手的第三次过程中,先发起中断连接的一方将会继续等待2倍的MSL时间后再完全中断tcp连接
MSL即为一个数据包在网络上存活的最长时间,即数据包从被发送到被接收所经历的最长时间 等待2倍的MSL时间就是因为防止服务端没收到最后一次的ACK,即在2MSL的时间内,若服务端没收到最后的ACK,在超时时间(MSL)后,服务端会认为客户端没收到第三次挥手中的FIN,这时服务端会再发一份FIN,这时一共经历了2MSL的时间,而客户端此时等待了2MSL的时间,正好可以接收这一次服务端重发的FIN请求,从而有效的保证了所有的请求和回应都会被对方接收
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/170940.html原文链接:https://javaforall.cn
相关文章
- S7-1200 MODBUS TCP通信多请求处理
- CH579M以太网控制板-单台控制板作为TCP客户端和电脑端的TCP服务器通信(连接路由器或者交换机)
- TCP和UDP协议的区别_tcp和ip是什么意思
- tcp网络模型_TCP/IP协议模型
- ensp二层交换机不同vlan之间如何通信_华三交换机不同网段互通
- tcp rst报文_TCP报文格式
- EA&UML日拱一卒 为通信图增加新的消息组
- RT-Thread+W5500+MODBUS+TCP通信
- (七)51单片机基础——串口通信
- 驱动开发:通过ReadFile与内核层通信
- C++ 使用Socket实现主机间的UDP/TCP通信
- 【Android 应用开发】Activity生命周期 与 Activity 之间的通信
- LabVIEW实现Modbus-TCP通信
- 【探花交友】day06—即时通信
- [javaSE] 网络编程(TCP通信)详解编程语言
- [javaSE] 网络编程(UDP通信)详解编程语言
- Linux 测试 TCP: 探索极限可靠性(linux测试tcp)
- Linux下的串口通信:奥秘与实用(linux下的串口通信)
- 服务端利用Linux开发多线程TCP服务端实现网络通信(linux多线程tcp)
- Linux下线程间通信实现机制研究(线程通信linux)
- Linux 下的TCP网络通信(linuxtcp通信)
- Linux 网络编程:实现高效 TCP 多线程通信(linuxtcp多线程)
- Linux TCP 流量超时排查(linux tcp 超时)
- 建立顺畅通信Redis代码连接实践(代码连接redis)