• 黏包


    1.粘包现象:

      tcp是流式传输,是字节流,数据传输之间是没有边界的

        流式传输的特点:不限传输长度,可靠传输

        tcp协议的特点:慢(因为有回执),和一个conn连接通信,会一直占用通信资源

      udp协议: 面向数据包的传输

        数据包内容:自己的ip,mac,port 和要发送对象的ip,mac,port 以及要发送的内容:

        传输长度有限,不可靠

        udp协议特点:传输速度快,可以同时与多个客户端进行通信

    2:黏包现象的出现:

      由于流式传输的特点,产生了数据连续发送的黏包现象.

      在一个conn上建立起来的连接上传输的多天数据是没有边界的

      数据的发送和接收不是在执行send/recv的操作时就立刻实现的,

      而是要经过操作系统内核Nagle算法:

      Nagle 算法,可以将短时间内连续发送的数据整合成一个包,发送到接收端

        send(10)  send(20) --->recv(1024),如果接收到30个字节就是多收了.

      拆包机制:

      send(4096) ---> recv(4096),拆成四个包,接收到2048,少收了.

      如果是短数据:只需要告诉接收端边界就行了

      如果是长数据:不仅要告诉接收端边界,还要保证对方完整的接收

    3.解决黏包现象:

      struct模块

      pack('i',len(msg)) 把数字转成四个字节

      num = unpack('i',bytes)[0]

  • 相关阅读:
    Jenkins知识地图
    PageObject&PageFactory
    robot framework-databaselibaray库使用(python)
    robot framework环境搭建
    使用instantclient_11_2 和PL/SQL Developer工具包连接oracle 11g远程数据库(转)
    (转)pip和easy_install使用方式
    图解:如何在LINUX中安装VM-Tools
    ANT简明教程[转载]
    Linux常用命令
    oracle数据分组
  • 原文地址:https://www.cnblogs.com/lijinming110/p/9662867.html
Copyright © 2020-2023  润新知