TCP: SYN ACK FIN RST PSH URG 详解
TPC数据报格式 
 
与UDP协议一样也有源端口号和目的端口号,通讯的双方由IP地址和端口号标识。4位首部长度和IP协议头类似,表示TCP协议头的长度,以4字节为单位,因此TCP协议头最长可以是4x15=60字节,如果没有选项字段,TCP协议头最短20字节。URG、ACK、PSH、RST、SYN、FIN是六个控制位
- SYN:同步标志 
同步序列编号(Synchronize Sequence Numbers)栏有效。该标志仅在三次握手建立TCP连接时有效。它提示TCP连接的服务端检查序列编号,该序列编号为TCP连接初始端(一般是客户端)的初始序列编号。在这里,可以把TCP序列编号看作是一个范围从0到4,294,967,295的32位计数器。通过TCP连接交换的数据中每一个字节都经过序列编号。在TCP报头中的序列编号栏包括了TCP分段中第一个字节的序列编号。 - ACK:确认标志 
确认编号(Acknowledgement Number)栏有效。大多数情况下该标志位是置位的。TCP报头内的确认编号栏内包含的确认编号(w+1,Figure-1)为下一个预期的序列编号,同时提示远端系统已经成功接收所有数据。 - RST:复位标志 
复位标志有效。用于复位相应的TCP连接。 - URG(紧急位): 
急指针是一个正的偏移量,和序号字段中的值相加表示紧急数据最后一个字节的序号。T C P的紧急方式是发送端向另一端发送紧急数据的一种方式。紧急指针指向包内数据段的某个字节(数据从第一字节到指针所指字节就是紧急数据,不进入接收缓冲就直接交给上层进程,余下的数据要进入接收缓冲的) - PSH(急迫位): 
在一个交互程序中,当客户发送一个命令给服务器时,它设置P U S H标志并停下来等待服务器的响应。通过允许客户应用程序通知其T C P设置P U S H标志,客户进程通知T C P在向服务器发送一个报文段时不要因等待额外数据而使已提交数据在缓存中滞留。类似地,当服务器的T C P接收到一个设置了P U S H标志的报文段时,它需要立即将这些数据(包括以前存中滞留的数据)递交给服务器进程而不能等待判断是否还会有额外的数据到达。 PSH=1,只对接收方的接收缓冲区起作用,发送方通过使用PUSH位来通知接收方将所有收到的数据立即提交给服务器进程,而不需要等待额外数据(将缓存填满)而让数据在缓存中停留!这里所说的数据包括与此PUSH包一起传输的数据以及之前就为该进程传输过来的数据(滞留在缓存中的数据)。 - FIN:结束标志 
带有该标志置位的数据包用来结束一个TCP回话,但对应端口仍处于开放状态,准备接收后续数据。 
PSH与URG的区别
URG(紧急位):当URG=1的时候,紧急指针有效。紧急指针是一个正的偏移量,和序号字段中的值相加表示紧急数据最后一个字节的序号。TCP的紧急方式是从发送端向另一发送发送紧急数据的方式。数据从第一个字节到紧急指针所指字节就是紧急数据。数据段中的紧急数据不进入缓冲区就直接交给上层进程,而余下数据则要进入接收缓冲区。
PSH(急迫位):PSH=1时,客户端发送给服务器的报文段立即被服务器TCP交付给应用进程处理,而不用再等整个缓存都填满之后再向上交付。一般情况下,TCP等缓冲区写满之后才向上提交给应用进程,注意PSH=1时数据还是要从缓冲区向上提交的,只是不用再等到缓冲区满了之后再向上提交。
                    
                
                
            
        
浙公网安备 33010602011771号