zoukankan      html  css  js  c++  java
  • TCP协议中粘包现象

    在tcp协议网络传输中,才会出现粘包,udp协议不会出现.

         tcp的协议数据不会丢,没有收完包,会继续上次继续接收,总是在收到ack时才会清除缓冲区内容。数据是可靠的,但是就会粘包。

      因为数据发送和接收过程先经过缓冲区,由于数据大小以及网络原因,导致收发信息不能严格同步,造成数据粘连的现象叫做粘包

    粘包有两种形式:

    1.客户端send()发送了一段数据,服务端只recv()收取了一小部分,下次再收的时候还是从缓冲区拿上次遗留的数据,产生粘包.

    2.发送端发送数据时间间隔很短,数据也很小,会合到一起,产生粘包.

     1 import socket
     2 sk = socket.socket()
     3 sk.bind(("127.0.0.1", 10096))
     4 sk.listen(1)
     5 s, k = sk.accept()
     6 n = s.recv(1)
     7 print(n)
     8 n1 = s.recv(3)
     9 print(n1)
    10 s.send(b'w')
    11 s.send(b'w')
    12 s.send(b'w')
    13 s.send(b'w')
    服务端
    1 import socket
    2 sk = socket.socket()
    3 sk.connect(("127.0.0.1", 10096))
    4 sk.send(b"1")
    5 sk.send(b"1")
    6 sk.send(b"1")
    7 a = sk.recv(10)
    8 print(a)
    客户端

    服务端输出结果:

    b'1'
    b'11'

    或者

    b'1'
    b'1'

    客户端输出结果:

    b'w'

    或者

    b'wwww'

  • 相关阅读:
    枚举与常量需要注意的一个问题
    parted分区用法
    Linux下常用服务的端口号
    NFS服务
    mount用法
    Rsync服务部署
    常见的RAID级别
    SQL注入语句 (很全)
    数据库被注入daxia123或cn.jxmmtv.com原因及解决办法
    StringTemplate.net模板技术用法
  • 原文地址:https://www.cnblogs.com/NoteBook3013/p/10406887.html
Copyright © 2011-2022 走看看