【网络】URG 和 PSH 标志位

来源:互联网 发布:如何评价地狱边境 知乎 编辑:程序博客网 时间:2024/06/05 23:06

TCP 段格式:


       和 UDP 协议一样也有源端口号和目的端口号,通讯的双方由 IP 地址和端口号标识。32 位序号、32 位确认序号、16 位窗口大小。4 位首部长度 IP 协议头类似,表示 TCP  协议头的长 度,以 4 字节为单位,因此 TCP 协议头最长可以是 4x15=60 字节,如果没有选项字段,TCP 协议头最短 20 字节。URG、ACK、PSH、RST、SYN、FIN 是六个控制位,16 位检验和将 TCP 协议头和数据都计算在内。



源端口:数据发送方的端口号,2 个字节。 

目的端口 :数据接收方的端口,2个字节。 

序号 :报文段序号,数据报文中第一个字节的序号。4 个字节,共 2 的 32 次方个序列号。 

确认序号 :也是 4 个字节,是期望收到对方下一个报文段的第一个数据字节的序号。 若确认号等于 N,则表明序号 N-1 为止的所有数据已经被正确收到。 

数据偏移 :占 4 位,指出 TCP 报文段的数据起始处距离 TCP 报文段的起始处有多远。实际上就是报文段的首部长度。 

保留:占 6 位,置为 0。 


六个标志位:

1)紧急 URG,当设置为有效时(URG=1),表示该标志位有效,告诉操作系统有紧急数据要传送,而不要按原来的排列顺序来传送。 

2)确认 ACK,仅当 ACK 为 1 时,确认字段有效,为 0 时,确认字段无效。 

3)推送 PSH,两个进程在进行交互式通信时,一个进程键入一个命令希望另一个进程立即收到该进程的响应,将 PSH 置为 1,TCP 使用推送操作,发送方发送一个报文段,接收方收到 TCP 推送的报文段时,立即向前交付接收应用程序,不等整个缓冲区满了才向上交付。 

4)复位 RST,RST 为 1 时,表明 TCP 连接中出现了严重差错,必须释放链接,需要去重新建立链接。也可以拒绝非法报文和拒绝打开链接。 

5)同步 SYN,连接建立时同步序号。 

6)终止 FIN,释放连接 。


窗口:占 2 个字节,指的是自己的接受窗口。窗口值是自己能够允许接受对方发送的数据量。 窗口字段明确指出了现在允许的对方发送的数据量。窗口值动态变化。

校验和 :占 2 个字节。校验首部和数据部分。 

紧急指针:占 2 个字节,紧急指针只有在 URG=1 时才有意义。指出紧急数据的字节数和位置。 

选项:长度可变,最长为 40 字节。



URG 和 PSH 对比

URG(紧急位):设置为 1 时紧急指针有效。为 0 时紧急指针没有意义 。

       紧急指针是一个偏移量,以序号字段的值相加指向紧急数据的最后一个字节。紧急指针指向的数据段从第一个字节到指针的位置,不进入缓冲区直接交付给上层程序,其他数据段进入缓冲区。 

PSH(推位):设置为 1 时将数据尽快交给应用层。 

       设置 PSH 位,客户端通知 TCP 在向服务器发送报文段的时候不用等缓冲区满了以后再提交数据使数据滞留。发送方置 PSH 位是缓冲区的数据立即交付给上层数据。

 

       URG 和 PSH 最大的区别是操作的数据位置不同,URG 直接将 TCP 中紧急数据不进入缓冲区交付,PSH不 因为缓冲区没满而滞留数据,尽快交付。