Skip to main content

9. An Example (示例)

🇨🇳 中文

假设存在机器X和Y,它们位于同一根10Mbit以太网电缆上。它们具有以太网地址EA(X)和EA(Y),以及DOD Internet地址IPA(X)和IPA(Y)。设Internet的以太网类型为ET(IP)。机器X刚刚启动,迟早想要向同一电缆上的机器Y发送Internet数据包。X知道它想要发送到IPA(Y),并告诉硬件驱动程序(这里是以太网驱动程序)IPA(Y)。驱动程序咨询地址解析模块以将 <ET(IP),IPA(Y)> 转换为48位以太网地址,但因为X刚刚启动,它没有这些信息。它丢弃Internet数据包,而是创建一个地址解析数据包,其中:

(ar$hrd) = ares_hrd$Ethernet
(ar$pro) = ET(IP)
(ar$hln) = length(EA(X))
(ar$pln) = length(IPA(X))
(ar$op) = ares_op$REQUEST
(ar$sha) = EA(X)
(ar$spa) = IPA(X)
(ar$tha) = don't care
(ar$tpa) = IPA(Y)

并将此数据包广播到电缆上的所有人。

机器Y获得此数据包,并确定它理解硬件类型(以太网),它使用指示的协议(Internet),并且数据包是给它的((ar$tpa)=IPA(Y))。它输入(可能替换任何现有条目)信息 <ET(IP),IPA(X)> 映射到EA(X)。然后它注意到这是一个请求,因此它交换字段,将EA(Y)放入新的发送者以太网地址字段(ar$sha),将操作码设置为reply,并直接(不广播)将数据包发送到EA(X)。此时Y知道如何发送到X,但X仍然不知道如何发送到Y。

机器X从Y获得回复数据包,形成从 <ET(IP),IPA(Y)> 到EA(Y)的映射,注意到数据包是回复并将其丢弃。下次X的Internet模块尝试在以太网上向Y发送数据包时,转换将成功,并且数据包将(希望)到达。如果Y的Internet模块然后想要与X通信,这也将成功,因为Y记住了来自X的地址解析请求的信息。


🇬🇧 English

Let there exist machines X and Y that are on the same 10Mbit Ethernet cable. They have Ethernet address EA(X) and EA(Y) and DOD Internet addresses IPA(X) and IPA(Y). Let the Ethernet type of Internet be ET(IP). Machine X has just been started, and sooner or later wants to send an Internet packet to machine Y on the same cable. X knows that it wants to send to IPA(Y) and tells the hardware driver (here an Ethernet driver) IPA(Y). The driver consults the Address Resolution module to convert <ET(IP), IPA(Y)> into a 48.bit Ethernet address, but because X was just started, it does not have this information. It throws the Internet packet away and instead creates an ADDRESS RESOLUTION packet with:

(ar$hrd) = ares_hrd$Ethernet
(ar$pro) = ET(IP)
(ar$hln) = length(EA(X))
(ar$pln) = length(IPA(X))
(ar$op) = ares_op$REQUEST
(ar$sha) = EA(X)
(ar$spa) = IPA(X)
(ar$tha) = don't care
(ar$tpa) = IPA(Y)

and broadcasts this packet to everybody on the cable.

Machine Y gets this packet, and determines that it understands the hardware type (Ethernet), that it speaks the indicated protocol (Internet) and that the packet is for it ((ar$tpa)=IPA(Y)). It enters (probably replacing any existing entry) the information that <ET(IP), IPA(X)> maps to EA(X). It then notices that it is a request, so it swaps fields, putting EA(Y) in the new sender Ethernet address field (ar$sha), sets the opcode to reply, and sends the packet directly (not broadcast) to EA(X). At this point Y knows how to send to X, but X still doesn't know how to send to Y.

Machine X gets the reply packet from Y, forms the map from <ET(IP), IPA(Y)> to EA(Y), notices the packet is a reply and throws it away. The next time X's Internet module tries to send a packet to Y on the Ethernet, the translation will succeed, and the packet will (hopefully) arrive. If Y's Internet module then wants to talk to X, this will also succeed since Y has remembered the information from X's request for Address Resolution.


🇯🇵 日本語

同じ10Mbitイーサネットケーブル上にあるマシンXとYが存在するとします。それらはイーサネットアドレスEA(X)とEA(Y)、およびDOD InternetアドレスIPA(X)とIPA(Y)を持っています。InternetのイーサネットタイプをET(IP)とします。マシンXは起動したばかりで、遅かれ早かれ同じケーブル上のマシンYにInternetパケットを送信したいと考えています。XはIPA(Y)に送信したいことを知っており、ハードウェアドライバ(ここではイーサネットドライバ)にIPA(Y)を伝えます。ドライバはアドレス解決モジュールに相談して<ET(IP)、IPA(Y)>を48ビットイーサネットアドレスに変換しますが、Xは起動したばかりなので、この情報を持っていません。Internetパケットを破棄し、代わりに次のようなアドレス解決パケットを作成します:

(ar$hrd) = ares_hrd$Ethernet
(ar$pro) = ET(IP)
(ar$hln) = length(EA(X))
(ar$pln) = length(IPA(X))
(ar$op) = ares_op$REQUEST
(ar$sha) = EA(X)
(ar$spa) = IPA(X)
(ar$tha) = どうでもよい
(ar$tpa) = IPA(Y)

そして、このパケットをケーブル上のすべての人にブロードキャストします。

マシンYはこのパケットを受け取り、ハードウェアタイプ(イーサネット)を理解していること、指示されたプロトコル(Internet)を使用していること、およびパケットが自分宛てであること((ar$tpa)=IPA(Y))を判断します。<ET(IP)、IPA(X)>がEA(X)にマッピングされるという情報を入力します(おそらく既存のエントリを置き換えます)。次に、それがリクエストであることに気付くので、フィールドを交換し、新しい送信者イーサネットアドレスフィールド(ar$sha)にEA(Y)を入れ、オペコードをreplyに設定し、パケットを直接(ブロードキャストではなく)EA(X)に送信します。この時点で、YはXに送信する方法を知っていますが、XはまだYに送信する方法を知りません。

マシンXはYから応答パケットを受け取り、<ET(IP)、IPA(Y)>からEA(Y)へのマップを形成し、パケットが応答であることに気付いて破棄します。次にXのInternetモジュールがイーサネット上でYにパケットを送信しようとすると、変換が成功し、パケットは(うまくいけば)到着します。その後YのInternetモジュールがXと通信したい場合、Yはアドレス解決のXのリクエストからの情報を記憶しているため、これも成功します。


🇫🇷 Français

Supposons qu'il existe des machines X et Y qui sont sur le même câble Ethernet 10Mbit. Elles ont des adresses Ethernet EA(X) et EA(Y) et des adresses DOD Internet IPA(X) et IPA(Y). Soit le type Ethernet d'Internet ET(IP). La machine X vient d'être démarrée et tôt ou tard veut envoyer un paquet Internet à la machine Y sur le même câble. X sait qu'elle veut envoyer à IPA(Y) et le dit au pilote matériel (ici un pilote Ethernet) IPA(Y). Le pilote consulte le module de résolution d'adresse pour convertir <ET(IP), IPA(Y)> en une adresse Ethernet 48 bits, mais comme X vient d'être démarrée, elle n'a pas cette information. Elle jette le paquet Internet et crée à la place un paquet de RÉSOLUTION D'ADRESSE avec :

(ar$hrd) = ares_hrd$Ethernet
(ar$pro) = ET(IP)
(ar$hln) = length(EA(X))
(ar$pln) = length(IPA(X))
(ar$op) = ares_op$REQUEST
(ar$sha) = EA(X)
(ar$spa) = IPA(X)
(ar$tha) = peu importe
(ar$tpa) = IPA(Y)

et diffuse ce paquet à tout le monde sur le câble.

La machine Y reçoit ce paquet et détermine qu'elle comprend le type de matériel (Ethernet), qu'elle parle le protocole indiqué (Internet) et que le paquet est pour elle ((ar$tpa)=IPA(Y)). Elle entre (probablement en remplaçant toute entrée existante) l'information que <ET(IP), IPA(X)> correspond à EA(X). Elle remarque ensuite qu'il s'agit d'une demande, donc elle échange les champs, met EA(Y) dans le nouveau champ d'adresse Ethernet de l'expéditeur (ar$sha), définit le code d'opération sur réponse et envoie le paquet directement (pas en diffusion) à EA(X). À ce stade, Y sait comment envoyer à X, mais X ne sait toujours pas comment envoyer à Y.

La machine X reçoit le paquet de réponse de Y, forme le mappage de <ET(IP), IPA(Y)> à EA(Y), remarque que le paquet est une réponse et le jette. La prochaine fois que le module Internet de X essaie d'envoyer un paquet à Y sur l'Ethernet, la traduction réussira et le paquet arrivera (espérons-le). Si le module Internet de Y veut ensuite parler à X, cela réussira également puisque Y a mémorisé les informations de la demande de résolution d'adresse de X.


🇩🇪 Deutsch

Es gibt Maschinen X und Y, die sich auf demselben 10Mbit-Ethernet-Kabel befinden. Sie haben die Ethernet-Adressen EA(X) und EA(Y) sowie die DOD-Internet-Adressen IPA(X) und IPA(Y). Sei der Ethernet-Typ von Internet ET(IP). Maschine X wurde gerade gestartet und möchte früher oder später ein Internet-Paket an Maschine Y auf demselben Kabel senden. X weiß, dass sie an IPA(Y) senden möchte, und teilt dem Hardware-Treiber (hier ein Ethernet-Treiber) IPA(Y) mit. Der Treiber konsultiert das Adressauflösungsmodul, um <ET(IP), IPA(Y)> in eine 48-Bit-Ethernet-Adresse umzuwandeln, aber da X gerade gestartet wurde, hat sie diese Information nicht. Sie verwirft das Internet-Paket und erstellt stattdessen ein ADRESSAUFLÖSUNGS-Paket mit:

(ar$hrd) = ares_hrd$Ethernet
(ar$pro) = ET(IP)
(ar$hln) = length(EA(X))
(ar$pln) = length(IPA(X))
(ar$op) = ares_op$REQUEST
(ar$sha) = EA(X)
(ar$spa) = IPA(X)
(ar$tha) = egal
(ar$tpa) = IPA(Y)

und sendet dieses Paket an alle auf dem Kabel.

Maschine Y erhält dieses Paket und stellt fest, dass sie den Hardware-Typ (Ethernet) versteht, dass sie das angegebene Protokoll (Internet) spricht und dass das Paket für sie bestimmt ist ((ar$tpa)=IPA(Y)). Sie trägt ein (wahrscheinlich unter Ersetzung eines vorhandenen Eintrags), dass <ET(IP), IPA(X)> auf EA(X) abgebildet wird. Sie bemerkt dann, dass es sich um eine Anfrage handelt, tauscht also Felder aus, setzt EA(Y) in das neue Absender-Ethernet-Adressfeld (ar$sha), setzt den Opcode auf Antwort und sendet das Paket direkt (nicht per Broadcast) an EA(X). Zu diesem Zeitpunkt weiß Y, wie man an X sendet, aber X weiß immer noch nicht, wie man an Y sendet.

Maschine X erhält das Antwortpaket von Y, bildet die Zuordnung von <ET(IP), IPA(Y)> zu EA(Y), bemerkt, dass das Paket eine Antwort ist, und verwirft es. Das nächste Mal, wenn Xs Internet-Modul versucht, ein Paket an Y über das Ethernet zu senden, wird die Übersetzung erfolgreich sein, und das Paket wird (hoffentlich) ankommen. Wenn Ys Internet-Modul dann mit X sprechen möchte, wird dies ebenfalls erfolgreich sein, da Y sich die Informationen aus Xs Anfrage zur Adressauflösung gemerkt hat.


🇮🇹 Italiano

Supponiamo che esistano le macchine X e Y che si trovano sullo stesso cavo Ethernet 10Mbit. Hanno indirizzi Ethernet EA(X) e EA(Y) e indirizzi DOD Internet IPA(X) e IPA(Y). Sia il tipo Ethernet di Internet ET(IP). La macchina X è appena stata avviata e prima o poi vuole inviare un pacchetto Internet alla macchina Y sullo stesso cavo. X sa che vuole inviare a IPA(Y) e dice al driver hardware (qui un driver Ethernet) IPA(Y). Il driver consulta il modulo di risoluzione degli indirizzi per convertire <ET(IP), IPA(Y)> in un indirizzo Ethernet a 48 bit, ma poiché X è appena stata avviata, non ha questa informazione. Scarta il pacchetto Internet e crea invece un pacchetto di RISOLUZIONE INDIRIZZI con:

(ar$hrd) = ares_hrd$Ethernet
(ar$pro) = ET(IP)
(ar$hln) = length(EA(X))
(ar$pln) = length(IPA(X))
(ar$op) = ares_op$REQUEST
(ar$sha) = EA(X)
(ar$spa) = IPA(X)
(ar$tha) = non importa
(ar$tpa) = IPA(Y)

e trasmette questo pacchetto a tutti sul cavo.

La macchina Y riceve questo pacchetto e determina che comprende il tipo di hardware (Ethernet), che parla il protocollo indicato (Internet) e che il pacchetto è per lei ((ar$tpa)=IPA(Y)). Inserisce (probabilmente sostituendo qualsiasi voce esistente) l'informazione che <ET(IP), IPA(X)> corrisponde a EA(X). Nota quindi che si tratta di una richiesta, quindi scambia i campi, mettendo EA(Y) nel nuovo campo indirizzo Ethernet del mittente (ar$sha), imposta l'opcode su risposta e invia il pacchetto direttamente (non in broadcast) a EA(X). A questo punto Y sa come inviare a X, ma X ancora non sa come inviare a Y.

La macchina X riceve il pacchetto di risposta da Y, forma il mapping da <ET(IP), IPA(Y)> a EA(Y), nota che il pacchetto è una risposta e lo scarta. La prossima volta che il modulo Internet di X cerca di inviare un pacchetto a Y sull'Ethernet, la traduzione avrà successo e il pacchetto arriverà (si spera). Se il modulo Internet di Y vuole poi parlare con X, anche questo avrà successo poiché Y ha ricordato le informazioni dalla richiesta di risoluzione degli indirizzi di X.