linux網路編程之 :ARP協議的報文格式

來源:互聯網
上載者:User

結構ether_header定義了乙太網路幀首部;結構arphdr定義了其後的5個欄位,其資訊用於在任何類型的介質上傳送ARP請求和回答;ether_arp結構除了包含arphdr結構外,還包含源主機和目的主機的地址。定義常

#define EPT_IP   0x0800    /* type: IP */#define EPT_ARP   0x0806    /* type: ARP */#define EPT_RARP 0x8035    /* type: RARP */#define ARP_HARDWARE 0x0001    /* Dummy type for 802.3 frames */#define ARP_REQUEST 0x0001    /* ARP request */#define ARP_REPLY 0x0002    /* ARP reply */

定義乙太網路首部

struct sniff_ethernet{u_char ether_dhost[ETHER_ADDR_LEN];u_char ether_shost[ETHER_ADDR_LEN];u_short ether_type;};

定義乙太網路arp欄位

typedef struct aprhdr{u_int16_t htype;//Hardware typeu_int16_t ptype;//protocol typeu_char hlen;//Hardware address lengthu_char plen;//protocol address lengthu_int16_t oper;//operation codeu_char sha[6];//sender hardware addressu_char spa[4];//sender ip addressu_char tha[6];//target hardware addressu_char tpa[4];//target ip address}arphdr_t;

定義整個arp報文包,總長度42位元組

typedef struct arpPacket{EHHDR ehhdr;ARPHDR arphdr;} ARPPACKET, *PARPPACKET;

ARP請求包的分析:如下所示為一個ARP請求包

0000   ff   ff    ff    ff   ff   ff 00 0c f1 d4 d9 60 08 06 00 01 ...........`....
0010   08 00 06 04 00 01 00 0c f1 d4 d9 60 c0 a8 01 0f ...........`....
0020   00 00 00 00 00 00 c0 a8 01 02                              ..........
根據定義,頭6個位元組是乙太網路目的地址 ff ff ff ff ff ff 這是一個廣播位址,全網下的所有終端都能接收到,緊跟著的6個位元組是乙太網路源地址,即寄件者的MAC地址( 00 0c f1 d4 d9 60 是我的MAC地址)。
框架類型0806佔兩個位元組,到這裡乙太網路幀頭就結束了。0806指的是後面的資料是屬於arp包的。
接著分析ARP包頭。頭兩個位元組是硬體類型 00 01,接著兩個位元組是協議類型,即ARP使用的是IP協議代號08 00。硬體地址長度和協議地址長度分別是6和4。這與ARP報文格式是對應的。後面的2個位元組OP指示當前包是請求包還是應答包,對應的值分別是0x0001和0x0002。未經處理資料裡是00 01所以這是一個請求包,然後6個位元組又是寄件者MAC地址00 0c f1 d4 d9 60 ,後面4個位元組是寄件者IP地址c0 a8 01 0f ,轉換成點分十進位格式即192.168.1.15,這是我的IP,接下來的6個位元組留空,00
00 00 00 00 00 在arp請求包裡也可以是其他資料,因為稍後IP地址為c0 a8 01 02 (192.168.1.2)會把自己的MAC地址填充進這6個位元組中。
填充完後,arp包裡的寄件者硬體地址|目標硬體地址和乙太網路首部的乙太網路目的地址|乙太網路源地址正好對調。最後把這個封裝好的ARP包發送出去,這樣一個來回就可以讓兩台終端互相知道對方的IP和MAC。
ARP欺騙的3種基本方式:
1. 主機C冒充網關欺騙主機B;
2. 主機c冒充主機B欺騙網關;
3. 主機C同時欺騙主機B和網關,實現資料中轉,並監聽到所有主機B的資料。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.