URG(urgent)待定

设置为1时,首部中的紧急指针有效;为0时,紧急指针没有意义。
URG=1,表示紧急指针指向包内数据段的某个字节(数据从第一字节到指针所指向字节就是紧急数据)不进入缓冲区,立即处理该数据。
RFC1122中对此给出了更正说明,紧急指针是数据最后一个字节,不是最后字节的下一位置,TCP首部中只有紧急指针指出紧急数据的位置,他所指的字节为紧急数据,但没有办法指定紧急数据的长度。

PSH(push)待定

PSH=1的话,就不用等到整个缓存都填满,直接交付
存在推送标志,如紧急标志,以确保数据被给予优先级(它应得的),并在发送或接收端处理。这个特定的标志在数据传输的开始和结束时被非常频繁地使用,影响数据在两端处理的方式。
当开发人员创建新的应用程序时,他们必须确保它们遵循RFC的特定指导,以确保其应用程序正常工作,并且无缺陷地管理进出OSI模型的应用程序层的数据流。使用时,推送位确保数据段被正确处理,并在虚拟连接的两端给出适当的优先级。
当主机发送其数据时,它将暂时排队在TCP缓冲区中,即存储器中的一个特殊区域,直到该段达到一定大小,然后发送到接收器。这种设计保证数据传输尽可能高效,而不需要通过创建多个片段而不需要花费时间和带宽,而是将它们组合成一个或多个较大的片段。
当段到达接收端时,它被传递到应用层之前被放置在TCP传入缓冲器中。在进入缓冲区中排队的数据将保留在那里,直到其他段到达,并且一旦完成,数据就被传递到等待它的应用层。
虽然这个过程在大多数情况下运行良好,但是有很多情况下这种“排队”的数据是不期望的,因为排队期间的任何延迟都可能导致等待应用程序出现问题。一个简单的例子将是一个TCP流,例如真正的播放器,其中数据必须立即发送和处理(由接收器),以确保平滑的流,没有任何切断。
这里提到的最后一点是,Push标志通常设置在文件的最后一段,以防止缓冲区死锁。当用于通过代理发送HTTP或其他类型的请求时也可以看到,确保请求得到适当和有效的处理。

RST(reset)

RST表示复位,用来异常的关闭连接,在TCP的设计中它是不可或缺的。就像上面说的一样,发送RST包关闭连接时,不必等缓冲区的包都发出去(不像上面的FIN包),直接就丢弃缓存区的包发送RST包。而接收端收到RST包后,也不必发送ACK包来确认。
TCP处理程序会在自己认为的异常时刻发送RST包。例如,A向B发起连接,但B之上并未监听相应的端口,这时B操作系统上的TCP处理程序会发RST包。
又比如,AB正常建立连接了,正在通讯时,A向B发送了FIN包要求关连接,B发送ACK后,网断了,A通过若干原因放弃了这个连接(例如进程重启)。网通了后,B又开始发数据包,A收到后表示压力很大,不知道这野连接哪来的,就发了个RST包强制把连接关了,B收到后会出现connect reset by peer错误。

ACK(ACKNOWLEDGEMENT)

确认标志用于确认数据包的成功接收。

SYN(synchronize)

表示同步序号,用来建立连接

FIN(finish)

结束标志,带有该标志置位的数据包用来结束一个TCP会话