大纲

  • 建立连接时候丢包
  • 流量控制丢包
  • 网卡丢包
    • RingBuffer过小导致丢包
    • 网卡性能不足
  • 接收缓冲区丢包
  • 两端之间的网络丢包

建立连接时候丢包

Tcp协议通过三次握手建立连接。在服务端第一次握手后会先建立半连接,而此时就会产生一个叫做半连接队列的地方暂存数据。当接收到第三次握手后把链接队列就升级为全连接队列暂存数据,等accept()方法将其取走。

是队列就有长度,有长度就有可能会满,如果它们满了,那新来的包就会被丢弃。

流量控制丢包

网卡丢包

RingBuffer过小导致丢包

在接收数据时,会将数据暂存到RingBuffer接收缓冲区中,然后等着内核触发软中断慢慢收走。如果这个缓冲区过小,而这时候发送的数据又过快,就有可能发生溢出,此时也会产生丢包。

网卡性能不足

网卡作为硬件,传输速度是有上限的。当网络传输速度过大,达到网卡上限时,就会发生丢包。

接收缓冲区丢包

使用TCP socket进行网络编程的时候,内核都会分配一个发送缓冲区和一个接收缓冲区。

当我们想要发一个数据包,会在代码里执行send(msg),这时候数据包并不是一把梭直接就走网卡飞出去的。而是将数据拷贝到内核发送缓冲区。而接收缓冲区作用也类似,从外部网络收到的数据包就暂存在这个地方,然后坐等用户空间的应用程序将数据包取走。
当接受缓冲区满了,它的TCP接收窗口会变为0,也就是所谓的零窗口,并且会通过数据包里的win=0,告诉发送端。一般这种情况下,发送端就该停止发消息了,但如果这时候确实还有数据发来,就会发生丢包。

两端之间的网络丢包

网络容易丢包情况汇总相关推荐

  1. 使用telnet检测网络丢包情况

    我们在通信时可能会有一些丢包情况,比如路由器阻塞,我们可以使用telnet或者ping来检测网络通道问题,如果是路由器延迟造成问题我们可以浏览器的抓包软件查看情况.路由器延迟不会太大,太大都可能完全丢 ...

  2. ping网关丢包_网络/摄像机丢包的原因分析

    引文 不少人在使用网络和监控摄像系统的时候都有遇到过数据丢包的情况,数据丢包的原因是多种多样的,以下就为大家介绍一下网络数据丢包的原因及摄像机丢包的原因. 原因分析 摄像机丢包的原因1:路由错误 网络 ...

  3. 实践案例丨GaussDB网络重传/丢包问题定位总结

    摘要:本文将介绍几种常用手段,用于梳理数据库网络故障可能存在的问题,从而快速定位恢复. 1 问题背景 在GaussDB各类问题场景中,网络故障是最难定位及恢复的问题之一,其不仅可能影响着数据库的性能, ...

  4. ping 丢包 网络摄像头_网络监控摄像机丢包的原因分析

    原标题:网络监控摄像机丢包的原因分析 引文 不少人在使用网络和监控摄像系统的时候都有遇到过数据丢包的情况,数据丢包的原因是多种多样的,以下就为大家介绍一下网络数据丢包的原因及摄像机丢包的原因. 原因分 ...

  5. openStack controller 管理网口TX数据量非常大 网络总是丢包

    openStack controller 管理网口TX数据量非常大 网络总是丢包 posted on 2015-10-26 09:19 秦瑞It行程实录 阅读(...) 评论(...) 编辑 收藏 转 ...

  6. 层层深入探究网络连接丢包之谜

    局域网中有几台已经"服役"多年的Windows 98工作站,它们通过网上邻居窗口相互之间进行访问时一切正常,不过当从工作站中通过局域网的代理服务器访问Internet网络时,竟然出 ...

  7. 网络中丢包的原因及类型

    在本文中我会总结一些论文相关论文中关于网络中丢包的原因的论述. 网络中的丢包可以分为如下几个类型: 拥塞: 这个比较好理解, 就是交换机/路由器中多个端口向一个端口发送数据包, 最后导致数据包数量超过 ...

  8. android 下测试网络的丢包率和延迟

    昨天做网络延迟和丢包率,以前没弄过,网上寻找也没找到什么有效的,弄了一下午搞定了,代码如下,希望对大家有帮助,写的不好,还请大家批评指正 String lost = new String();Stri ...

  9. android 丢包率测试,android 下测试网络的丢包率和延迟

    昨天做网络延迟和丢包率,以前没弄过,网上寻找也没找到什么有效的,弄了一下午搞定了,代码如下,希望对大家有帮助,写的不好,还请大家批评指正 String lost = new String(); Str ...

最新文章

  1. Linux系统查看系统是32位还是64位方法总结 in 创新实训
  2. js 拉勾网效果_Node.js 中实践基于 Redis 的分布式锁实现
  3. python国产_Python勒索软件来袭,国产杀软集体失身
  4. 卸载wrapt_[python] 安装TensorFlow问题 解决Cannot uninstall 'wrapt'. It is a distutils installed project...
  5. iOS之github第三方框架(持续更新)
  6. 2013递归求解单链表中的结点个数(C++,附递归函数思路讲解与手绘图)
  7. 复杂性思维中文第二版 七、物理建模
  8. 最接近WeChat的全屏自定义相机(Custom Camera)
  9. android远程调用github仓库的aar文件
  10. Qt C++ QSerialPortInfo的测试
  11. [20171120]bash使用here documents的细节
  12. HashTable 源码解析 jdk1.8
  13. kepware modbus
  14. 顺序表的基本操作(完整代码)
  15. 计算机维修的感想,电脑维护心得
  16. 原生JAVA解析json
  17. java coap_CoAP协议-以Californium(Java)为例的CoAP初步实现
  18. Unity 正交相机和透视相机的屏幕适配
  19. 如何向icloud上传文件_扔掉百度网盘,这两招教你用好 iCloud 分享文件
  20. 快速实现微信公众号支付功能

热门文章

  1. JSElectron使用speechSynthesis进行语音合成
  2. cn2an:中文数字转阿拉伯数字
  3. Unity 使用教程 之 Unity3D常用的知识点归纳
  4. 芯片管脚工作在各个模式的特点和优缺点(持续更新)加上下拉电阻的作用
  5. FreeRADIUS之RADIUSD说明
  6. Linux4种常用软件安装方法(源代码,二进制,rpm,yum)
  7. Win10你要以何方式打开此网站 确定不能点解决方法
  8. 5-32 哥尼斯堡的“七桥问题” (25分)
  9. 安装rhel8.2虚拟机
  10. 纯Java搭建SS开发环境