TCP的PSH标志

1 篇文章 0 订阅
1 篇文章 0 订阅

        TCP的全称是Transmission Control Protocol。这个协议的目的就是创建一个Session,通过这个Session来传输数据。

 如何通信?

        建立一个Segment(协议数据单元)进行通信

  • 浏览器访问一个web服务器其中一个服务,你能发送网站吗?
    • 做这个之前必须在两者之间建立一个会话
      • 三次握手
        • 1、客户端 -- SYN --> 服务端
        • 2、服务端 -- SYN-Ack- -> 客户端
        • 3、客户端 -- Ack --> 服务端
      • 四次挥手
        • 1、服务端 -- FIN --> 客户端
        • 2、客户端 -- FIN ACK--> 服务端
        • 3、客户端 -- FIN --> 服务端
        • 4、服务端 -- ACK --> 客户端
  • 四次挥手不是唯一的方式,是一种优雅的方式。在发送过程中两边都可以发TCP重置。
    • 为社么不优雅的分手了?
      • 因为PC和web之间可能安装了安全设备,如果网络上出现了不该传入传出的内容,比如说小电影,该设备可能发RST。
  • PSH(PUSH)标志位所表达的是发送方通知接收方传输层应该尽快的将这个报文段交给应用层。传输层及以下的数据往往是由系统所带的协议栈进行处理的,客户端在收到一个个报文之后,经由协议栈解封装之后会立马把数据交给应用层去处理吗?如果说在收到报文之后立马就交给上层,这时候应用层由于数据不全,可能也不会进行处理。而且每来一个报文就交一次,效率很低。因此传输层一般会是隔几个报文,统一上交数据。什么时候上交数据呢,就是在发送方将PUSH标志位置1的时候。那么什么时候标志位会置1呢,通常是发送端觉得传输的数据应用层可以进行处理了的时候。

    举个例子来说,TLS 协议中的的证书交换部分,通常证书链的大小在3K-4K左右,一般分三个报文来进行传输。只有当这3K-4K的报文传输完毕之后,那么数据形成完整的证书链,这个时候对于接收方才是有意义的(可以进行证书链的验证),单纯的一个报文无异于乱码。因此在TLS连接中,通常会发现证书的第三个报文同上设置了push位,是发送方来告知接收方,可以把数据送往tcp的上层了,因为这些报文已经组成了有意义的内容了。同样接收方在解析了TCP的PUSH字段后,也会清空自己的缓冲区,向上层交数据。

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值