数一数网络吞吐量

这里写图片描述

提出一个问题

假设有一台服务器配了千兆网卡,独占千兆带宽,一个业务数据包大小1MB,通过TCP协议发送,请问这台服务流量全部跑满,最大的支持多少吞吐量。

大家可以先思考一下这个问题

了解几个概念

解决这个问题,有必要先了解一下问题中的几个概念。

千兆网卡

网卡我们都知道是一种提供计算机与传输介质的硬件接口。
这里写图片描述
千兆则是表示传输速率,一般传输速率是以bit/s为单位,表示每秒传输1bit的数据量。
所以千兆网卡就是每秒传输1000Mb数据量的网卡,这里的数据量都是单向,如果是双向计算的就是2000Mb/s。
注意这里的单位都是小b(bit = 位),. 而大B表示字节(byte) 换算公式1B = 8b

带宽

带宽是指在规定时间内从一端流到另一端的信息量,即数据传输率,是一个通讯领域的一个概念。所谓的千兆带宽也就是每秒的传输速率是1000Mb。

TCP协议

我们来简单看一个简单协议分层
这里写图片描述
从图中我们可以看到,应用层协议是最顶层协议,通过TCP协议打包,ip协议包,最后以太网协议打包这样生成一个以太网数据包通过传输介质传输出去。我们以Http数据协议做为例子,看看整个传输流程。
这里写图片描述
所以一个最终发出去的数据不仅只有业务数据包。里面还有tcp协议,ip协议以及以太网协议层层打包,如下图
这里写图片描述
一个以太网数据包(packet)的大小是固定的,1522字节。
以太网数据包(1522Byte) = 以太网标头(22B) + IP标头(20B) + TCP标头(20B) + 应用层数据包(1460)
这个算法不包含IP标头和TCP标头里的而外信息

再来看这个问题

通过以上的概念解释相信大家已经能计算出来了,只是一个数学问题。
由于业务数据包1MB = 1024 * 1024Byte, 而我们知道以太网数据包最大只支持1460B的数据,所以这里需要分包,1024 * 1024 / 1460 约等于 718
由于网卡和带宽都是千兆所以这里传输速率就是1000Mbps(实际速率以带宽为准),每个以太网数据包是1522B,1B = 8b,如果以太网数据包被填满,最多可以发送:1000Mb * 1024 * 1024 / (8 * 1522) = 86118
最终这个每秒吞吐量 86118 / 718 = 119

参考链接

http://www.ruanyifeng.com/blog/2017/06/tcp-protocol.html

欢迎关注公众号

这里写图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值