目的IP一般由使用者手工輸入,或者由應用程式填充,也可以通過名稱解析系統解析得到,而目的MAC就需要使用ARP來解析。
第一步:
上層應用産生資料,這裡用FTP協定為例,在FTP協定中定位了目的IP。
第二步:
那麼,封裝的過程如下:
應用層:需要FTP的控制資訊,包括使用者名、密碼等;
傳輸層:目的端口号為21,源為随機端口号;
網絡層:目的IP為172.16.1.200,源IP為172.16.1.1;
資料鍊路層:因為不知道目的IP 172.16.1.200對應的MAC,是以目的IP到目的MAC的封裝映射失敗;
三層到二層的封裝失敗,由于二層是以太網,ARP的工作機制便會産生ARP Request去解析目的MAC,此時,源MAC為資料發起者的MAC,目的MAC位址為FFFF:FFFF:FFFF(代表所有MAC)
第三步:
ARP Request到達本網段中的所有裝置上,因為目的為FFFF:FFFF:FFFF,是以所有裝置都可以拆掉二層的封裝,然後解讀ARP資料包中需要解析的目的IP。
第四步:
目的IP不正确的裝置直接忽略這個ARP請求包,目的IP正确的裝置,會産生一個ARP Reply去回應這個ARP Request。
此時,二層的源MAC為被解析裝置的MAC,目的為ARP解析發起者的MAC。
第五步:
資料的發起者接到ARP Reply後,将目的IP與目的MAC的對應關系添加到自己的ARP表中。
第六步:
之前未完成二層封裝的FTP資料,這時重新開始封裝二層頭部,此時,正确的目的MAC就被封裝到了整個資料幀中。
隻有完成了整個TCP/IP協定棧封裝的資料幀,才能正常的從主機上發出去。
這就是ARP解析MAC位址的整個過程。
本文轉自Tenderrain 51CTO部落格,原文連結:http://blog.51cto.com/tenderrain/1983572,如需轉載請自行聯系原作者