160 likes | 367 Views
Lab3-ARP (Address Resolution Protocol). Date:2007.11.02. Address. MAC address or Ethernet address 硬體或介面卡的位址,出廠時唯一,燒錄在介面卡的 ROM 中 以 aa.bb.cc.dd.ee.ff 六個位元組表示 IP address TCP/IP 協定所訂位址,經申請後唯一 以 aaa.bbb.ccc.ddd 四位十進位數值表示. OSI 分層資料交換. Ethernet 框架. Ethernet 標頭. ARP 內容. Ethernet 標尾.
E N D
Lab3-ARP(Address Resolution Protocol) Date:2007.11.02
Address • MAC address or Ethernet address • 硬體或介面卡的位址,出廠時唯一,燒錄在介面卡的ROM中 • 以aa.bb.cc.dd.ee.ff六個位元組表示 • IP address • TCP/IP協定所訂位址,經申請後唯一 • 以aaa.bbb.ccc.ddd四位十進位數值表示
Ethernet框架 Ethernet 標頭 ARP 內容 Ethernet 標尾 Preamable and SFD 目的位址 來源位址 type Data CRC 8 Bytes 6 Bytes 6 Bytes 2 Bytes 46~1500 Bytes 4 Bytes ARP type:0x0806
ARP (Address Resolution Protocol) • 位址解析協定 • RFC-826 • Mapping between IP address and the physical address (MAC address).
MAC與IP位址的轉換 ARP Request 1A-23-F9-CD-06-9B IP:140.125.33.1 Host A 88-B2-2F-54-1A-0F IP:140.125.33.254 5C-66-AB-90-75-B1 IP:140.125.33.2 Host B 49-BD-D2-C7-56-2A IP:140.125.33.3 ARP Reply Host C
MS-DOS and Ethereal • MS-DOS ipconfig /all • MS-DOS arp –a顯示arp table • MS-DOS arp –d清除arp table • Filter:arp && eth.addr == 00:14:85:f9:e6:6e
ARP Packet format • 硬體種類(Hardware type):2個位元組,使用Ethernet時,填入0x0001。 • 協定種類(Protocol type):2個位元組,使用IPv4協定時,填入0x0800。 • 硬體長度(Hardware length):1個位元組,定義實體位址的長度,使用Ethernet時,填入0x06。 • 協定長度(Protocol length):1個位元組,定義邏輯位址的長度,使用IPv4時,填入0x04。 • 運作(Operation):2個位元組,定義封包種類,ARP Request填入0x0001,ARP Replay填入0x0002。 硬體種類 協定種類 硬體長度 協定長度 運作 來源端MAC位址(6個位元組) 來源端IP位址(4個位元組) 目的端MAC位址(6個位元組) 目的端IP位址(4個位元組)
ARP Request (Boradcast) Host A Host C 49-BD-D2-C7-56-2A 1A-23-F9-CD-06-9B IP:140.125.33.3 IP:140.125.33.1 0x0001 0x0800 0x06 0x04 0x0001 0x1A23F9CD069B 0x8C7D2101 0x000000000000 0x8C7D2103 Preamable and SFD 0xFFFFFFFFFFFF 0x1A23F9CD069B 0x0806 Data CRC
ARP Repay(Host C Host A) Host A Host C 49-BD-D2-C7-56-2A 1A-23-F9-CD-06-9B IP:140.125.33.3 IP:140.125.33.1 0x0001 0x0800 0x06 0x04 0x0002 0x49BDD2C7562A 0x8C7D2103 0x1A23F9CD069B 0x8C7D2101 Preamable and SFD 0x1A23F9CD069B 0x49BDD2C7562A 0x0806 Data CRC
function • Interrupt_Initialize(); • WanInitialize(); • LanInitialize();
function • int SendPacket(U8* Data, int Size, int M_channel) • * Function : SendPacket • * Description : Send ethernet frame function • * Input : frame data pointer, frame length • * Output : transmit ok(Size) or error(0)
function • int mac_get_packet(U8 *buf, int rx_length, int M_channel) • * Function : ReceivePacket • * Description : Receive ethernet frame function • * Input : frame data pointer, frame length • * Output : transmit ok(len) or error(0)
實習 • 撰寫ARP協定網路程式,送出ARP Request到目的端電腦,當目的端電腦回傳ARP Reply時,將目的端電腦的MAC address顯示出來。 • 基本功能:顯示MAC address。 • 擴充功能:介面愈友善,分數愈高。
報告內容 • 報告的格式自由發揮,但至少要有底下幾部分: • 題目講解及實作原理 • 程式流程圖 • 部份程式碼及註解說明 • 問題與討論 • 心得感想