zoukankan      html  css  js  c++  java
  • 66、TCP粘包问题是什么?你会如何去解决它?

    TCP粘包是指发送方发送的若干包数据到接收方接收时粘成一包,从接收缓冲区看,后一包数据的头紧 接着前一包数据的尾。

    1.由TCP连接复用造成的粘包问题。

    2.因为TCP默认会使用Nagle算法,此算法会导致粘包问题。

      只有上一个分组得到确认,才会发送下一个分组;

      收集多个小分组,在一个确认到来时一起发送。

    3.数据包过大造成的粘包问题。

    4.流量控制,拥塞控制也可能导致粘包。

    5.接收方不及时接收缓冲区的包,造成多个包接收

    解决:

    1. Nagle算法问题导致的,需要结合应用场景适当关闭该算法

    2. 尾部标记序列。通过特殊标识符表示数据包的边界,例如 , ,或者一些隐藏字符。

    3. 头部标记分步接收。在TCP报文的头部加上表示数据长度。

    4. 应用层发送数据时定长发送。

  • 相关阅读:
    XMPP核心协议客户端
    平安中国
    读写XML的API们
    IM只是可以用来玩的东西
    再骂自己一句
    淡定
    自己打造SAX和DOM Parser
    Nickel Instant Messeging System
    XMPP RFC阅读笔记(二)
    think in java 笔记
  • 原文地址:https://www.cnblogs.com/crbhf/p/15122654.html
Copyright © 2011-2022 走看看