1. 问题描述

文件大小 部署环境 平均上传速度
5M 外网 28s-36s
5M 公司局域内网 秒传,很快

2. 问题分析 
在网上搜索“测速网”测试了一下公司外网的带宽情况: 
上传带宽 = 1.04 Mbps = 133.2 kb/s 
下载带宽 = 1.25 Mbps = 160 kb/s

单位换算: 
1 Mbps(带宽速率)= 128 kb/s 
1M = 1024 kb

为什么公司内网环境的上传那么快呢?由于对网络不是很了解,我特意问了一下公司的网络管理员辉哥,我们公司办理的企业级100M光纤带宽。所以在公司的局域内网环境下,上传速率和下载速率都是100Mbps。因为是光纤,所以上传速率和下载速率是对等的,都是100Mbps。所以在内网环境的上传,是很快的。我们来算一下内网的上传: 
5M的上传文件,大小 = 5 * 1024 = 5120 KB; 
100Mbps = 100 * 128 KB/S 
上传用时 = 5120/12800 = 0.4S

为什么在外网上传就特别慢呢?因为公司对员工访问外网做了带宽限制,大概1-2Mbps的带宽; 
按照3Mbps的带宽我们来算一下公司的外网上传: 
5M上传文件, 大小 = 5*1024 = 5120 KB 
公司外网上传带宽 = 2 Mbps = 2* 128 KB/S = 256 KB/s 
上传用时 = 5120/256 = 20s 
由于上传带宽是300多号员工共享的,实际上传带宽会低于2 Mbps,所以导致外网环境的上传大概30s左右。

3. 带宽知识普及 
通常我们在运营商办理的带宽种类有如下集几种:

常见宽带 理论最高速率(Mbps) 理论最高速率(KB/S) 常见下载速率(供参考)
1M 1 Mbps 128 KB/S 77~128 KB/S
2M 2 Mbps 256 KB/S 154~256 KB/S
3M 3 Mbps 384 KB/S 231~384 KB/S
4M 4 Mbps 512 KB/S 307~512 KB/S
6M 6 Mbps 620 KB/S 462~620 KB/S
8M 8 Mbps 1024 KB/S 614~1024 KB/S
10M 10 Mbps 1280 KB/S 768~1280 KB/S
30M 30 Mbps 3840 KB/S 2560~3840 KB/S
50M 50 Mbps 6400 KB/S 3840~6400 KB/S
100M 100 Mbps 12800 KB/S 7680~12800 KB/S

从列表可见,我们【使用时的真实速率】通常达不到运营商支持的【最高速率】。 
运营商所谓的【最高速率】通常指我们使用的【下载速率】。为什么没有【上传速率】呢?

(1)上传带宽不一定等于下载带宽。

  • 宽带是ADSL接入(电话线接入)的话,由于ADSL使用的技术是一种不对称数字用户线,所以ADSL是不对等带宽,通常上传速度只有下载速度的1/8左右,可以说是国际标准了。
  • 光纤接入带宽的话,技术上是利用两条光纤分别负责上行和下行。所以原则上,上传下载速度是对等的。实际上呢,光纤用户依然被宽带运营商限制了上行带宽,即使是光纤入户的百兆带宽,上传带宽也不足4M。

(2)为什么宽带运营商要限制家庭用户的上行宽带 
主要原因可能就是为了省钱,毕竟公司都是以利益为主嘛。网民长期以来的网络使用习惯,使他们已经习惯了上行带宽慢,而且也没有用户死气白咧的要求提高上行带宽。如果宽带运营商给予上下行相同的速度,会造成资源浪费。但如果把上行带宽资源销售给机房的企业专线租用客户,则会获得更多的利益。托管在机房的服务器需要大量上行带宽,并不需要太多下行带宽。而且带宽价格非常昂贵,往往机房10M上行专线租用的费用就是家庭100M费用的5、6倍。由此看来,运营商很可能把亏欠我们的上行带宽拿去高价卖给企业机房了,你大爷!

4. 总结 
综上所述,国内的上行带宽(光纤接入)最大值4Mbps,然而通常也就 2Mbps 左右的上行带宽。 
所以互联网上传文件,很慢的。不要再盲目的改你的代码了,没用的。

最新文章

  1. 二、oracle数据库成功安装步骤 配置监听器
  2. Erlang库 -- 有意思的库汇总
  3. Android———从GitHub上下载源码的方法【Written By KillerLegend】
  4. C++代码反汇编后的堆栈寄存器EBP和ESP
  5. Tiny server:小型Web服务器
  6. Intellij 设置生成serialVersionUID的方法
  7. 20181226 PL/SQL批量生产处理语句
  8. 关于spark的mllib学习总结(Java版)
  9. java中的强,软,弱,虚引用
  10. 网络传输---HttpURLConnection
  11. docker 容器启动后立马退出的解决方法
  12. 基于XMPP 协议的开发 android
  13. 怎么定位bug
  14. React Native踩坑之Unable to load script from assets
  15. JS之作用域与闭包
  16. Unity GUI自适应屏幕分辨率(一)布局自适应
  17. Android(java)学习笔记47:通过反射获得构造方法并且使用
  18. sublime无法使用package Control解决办法。
  19. IT人怎样防止过劳死?如何成为时间的主人?
  20. angularJS ng-if的用法

热门文章

  1. 地图投影的N种姿势(转载)
  2. CORS实现跨域Ajax
  3. 连接ORACLE客户端工具navicat111.12 for oracle
  4. cocos2dx中的Rapidjson
  5. winform combobox绑定数据
  6. 转:c语言学习笔记 二进制和十进制的互相转化
  7. 算法Sedgewick第四版-第1章基础-2.3 Quicksort-001快速排序
  8. loj10102 旅游航道
  9. 解决eclipse的source not found change at.
  10. 《Spring实战》-2