關於arp包(位址解析協議)
arp請求與arp應答;然後通過tcpdump來捕捉我們的arp請求與arp應答。
arp請求(知道對方的ip位址,要得到對方的mac位址):我們通過我們pc的網絡卡,來向我們的區域網內的所有使用者,傳送乙個廣播(當我們的arp請求發出的時候,tcpdump就能捕捉到,從我們網絡卡發出的arp請求);
arp應答:如果對方是我們請求的ip,這乙個使用者就應答我們(傳送乙個單播,把自己的mac位址填到,我們之前傳送過去的資料,然後發給我們。);如果不是我們請求的ip,這個使用者就丟掉,我們的arp請求。
arp心跳:就是我們os每隔乙個心跳,就向我們區域網內傳送乙個arp廣播,這樣我們就可以知道區域網內聯上網的使用者,把這些使用者的ip/mac放到我們的arp快取裡面。當我們要通訊的時候,就不用直接傳送arp請求來,來獲得我們要通訊對方的ip/mac。如上網頁:http:直接http請求與http應答。
#include
#include
#include
#include
#include
#include
#include
#pragma pack(1)
struct machdr;
struct arphdr;
int main()
unsigned char buff[1024] = ;
//mac
struct machdr *mac = (struct machdr *)buff;
mac->dest[0] =0xff;//對方的mac全充1;傳送arp請求後,對方os為填充自已的mac,然後做出應答。
mac->dest[1] = 0xff;
mac->dest[2] = 0xff;
mac->dest[3]= 0xff;
mac->dest[4]= 0xff;
mac->dest[5]=0xff;
mac->source[0]= 0x6c;//源mac
mac->source[1]= 0xf0;
mac->source[2]= 0x49;
mac->source[3]= 0x89;
mac->source[4]= 0xd2;
mac->source[5]= 0x54;
mac->proto = htons(0x0806);//表明上層為arp
//arp
struct arphdr *arp = (struct arphdr *)(buff+14);
arp->hd = htons(1);
arp->proto = htons(0x0800);
arp->hd_len = 6;
arp->proto_len = 4;
arp->option = htons(1);
arp->dest_eth[0] =0xff;
arp->dest_eth[1] = 0xff;
arp->dest_eth[2] = 0xff;
arp->dest_eth[3]= 0xff;
arp->dest_eth[4]= 0xff;
arp->dest_eth[5]=0xff;
arp->dest_ip = inet_addr("192.168.50.148");//這是對方的ip
// 6c:f0:49:89:d2:54
arp->source_eth[0]= 0x6c;
arp->source_eth[1]= 0xf0;
arp->source_eth[2]= 0x49;
arp->source_eth[3]= 0x89;
arp->source_eth[4]= 0xd2;
arp->source_eth[5]= 0x54;
arp->source_ip = inet_addr("192.168.50.142");//這是我的ip
struct sockaddr a;
a.sa_family = af_inet;
strcpy(a.sa_data,"eth0");
ret = sendto(fd,buff,42,0,&a,sizeof(str uct sockaddr));//send是面向連線的;sendto是面向無連線的
if(ret < 0)
return 0;
}
第二課 安裝PHP
為什麼要安裝php?php是伺服器端解析程式,一般執行在網路伺服器上。而編寫php語言的程式我們一般是在自己的個人電腦上完成,然後拿到伺服器上除錯。所以,學習php首先要讓我們的個人電腦模擬伺服器執行環境,讓php能象在伺服器上一樣在我們的個人電腦上執行。這就是為什麼要安裝配置php的原因。安裝配置...
csdn之旅 第二課
1.html標題的標籤 1 注意 只能到,在往後就沒有作用了。2 標籤特點 可以區別其他文字,比如可以加粗 效果圖如 笑對生活!笑對生活!笑對生活!笑對生活!改變字型大小 可以自動換行 2.html段落標記 用元素 注意 標籤和標籤之間的關係 可以巢狀使用 但不可以交叉 3.html常用標記 單標記...
第二課 加法運算
在程式設計當中,文字框及按鈕是用得比較多的乙個控制項,我們先來學學如何使用這兩個控制項。1 新建乙個窗體 2 在窗體上放置三個文字框控制項,分別命名為 txtnum1 txtnum2 txtnum3,我們在命名時,盡量規範一點,可參考這裡 3 在窗體上放置乙個按鈕,命名為cmdcount 開始程式設...