網(wǎng)絡技術是從1990年代中期發(fā)展起來的新技術,它把互聯(lián)網(wǎng)上分散的資源融為有機整體,實現(xiàn)資源的全面共享和有機協(xié)作,使人們能夠透明地使用資源的整體能力并按需獲取信息。資源包括高性能計算機、存儲資源、數(shù)據(jù)資源、信息資源、知識資源、專家資源、大型數(shù)據(jù)庫、網(wǎng)絡、傳感器等。 當前的互聯(lián)網(wǎng)只限于信息共享,網(wǎng)絡則被認為是互聯(lián)網(wǎng)發(fā)展的第三階段。 以太網(wǎng)上數(shù)據(jù)幀的監(jiān)聽剖析 以太網(wǎng)上的數(shù)據(jù)幀主要涉及Tcp/ip協(xié)議,針對以下幾個協(xié)議的分析:IP,ARP,RARP,IPX,其中重點在于ip和 arp協(xié)議,這兩個協(xié)議是多數(shù)網(wǎng)絡協(xié)議的基礎,因此把他們研究徹底,就對大多數(shù)的協(xié)議的原理和特性比較清楚了。由于各種協(xié)議的數(shù)據(jù)幀個不相同,所以涉及很多的數(shù)據(jù)幀頭格式分析,接下來將一一描述。 在linux 下監(jiān)聽網(wǎng)絡,應先設置網(wǎng)卡狀態(tài),使其處于雜混模式以便監(jiān)聽網(wǎng)絡上的所有數(shù)據(jù)幀。然后選擇用Linux socket 來截取數(shù)據(jù)幀,通過設置socket() 函數(shù)參數(shù)值,可以使socket截取未處理的網(wǎng)絡數(shù)據(jù)幀,關鍵是函數(shù)的參數(shù)設置,下面就是有關的程序部分:
AF_INET=2 表示 internet ip protocol SOCK_PACKET=10 表示 截取數(shù)據(jù)幀的層次在物理層,既不作處理。 Htons(0x0003)表示 截取的數(shù)據(jù)幀的類型為不確定,既接受所有的包。 總的設定就是網(wǎng)卡上截取所有的數(shù)據(jù)幀。這樣就可以截取底層數(shù)據(jù)幀,因為返回的將是一個指向數(shù)據(jù)的指針,為了分析方便,我設置了一個基本的數(shù)據(jù)幀頭結(jié)構。 Struct etherpacket 將返回的指針賦值給指向數(shù)據(jù)幀頭結(jié)構的指針,然后對其進行分析。以下是有關協(xié)議的報頭:ethhdr 這是以太網(wǎng)數(shù)據(jù)幀的mac報頭: [page_break] 相應的數(shù)據(jù)結(jié)構如下 struct ethhdr struct iphdr struct arphdr [page_break] 這是linux 的arp 協(xié)議報頭,其中ar_hrd 是硬件地址的格式,ar_pro協(xié)議地址的格式,ar_hln是硬件地址的長度,ar_pln時協(xié)議地址的長度,ar_op是arp協(xié)議的分類0x001是arp echo 0x0002 是 arp reply.接下來的分別是源地址的物理地址,源ip地址,目標地址的物理地址,目標ip地址。 Tcphdr ip協(xié)議的tcp協(xié)議報頭 以下是相應數(shù)據(jù)結(jié)構: struct tcphdr 這是Linux 下tcp協(xié)議的一部分與ip協(xié)議相同取BIG,其中source是源端口,dest 是目的端口,seq是s序,ack_seq是a序號,其余的是tcp的連接標志其中包括6個標志:syn表示連接請求,urg 表示緊急信息,fin表示連接結(jié)束,ack表示連接應答,psh表示推棧標志,rst表示中斷連接。window是表示接受數(shù)據(jù)窗口大小,check是校驗碼,urg ptr是緊急指針。 [page_break] Udphdr 這是udp協(xié)議報頭 struct udphdr { 這是Linux下ip協(xié)議中udp協(xié)議的一部分,結(jié)構很明顯 source 源端口,dest目的端口,len udp 長度,check 是校驗碼。 Icmphdr 這是ip協(xié)議的icmp協(xié)議的報頭 struct icmphdr 網(wǎng)絡的神奇作用吸引著越來越多的用戶加入其中,正因如此,網(wǎng)絡的承受能力也面臨著越來越嚴峻的考驗―從硬件上、軟件上、所用標準上......,各項技術都需要適時應勢,對應發(fā)展,這正是網(wǎng)絡迅速走向進步的催化劑。 |
溫馨提示:喜歡本站的話,請收藏一下本站!