パケット数から通信量を求めるには、パケット数に1パケットあたりのサイズを掛けるのが基本です。
計算式は次のとおりです。
総バイト数 = パケット数 × 1パケットあたりのサイズ
たとえば、1パケットあたりのサイズが1,000バイトで、パケット数が10,000パケットの場合は、次のように計算します。
10,000パケット × 1,000バイト = 10,000,000バイト
つまり、この場合の通信量は10,000,000バイトです。
ただし、ここで注意したいのは、パケット数だけでは正確なバイト数は分からないという点です。
なぜなら、1パケットあたりのサイズは通信内容やプロトコルによって変わるためです。
パケットは、常に同じサイズで送受信されるわけではありません。
たとえば、通信内容によって次のようにパケットサイズは変わります。
64バイト程度の小さなパケット
500バイト程度のパケット
1,000バイト程度のパケット
1,500バイト程度のパケット
そのため、同じパケット数でも、1パケットあたりのサイズが違えば、総通信量は大きく変わります。
たとえば、次の2つを比べてみます。
10,000パケット × 100バイト = 1,000,000バイト
10,000パケット × 1,500バイト = 15,000,000バイト
どちらも10,000パケットですが、通信量は大きく異なります。
つまり、パケット数をバイト数に換算するには、パケット数だけでなく、1パケットあたりのサイズも必要です。
実際のネットワーク通信では、すべてのパケットが同じサイズとは限りません。
Webサイトの閲覧、動画視聴、ファイルダウンロード、オンラインゲーム、API通信などでは、それぞれパケットサイズが異なります。
そのため、実務では次のように平均パケットサイズを使って計算することが多いです。
総バイト数 = 総パケット数 × 平均パケットサイズ
たとえば、次の条件で考えてみます。
総パケット数:250,000パケット
平均パケットサイズ:1,000バイト
計算式は次のとおりです。
250,000 × 1,000 = 250,000,000バイト
つまり、通信量は250,000,000バイトです。
バイト数をMBに変換する場合、通信量の説明では一般的に1,000単位で計算します。
1MB = 1,000,000バイト
そのため、250,000,000バイトをMBに変換すると、次のようになります。
250,000,000 ÷ 1,000,000 = 250MB
したがって、250,000パケットで平均パケットサイズが1,000バイトの場合、通信量は約250MBです。
ネットワークでは、ppsという単位が使われることがあります。
ppsは、packets per secondの略で、1秒あたりに処理・送受信されるパケット数を表します。
たとえば、
10,000pps
であれば、1秒間に10,000パケットが流れているという意味です。
ppsから1秒あたりのバイト数を求めるには、次の式を使います。
バイト/秒 = pps × 平均パケットサイズ
たとえば、次の条件で計算します。
pps:10,000pps
平均パケットサイズ:1,000バイト
この場合は、
10,000 × 1,000 = 10,000,000バイト/秒
となります。
つまり、1秒あたり10,000,000バイトの通信量です。
ネットワーク速度では、バイトではなくビットで表すことが一般的です。
1バイトは8ビットなので、バイトをビットに変換するには8を掛けます。
bps = pps × 平均パケットサイズ × 8
たとえば、10,000ppsで平均パケットサイズが1,000バイトの場合は、次のようになります。
10,000 × 1,000 × 8 = 80,000,000bps
つまり、80Mbpsです。
このように、ppsをbpsに変換する場合は、最後に8を掛けることが重要です。
通信量や回線速度の説明では、一般的に1,000単位で計算します。
1KB = 1,000バイト
1MB = 1,000,000バイト
1GB = 1,000,000,000バイト
たとえば、120,000,000バイトをMBに変換する場合は、次のように計算します。
120,000,000 ÷ 1,000,000 = 120MB
この場合、通信量は120MBです。
一方で、コンピューター内部の容量や一部のツールでは、1,024単位で計算されることがあります。
1KiB = 1,024バイト
1MiB = 1,048,576バイト
1GiB = 1,073,741,824バイト
たとえば、120,000,000バイトをMiBで計算すると、次のようになります。
120,000,000 ÷ 1,048,576 ≒ 114.44MiB
通信量として一般向けに説明する場合は、MB・GBは1,000単位で説明することが多いです。
ただし、技術的に厳密に書く場合は、MBとMiB、GBとGiBを区別すると分かりやすくなります。
一般的には「パケット」という言葉でまとめて説明されることが多いですが、技術的には階層によって呼び方が異なります。
レイヤー2:Ethernetフレーム
レイヤー3:IPパケット / IPデータグラム
レイヤー4:TCPセグメント / UDPデータグラム
そのため、「パケットサイズ」と言っても、どの階層のサイズを指しているのかによって、計算結果が変わります。
たとえば、次のような違いがあります。
アプリケーションデータだけのサイズ
TCP/UDPヘッダーを含むサイズ
IPヘッダーを含むサイズ
Ethernetヘッダーを含むサイズ
FCSや物理層のオーバーヘッドまで含むサイズ
実務で正確な通信量を計算する場合は、どの範囲のバイト数を使っているのかを確認する必要があります。
通信では、実際のデータ本体だけでなく、通信制御に必要なヘッダー情報も付加されます。
代表的なヘッダーサイズは次のとおりです。
IPv4ヘッダー:通常20バイト
TCPヘッダー:最小20バイト
UDPヘッダー:8バイト
Ethernetヘッダー:通常14バイト
FCS:4バイト
たとえば、IPv4 + TCPでオプションがない場合、IPヘッダーとTCPヘッダーだけで次のサイズになります。
IPv4ヘッダー20バイト + TCPヘッダー20バイト = 40バイト
そのため、MTU 1,500バイトの環境でIPv4 + TCP通信を行う場合、TCPのデータ部分は概算で次のようになります。
1,500 - 20 - 20 = 1,460バイト
つまり、IPパケット全体が1,500バイトでも、そのすべてがアプリケーションデータとして使えるわけではありません。
MTUとは、Maximum Transmission Unitの略で、1つのパケットまたはフレームで運べる最大転送単位を意味します。
一般的なEthernet環境では、MTUは1,500バイトに設定されていることが多いです。
ただし、この1,500バイトは、多くの場合、Ethernetで運ばれるIPパケット部分の最大サイズを指します。
EthernetでMTU 1,500バイトという場合でも、Ethernetフレーム全体のサイズが1,500バイトになるわけではありません。
たとえば、IPパケット部分が1,500バイトの場合、Ethernetフレームとしては次のようになります。
Ethernetヘッダー:14バイト
IPパケット:1,500バイト
FCS:4バイト
計算すると、次のとおりです。
14 + 1,500 + 4 = 1,518バイト
つまり、IPパケットが1,500バイトの場合、Ethernetフレームとしては1,518バイトになります。
さらに厳密に物理回線上の消費量を考える場合は、プリアンブル、インターフレームギャップ、VLANタグ、PPPoE、VPN、トンネルなどのオーバーヘッドも考慮する必要があります。
次の条件で考えます。
パケット数:50,000パケット
1パケットあたりのサイズ:1,500バイト
計算式は次のとおりです。
50,000 × 1,500 = 75,000,000バイト
MBに変換すると、次のようになります。
75,000,000 ÷ 1,000,000 = 75MB
つまり、50,000パケットで1パケットあたり1,500バイトの場合、通信量は約75MBです。
ただし、この1,500バイトがIPパケットのサイズなのか、Ethernetフレーム全体のサイズなのかによって、厳密な意味は変わります。
次の条件で計算します。
パケット数:300,000パケット
平均パケットサイズ:800バイト
計算式は次のとおりです。
300,000 × 800 = 240,000,000バイト
MBに変換すると、次のようになります。
240,000,000 ÷ 1,000,000 = 240MB
したがって、300,000パケットで平均パケットサイズが800バイトの場合、通信量は約240MBです。
次の条件で計算します。
pps:20,000pps
平均パケットサイズ:500バイト
まず、1秒あたりのバイト数を求めます。
20,000 × 500 = 10,000,000バイト/秒
次に、バイトをビットに変換するために8を掛けます。
10,000,000 × 8 = 80,000,000bps
つまり、通信速度は80Mbpsです。
パケット数が多いと通信量も多いように見えますが、必ずしもそうとは限りません。
たとえば、次の2つを比較します。
A:100,000パケット × 100バイト = 10,000,000バイト
B:10,000パケット × 1,500バイト = 15,000,000バイト
Aの方がパケット数は多いですが、通信量はBの方が大きくなります。
つまり、通信量を確認する場合は、パケット数だけでなく、パケットサイズも見る必要があるということです。
MTU 1,500バイトという数字を見ると、1,500バイトすべてがアプリケーションデータだと思われることがあります。
しかし、実際にはIPヘッダーやTCP/UDPヘッダーが含まれます。
たとえば、IPv4 + TCPでオプションなしの場合、ヘッダーだけで40バイト使われます。
IPv4ヘッダー20バイト + TCPヘッダー20バイト = 40バイト
そのため、TCPのデータ部分は概算で次のようになります。
1,500 - 40 = 1,460バイト
このように、通信量を正確に考える場合は、ヘッダー部分も意識する必要があります。
総バイト数 = パケット数 × 平均パケットサイズ
パケット数から総通信量を求める場合に使います。
バイト/秒 = pps × 平均パケットサイズ
1秒あたりの通信量をバイト単位で求める場合に使います。
bps = pps × 平均パケットサイズ × 8
ネットワーク速度としてビット単位に変換する場合に使います。
MB = バイト数 ÷ 1,000,000
通信量をMBで表す場合に使います。
GB = バイト数 ÷ 1,000,000,000
通信量をGBで表す場合に使います。
パケット数からバイト数を求めるには、次の式を使います。
総バイト数 = パケット数 × 平均パケットサイズ
ただし、パケット数だけでは通信量は分かりません。
1パケットあたりのサイズは通信内容やプロトコルによって変わるため、正確に計算するには平均パケットサイズが必要です。
また、通信速度としてbpsを求める場合は、次の式を使います。
bps = pps × 平均パケットサイズ × 8
ここで使うパケットサイズが、IPパケットのサイズなのか、Ethernetフレーム全体のサイズなのか、アプリケーションデータだけのサイズなのかによって、計算結果は変わります。
そのため、実務で正確な通信量を出す場合は、単にパケット数を見るだけでなく、どの範囲のバイト数を計算対象にしているのかを確認することが重要です。
以上、パケットをバイトに変換する計算方法についてでした。
最後までお読みいただき、ありがとうございました。