黏包
黏包
黏包是数据混乱的问题,发送端发送数据,接收端不知道怎么接收
年报的原因
有一个合包机制(nagle算法),将多次连续发送且间隔较小的数据,进行打包成一块数据传送. 还有一个机制是拆包机制,在发送端,
因为受到网卡的MTU限制,会将大的超过MTU限制的数据,进行拆分,拆分成多个小的数据,进行传输. 当传输到目标主机的操作
系统层时,会重新将多个小的数据合并成原本的数据
哪些情况发生黏包:只有tcp才会发生黏包,udp不会。拆包,合包都能造成黏包
import socket sk = socket.socket() sk.bind((‘127.0.0.1‘,8888)) sk.listen() conn,addr = sk.accept() conn.send(b‘hello‘) conn.send(b‘world‘) conn.close() sk.close()
import socket sk = socket.socket() sk.connect_ex((‘127.0.0.1‘,8888)) msg1 = sk.recv(1024) print(‘msg1:‘,msg1) msg2 = sk.recv(1024) print(‘msg2:‘,msg2) sk.close()
udp不会发生粘包,udp协议本层对一次收发数据大小的限制是:
65535 - ip包头(20) - udp包头(8) = 65507

浙公网安备 33010602011771号