载自:http://tech110.blog.51cto.com/438717/536697(tcp状态图看不清,可以在转载处看)
挺好的,方便记忆!!!
实线:表示客户的正常状态转换 虚线:表示服务器的正常状态装换
应用:表示状态转换在应用进程发起操作时发生
接受:表示状态转换在接受到分节时发生 发送:表示这个转换发送什么
三次握手建立连接
服务器调用socket、bind、listen来完成,即执行被动打开,准备好接受外来的请求。
1. 客户端发调用connect发送SYN分节(同步),它告诉服务器客户将在连接中发送的数据的初始序列号。此时客户端进入SYN_SENT状态。
2. 服务器接受到客户端SYN分节后,必须进行确认,同时发送一个SYN分节到客户端。服务器发送ACK+SYN后,服务器进入SYN_RECV状态。
3. 客户端收到服务器发送的SYN,并进行确认。客户端发送ACK后进入ESTABLISHED状态,服务器接收到ACK后也进入到ESTABLISHED状态。
l 当客户端与服务器都进入ESTABLISHED状态后,就说明TCP连接成功建立。
l 当客户端处于SYN_SENT状态,如果没有收到ACK(超时),客户端会多次(几次?)重发SYN,如果连接仍未能建立,则进入CLOSED状态。
l 当服务器处于SYN_RECV状态时,如果收到RST分节,则进入CLOSED状态。SYN_RECV状态的服务器没有收到ACK时,其一直处于半连接状态,其信息会存在服务器的缓冲区中,直到超时,SYN Flood攻击就是靠大量的半连接SYN来耗尽服务器的资源。
l 同时打开:为了处理同时打开,对于同时打开它仅建立一条连接而不是两条连接。两端几乎在同时发送SYN,并进入SYN_SENT状态。当每一端收到SYN时,状态变为SYN_RCVD,同时他们都再发SYN并对收到的SYN进行确认。当双方都收到SYN及相应的ACK时,状态都变为ESTABLISHED。
四次挥手断开连接
1. 某个应用进程首先调用close,执行主动关闭,导致发送一个FIN分节,表示数据发送完毕,进入FIN_WAIT_1状态。
2. 接受FIN的另一端执行被动关闭,其确认收的FIN,接受到的FIN作为文件结束符传递给接收端的应用进程(放在已排队等候该应用进程接受的任何其它数据之后),进入CLOSE_WAIT状态。同时原发送端接受到FIN后进入TIME_WAIT_2状态。
3. 一段时间后,接收到文件结束符的应用进程将调用CLOSE关闭它的套接口,向对端发送一个FIN,进入LAST_ACK状态。
4. 接受到这个FIN的原发送端对它进行确认,发送ACK,并进入TIME_WAIT状态,在此状态保留2MSL时间后,进入CLOSED状态。而另一端收到ACK后进入CLOSED状态。
l 被动关闭的一段的ACK与FIN可能同时发送(捎带),则主动关闭的一端由TIME_WAIT_1直接进入TIME_WAIT状态。
l 主动关闭一端存在TIME_WAIT状态的原因。
1. 如果主动关闭端最后发送的ACK丢失,则被动关闭一端将重发FIN,此时主动关闭一端必须重发最后的ACK,所以其不能再发送ACK后立即进入CLOSED状态。
2. 防止IP和端口立即被重用,而还在“线上”的数据将影响重用的进程。2MSL的时间允许某个方向的分组最多存活MSL时间即被丢弃。
l 同时关闭:当应用层发出关闭命令,两端均从ESTABLISHED变为FIN_WAIT_1。这将导致双方各发送一个FIN,两个FIN经过网络传送后分别到达另一端。收到FIN后,状态由FIN_WAIT_1变为CLOSING,并发送最后的ACK。当收到最后的ACK,状态变为TIME_WAIT。
分享到:
相关推荐
TCP状态转换和IO多路转接 TCP状态转换是网络协议中的一种关键技术,它定义了TCP连接的七个状态:LISTEN、SYN_SENT、SYN_RCVD、ESTABLISHED、FIN_WAIT_1、FIN_WAIT_2和TIME_WAIT。这些状态之间的转换是通过三次握手...
5. 如果遇到通信问题,检查TCP连接状态,确认是否有丢包、超时或错误的确认应答。 通过这样的调试软件,我们可以有效地检测和优化TCP和MODBUS-TCP通信,确保工业设备的正常运行和数据交换。这在工业自动化、物联网...
本教程将详细讲解如何通过OPC_OPC转MODBUS-TCP转换,以及OPC_MODBUS协议转换的相关知识。 首先,理解OPC与MODBUS协议的基本概念: 1. OPC:OPC是为了解决不同厂商的工业自动化设备之间数据交换的标准接口。它包括...
USR-TCP232-Test 是一款专门设计用于将串口通信转换为网络通信的调试工具,它在IT行业中有着广泛的应用,特别是在嵌入式系统、物联网设备以及远程监控等领域。这款工具允许用户通过TCP/IP协议来实现对串口设备的远程...
通过这个工具,用户可以方便地发送和接收TCP或UDP数据包,查看网络交互情况,这对于排查网络问题、测试服务器或客户端应用程序的网络功能非常有用。 USR-TCP232-Test-V1.3结合了串口和网络调试功能,意味着用户可以...
USR-TCP232-Test软件集成了TCP/IP网络调试功能,这意味着它可以模拟TCP客户端和服务器,方便地进行TCP连接、数据传输、断开连接等操作。这对于开发基于TCP/IP的网络应用,如物联网设备、服务器应用程序等,是非常有...
USR-TCP232-T2是由山东有人科技开发的一款串口转以太网模块,它基于STM32微控制器,能够实现串行通信与TCP/IP网络之间的转换,从而让不具备网络功能的传统设备能够接入到互联网中。这个项目的核心是通过编程实现串口...
USR-TCP232-304是一款功能强大的485转以太网转换器,它允许设备通过RS-485接口连接到以太网网络,从而实现远程监控和控制。本文将深入探讨USR-TCP232-304的软件设计与应用,旨在帮助用户更好地理解和使用这款产品。 ...
一个串口转TCP的程序,能很好的满足远程串口传输、调试需求,基本特征如下: 1、支持打开物理串口和虚拟串口(不创建虚拟串口,但能打开其他工具创建的虚拟串口)。 2、支持通过TCP客户端连接到远程TCP服务器。 3、...
TCP和MODBUS-TCP通讯调试软件V1.0-含winXP版和winCE版(均含服务器和客户端) 此软件设计环境VB2005,要求装有NET2.0 环境,对您学习MODBUS/TCP有帮助, 还可做TCP调试器, 此软件免费使用。 注: 1. 软件运行要求 ...
**TCP-DNS-proxy详解** TCP-DNS-proxy是一个实用的工具,主要用于通过TCP协议来传输DNS查询,以此绕过某些网络环境中的Web认证机制。在许多校园网络或企业网络中,Web认证是常见的接入控制方式,它会阻止未经认证的...
tcp-ip-illustrate-中文版-三卷,steven先生的经典著作,1-3卷完整版。
net_modbus_tcp_s7-1500_s7-1200_en.pdf
TCP(Transmission Control Protocol)与MODBUS-TCP通讯是工业自动化领域常见的通信协议,它们在设备间的数据交换中扮演着重要角色。本软件“TCP和MODBUS-TCP通讯调试软件V1.2_Wince_Windows_通用版”是专门用于帮助...
# yum -y install -y pcre* openssl* # for pcre, such as ngx.gmatch etc, --with-pcre=PATH/pcre-8.36 --with-pcre-jit ... # export LUAJIT_LIB=/usr/local/lib ... --add-module=src/tcp/ngx_tcp_lua_module
离线安装包,亲测可用
USR-TCP232-Test ,串口转网络调试助手:TCP/IP网络调试助手与串口调试助手二合一,济南有人科技有限公司倾力巨献。 设计理念:简单,可靠,简洁,方便;使用条件:绿色,免费。 【软件关键特点】: 1. 串口调试助手...
USR-TCP232-Test调试工具是一款专为串口通信和网络通信设计的强大软件,主要功能涵盖了串口(Serial Port)、TCP客户端(TCP Client)、TCP服务器(TCP Server)以及UDP协议的测试与调试。这款工具对于开发人员来说...