文書の表示以前のリビジョンバックリンク文書の先頭へ この文書は読取専用です。文書のソースを閲覧することは可能ですが、変更はできません。もし変更したい場合は管理者に連絡してください。 ====== ネットワークバイトオーダについて ====== IP アドレスもポート番号も整数です。このため、ネットワーク上で IP アドレス、ポート番号を送受信する場合は、複数バイトからなる整数の格納/表現方式(バイトオーダ)が異なるハードウェアアーキテクチャに対応する必要がある。\\ 以下の表に示す様に整数の最上位バイト(メモリアドレスの下位)を先に格納するアーキテクチャをビッグエンディアン(big endian)と、最下位バイトを先に格納するアーキテクチャをリトルエンディアン(little endian)と言う。\\ リトルエンディアンを採用するアーキテクチャの代表例は x86 である。他のアーキテクチャではビッグエンディアンが多数派である。また、エンディアンを切り替え可能なハードウェアアーキテクチャであるバイエンディアン(bi endian)も存在する。(Raspberry Pi など)\\ {{:network:raspberry_pi.jpg?400|Raspberry Pi}}\\ マシン上のバイト格納順序をホストバイトオーダと言う。ポート番号、IP アドレスはネットワーク上の全ホストが正しく解釈する必要があり、決められたバイトオーダで送信しなければならない。これをネットワークバイトオーダと言い、ビッグエンディアンと定められている。\\ 言語処理系などの仮想マシンの類では、プラットフォームに応じ使い分ける設計のものもあれば、片方に寄せる設計のものもある。例えば、Java仮想マシンはプラットフォームを問わずビッグエンディアンである。\\ [[https://docs.oracle.com/cd/E57425_01/121/ZZPRE/GUID-96057B71-B6B9-4A6F-86FA-05946649E82D.htm|プラットフォーム・エンディアン・サポート]]\\ ==== 表: ビッグエンディアンおよびリトルエンディアンでの 2バイト整数と 4バイト整数の格納順序 ==== ^ アーキテクチャ ^ 2 バイト整数 ^^ 4 バイト整数 ^^^^ ^ ^ アドレス\\ N ^ アドレス\\ N + 1 ^ アドレス\\ N ^ アドレス\\ N + 1 ^ アドレス\\ N + 2 ^ アドレス\\ N + 3 ^ ^ ビッグエンディアン | 1\\ (MSB) | 0\\ (LSB) | 3\\ (MSB) | 2 | 1 | 0\\ (LSB) | ^ リトルエンディアン | 0\\ (LSB) | 1\\ (MSB) | 0\\ (LSB) | 1 | 2 | 3\\ (MSB) | MSB = 最上位バイト、LSB = 最下位バイト network/byte_order.txt 最終更新: 2019/05/18 02:23by 非ログインユーザー