带宽、数据的网络传输
在说明带宽之前,先来了解一下数据是如何发送的:
一、数据的发送过程:
- 应用程序将要传输的数据放入内存中。
- 应用程序使用send等库函数,通知内核将传输数据放入内核缓存区。数据是以队列的形式进入的,如果数据较多,则等前一波数据发送完后,再发送另外一拨数据,具体显示为send会多调用几次
- cpu通知网卡将内核缓冲区的数据存放到网卡缓冲区
- 网卡将数据从字节变为二进制数字信号
- 将二进制数字信号使用光纤或铜线传播
二、带宽的概念
带宽:指的是数据的发送速度。100Mbps的网卡指网卡的最大传输速度是100Mbps
带宽受影响的条件有:
- 数据传输介质的能力
- 数据将二进制信号传送到线路的能力和另一端线路将二进制信号传送到主机的能力
其实,带宽在不同场合有多个含义,详见百度百科。
在实际使用中,我们说的
响应时间=发送时间+传播时间+处理时间
=(数据量比特数/带宽)+(传播距离/传播速度)+处理时间
三、响应时间计算实例
假设场景:我们的web服务器托管在北京的某互联网数据中心,以10M独享带宽的方式接入互联网。位于西安的一位用户通过小区提供的1M独享带宽的方式接入互联网,他通过PC的浏览器下载该web服务器上的一个100MB大小的文件,换成比特就是800Mbit,那么响应时间和下载速度是多少呢?
首先,假设web服务器直接连接在交换节点A(假设就是在城域网顶级节点上,不计算下层节点的传输和转换时间),那么从web服务器到交换节点A,因为使用了10M独享带宽,所以数据发送速度为10Mbit/s,所以这部分时间为:
800Mbit/(10Mbit/s)=80s
然后用户接入方式为1M独享带宽,所以用户PC接入的交换节点B到用户PC的发送速度为1Mbit/s,所以这部分时间为:
800Mbit/(1Mbit/s) = 800s
而至于以上两个交换节点A和B,我们假设它们都是所在城市的城域网顶级节点,而且它们直接通过光缆相连,带宽假设为40G,那么这部分发送时间为:
800Mbit/(40Gbit/s) = 0.02s
以上的发送时间相加就是总的发送时间。
传播时间,北京到西安假设为1000KM,假设信号在光纤中传输速度为2*108m/s ,
1000KM/(2.0*10(8)m/s)=0.005s
那么,响应时间就出来了:
80s+800s+0.02s+0.005s = 880.025s
而下载速度为
100MByte/880.025s = 113.63KByte/s
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端