【网络】TCP报文中的PSH和URG字段的介绍
来源:互联网 发布:火车头采集本地数据 编辑:程序博客网 时间:2024/05/16 08:21
TCP协议
TCP报文格式
源端口和目的端口
各自占用两个字节,用来表示主机中的通信进程。端口号和IP组合即为套接字
序号
也叫发送序号,TCP将发送的每一个数据流都进行了编号,整个数据的起始序号在开始连接的时候设置
确认序号
指接受主机期望收到的下一个报文序号是多少
数据内容
又称为首部长度,标明TCP首部数据包的长度,单位是四个字节
六个控制字符
URG
紧急指针有效位
ACK
确认连接,1为有效
PSH
要求对方数据尽快达到应用层
RST
连接出现问题,需要重新建立连接
SYN
进行连接的建立
FIN
断开连接,提出断开连接的一方的FIN为1
窗口
告诉对方自己的窗口大小,用于流量控制
检验和
检验报文内容的正确性
紧急指针
当URG有效时,紧急指针便有效。紧急指针用来在紧急情况下进行数据的传输
选项和填充
可有可无,对数据的额外控制
URG的详细介绍
紧急指针指出了紧急数据的末尾在报文段中的位置。
当所有紧急数据都处理完毕后,TCP就告诉应用程序恢复到正常的操作。
注意:即使窗口为0时,也可以发送紧急数据 。
URG=1告诉系统此报文段中有紧急数据,应当尽快传送(相当于高优先级的数据),而不是按照原先的顺序来传送。
URG运用实例
我们现在在运行一个程序,改程序需要运行很长的时间,但是突然发现程序里面有一个错误,需要及时的去进行修改,所以我们通过键入Ctrl-C给系统发送一个终止信号。
如果我们不使用紧急数据的话,这两个字符将存储在接受TCP的缓存的末尾,只有在所有数据处理完毕之后我们才能将这两个字符交付给接收方的应用程序,这样似乎就失去了提前终止的意义了。
所以,我们通过及时的设置URG=1,告诉发送方此时有紧急数据需要传输,于是发送方TCP就将紧急数据插入到本段报文数据段的最前方,这些数据就叫做“带外数据”,而在紧急数据后面的就是正常的普通数据了。
特性
(1)紧急数据的起始点 = 序号
(2)紧急数据的终止点 = 序号+紧急指针
(3)紧急指针就是记录紧急数据的字节数,紧急指针永远为正数
(4)在紧急数据后面的数据为普通数据,需要按序缓存
(5)可以在窗口为0时发送紧急数据
(6)紧急数据都处理完成后,tcp就告诉进程恢复到正常操作
(7)URG强调的是直接读取数据,不会将该数据复制到缓存中
PSH的详细介绍
推送PSH,PSH叫做急迫位。
当两个应用程序进行交互式的通信时,有时在一端的应用进程希望在键入一个命令后立即就能够收到对方的响应。
在这种情况下,TCP就可以使用推送(push)操作。
这时,发送方TCP把PSH置1,并立即创建一个报文段发送出去。
接受方TCP收到PSH=1的报文,就尽快地(即“推送”向前)交付接受应用程序,而不再等到整个缓存都填满了后在向上交付。
(注:虽然应用程序可以选择推送操作,但是推送操作还很少使用)
PSH的使用实例
在一个交互程序中,当客户发送一个命令给服务器时,它设置PUSH标志并停下来等待服务器的响应。
通过允许客户应用程序通知其TCP设置PUSH标志,客户进程通知TCP在向服务器发送一个报文段时不要因等待额外数据而使已提交数据在缓存中滞留。
类似地,当服务器的TCP接收到一个设置了PUSH标志的报文段时,它需要立即将这些数据(包括以前存中滞留的数据)递交给服务器进程而不能等待判断是否还会有额外的数据到达。
PSH=1,只对接收方的接收缓冲区起作用,发送方通过使用PUSH位来通知接收方将所有收到的数据立即提交给服务器进程,而不需要等待额外数据(将缓存填满)而让数据在缓存中停留!
这里所说的数据包括与此PUSH包一起传输的数据以及之前就为该进程传输过来的数据(滞留在缓存中的数据)。
特性
总结
相同点
不同点
PSH置为1时,对于发送方,表明这些数据不需要等向下发送的缓存区满,立刻封装成报文,发送,省去了等待发送缓存区到达满的状态的时间。
(4)在接收方,也不需要等接受缓存区满,直接向上交付给应用层
- 【网络】TCP报文中的PSH和URG字段的介绍
- TCP报文首部的URG和PSH字段
- TCP报文段中的URG和PSH
- TCP协议字段中的URG和PSH
- 网络---TCP协议中的urg和psh的区别
- TCP报文中的URG和PSH标志位
- TCP报文首部中URG和PSH的作用
- TCP报文段中URG和PSH的区别
- TCP报文首部URG和PSH的区别
- TCP报文的URG和PSH标志位
- TCP中的URG和PSH
- TCP 控制字段之 URG 和 PSH
- TCP首部中的URG和PSH的区别和联系
- TCP协议中的URG和PSH标志位的区别
- Linux网络基础——TCP报文中URG和PSH比较
- TCP标志中的URG和PSH位
- TCP标志中的URG和PSH位
- TCP标志中的URG和PSH位
- SpringMvc集成使用redisCluster
- 关于STL的一些总结1:vector,queue,stack
- ListView
- 关于spoutConfig中maxOffsetBehind与startOffsetTime
- Codeforces Round #421(Div2) B
- 【网络】TCP报文中的PSH和URG字段的介绍
- druid数据库账号密码加密解密
- 云付董事长 张凉凉:光环背后的“执拗者”
- python 图像的保存和显示,遍历保存于显示, 去除白色像素点
- default方法的探究
- PAT乙级 1015. 德才论 (25)
- 编译sdl项目时出现无法解析的外部符号 __imp__fprintf解决办法
- 【Linux】Linux一些需要掌握的命令和内容
- 深度学习利器: TensorFlow系统架构及高性能程序设计