TCP报文段中的URG和PSH

一:TCP报文段的首部格式
首先明白TCP虽然是面向字节流的,但TCP传输的数据单元确实报文段,一个TCP报文段分为首部和数据两部分,而TCP的全部功能都体现在它首部中的个字段的作用,因此只有弄清楚TCP首部个字段的作用才能掌握TCP的工作原理.
TCP报文段首部的前20个字节是固定的,后面有4n字节是根据需要而增加的选项,,因此TCP首部的最小长度是20字节
这里写图片描述

二:首部固定部分各字段的意义:

(1)源端口和目的端口: 各占两字节,分别写入源端口号和目的端口号和UDP的分用类似,TCP的分用也是通过端口实现的.
(2)序号: TCP是面向字节流的,在一个TCP连接中传送的字节流中的每一个字节都按顺序编号.整个要传送的字节流的起始序号必须在连接简历时设置,首部中的序号字段值则指的是本报文段所发送的数据的第一个字节的序号.
(3)确认号: 占4字节是期望收到对方下一个报文段的第一个数据字节的序号
若确认号 =N,则表明:到序号N-1为止的所有数据都正确收到.
(4)数据偏移 : 占4位,它指出TCP报文段的数据起始处距离TCP报文段的起始处有多远,这个字段实际上是指出TCP报文段的首部长度.
(5)保留: 占6位,保留为今后使用,但目前应置为0
(6)窗口: 占2字节.. 窗口字段用来控制对方发送的数据量,可以告知对方目前本身有的缓冲器容量(Receive Buffer) 还可以接收封包。当 Window=0 时,代表缓冲器已经额满,所以应该要暂停传输数据。单位为字节。TCP连接的一端根据设置的缓存空间大小确定自己的接收窗口大小,然后通知对方以确定对方的发送窗口的上限,这个值是本机期望一次接收的字节数。
(7)校验和: 占2字节当数据要由发送端送出前,会进行一个检验的动作,并将该动作的检验值标注在这个字段上; 而接收者收到这个封包之后,会再次的对封包进行验证,并且比对原发送的 Checksum 值是否相符,如果相符就接受,若不符就会假设该封包已经损毁,进而要求对方重新发送此封包!在计算检验和时,要在TCP报文段的前面加上12字节的伪首部。
(8)紧急指针: 占2字节这个字段是在 Code 字段内的 URG = 1 时才会产生作用。可以告知紧急数据所在的位置(紧急指针指出在本报文段中的紧急数据的最后一个字节的序号)。
(9)选项:长度可变。CP首部可以有多达40字节的可选信息,用于把附加信息传递给终点,或用来对齐其它选项。
目前此字段仅应用于表示接收端可以接收的最大数据区段容量,若此字段不使用, 表示可以使用任意数据区段的大小。 这个字段较少使用。
TCP首部的主要选项:
最大报文段长度MSS是TCP报文段中的数据字段的最大长度。MSS告诉对方TCP:“我的缓存所能接收的报文段的数据字段的最大长度是MSS个字节。”

三:TCP报文段首部6个控制位
(1):紧急URG: 当URG =1时,表明紧急指针字段有效.他告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级数据),而不要按原来的排队序列来传送
如:已经发送了很长的一个程序要在远地的主机上运行,但后来发现了一些问题,需要取消该程序的运行,用户从键盘发出中断Ctrl-C命令,如果不使用紧急数据,那么这两个字符将存储在接受TCP的缓存末尾,只有在所有数据处理完毕后这两个字符才被交付接收方的应用进程,这样就会浪费很多时间.

当URG置1时,发送应用进程告诉发送方的TCP右紧急数据要传送,于是发送方TCP就把紧急数据插入到本报文段数据的最前面,而在紧急数据后面的数据仍是普通数据.这时要与首部中的紧急指针字段配合使用.
(2)确认ACK: 仅当ACK =1时确认号字段才有效.当ACK =0时,确认号无效.TCP规定,在连接建立后所有传送的报文段都必须把ACK置1
(3)推送PSH : 当两个应用进程进行交互式的通信时,有时宰一端的应用进程希望键入一个命令后立即就能够收到对方的响应,在这种情况下,TCP就可以使用推送(push)操作.这时,发送方TCP把PSH置1,并立即创建一个报文段发送出去.接收方TCP收到PSH =1的报文段,就尽快地交付接受应用进程,而不是等到整个缓存都填满了后再向上交付.
注意:虽然应用程序可以选择推送操作,但推送操作还很少使用

(4)复位RST: 当RST =1时,表明TCP连接中出现严重差错(如由于本主机崩溃或其他原因),必须释放连接,然后再建立运输连接.RST置1还用来拒绝一个非法的报文段或拒绝打开一个连接,RST也可称为重建位或重置位.
(5)同步STN: 在连接建立时用来同步序号.当SYC =1而ASK =0时,表明这时一个连接请求报文段.对方若同意建立连接,则应响应报文段中使用SYN=1和ASK =1.因此,SYN置1就表示这是一个连接请求或者连接接受报文
(6)终止FIN: 用来释放一个连接,当FIN =1时,说明此报文的发送方的数据已发送完毕,并要求释放运输连接.

部分参考<<计算机网络>>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值