`

TCP控制字段解释

阅读更多

RTT(Round-Trip Time 往返时延

RTO(Retransmission TimeOut)即重传超时时间

SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层对网络连接进行加密。

 

一、  msl、ttl及rtt的区别

   1、 MSL 是Maximum Segment Lifetime英文的缩写,中文可以译为“报文最大生存时间”,他是任何报文在网络上存在的最长时间,超过这个时间报文将被丢弃。因为tcp报文 (segment)是ip数据报(datagram)的数据部分,具体称谓请参见《数据在网络各层中的称呼》一文;

   2、ip头中有一个TTL域,TTL是 time to live的缩写,中文可以译为“生存时间”,这个生存时间是由源主机设置初始值但不是存的具体时间,而是存储了一个ip数据报可以经过的最大路由数,每经 过一个处理他的路由器此值就减1,当此值为0则数据报将被丢弃,同时发送ICMP报文通知源主机。RFC 793中规定MSL为2分钟,实际应用中常用的是30秒,1分钟和2分钟等。

    TTL与MSL是有关系的但不是简单的相等的关系,MSL要大于等于TTL。

   3、 RTT是客户到服务器往返所花时间(round-trip time,简称RTT),TCP含有动态估算RTT的算法。TCP还持续估算一个给定连接的RTT,这是因为RTT受网络传输拥塞程序的变化而变化

   4、2MSL即两倍的MSL,TCP的TIME_WAIT状态也称为2MSL等待状态,当TCP的一端发起主动关闭,在发出最后一个ACK包后,即第3次握 手完成后发送了第四次握手的ACK包后就进入了TIME_WAIT状态,必须在此状态上停留两倍的MSL时间,等待2MSL时间主要目的是怕最后一个 ACK包对方没收到,那么对方在超时后将重发第三次握手的FIN包,主动关闭端接到重发的FIN包后可以再发一个ACK应答包。在TIME_WAIT状态 时两端的端口不能使用,要等到2MSL时间结束才可继续使用。当连接处于2MSL等待阶段时任何迟到的报文段都将被丢弃。不过在实际应用中可以通过设置 SO_REUSEADDR选项达到不必等待2MSL时间结束再使用此端口。对于TCP中的各种控制字段,接下来进行具体说明。

 

二、TCP控制字段标志:URG、ACK、PSH、RST、SYN、FIN

在TCP层,有个FLAGS字段,这个字段有以下几个标识:SYN, FIN, ACK, PSH, RST, URG.
其中,对于我们日常的分析有用的就是前面的五个字段。

它们的含义是:

URG:Urget pointer is valid (紧急指针字段值有效)

SYN: 表示建立连接

FIN: 表示关闭连接

ACK: 表示响应

PSH: 表示有 DATA数据传输

RST: 表示连接重置。

       其中,ACK是可能与SYN,FIN等同时使用的,比如SYN和ACK可能同时为1,它表示的就是建立连接之后的响应,如果只是单个的一个SYN,它表 示的只是建立连接。TCP的几次握手就是通过这样的ACK表现出来的。但SYN与FIN是不会同时为1的,因为前者表示的是建立连接,而后者表示的是断开 连接。RST一般是在FIN之后才会出现为1的情况,表示的是连接重置。一般地,当出现FIN包或RST包时,我们便认为客户端与服务器端断开了连接;而 当出现SYN和SYN+ACK包时,我们认为客户端与服务器建立了一个连接。PSH为1的情况,一般只出现在 DATA内容不为0的包中,也就是说PSH为1表示的是有真正的TCP数据包内容被传递。

      TCP产生 RST响应的情况(属于硬错误):

       四次握手不是关闭 TCP连接的唯一方法. 有时,如果主机需要尽快关闭连接(或连接超时,端口或主机不可达),RST (Reset)包将被发送. 注意在,由于RST包不是TCP连接中的必须部分, 可以只发送RST包(即不带ACK标记). 但在正常的TCP连接中RST包可以带ACK确认标记
      1. syn发送到服务器主机,但是目的端口并未运行。则产生一个ECONRFUSED错误。客户端立即返回。比如telnet 192.168.1.55 8889,条件:55主机在局域网上并且可达(也可以换成可以到达的网络ip地址),但是8889这个端口并未使用(可能服务器已经关闭),则服务器(对 方主机tcp内核)发送一个rst相应给客户端,于是客户端立即关闭。 注意一下,如果输入的网络ip不可达的话,客户端将会持续发送syn,最后产生一个etimeout的错误,大概75秒左右。这个时候客户端的默认网关 (192.168.1.1 211.2.2.2)因为找不到下一路由,路由器(或者再过几跳的路由器)会产生一个EHOSTUNREACH响应给客户端(注 意,ENETUNREACH和EHOSTUNREACH通常被认为是一个错误,因为ENETUNREACH一般当作已过时),由于这是个软错误(有可能是 网络暂时不通造成的)。客户端会重发syn直到超时。
        所以会有 telnet 192.168.1.55 8888  主机存在,但是端口未开,ECONRFUSED错误,立刻返回
                 telnet 192.168.1.56 *     主机不存在,UNROUTETOHOST错误,立刻返回
                 telnet 211.1.1.5    *     主机不存在,etimeout错误
 
      2. 最简单的情况,服务器主动发送rst给客户端关闭连接。客户端read write直接返回rst错误。
 
      3. 服务器收到一个不存在的连接返回rst响应。比如,服务器重启之后,先前的一个已连接的客户端毫不之情的情况下,这就是半闭连接(跟半开连接最大的不同是,半闭连接是不能使用的,半开连接可以使用)。
       此时,如果客户端read的话(接收缓冲无数据)产生一个EPEERRST错误
               如果客户端write的话且发送数据小于发送缓冲区剩余容量时,第一次write成功,第二次write或者read的时候就会产生一个 EPEERRST的错误。因为write发送数据是直接把要发送的数据拷贝到内核的tcp发送缓冲区就立刻返回成功的。当然拷贝之前会先检查一下tcp连 接有无错误。所以第二次发送或者接收的时候,发现连接上已经有了EPEERRST的错误,所以就返回错误(话说回来,第一次发送的数据实际上根本就没有发 送成功,对方根本就没接受它)

分享到:
评论

相关推荐

    TCP标志控制

    TCP标志控制 TCP标志控制是TCP协议中的一种机制,用于控制数据传输的流程和状态。它通过在TCP报头中设置不同的标志位来实现对数据传输的控制。下面我们将详细介绍TCP标志控制的各个组成部分。 URG紧急标志 URG...

    TCP远程控制命令协议

    ### TCP远程控制命令协议解析 #### 一、概述 TCP远程控制命令协议是基于TCP/IP协议族中的传输控制协议(TCP)的一种应用层协议。它主要用于实现无线局域网内的可靠网络通信,通过构建C/S架构(即客户端/服务器架构...

    传输控制协议TCP实验

    ### 传输控制协议TCP实验知识点总结 #### 一、实验目的 本次实验旨在深入理解传输控制协议(TCP)的关键概念和技术细节,具体包括以下几个方面: 1. **掌握TCP协议的报文格式**:理解TCP报文由哪些字段组成及其各自...

    TCP和MODBUS-TCP通讯调试软件

    MODBUS-TCP的数据帧结构包括功能码、寄存器地址、数据长度和校验码,这些字段使得MODBUS-TCP协议能够清晰地定义各种操作,如读取和写入设备寄存器。 在调试TCP和MODBUS-TCP通讯时,我们需要借助特定的工具。在这个...

    TCP调试助手源码_tcp助手源码_TCP助手源代码_TCP助手源码_

    6. **校验和**:TCP报文段包含校验和字段,用于检测传输过程中的错误,保证数据的完整性。 7. **连接管理**:TCP提供全双工通信,支持半关闭状态,允许一方结束数据传输而不影响另一方的数据传输。 8. **选项与...

    关于TCP首部的CTL字段的理解.docx

    TCP(Transmission Control Protocol)是一种面向连接的、可靠的传输层协议,它是互联网协议栈中...了解和掌握TCP首部的这些控制字段对于理解TCP协议的工作原理至关重要,对于网络编程和故障排查也有着直接的应用价值。

    TCP协议分析实验报告

    3. **掌握TCP协议的流量控制机制**:理解TCP如何调整发送窗口大小来控制数据传输速率,避免拥塞。 4. **学会协议分析软件发送自定义数据包的方法**:熟悉使用协议分析工具(如Wireshark、Iris等)来发送和分析自定义...

    tcp,tcp,tcp

    7. 错误检测:TCP头部包含校验和字段,用于检测传输过程中可能发生的错误。 在实际应用中,TCP广泛应用于HTTP、FTP、SMTP等协议,提供稳定且可靠的网络传输。然而,由于其建立和维护连接的开销以及可靠性的保障,...

    移植cJSON库,使用tcp协议制作http-json客户端发送js字段源码

    3. TCP/IP:传输控制协议/因特网协议(TCP/IP)是互联网的基础协议,负责在网络中可靠地传输数据。 4. JavaScript:一种广泛用于网页和网络应用的脚本语言,通常与HTML和CSS一起使用,用于实现客户端的动态功能。 ...

    TCP包结构.

    TCP(传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。其包结构的设计确保了数据传输的正确性和有序性。以下为TCP包结构的相关知识点。 TCP提供全双工的数据通信服务,即在同一TCP连接上,...

    TCP/IP校验和计算小工具

    TCP(传输控制协议)和IP(互联网协议)都是TCP/IP协议族的重要组成部分。TCP负责在两个应用程序之间建立可靠的端到端连接,而IP则负责将数据包从源主机传输到目标主机。在它们的数据头部,都包含了一个校验和字段,...

    TCP.rar_tcp_tcp 包_tcp协议_tcp数据包发送_发送tcp数据包

    报头包含一系列控制字段,如源和目的端口号、序列号和确认号,用于追踪和确认数据包的顺序;还包含紧急指针、窗口大小、校验和、选项和填充等字段,用于实现TCP的各种功能。数据区则承载应用层的数据,如HTTP、FTP、...

    tcpreplay发包工具

    5. **增强功能**:TCPreplay还有其他扩展功能,如tcprewrite用于修改数据包字段(如IP地址和端口),以及tcpslice用于截取大pcap文件。 使用TCPreplay时,你需要准备一个包含捕获数据包的.pcap文件。例如,你可以...

    基恩士上位机TCP通讯协议.rar_PLC 协议_PLC通讯_基恩士tcp_基恩士tcpip_基恩士上位机TCP通讯协议

    总的来说,基恩士上位机TCP通讯协议提供了一种高效、直接的通信方式,使开发者能够灵活地集成基恩士PLC到自定义系统中,实现自动化控制和监控。通过深入理解和应用这份协议,你可以创建出满足特定需求的上位机程序,...

    网络习题------计算机网络期末复习可用

    信息帧(I)和管理帧(S)的控制字段都包含发送顺序号  C. 如果信息帧(I)的控制字段是8 位,则发送顺序号的取值范围是0~127  D. 发送器每发出一个信息帧(I),就把窗口向前滑动一格 下面语句中,正确地描述了网络...

    TCP滑动窗口、流量控制及拥塞控制详解.docx

    TCP 滑动窗口、流量控制及拥塞控制详解 TCP 滑动窗口是 TCP 协议中的一种流量控制机制,它可以控制发送方的发送速度,避免网络拥塞和数据丢失。下面我们将详细介绍 TCP 滑动窗口、流量控制及拥塞控制的原理和机制。...

    TCP头信息详解(英文版 pdf)

    TCP窗口大小字段用于流量控制,它告诉发送方接收方还有多少未确认的数据可以接收。滑动窗口机制允许发送方连续发送数据,但不超过接收方设定的窗口大小,防止接收方被淹没。 **TCP标志选项**: TCP头中有一系列标志...

Global site tag (gtag.js) - Google Analytics