TCP同时打开和同时关闭
TCP 关闭 打开 同时
2023-09-11 14:22:29 时间
1. 同时打开
两个应用程序同时彼此执行主动打开的情况是可能的,尽管发生的可能性极小。每一方必须发送一个SYN,且这些SYN必须传递给对方。这需要每一方使用一个对方熟知的端口最为本地端口。
当出现同时打开的情况时,状态迁移图就与标准的连接状态迁移图不一样了。两端几乎同时发送SYN并进入SYN_SENT状态。当每一端收到SYN时,状态变为SYN_RCVD,同时它们都再发SYN并对收到的SYN进行确认。当双方都接收到SYN及相应的ACK时,状态都变味了ESTABLISHED。
一个同时打开的连接需要交换需要交换4个报文段,比正常的三次握手多一个。没有任何一端称为客户或服务器,因为每一端既是客户又是服务器。
2. 同时关闭
在标准的情况下通过一方发送FIN来关闭连接,但是双方都执行主动关闭也是有可能的,TCP协议也允许这样的同时关闭。当应用层发出关闭命令时,梁福安均从ESTABLISHED变为FIN_WAITE_1。这将导致双发各发送一个FIN,两个FIN经过网络传输后分别达到另一端。收到FIN后,状态由FIN_WAIT_1变签到CLOSING,并将发送最后的ACK。当收到最后的ACK时,状态变化为TIME_WAIT。
相关文章
- Qt之进程间通信(TCP/IP)
- 计算机网络再次整理————tcp的关闭[七]
- UDP 区别于 TCP 的特点
- Linux内核 TCP/IP、Socket参数调优
- 【STM32F407】第13章RL-TCPnet V7.X之创建多个TCP客户端
- TCP和Web Socket混合使用的一个例子
- Qt 基于TCP的Socket编程
- 为什么 TCP 建立连接需要三次握手
- 当TIME_WAIT状态的TCP正常挥手,收到SYN后…
- 为什么spring Boot是一个线程处理一个web请求而不是一个线程处理一次tcp连接?
- 简单谈谈 TCP/IP
- 【Android 逆向】Android 逆向通用工具开发 ( Android 端远程命令工具 | Android 端可执行程序的 main 函数操作 | TCP 协议服务器建立 | 接收客户端数据 )
- 浅析TCP/IP
- HTTP和TCP协议的队头阻塞
- tcp/ip协议如何处理环回接口与目标地址为本机地址的数据包?
- 使用SOCKET实现TCP/IP协议的通讯
- TCP报文格式和三次握手——三次握手三个tcp包(header+data),此外,TCP 报文段中的数据部分是可选的,在一个连接建立和一个连接终止时,双方交换的报文段仅有 TCP 首部。
- 【计算机网络】2、TCP:四次挥手与TIME_WAIT、shutdown() 优雅关闭 server、探活、拥塞窗口与 Nagle 算法、端口占用、tcp 的流式协议、可靠性
- Wireshark TCP报文到达ACK确认机制