メインコンテンツまでスキップ

なぜこの方法なのか? (Why is it done this way?)

定期的なブロードキャストは絶対に望ましくありません。単一のイーサネット上に100台のワークステーションがあり、それぞれが10分ごとにアドレス解決情報をブロードキャストする (可能なパラメータセットの1つとして) ことを想像してください。これは6秒ごとに1パケットです。これはほぼ合理的ですが、それに何の意味があるのでしょうか? ワークステーションは通常、互いに通信しません (したがって、テーブルに100個の無用なエントリがあります); 主にメインフレーム、ファイルサーバー、またはブリッジと通信しますが、他のワークステーションとは少数だけ通信します (例えば、インタラクティブな会話のため)。本文書で説明するプロトコルは、必要に応じて情報を配布し、おそらくマシンの起動ごとに1回だけです。

このフォーマットは、同じパケット内で複数の解決を行うことを許可しません。これは簡素化のためです。複数の解決が多重化された場合、パケットフォーマットは消化するのがかなり難しくなり、情報の多くは無駄になる可能性があります。4つのプロトコルを使用するブリッジが、ワークステーションに4つすべてのプロトコルアドレスを伝え、そのうち3つはワークステーションがおそらく使用しないことを考えてください。

このフォーマットは、応答が生成される場合、パケットバッファを再利用できるようにします; 応答はリクエストと同じ長さであり、いくつかのフィールドは同じです。

ハードウェアフィールド (ar$hrd) の値は、この目的のためのリストから取得されます。現在定義されている唯一の値は、10Mbitイーサネット (ares_hrd$Ethernet = 1) 用です。このプロトコルをパケット無線ネットワーク (Packet Radio Networks) にも使用することについて議論があり、これには別の値が必要になります。また、このプロトコルを使用したい他の将来のハードウェアメディアも同様です。

10Mbitイーサネットの場合、プロトコルフィールド (ar$pro) の値はセット ether_type$ から取得されます。これは、割り当てられたプロトコルタイプの自然な再利用です。これをオペコード (ar$op) と組み合わせると、このプロトコルで解決できるプロトコルの数が事実上半減し、モニター/デバッガーがより複雑になります (以下のネットワーク監視とデバッグを参照)。32768のプロトコルを見ることは決してないと期待されていますが、マーフィーの法則により、そのような仮定はできません。

長さフィールド (ar$hlnとar$pln) は、理論的には冗長です。なぜなら、プロトコルアドレスの長さは、ハードウェアタイプ (ar$hrdに存在) とプロトコルタイプ (ar$proに存在) によって決定されるべきだからです。オプションの一貫性チェック、およびネットワーク監視とデバッグ (以下を参照) のために含まれています。

オペコードは、これがリクエスト (応答を引き起こす可能性がある) か、以前のリクエストに対する応答かを判断するために使用されます。このために16ビットを使用するのは過剰ですが、フラグ (フィールド) が必要です。

送信者ハードウェアアドレスと送信者プロトコルアドレスは絶対に必要です。これらのフィールドが変換テーブルに入れられます。

ターゲットプロトコルアドレスは、パケットのリクエスト形式で必要です。これにより、マシンは送信者情報をテーブルに入力するか、応答を送信するかを判断できます。応答がリクエストによってのみ引き起こされると仮定する場合、応答形式では必ずしも必要ではありません。完全性、ネットワーク監視、および上記で提案された処理アルゴリズムを簡素化するために含まれています (このアルゴリズムは、送信者情報をテーブルに入れた後にオペコードを確認します)。

ターゲットハードウェアアドレスは、完全性とネットワーク監視のために含まれています。リクエスト形式では意味がありません。なぜなら、これはマシンが要求している番号だからです。応答形式でのその意味は、リクエストを行っているマシンのアドレスです。いくつかの実装では (ターゲットハードウェアアドレスを取得する必要がある)、このフィールドをパケットのハードウェア宛先アドレスとしてハードウェアドライバーに送信することで、いくつかのレジスタシャッフリングやスタックスペースを節約できる可能性があります (may)。

アドレス間に詰め物バイトはありません。パケットデータは、3つのバイトペアのみがワード (ar$hrd、ar$pro、ar$op) として定義されるバイトストリームとして見なされるべきです。これらは最上位バイト優先 (イーサネット/PDP-10バイトスタイル) で送信されます。