差分
このページの2つのバージョン間の差分を表示します。
次のリビジョン | 前のリビジョン | ||
network:byte_order [2019/03/10 07:47] – 作成 ともやん | network:byte_order [2019/05/18 02:23] (現在) – 外部編集 非ログインユーザー | ||
---|---|---|---|
行 1: | 行 1: | ||
====== ネットワークバイトオーダについて ====== | ====== ネットワークバイトオーダについて ====== | ||
IP アドレスもポート番号も整数です。このため、ネットワーク上で IP アドレス、ポート番号を送受信する場合は、複数バイトからなる整数の格納/ | IP アドレスもポート番号も整数です。このため、ネットワーク上で IP アドレス、ポート番号を送受信する場合は、複数バイトからなる整数の格納/ | ||
- | 以下に示す様に整数の最上位バイト(メモリアドレスの下位)を先に格納するアーキテクチャをビッグエンディアン(big endian)と、最下位バイトを先に格納するアーキテクチャをリトルエンディアン(little endian)と言う。\\ | + | 以下の表に示す様に整数の最上位バイト(メモリアドレスの下位)を先に格納するアーキテクチャをビッグエンディアン(big endian)と、最下位バイトを先に格納するアーキテクチャをリトルエンディアン(little endian)と言う。\\ |
- | リトルエンディアンを採用するアーキテクチャの代表例は x86 である。他のアーキテクチャではビッグエンディアンが多数派である。また、エンディアンを切り替え可能なハードウェアアーキテクチャであるバイエンディアン(bi endian)も存在する。\\ | + | リトルエンディアンを採用するアーキテクチャの代表例は x86 である。他のアーキテクチャではビッグエンディアンが多数派である。また、エンディアンを切り替え可能なハードウェアアーキテクチャであるバイエンディアン(bi endian)も存在する。(Raspberry Pi など)\\ |
+ | {{: | ||
マシン上のバイト格納順序をホストバイトオーダと言う。ポート番号、IP アドレスはネットワーク上の全ホストが正しく解釈する必要があり、決められたバイトオーダで送信しなければならない。これをネットワークバイトオーダと言い、ビッグエンディアンと定められている。\\ | マシン上のバイト格納順序をホストバイトオーダと言う。ポート番号、IP アドレスはネットワーク上の全ホストが正しく解釈する必要があり、決められたバイトオーダで送信しなければならない。これをネットワークバイトオーダと言い、ビッグエンディアンと定められている。\\ | ||
言語処理系などの仮想マシンの類では、プラットフォームに応じ使い分ける設計のものもあれば、片方に寄せる設計のものもある。例えば、Java仮想マシンはプラットフォームを問わずビッグエンディアンである。\\ | 言語処理系などの仮想マシンの類では、プラットフォームに応じ使い分ける設計のものもあれば、片方に寄せる設計のものもある。例えば、Java仮想マシンはプラットフォームを問わずビッグエンディアンである。\\ | ||
[[https:// | [[https:// | ||
- | === ビッグエンディアンおよびリトルエンディアンでの 2バイト整数と 4バイト整数の格納順序 === | + | ==== 表: ビッグエンディアンおよびリトルエンディアンでの 2バイト整数と 4バイト整数の格納順序 |
^ アーキテクチャ | ^ アーキテクチャ | ||
^ ^ アドレス\\ N ^ アドレス\\ N + 1 ^ アドレス\\ N ^ アドレス\\ N + 1 ^ アドレス\\ N + 2 ^ アドレス\\ N + 3 ^ | ^ ^ アドレス\\ N ^ アドレス\\ N + 1 ^ アドレス\\ N ^ アドレス\\ N + 1 ^ アドレス\\ N + 2 ^ アドレス\\ N + 3 ^ |