ホストでインターフェイスを設定するときにカーネルが自動的に追加するいくつかのルールがルーティングテーブルにあります。
$ ip route show table local
broadcast 10.0.0.0 dev eth1 proto kernel scope link src 10.0.0.3
local 10.0.0.3 dev eth1 proto kernel scope host src 10.0.0.3
broadcast 10.0.0.255 dev eth1 proto kernel scope link src 10.0.0.3
$ ip route show table main
default via 10.0.0.3 dev eth1
10.0.0.0/24 dev eth1 proto kernel scope link src 10.0.0.3
Linuxルーティングがどのように機能するかを理解しようとしていますが、ローカルルーティングテーブルにある2つのブロードキャストエントリの目的はわかりません。たとえば、宛先パケットは、10.0.0.5
ローカルテーブルのルールではなく、プライマリルーティングテーブルの2番目のルールに従ってルーティングされることがわかります。
それでは、これらのブロードキャストルールに従って実際にどのパケットがルーティングされますか?これら2つのルールはいつ使用するべきですか?
しかもこの二人は」放送ルール「ローカルテーブルから/32
?
答え1
転送されたパケットは、基本ルーティングテーブルの2番目のルールに従ってルーティングされることを理解10.0.0.5
しておくことが正確です。
単一の宛先(ユニキャスト)にパケットを送信することに加えて、IP(インターネットプロトコル)を使用すると、物理ネットワーク(ブロードキャスト)の特定の部分(セグメント)内のすべての受信者にパケットを送信できます。たとえば、DHCPクライアントはこの機能を使用します。デフォルトでは、ネットワークインターフェイスの背後にあるローカルに接続されているすべてのコンピュータに「こんにちは、私はここにいます。IPアドレスが必要です」というメッセージをブロードキャストし、DHCPサーバーを持つコンピュータが応答します。たとえば、イーサネットの場合、レイヤ2(つまり、イーサネットフレームのみ)にブロードキャストがあります。
サブネットの最も高いアドレスは、次のように予約されています。放送アドレス。したがって、サブネット内では、10.0.0.0/24
このアドレスはです10.0.0.255
。 /32 アドレスだと思えばいいのですが、私はサブネット内の特殊アドレスだと思う方が好きです。
これ地元のテーブルには、各ネットワークインターフェイスにこれらのブロードキャストアドレスが1つずつ含まれています(scope link
このリンクの後ろのネットワークセグメントの受信機にのみ到達することに注意してください)。
彼らはまた含まれていますウェブサイトのアドレス(サブネットの最下位アドレス)をブロードキャストアドレスとして使用します。正確な理由はわかりませんが、その他のファイルまた、わからないようです。
ネットワークアドレスとブロードキャストアドレスの両方が、バインドされたインターフェイスにブロードキャストタイプのアドレスとして入力されます。概念的には、ネットワークアドレスとブロードキャストアドレスの区別が重要ですが、実際にはLinuxカーネルだけでなく他のネットワークデバイスでも同様に扱います。
私はこれを「一部のプログラムは正しいブロードキャストアドレスの代わりにネットワークアドレスを使用しようとしますが、私たちは寛大にそれを可能にします」と解釈します。しかしこれは私の個人的な解釈である。