C 通過Web獲取客戶端的IP與Mac位址實現

2021-12-29 20:57:31 字數 2190 閱讀 1494

通過web獲取客戶端的ip位址較簡單,從客戶端向web伺服器傳送的資料報中(request物件)中即可解析出,但實際應用中,還要考慮**伺服器,路由器的**等等。

(1).在客戶端來獲取客戶機的mac位址,所以當請求到達客戶端後,通過客戶端指令碼來獲取客戶端mac位址,然後再傳送給伺服器端。

(2).先獲取客戶端ip位址,然後在區域網中傳送arp請求,通過arp協議和已知的ip位址來解析客戶端的mac位址

下面為獲取ip位址、mac位址的的**, 以及通過傳送arp請求解析mac位址的過程:

////// sendarp獲取mac位址

//////目標機器的ip位址如(192.168.1.1)

///目標機器的mac 位址

public static string getmacaddress(string remoteip)

else

x -= 2;

}return macaddress.tostring();

}catch

}首先要知道交換機是通過mac位址通訊的,但是我們是如何獲得目標主機的mac位址呢?這時我們就需要使用arp協議了,在每台主機中都有一張arp表,它記錄著主機的ip位址和mac位址的對應關係。

arp協議是工作在網路層的協議,它負責將ip位址解析為mac位址。下面講解arp的工作原理:

1)如果主機a想傳送資料給主機b,主機a首先會檢查自己的arp快取表,檢視是否有主機b的ip位址和mac位址的對應關係,如果有,則會將主機b的mac位址作為源mac位址封裝到資料幀中。如果沒有,主機a則會傳送乙個arp請求資訊,請求的目標ip位址是主機b的ip位址,目標mac位址是mac位址的廣播幀(即ff-ff-ff-ff-ff-ff),源ip位址和mac位址是主機a的ip位址和mac位址。

2)當交換機接受到此資料幀之後,發現此資料幀是廣播幀,因此,會將此資料幀從非接收的所有介面傳送出去。

3)當主機b接受到此資料幀後,會校對ip位址是否是自己的,並將主機a的ip位址和mac位址的對應關係記錄到自己的arp快取表中,同時會傳送乙個arp應答,其中包括自己的mac位址。

4)主機a在收到這個回應的資料幀之後,在自己的arp快取表中記錄主機b的ip位址和mac位址的對應關係。而此時交換機已經學習到了主機a和主機b的mac位址了。

以前沒有接觸過網路程式設計,現在開始接觸,做起來感覺要求比cs結構的要求要高一些,需要了解區域網的架構,交換機、路由器的**原理,也藉此機會了解了mac位址表、arp快取表以及路由表等等內容。學無止境,越來越覺得知識太匱乏了,有太多東西需要學習。

Web獲取客戶端的IP位址

一 思路 主要用於區域網內 通過web獲取客戶端的ip位址較簡單,從客戶端向web伺服器傳送的資料報中 request物件 中即可解析出,但實際應用中,還要考慮 伺服器,路由器的 等等。1 在客戶端來獲取客戶機的mac位址,所以當請求到達客戶端後,通過客戶端指令碼來獲取客戶端mac位址,然後再傳送給...

c 獲取客戶端ip

在做wcf時,需要得到客戶端的ip。一開始用了幾種方法總是不好使。後來在網上找到這個方法可以正確的獲得客戶端的ip了。可 能 有 d代 理 if result.indexof 1 沒?有 d 肯?定 是 非 ipv4格?式 result null else if result.indexof 1 有...

獲取客戶端ip

1.統計訪問者ip位址 2.設定黑名單,黑名單的使用者不可以訪問聊天室。內容提要 這種情況下同樣透露了客戶端是使用了 伺服器 但編造了乙個虛假的隨機ip 220.4.251.159 代替客戶端的真實 ip來欺騙它 獲取客戶端 ip其實不是個簡單的活兒 因為存在 ip欺騙 和 問題 所以獲取客戶端的 ...