K.Maebashi's BBS

ご自由に書き込んでください。雑談も可。
テスト書き込みの類はテスト用掲示板にどうぞ

[日付順表示] [日付順インデックス] [スレッド順インデックス]

新規投稿 | 開設者ホームページへ戻る | ヘルプ

[2355] インターネット上を流れるデータ構造の表現について
投稿者:mhash
2024/01/21 05:14:31

題記の件、TCP/IPモデルに則ったネットワーク(インターネット)上で、特定のデータ構造(IPヘッダやTCPヘッダやUDPヘッダ、あるいは個別のファイルフォーマット等)がどのように各コンピュータの内部で表現されるのかお聞きしたいです。 具体例として、仮にインターネット上の各ホストが全て1バイト=8ビット(1オクテット)のマシンだったとして、たとえばUDPヘッダ(Wikipediaリンク: https://ja.m.wikipedia.org/wiki/User_Datagram_Protocolの「仕組み」-「パケット構造」の章を参照)ってどうメモリ上にマッピングされるのか?ということが分からないです。 上記例にあげたUDPパケット構造の0~63目までのヘッダ構造の図は、一行32ビット幅で書かれているのですが、実際のサーバーやクライアントのメモリは8ビット1バイトの配列構造な訳なので、どう解釈したら良いのかネット検索で調べても良く分からなかったです。(インターネットではビッグエンディアンなので) 私の仮の理解ですが、以下のようになると思って良いでしょうか? 0バイト目:「宛先ポート番号」の上位8ビット分を格納 1バイト目:「宛先ポート番号」の下位8ビット分を格納 2バイト目:「送信元ポート番号」の上位8ビット分を格納 3バイト目:「送信元ポート番号」の上位8ビット分を格納 4バイト目:「チェックサム」の上位8ビットを格納 5バイト目:「チェックサム」の下位8ビットを格納 6バイト目:「データ長」の上位8ビットを格納 7バイト目:「データ長」の下位8ビットを格納 初歩的な質問で恐縮ですが、よろしくお願いいたします。
[この投稿を含むスレッドを表示] [この投稿を削除]
[2356] Re:インターネット上を流れるデータ構造の表現について
投稿者:(ぱ)こと管理人
2024/01/21 09:17:34

>上記例にあげたUDPパケット構造の0~63目までのヘッダ構造の図は、一行32ビット幅で >書かれているのですが、実際のサーバーやクライアントのメモリは8ビット1バイトの >配列構造な訳なので、どう解釈したら良いのかネット検索で調べても良く分からなかった >です。(インターネットではビッグエンディアンなので) 「インターネットではビッグエンディアンなので」と書いておられるとおり、 インターネット(TCP/IP)でポート番号やIPアドレスをやりとりする際は、 ビッグエンディアンで表現するよう定められています。 これをネットワークバイトオーダーと呼びます。 https://atmarkit.itmedia.co.jp/icd/root/72/116970472.html >私の仮の理解ですが、以下のようになると思って良いでしょうか? なので、これで合っています。 ネットワークバイトオーダーという規定(デファクトですが)をご存じなくて 「どうやってバイトオーダーが違うかもしれないマシン間でデータをやり取り しているのだろう?」という意図の質問なのかと思いましたが、 「インターネットではビッグエンディアンなので」とあるのでそれはご存じのようで、 これで回答になっておりますでしょうか?
[この投稿を含むスレッドを表示] [この投稿を削除]
[2357] Re:インターネット上を流れるデータ構造の表現について
投稿者:mhash
2024/01/21 10:44:43

早速のご回答、ありがとうございます。 >>上記例にあげたUDPパケット構造の0~63目までのヘッダ構造の図は、一行32ビット幅で >>書かれているのですが、実際のサーバーやクライアントのメモリは8ビット1バイトの >>配列構造な訳なので、どう解釈したら良いのかネット検索で調べても良く分からなかった >>です。(インターネットではビッグエンディアンなので) > >「インターネットではビッグエンディアンなので」と書いておられるとおり、 >インターネット(TCP/IP)でポート番号やIPアドレスをやりとりする際は、 >ビッグエンディアンで表現するよう定められています。 >これをネットワークバイトオーダーと呼びます。 > >https://atmarkit.itmedia.co.jp/icd/root/72/116970472.html > >>私の仮の理解ですが、以下のようになると思って良いでしょうか? > >なので、これで合っています。 ありがとうございます。安心しました。 >ネットワークバイトオーダーという規定(デファクトですが)をご存じなくて >「どうやってバイトオーダーが違うかもしれないマシン間でデータをやり取り >しているのだろう?」という意図の質問なのかと思いましたが、 >「インターネットではビッグエンディアンなので」とあるのでそれはご存じのようで、 >これで回答になっておりますでしょうか? はい。TCP/IPではバイトオーダーがビッグエンディアンであることは理解していましたが TCPやUDPやらを検索して出てくる図の読み方が分からなかったので、そこの質問でした。
[この投稿を含むスレッドを表示] [この投稿を削除]