tcp linux 报文内容,Linux TCP收包内容总结-----学习笔记

这篇博客总结了Linux TCP收包过程中可能遇到的丢包问题,包括网卡硬件层、内核缓存、协议层和用户层的处理。通过`ethtool`和`/proc/net/softnet_stat`等工具监测丢包,并给出了调整参数以优化网络性能的建议,如增大ring buffer和内核网络缓存队列长度。
摘要由CSDN通过智能技术生成

Linux TCP收包内容总结-----学习笔记 ,如果有理解不正确的,欢迎各位拍砖, :)

总揽:数据包在从进入网卡一直到用户程序能读取所经历的几个层级以及各层使用到的工具命令和参数,如下表格:

接收的网络数据依次经1:网卡硬件-->2 内核缓存队列-->3协议层--->4用户recv使用的buff. 也就是说网卡收到数据包后要几经辗转才能被用户程序读取,而在”辗转”的过程中也是会有将数据包丢弃操作的.下面细说.

f82399e3d8915734259a6c877d2d0f23.png

yhv3tgkr6akedn29

一:在网卡硬件层丢包

查看网卡硬件层是否有数据包丢弃:

1,ifconfig如果看到overruns 数值不为0,

2或ethtool –S ethX|egrep “discard|error|drop”, (将ethX换成你实际网卡)看到的统计计数不为0, 如果这值一直在增长,则可能在网卡硬件或驱动层面丢包了,原因可能为:

Ring buffer (网卡硬件上的缓存) 过小, 队列满了后,内核还没有来得仍取走数据, 新到网卡的数据包被丢弃.此时需要修改ring buffer.后面会详细提到.

网卡硬件有问题,需要联系硬件厂商(更换或升级硬件固件)

网卡驱动有问题,更新驱动

操作系统超级繁忙. 需要分析系统性能.

针对第一种情况,可以修改ring buffer,首先需要网卡硬件以及驱动的支持, 有些较老的网卡及驱动是不支持修改此值的.其次,修改此值的时候可能会造成丢包甚至网络中断,所以最好是在非业务运行时段进行.最后,修改完此值后,下次重启主机不会生效,需要将期加入开机启动,或者加入网卡配置文件启动参数中去.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值