數據包在互聯網

1   前言

前段時間做一個NDIS網絡驅動,功能是修改IP包的IP地址并傳送到指定的機器,在測試時發現一個問題,假如在內網中傳送數據包到在內網的一台不同網域的機器上,數據包不能傳達,具體問題在[1]有詳細說明。在 Google查了很多數據,經過多次測試,最終發覺,原來是路由器(Router)的問題。在這過程中,發現很多網友對數據包在網絡上的傳輸有誤解,因此我想對這個問題進行一次詳細的說明,以備以后的不時之需。

網上有很多網友對以太網的理解是:數據包在互聯網是在IP層傳輸的,以IP地址來判斷地址并傳輸的。這是一個誤解,互聯網不認識IP協議層,只是由於現在有些寬帶運營商(ISP)使用了“釆用執行在協議層的路由器”,所以導致出現由於 IP不在該路由器所控制的范圍則自動被放棄,我們看見的就是不符合IP協議的均會被放棄。這種做法好處是避免了廣播風暴問題,但同時又削弱了互聯網的功能,例如我們就不能直接把一個不釆用IP協議的數據包傳輸至互聯網某一個物理地址(MAC地址,下同)的機器。

2   互聯網

當前互聯網釆用的是以太網,即釆用以太網交換機實現的,這種網絡的好處是,只要你知道網絡上某一機器的物理地址,即可以把數據包通過廣播傳輸到相應的機器上,但同時這樣也會造成廣播風暴,致使網絡癱瘓,當然這種情況是可以通過某些手段進行抑制的,下面會進一步說明 ...

more ...

偽IP如何實現與客戶機進行TCP通訊?

軟件環境

WinXP SP2

截取數據包的Ndis5.0驅動已經寫好。 在用戶層,能夠修改驅動發來的數據包的IP地址,客戶機也能接收到該數據包。

我這個軟件是用于模擬多客戶機與服務器連接實現數據傳輸的測試軟件。

硬件環境

(33.33.33.33(假定是這個))         |—— 客戶機2 (192.168.1.105)
客戶機1——路由 (192.168.1.1)——|
                   |—— 發送機 (192.168.1.100) (偽裝 99.99.99.99)

現在需要發送機偽裝IP 99.99.99.99 與兩客戶機進行TCP通信

在客戶機2安裝的Ethereal 檢測到發送機發來的IP為 99.99.99.99 數據包,物理地址 ...

more ...