レイヤー 2 (イーサネット層) は、ARP プロトコルを使用して MAC アドレスを認識します。ネットワーク全体に「IP x を持つ MAC アドレスはどれですか?」という質問を送信します。それが宛先MACアドレスを認識する方法です。
しかし、レイヤ 3 (IP レイヤ) はどのようにして IP アドレスを知るのでしょうか? トランスポート層 (レイヤー 4) からは渡されません。ポート番号のみが渡されます。
私が具体的であることを願っています。前もって感謝します。
レイヤー 2 (イーサネット層) は、ARP プロトコルを使用して MAC アドレスを認識します。ネットワーク全体に「IP x を持つ MAC アドレスはどれですか?」という質問を送信します。それが宛先MACアドレスを認識する方法です。
しかし、レイヤ 3 (IP レイヤ) はどのようにして IP アドレスを知るのでしょうか? トランスポート層 (レイヤー 4) からは渡されません。ポート番号のみが渡されます。
私が具体的であることを願っています。前もって感謝します。
パケットに関連付けられているIPアドレスには、送信(送信元)IPと宛先IPの2つがあります。
送信IP-送信IPは簡単です。これは、パケットの送信に使用されるネットワークインターフェイスの構成パラメーターです。これは、静的に構成されているか、DHCPを介して最新のネットワークでより一般的に構成されています。
宛先IP-宛先コンピューターが送信側コンピューターに対してローカルであるかリモートであるかによって、宛先IPは少し複雑になる可能性があります。この場合、リモートとは、移行先コンピューターが移行元コンピューターと同じサブネットにないことを意味します。
リモート宛先の場合、DNSサーバーは名前<->IP解決に使用されます。DNSは、人間がwww.espn.comなどの名前を使用できるようにするものですが、コンピューターは10.5.0.1などのIPアドレスのビット表現を使用できます。DNS解決はさまざまな方法で構成できますが、基本的には、ローカルキャッシュを調べて以前の解決が存在するかどうかを確認し、要求を解決するために1つ以上のDNSサーバーにクエリを実行しない場合です。
宛先マシンが同じサブネット上のローカルの場合、ARP/RARPがMAC<->IP変換に使用されます。もう一度、新しいARP要求を作成する前に(したがってネットワーク帯域幅を使用して)、最初にキャッシュ(この場合はARPキャッシュ)がチェックされます。
これがお役に立てば幸いです。
しかし、レイヤ 3 (IP レイヤ) はどのようにして IP アドレスを知るのでしょうか? トランスポート層 (レイヤー 4) からは渡されません。ポート番号のみが渡されます。
これは正しくありません。TCP または UDP には、bind()
実際に IP アドレスを渡す明示的な操作があります。TCP にはconnect()
、IP アドレスも渡す明示的な操作とbind()
、送信元 IP アドレスがユニキャスト IP ルーティング テーブルから計算される暗黙的な操作もあります。