其實是可以的,你完全可以把兩台電腦的IP 和MAC改成一樣,不但可以上網而且還沒IP沖突。這種方法不但可以突破路由封鎖用在ADSL共享上網,而且還可以用在IEEE802.1X認證上網的環 境中,但是前提必須要用相同的帳號來撥號上網(前提認證服務器沒設驗證帳號的重復性),我的機子是通過學校校園網接入internet的,客戶端采用 802.1x認證客戶端軟件“STAR Supplicant撥號軟件”來撥號上網,在我們學校里可以將兩台機子的IP和MAC改成一樣然后用相同的一個帳號來達到共享上網的目的,不過在我們學 校只可以在同一個宿舍的兩台機子才可以共享上網,因為我們學校的服務器不單止驗證帳號,ip,MAC而且還驗證接入服務器IP(NAS IP),和接入服務器端口(NAS port),不同的宿舍接在學校交換機不同的端口,所以只限於同一個宿舍用這種法共享上網。
至於為什么不會引起IP沖突而且還能上網,這是因為ARP工作的缺陷,系統之所以會發現網上有相的IP的而提示“IP沖突”,是因為系統在啟動 時,TCP/IP中的ARP會廣播一個免費ARP(free arp)請求包到網段上,這個ARP(free arp)包包含自己的IP和MAC,如果網段上有機子回應了這個包,這台發廣播的機子就會認為局域網有別的機子使用和自己相同的IP,
例如:PC A和PC B的IP和MAC完全一樣,PCA的系統啟動時會廣播一個包含自己IP和MAC的免費ARP(free arp)請求包到網段上,如果PCB回應了這個請求,PCA會認為自己的IP和網絡上的IP有沖突並發出提示(這就是為什么IP沖突一般發生系統剛啟動完 成時),問題是PCB根本不會回應這個請求包,這是因為這個請求包的IP和MAC和PCB自己的完全一樣,而PCB會認為是自己發的包,所以不會回應,既 然不會回應自然不會發生IP沖突了。
好了,讓我來解釋下一個問題,就是兩台機子的IP和MAC一樣到底會不會導致不能上網:
既然可以,那么網絡上的硬件設備是怎樣區份這些數據到底是哪台機的呢??大家都知道局域網內是用硬件地址來通迅的,局域網的二層設備(如交換機)維護着一 張地址表,地址表記錄着本設備每個端口所對應的MAC(注:不是端口的MAC,而是端口所連設備的MAC),設備要經過地址學習狀態才能知道這些端口所對 應的MAC,當一個幀經過設備的某介端口時,設備會檢查該幀源地址和目的地址,然后再對照自己的地址表,看地址表中是否存在該源地址的對應項,若不存在則 端口會變為“地址學習狀態”,將該地址保存在地址表中組成一個新的表項,如果PCA和PCB都連在同一個交換機上,則交換機經過“地址學習狀態”后,地址 表中存在兩個相同的地址項,不過它們所對應的端口是不同的,當交換機在外部接收到一個目的地址為該地址(PCA和PCB相同的MAC地址)的幀時,則會檢 查地址表,檢查地址表后會發現存在兩個相同地址的表項,於是交換機會將該幀轉發到這兩個表項所對應的端口,(至於交換機是用組播的方式還是說用一個幀發兩 遍的方式轉發給這兩個端口我就不太清楚了,若你道就告訴我一下,好嗎QQ63405627)。
路由器也一樣,不同是的路由器的地址表是路由表,存放的是IP而不是硬件地址。
連接這兩個端口的PCA和PCB都會收到同樣的幀,既然會收到同樣的幀,那么計算機怎樣才知道哪些幀才是自己想要的呢?這取決於工作在TCP/ip上 層協議,雖然網卡是接收了這個幀,但是上層的協議進行進一步的分用,也可以說成是過濾,當TCP/IP的網絡接口層(也叫鏈路層)收到一個幀,會檢查幀頭 中的幀類型,如果是ARP類型的就交給ARP協議去處理,如果是RARP類型就會交給RARP協議處理,如果是IP類型會去掉幀頭並把這個幀傳給上一層 (即網絡層來處理),網絡層會根據包頭(去掉幀頭就叫IP包了)中的協議類型來分用,如是TCMP類型就交給ICMP協議處理,如果是IGMP類型就交給 IGMP協議處理,如果是TCP或UDP就把包頭去掉並交給上一層(即傳輸層)來片理 ,去掉IP包頭后就叫做報文分段了(傳輸層的單位),同樣傳輸層也會對報文分段的頭部進行檢查從而進行進一步的分用,如果是TCP類型的交給TCP協議處 理,如果是UDP類型就交給UDP協議處理,TCP或UDP會根據報文分段的頭部中的“目的端口號”來交給應用層(交給應用層前會把報文分段的頭部去 掉),然后應用層的用戶進程會根據該“端口號”來決是否接收這個數據,例如QQ某個進程打開了UDP 1324這個端口,傳輸層的UDP協議會把所有接收到的且“目的端口號”為1324的報文分段交給QQ的這個進程, 這樣就完成接收數據的整個過程。雖然兩台電腦都會接收到不是屬於自己的數據幀,但是在把幀交給上層協議片理時有可能會被丟充,就如應用層的QQ進程不會接 到除“目的端口號”為1324以外的其它數據包,因為這些數據在應用層前已經被丟棄。