首页 > 其他 > 详细

20180914日学习笔记

时间:2018-09-17 17:00:25      阅读:154      评论:0      收藏:0      [点我收藏+]

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]

 

20180914日学习笔记

原文:https://www.cnblogs.com/lijinming110/p/9662867.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!