帶寬與我們每秒最多發送的數據包的關係
先說推出的結果 併發數 = 帶寬(Mb)*67.2/數包大小(KB) //注意這裏的帶寬 Mb ,發送出的數據大小單位是KB
下面爲推到過程:
首先要分清一下單位
一個字節的等於八個位,位就是我們常說的二進制,例如:
1000 0100 這就是八個位(bit),也叫八個比特(bit) 又稱一個字節 換算如下:
1 Byte = 8 bit
帶寬的單位: bps 一般以b/s
現在分析人們常說的 一兆帶寬 即: 1Mb/s 分析這個單位,很明顯這裏的b 是指bit (比特) 所以人們常說的帶寬並不是字節,而是比特, 現在對一兆的帶寬換算成字節來觀察:
首先要知道 比特:1Mb=1024Kb=1024*1024bit 注意這行寫的是 比特 ,是位 ,是bit
字節:1KB=1024Byte 注意這裏寫的是 字節,是Byte
1Mb/s = (1024*1024) / 8 = 131072 Byte/s (字節) = 131072/1024 = 128KB/s
可得 人們常說的帶寬 其實在我們每秒下載的字節大小爲128KB/s
再得 10兆帶寬就是 1280KB/s 基本上每秒下載一兆大小的字節,這就是我以前總疑問爲什麼我家的貸款是是10兆,但是下載數據的時候爲啥,就每秒一兆大小的字節速度,10兆帶寬指兆比特以比特爲單位,下載的爲一兆的速度是字節爲單位。現在如果你明白了,就證明前面看懂了。
按照上面的公式 :一兆帶寬是理論 上是 1Mb/s= 128KB/s 但是這是理論上的速度,
實際要扣除12%的信息頭標識等各種控制訊號 所以
1Mb/s = 112KB/s:
2Mb/s = 225KB/s
8Mb/s = 901KB/s
10Mb/s= 1126KB/s
我們的帶寬分爲上下行的,一般運營商都是希望客戶能多下載數據,所以基本上我們用來下載的下行帶寬是足夠的,但是我們在測併發的時候往往是向外發送數據,所以我們的上行帶寬要保證,下面以上行帶寬舉例:
上行帶寬
以 50兆的帶寬舉例 發送每個數據包大小爲30KB 進行舉例
首先我們要明白, 50兆的帶寬即 50Mbps 帶寬使用率並不是 完全佔滿才效果更好,而是像我們的電腦cpu 如果使用率越高,電腦越來卡,同樣帶寬也是,帶寬佔用越多就會越擁擠或者說越堵塞,經驗來說,大約70%的使用率是穩定的網絡
50Mbps * 0.7 = 35Mbps (70%的使用是穩定的網絡)
所以 我們使用35兆的 帶寬爲穩定且高效的使用率,同時也說明35兆帶寬的是我們最大併發的一個最適合的值,
所以根據上面的公式換算下 35Mbps = 128 *35 KB/s = 4480KB/s 這是之所以沒用112*35 是因爲,那些標識控制訊息,是傳輸必要的,要不然網絡中怎麼辨識和接收這些數據呢。
在這裏我的數據傳輸就是通過 base64編碼的,由於base64的傳輸特性將原數據擴大三分之一 所以現在 30KB 大小的數據變爲 40KB數據包(這裏base64介紹的很好https://blog.csdn.net/vividboy/article/details/1237740),所以
併發數爲: 4480/40 = 112 即50兆的帶寬數 在使用70%的資源情況下 ,發送的數據包大小爲30KB,且傳輸的時候使用base64 進行轉換後,最大秒併發數爲112個 (大家千萬理解我說的併發數,是針對我們自己上行帶寬向外發送數據包的時候一秒鐘我們的帶寬,最多能發出多少數據包)
所以推一個小公式:(並不是很嚴謹,但我覺得這一組數據足夠可以推算這個公式,感興趣的朋友可以多算幾組數據用來推算)
帶寬50Mbps 可以認爲是 傳30KB大小 秒併發爲 112個
成正比爲分子
併發數 肯定與帶寬成正比 ,在帶寬一定大小的前提下, 因爲我們帶寬越大也就說明我們每秒能發送的數據包越多。
併發數 肯定與數據包大小成反比,在帶寬一定大小的前提下,因爲我們數據包越大,我們能發送出去的數據包個數就越小。
設係數常量爲X
併發數 = 係數*帶寬(Mb)/數包大小(KB)
112 = 50 * X / 30
x = 67.2
所以
併發數 = 帶寬(Mb)*67.2/數包大小(KB)
大家千萬注意我們退的公式單位是什麼 帶寬單位是Mb 比特爲單位,KB 字節爲單位。
原文鏈接:https://blog.csdn.net/weixin_41955327/article/details/84350847