TCP协议的PSH标识详解
来源:互联网 发布:linux系统密码忘记 编辑:程序博客网 时间:2024/06/05 17:41
TCP的推送比特PSH(Push)
PSH是TCP报头中的一个标志位,
发送方在发送数据的时候可以设置这个标志位.
当两个应用程序进行交互式的通信时,有时在一端的应用进程希望在键入一个命令后立即就能够收到对方的响应.在这种情况下,TCP可以使用推送(push)操作.这时,发送端TCP将推送比特PSH置为1,并立即创建一个报文段发送出去.接收TCP收到推送比特置1的报文段,就尽快地(即"推送向前")交付给接收应用进程,而不再等到整个缓冲都填满了再向上交互. (故,PSH比特也叫急迫比特)
虽然应用程序可以选择推送操作,但推送操作还是往往不被人们使用,实际上现在的TCP协议栈基本上都可以自行处理这个问题,而不是交给应用层处理.
发送方使用该标志通知接收方将所收到的数据全部提交给接收进程(这里的数据包括与PUSH一起传送的数据以及接收方TCP已经为接收进程收到的其他数据.)
在最初的TCP规范中,允许发送应用程序设置TCP的PSH标识.当发送应用程序设置TCP的PSH标识后,TCP应把发送缓存中的数据发送出去,而不需等待其他额外的数据,而接受端在收到PSH标志后,应该把已经接受到的数据提交给应用程序,而不需等待其他可能的数据.
多数源自伯克利(BSD)的TCP实现可在发送缓存被清空(发送缓存内的数据被全部发送)的时候自动设置PSH标识.因为应用程序在写数据给TCP时,就会被TCP发送(除非由于接受端窗口为0,或其他不能发送的原因).如果待发送的数据会清空发送缓存,那么协议栈栈就会自动为此包设置PSH标志.
而因为源自BSD的TCP从不把接收到的数据延迟提交给应用程序,所以接收端会忽略掉接收到的PUSH标识.
PSH位就是用来通告接收方立即将收到的报文连同TCP接收缓存里的数据递交应用进程处理.一般会出现在发送方封装最后一个应用字段的TCP报文中,针对TCP交互式应用,则只要封装有应用字段的TCP报文,均会将PSH位置1.
当然,应用程序的开发者,可以根据需要,在某个应用功能模块或某个应用操作中,将所有封装应用字段的TCP报文PSH位置1,以提高交互双方的处理效率,这在理论上应该也是可行的.
From:http://www.2cto.com/net/201307/229079.html
0 0
- TCP协议的PSH标识详解
- TCP层URG、PSH标识
- TCP的URG和PSH详解----区别
- 详解TCP协议中控制位及URG&PSH的区别
- TCP协议: SYN ACK FIN RST PSH URG 详解
- TCP协议: SYN ACK FIN RST PSH URG 详解
- TCP协议: SYN ACK FIN RST PSH URG 详解
- TCP协议: SYN ACK FIN RST PSH URG 详解
- TCP协议定时器+URG,PSH的区别+TCP连接释放
- TCP协议中URG&PSH
- TCP协议中的URG-PSH
- TCP协议首部中URG与PSH的区别
- TCP协议中的URG和PSH标志位的区别
- 网络---TCP协议中的urg和psh的区别
- 22-TCP 协议(PSH 标志)
- TCP协议首部中URG与PSH
- TCP协议包头中的URG和PSH
- TCP协议中的URG和PSH位
- 2016ACM-ICPC沈阳网络预选赛1004 Mathematician QSC
- 【一步一个脚印】Tomcat+MySQL为自己的APP打造服务器(3-1)Android 和 Service 的交互之GET方式
- 一款游戏的喊话CALL的解决新思路
- AlDl跨进程服务之电话拦截
- Builder构造器模式在struts2中示例学习
- TCP协议的PSH标识详解
- /etc/bashrc和/etc/profile傻傻分不清楚?
- Can't use 'defined(@array)' (Maybe you should just omit the defined()?)
- ShooterGame-weapon
- PHP连接数据库
- HTC vive开发:关于手柄按键对接控制
- 【经典算法】:图中的最小生成树算法之Prim算法和Kruskal算法
- Android官方开发文档Training系列课程中文版:电池续航时间优化之检查与监测坞的状态与类型
- 课程设计之贪吃蛇小游戏制造