关于网络传输中速度达不到很高的原因

        对于主流的千兆网来说,现阶段网络传输的过程中总是达不到大数据量传输的要求,本人对于之前的项目做了一些总结,下面和大家分享一下。

        千兆网的最大传输的网速是1000Mbps,换算成字节大约为100MB,但是经常会跑不满,原因有很多。

        原因1,网线的选择,这个可以自行百度,最好选择超5类网线以上的网线,这样就排除了传输线的影响了。

        原因2,网卡的配置,正常情况下网卡通常会自适应网络中的另一端,例如PC对设备或者PC,若一侧的网卡为100M的网卡那么另一侧的网卡也为100M,同时若一侧为交换机的,那就要看交换机支不支持千兆网口了。

        原因3,排除前两个原因的基础上就要看你自己写的软件了,例如UDP的发送,使用UDP发送时,一定会走网络协议层,那么层层包装时一定会有延时,但是,一定记住不要认为这个就是耗时的关键,最通俗的的说法IEEE造的协议既然说适用千兆网,那么他们一定可以保证千兆网的正常使用。至于最正统的解释,自己看看他们的协议源码就会看出来了(说了会跑题的!!!)。如果不是这个协议的问题那么问题又在哪呢,在写UDP发送时一定会有发送的数据,那么数据的组成一定是耗时的关键,有的会因为数据包的处理不当,有的会因为数据发送的延时使用不当,这时就要根据你自己的代码去观察耗时的地方了。毕竟想要千兆网跑满的人一定单包数据非常大,对于数据的操作一定要当心能一次的memcpy就尽量不要分成多次。好了说到这里已经可以解决一部分问题了。

        原因4,MTU的更改,借用百度{通信术语 最大传输单元(Maximum Transmission Unit,MTU)是指一种通信协议的某一层上面所能通过的最大数据包大小(以字节为单位)。最大传输单元这个参数通常与通信接口有关(网络接口卡、串口等)。} MTU通常为1500,至于为什么去百度吧。但是根据需要这个值可以被更改,windows下更改的方法很简单,linux下的更改方法就有写复杂了,因为大多数时候网上写的方法更改起来是无效的,(不要和我讨论这个有没有效果,我试过许多ARM和UBUNTU下的linux都是无效的)。所以给大家提供一种一定可以改成的方法修改内核中的*.h文件,linux内核源码中include/uapi/linux/ifether.h路径下看看有个MTU的东西,就改它。修改它之后可以想象,都是1秒1000个包,但是一个包的大小是1514一个是3000多,不用说也知道哪个更快了。更改到这里基本上可以解决问题了。还有最后一个地方可以选择不考虑,或者不看。

        原因5,数据链路层的使用,想要最快的最后一个办法就是插上网线直接干,不要考虑什么IEEE,也不要考虑什么tcp/IP但是这样就有一个问题你的程序真的那么厉害吗?可以自己想想。在数据链路层上有个一个把数据从内存中导入到PHY上发送的东西,就是dma,如果直接控制他去发送那么一定可以提升速度给个推荐                                                                   http://blog.csdn.net/zhaoxinfan/article/details/55274844

这个感觉写的挺好的,声明这个和我没什么关系。好了这就是以上五个原因也给出了修改方法,希望对大家有帮助吧。同时也希望大家的指导。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值