tcp连接flags详解

原创 2016年08月29日 20:10:05

在TCP层,有个FLAGS字段,这个字段有以下几个标识:SYN, FIN, ACK, PSH, RST, URG.

其中,对于我们日常的分析有用的就是前面的五个字段。

它们的含义是:

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的连接建立和连接关闭,都是通过请求-响应的模式完成的。

概念补充-TCP三次握手:

TCP(Transmission Control Protocol)传输控制协议

TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接:

位码即tcp标志位,有6种标示:SYN(synchronous建立联机) ACK(acknowledgement 确认) PSH(push传送) FIN(finish结束) RST(reset重置) URG(urgent紧急)Sequence number(顺序号码) Acknowledge number(确认号码)

第一次握手:主机A发送位码为syn=1,随机产生seq number=1234567的数据包到服务器,主机B由SYN=1知道,A要求建立联机;

第二次握手:主机B收到请求后要确认联机信息,向A发送ack number=(主机A的seq+1),syn=1,ack=1,随机产生seq=7654321的包;

第三次握手:主机A收到后检查ack number是否正确,即第一次发送的seq number+1,以及位码ack是否为1,若正确,主机A会再发送ack number=(主机B的seq+1),ack=1,主机B收到后确认seq值与ack=1则连接建立成功。

完成三次握手,主机A与主机B开始传送数据。

在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。 第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认; 第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;

第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。完成三次握手,客户端与服务器开始传送数据. 摘自中国云安网(www.yunsec.net) 原文:http://www.yunsec.net/a/school/wlcs/agreement/2012/0317/10262.html

版权声明:本文为博主原创文章,未经博主允许不得转载。

TCP协议中FLAG的含义

TCP FLAG 标记 基于标记的TCP包匹配经常被用于过滤试图打开新连接的TCP数据包。 TCP标记和他们的意义如下所列: * F : FIN - 结束; 结束会话 * ...
  • hunanchenxingyu
  • hunanchenxingyu
  • 2014年05月22日 12:51
  • 11852

TCP标志位详解(TCP Flag)

TCP的Flag(标志位) 每个TCP段都有一个目的,这是借助于TCP标志选项来确定的,允许发送方或接收方指定哪些标志应该被使用,以便段被另一端正确处理。 您可以看到在3次握手(SYN,ACK)和数据...
  • ChenVast
  • ChenVast
  • 2017年09月14日 11:38
  • 791

TCP flag注释

三次握手Three-way Handshake 一个虚拟连接的建立是通过三次握手来实现的 1. (B) --> [SYN] --> (A) 假如服务器A和客户机B通讯. 当A要和B通信时,B首先向A发...
  • wisage
  • wisage
  • 2010年12月02日 12:30
  • 5918

通过tcp包中flags的值来判断tcp的状态

在TCP层,有个FLAGS字段,这个字段有以下几个标识:SYN, FIN, ACK, PSH, RST, URG. 其中,对于我们日常的分析有用的就是前面的五个字段。 它们的含义是:SYN表示建...
  • hushengqiang
  • hushengqiang
  • 2015年03月10日 20:48
  • 1670

Linux iptables之TCP filter分析--tcp-flags --fragment简单分析

Iptables可通过匹配TCP的特定标志而设定更加严谨的防火墙规则,tcp-flags参数使用如下: 1 2 3 4 5 6 ...
  • u010391029
  • u010391029
  • 2015年06月09日 13:04
  • 3456

tcp PUSH 标志的理解

To understand the function of the PSH flag, we first need to understand how TCP buffers data. TCP op...
  • u012570105
  • u012570105
  • 2015年12月27日 00:01
  • 4141

tcp PUSH 标志的理解

PUSH标志 发送端  TCP将发送带有PUSH标志的数据包时,表示这个数据应该被立即发送,而不要等待额外的数据。 接收端接受到带有PUSH标志的数据时,接收进程接受到的所有数据(包含当前带PUS...
  • qiuybing
  • qiuybing
  • 2014年10月11日 08:29
  • 1453

TCP标志位简析

TCP标志位简析   TCP标志位  URG:此标志表示TCP包的紧急指针域(后面马上就要说到)有效,用来保证TCP连接不被中断,并且督促中间层设备要尽快处理这些数据; ACK:此标志表示应答...
  • wo2niliye
  • wo2niliye
  • 2015年09月15日 13:01
  • 321

TCP协议的PSH标识详解

TCP的推送比特PSH(Push)   PSH是TCP报头中的一个标志位, 发送方在发送数据的时候可以设置这个标志位. 当两个应用程序进行交互式的通信时,有时在一端的应用进程希...
  • u013427969
  • u013427969
  • 2016年09月18日 23:35
  • 1512

详解TCP协议中控制位及URG&PSH的区别

ForeWord 博主上篇博文介绍了TCP数据段格式,详情请戳这里(✺◟(∗❛ัᴗ❛ั∗)◞✺)。并没有对其中的6个控制位做详细解释。 那么本文就给大家介绍这6个控制位的作用,并总结其中两个控制位...
  • summy_J
  • summy_J
  • 2017年07月08日 18:45
  • 283
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:tcp连接flags详解
举报原因:
原因补充:

(最多只允许输入30个字)