工作中也写了网络程序,再把tcp 的连接的,不同状态记录下。
传输控制协议(英语:Transmission Control Protocol, TCP)
7层体系结构
应用层
文件传输,电子邮件,文件服务,虚拟终端
TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet
表示层
数据格式化,代码转换,数据加密
会话层
解除或建立与别的接点的联系
传输层(运输层)
提供端对端的接口 TCP,UDP
网络层
为数据包选择路由 即数据往哪个路由器发送。
IP,ICMP,RIP,OSPF,BGP,IGMP
数据链路层
传输有地址的帧以及错误检测功能
SLIP,CSLIP,PPP,ARP,RARP,MTU
物理层
以二进制数据形式在物理媒体上传输数据 ISO2110,IEEE802。IEEE802.2
TCP连接的状态转换图:
名词解释:
CLOSED: 无连接是活动的或正在进行
LISTEN: 服务器在等待进入呼叫
SYN_RECV:一个连接请求已经到达,等待确认
SYN_SENT:应用已经开始,打开一个连接
ESTABLISHED:正常数据传输状态
FIN_WAIT1:应用说它已经完成
FIN_WAIT2:另一边已同意释放
CLOSING: 两边同时尝试关闭
LAST_ACK: 等待所有分组死掉
TIME_WAIT:另一边已初始化一个释放
ITMED_WAIT:等待所有分组死掉 :等待2*MSL(Max Segment Lifetime,最大分段生存期,指一个TCP报文在Internet上的最长生存时间。每个具体的TCP协议实现都必须选择一个确定的MSL值,RFC 1122建议是2分钟,但BSD传统实现采用了30秒,Linux可以cat /proc/sys/net/ipv4/tcp_fin_timeout看到本机的这个值)
time_wait存在原因:停留两倍的MSL时长呢?这是因为TCP是一个建立在不可靠网络上的可靠的协议,主动关闭的一方收到被动关闭的一方发出的FIN包后,回应ACK包,同时进入TIME_WAIT状态,但是因为网络原因,主动关闭的一方发送的这个ACK包很可能延迟,从而触发被动连接一方重传FIN包。极端情况下,这一去一回,就是两倍的MSL时长。如果主动关闭的一方跳过TIME_WAIT直接进入CLOSED,或者在TIME_WAIT停留的时长不足两倍的MSL,那么当被动关闭的一方早先发出的延迟包到达后,就可能出现类似下面的问题:
看了这个图,虽然和具体业务无关,但是和短信协议实现相试,这也是种业务设计的模式,工作中,业务层的网络交互也可参考这样设计
最详细的:http://hi.baidu.com/suxinpingtao51/item/be5f71b3a907dbef4ec7fd0e
相关推荐
tcp几种状态和time_wait过高处理
TCP状态机主要包括以下几种状态: 1. **CLOSED**:这是TCP状态机的初始状态,表示没有任何连接存在。 2. **LISTEN**:服务器处于监听状态,等待客户端连接请求。 3. **SYN_SENT**:客户端发送了SYN报文段后进入此...
2. **具体状态类**:实现了状态接口/抽象类,为每种状态提供具体的行为。例如,有`ClosedState`、`ListenState`、`EstablishedState`等类。 3. **上下文类**:持有一个状态对象的引用,并通过这个引用调用状态对象的...
TCP的状态主要有以下几种: 1. **CLOSED**: 这是所有连接的起始和结束状态,表示套接字没有任何活动连接。 2. **LISTEN**: 当服务器端的套接字与本地接口和端口绑定并监听连接请求时,进入此状态。服务器等待来自...
TCP有限状态机共有以下几种主要状态: 1. **CLOSED**:此状态表示没有任何TCP连接处于活动状态或正在建立过程中。客户端或服务器在启动TCP服务之前,都会处于此状态。 2. **LISTEN**:当服务器准备接收来自客户端...
TCP连接的状态变迁主要包括以下几个阶段: 1. **三次握手建立连接**: - **CLOSED**:初始状态,没有任何连接。 - **LISTEN**:服务器端的SOCKET处于监听状态,等待客户端的连接请求。 - **SYN_SENT**:客户端...
标题与描述均提到了“几种TCP服务器的实现代码及详细解析”,这暗示了文章将深入探讨TCP服务器在Linux环境下的具体实现方式。TCP(Transmission Control Protocol)是互联网中广泛使用的一种面向连接、可靠的、基于...
TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议,而MODBUS-TCP是在TCP/IP协议栈上构建的一种应用层通信协议,广泛应用于工业设备间的通信。 TCP协议提供了端到端的可靠通信服务,它通过三次握手建立连接...
在TCP(传输控制协议)中,有几个核心概念和技术点是调试助手源码会涉及的: 1. **三次握手与四次挥手**:TCP连接的建立和断开都需要通过特定的握手过程。三次握手确保了连接的可靠性,而四次挥手则确保了数据传输...
以下是TCP协议的十一种状态转换的详细解释: 1. **三次握手**: - **CLOSED**: 这是TCP连接的初始状态,表示双方都没有打开连接。 - **LISTEN**: 服务器端进入此状态,表示它正在监听来自客户端的连接请求。 - *...
它提供了以下几种机制来保证数据的可靠传输: 1. 序列号和响应号: TCP 协议使用序列号和响应号来跟踪数据的传输。序列号是指发送方所发送的数据的字节序号,而响应号是指接收方所期望收到的下一个数据的字节序号。...
3. **报文分析**:它能解析TCP报文头,揭示TCP选项和标志,如SYN、ACK、FIN、RST等,帮助分析连接状态和异常情况。 4. **时间线显示**:TCPTrace提供了时间线视图,清晰展示每个事件发生的时间顺序,便于理解网络...
测试Modbus TCP通信通常涉及以下几个步骤: 1. **配置PLC**:对于西门子SMART S7-200 PLC,你需要在编程软件(如STEP 7 Micro/Win)中设置PLC为Modbus TCP服务器或客户端,根据你的应用需求选择合适的角色。 2. **...
在Delphi中实现Modbus TCP,你需要了解以下几个核心概念: 1. **Modbus功能码**:每个Modbus请求或响应都包含一个功能码,表示所执行的操作类型,如读寄存器、写单个寄存器、读多个寄存器等。 2. **数据结构**:...
在考虑防火墙安全和速度性能的前提下,给出针对TCP,UDP,ICMP和ARP等TCP/IP协议栈中主要协议的状态检测的结构设计,采用TCP序列号检查、UDP虚连接、ICMP数据包检测引擎等办法保证网络的安全性和高效性。
8. **应用实例**:Labview与FX5TCP的通信可以应用于多种实际场景,如实时监控PLC的状态,控制生产线设备,或者收集现场数据进行数据分析。 通过这篇文档,初学者可以了解到Labview与FX5TCP通信的基本步骤,同时也...
bic-tcp(BIC-TCP,Bandwidth-Improving TCP)是一种TCP(传输控制协议)的扩展,旨在提高网络拥塞控制的效率,尤其是在高带宽、大延迟的网络环境中。它由IETF(互联网工程任务组)的Remy Bonjoch和Jana Iyengar于...
在Windows系统中,可以通过以下几种方式获取TCP列表: 1. **命令行工具**: - 使用`netstat -ano`命令可以显示所有活动的TCP连接,包括进程ID(PID)。这有助于识别哪个应用程序正在使用特定的连接。 - `tasklist...
TCP 连接迁移是一种基于 TCP 连接的负载均衡方法,通过将一个 TCP 连接的一个端点迁移到另一个节点来实现负载均衡。 TCPCP(TCP Connection Passing)是一种基于 TCP 连接迁移的技术,它可以将一个 TCP 连接的一个...