⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rfc826.txt

📁 RFC 相关的技术文档
💻 TXT
📖 第 1 页 / 共 2 页
字号:
and packet format to be used for non-10Mbit Ethernets.  For the10Mbit Ethernet <ar$hrd, ar$hln> takes on the value <1, 6>.  Forother hardware networks, the ar$pro field may no longercorrespond to the Ethernet type field, but it should beassociated with the protocol whose address resolution is beingsought.Why is it done this way??-------------------------Periodic broadcasting is definitely not desired.  Imagine 100workstations on a single Ethernet, each broadcasting addressresolution information once per 10 minutes (as one possible setof parameters).  This is one packet every 6 seconds.  This isalmost reasonable, but what use is it?  The workstations aren'tgenerally going to be talking to each other (and therefore have100 useless entries in a table); they will be mainly talking to amainframe, file server or bridge, but only to a small number ofother workstations (for interactive conversations, for example).The protocol described in this paper distributes information asit is needed, and only once (probably) per boot of a machine.This format does not allow for more than one resolution to bedone in the same packet.  This is for simplicity.  If things weremultiplexed the packet format would be considerably harder todigest, and much of the information could be gratuitous.  Thinkof a bridge that talks four protocols telling a workstation allfour protocol addresses, three of which the workstation willprobably never use.This format allows the packet buffer to be reused if a reply isgenerated; a reply has the same length as a request, and severalof the fields are the same.The value of the hardware field (ar$hrd) is taken from a list forthis purpose.  Currently the only defined value is for the 10MbitEthernet (ares_hrd$Ethernet = 1).  There has been talk of usingthis protocol for Packet Radio Networks as well, and this willrequire another value as will other future hardware mediums thatwish to use this protocol.For the 10Mbit Ethernet, the value in the protocol field (ar$pro)is taken from the set ether_type$.  This is a natural reuse ofthe assigned protocol types.  Combining this with the opcode(ar$op) would effectively halve the number of protocols that canbe resolved under this protocol and would make a monitor/debuggermore complex (see Network Monitoring and Debugging below).  It ishoped that we will never see 32768 protocols, but Murphy madesome laws which don't allow us to make this assumption.In theory, the length fields (ar$hln and ar$pln) are redundant,since the length of a protocol address should be determined bythe hardware type (found in ar$hrd) and the protocol type (foundin ar$pro).  It is included for optional consistency checking,and for network monitoring and debugging (see below). The opcode is to determine if this is a request (which may causea reply) or a reply to a previous request.  16 bits for this isoverkill, but a flag (field) is needed.The sender hardware address and sender protocol address areabsolutely necessary.  It is these fields that get put in atranslation table.The target protocol address is necessary in the request form ofthe packet so that a machine can determine whether or not toenter the sender information in a table or to send a reply.  Itis not necessarily needed in the reply form if one assumes areply is only provoked by a request.  It is included forcompleteness, network monitoring, and to simplify the suggestedprocessing algorithm described above (which does not look at theopcode until AFTER putting the sender information in a table).The target hardware address is included for completeness andnetwork monitoring.  It has no meaning in the request form, sinceit is this number that the machine is requesting.  Its meaning inthe reply form is the address of the machine making the request.In some implementations (which do not get to look at the 14.byteethernet header, for example) this may save some registershuffling or stack space by sending this field to the hardwaredriver as the hardware destination address of the packet.There are no padding bytes between addresses.  The packet datashould be viewed as a byte stream in which only 3 byte pairs aredefined to be words (ar$hrd, ar$pro and ar$op) which are sentmost significant byte first (Ethernet/PDP-10 byte style).  Network monitoring and debugging:---------------------------------The above Address Resolution protocol allows a machine to gainknowledge about the higher level protocol activity (e.g., CHAOS,Internet, PUP, DECnet) on an Ethernet cable.  It can determinewhich Ethernet protocol type fields are in use (by value) and theprotocol addresses within each protocol type.  In fact, it is notnecessary for the monitor to speak any of the higher levelprotocols involved.  It goes something like this:When a monitor receives an Address Resolution packet, it alwaysenters the <protocol type, sender protocol address, senderhardware address> in a table.  It can determine the length of thehardware and protocol address from the ar$hln and ar$pln fieldsof the packet.  If the opcode is a REPLY the monitor can thenthrow the packet away.  If the opcode is a REQUEST and the targetprotocol address matches the protocol address of the monitor, themonitor sends a REPLY as it normally would.  The monitor willonly get one mapping this way, since the REPLY to the REQUESTwill be sent directly to the requesting host.  The monitor couldtry sending its own REQUEST, but this could get two monitors intoa REQUEST sending loop, and care must be taken.Because the protocol and opcode are not combined into one field,the monitor does not need to know which request opcode isassociated with which reply opcode for the same higher levelprotocol.  The length fields should also give enough informationto enable it to "parse" a protocol addresses, although it has noknowledge of what the protocol addresses mean.A working implementation of the Address Resolution protocol canalso be used to debug a non-working implementation.  Presumably ahardware driver will successfully broadcast a packet with Ethernettype field of ether_type$ADDRESS_RESOLUTION.  The format of thepacket may not be totally correct, because initialimplementations may have bugs, and table management may beslightly tricky.  Because requests are broadcast a monitor willreceive the packet and can display it for debugging if desired.An Example:-----------Let there exist machines X and Y that are on the same 10MbitEthernet cable.  They have Ethernet address EA(X) and EA(Y) andDOD Internet addresses IPA(X) and IPA(Y) .  Let the Ethernet typeof Internet be ET(IP).  Machine X has just been started, andsooner or later wants to send an Internet packet to machine Y onthe same cable.  X knows that it wants to send to IPA(Y) andtells the hardware driver (here an Ethernet driver) IPA(Y).  Thedriver consults the Address Resolution module to convert <ET(IP),IPA(Y)> into a 48.bit Ethernet address, but because X was juststarted, it does not have this information.  It throws theInternet packet away and instead creates an ADDRESS RESOLUTIONpacket 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 understandsthe hardware type (Ethernet), that it speaks the indicatedprotocol (Internet) and that the packet is for it((ar$tpa)=IPA(Y)).  It enters (probably replacing any existingentry) the information that <ET(IP), IPA(X)> maps to EA(X).  Itthen notices that it is a request, so it swaps fields, puttingEA(Y) in the new sender Ethernet address field (ar$sha), sets theopcode to reply, and sends the packet directly (not broadcast) toEA(X).  At this point Y knows how to send to X, but X stilldoesn'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 andthrows it away.  The next time X's Internet module tries to senda packet to Y on the Ethernet, the translation will succeed, andthe packet will (hopefully) arrive.  If Y's Internet module thenwants to talk to X, this will also succeed since Y has rememberedthe information from X's request for Address Resolution.Related issue:---------------It may be desirable to have table aging and/or timeouts.  Theimplementation of these is outside the scope of this protocol.Here is a more detailed description (thanks to MOON@SCRC@MIT-MC).If a host moves, any connections initiated by that host willwork, assuming its own address resolution table is cleared whenit moves.  However, connections initiated to it by other hostswill have no particular reason to know to discard their oldaddress.  However, 48.bit Ethernet addresses are supposed to beunique and fixed for all time, so they shouldn't change.  A hostcould "move" if a host name (and address in some other protocol)were reassigned to a different physical piece of hardware.  Also,as we know from experience, there is always the danger ofincorrect routing information accidentally getting transmittedthrough hardware or software error; it should not be allowed topersist forever.  Perhaps failure to initiate a connection shouldinform the Address Resolution module to delete the information onthe basis that the host is not reachable, possibly because it isdown or the old translation is no longer valid.  Or perhapsreceiving of a packet from a host should reset a timeout in theaddress resolution entry used for transmitting packets to thathost; if no packets are received from a host for a suitablelength of time, the address resolution entry is forgotten.  Thismay cause extra overhead to scan the table for each incomingpacket.  Perhaps a hash or index can make this faster.The suggested algorithm for receiving address resolution packetstries to lessen the time it takes for recovery if a host doesmove.  Recall that if the <protocol type, sender protocoladdress> is already in the translation table, then the senderhardware address supersedes the existing entry.  Therefore, on aperfect Ethernet where a broadcast REQUEST reaches all stationson the cable, each station will be get the new hardware address.Another alternative is to have a daemon perform the timeouts.After a suitable time, the daemon considers removing an entry.It first sends (with a small number of retransmissions if needed)an address resolution packet with opcode REQUEST directly to theEthernet address in the table.  If a REPLY is not seen in a shortamount of time, the entry is deleted.  The request is sentdirectly so as not to bother every station on the Ethernet.  Justforgetting entries will likely cause useful information to beforgotten, which must be regained.Since hosts don't transmit information about anyone other thanthemselves, rebooting a host will cause its address mapping tableto be up to date.  Bad information can't persist forever by beingpassed around from machine to machine; the only bad informationthat can exist is in a machine that doesn't know that some othermachine has changed its 48.bit Ethernet address.  Perhapsmanually resetting (or clearing) the address mapping table willsuffice.This issue clearly needs more thought if it is believed to beimportant.  It is caused by any address resolution-like protocol.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -