![]() |
|
![]() |
#1 |
管理員
![]() |
![]() 假如我們目前有二台電腦,使用 HUB 連接,設定如下:
==================== A <----------> HUB <----------> B A 電腦 網路界面:eth0 220.228.161.117/255.255.255.128 subnet id ==>220.228.161.0 B 電腦 網路界面:eth0 220.228.161.124/255.255.255.192 subnet id ==>220.228.161.64 ==================== 問題: 這二台電腦彼此是否可以通訊? 若是不可,為何不可? 若是可以,為何可以? 請各位對於網路有研究的朋友一起來聊聊囉.... 此帖於 2007-07-27 07:10 PM 被 Admin1 編輯. |
![]() |
送花文章: 8870,
![]() |
![]() |
#2 (permalink) | |
長老會員
![]() |
![]() 引用:
紅字是故意不一樣,還是打錯? ![]() ![]() ![]() |
|
__________________ 的歷流光小,飄颻弱翅輕。恐畏無人識,獨自暗中明。 [IMG][/IMG] |
||
![]() |
送花文章: 127322,
![]() |
![]() |
#7 (permalink) | |
管理版主
![]() |
![]() 引用:
只是一個是切成128組IP,一個是切成64組IP, 220.228.161.117與220.228.161.124又同屬一組64IP範圍, 故會通。 |
|
![]() |
送花文章: 90,
![]() |
![]() |
#10 (permalink) |
協調管理員
![]() |
![]() 我記得的是,封包是只包括來源ip,和目的ip,封包是不包括子網路遮罩資訊
1.網路卡收到封包後,會把封包的來源ip和自己的子網做and,看是不是同一個網段的 2.如果跟自己同一個網段,就收下封包並交給協定上一層處理 算法如下圖 a電腦和b電腦各自算出自己的SubnetID 但當A電腦收到B電腦的封包時,依照上面1,2步驟,A電腦會以為B電腦跟他同一個網段(兩個IP結果都是跟255.255.255.128做AND後,結果都是220.228.161.0),便把B的MAC記錄在ARP中 這樣就會建立連線了 但反過來,如果是B收到A封包,依照上面1,2步驟,B電腦會以為A電腦跟他同一個網段(兩個IP結果都是跟255.255.255.192做AND後,結果都是220.228.161.64) 雖然子網不同,AND運算結果不同,但兩者都把對方視為跟自己同一網段,那網路也是會通的 此帖於 2007-07-27 03:54 PM 被 飛鳥 編輯. |
![]() |
送花文章: 11706,
![]() |
![]() |
#11 (permalink) |
長老會員
![]() |
![]() 小弟簡單畫了二張圖,進來逛的大大們應該可以更清楚一點瞭解二部電腦邏輯上所在的網段...
首先是A電腦220.228.161.117 http://img510.imageshack.us/my.php?i...ubneta1dt7.jpg 再來是B電腦220.228.161.124 http://img510.imageshack.us/my.php?i...ubnetb1vy1.jpg 如有錯誤請提醒一下,謝謝。 |
![]() |
送花文章: 127322,
![]() |
![]() |
#13 (permalink) | |
長老會員
![]() |
![]() 引用:
B 電腦 網路界面:eth0 220.228.161.124/255.255.255.192 subnet id ==>220.268.161.64 ![]() ![]() 本帖馬上變成大家來找碴單元... ![]() ![]() |
|
![]() |
送花文章: 127322,
![]() |
向 rezard 送花的會員:
|
![]() |
#15 (permalink) |
管理員
![]() |
![]() ====================
A <----------> HUB <----------> B A 電腦 網路界面:eth0 220.228.161.117/255.255.255.128 subnet id ==>220.228.161.0 B 電腦 網路界面:eth0 220.228.161.124/255.255.255.192 subnet id ==>220.228.161.64 ==================== 當 A 要傳封包給 B 的時候,例如我們要從 A 電腦 PING B 電腦時,系統會把 B 電腦的 IP用 A 電腦本身的 netmask 進行 AND 運算,也就是 220.228.161.124 AND 255.255.255.128。此時可以發現計算出來的 subnet id 為 220.168.161.0,正好就是 A 電腦的 eth0 界面,kernel 就直接把封包往 eth0 丟出去。 丟出去的 IP Header 裡面並沒有 netmask 這種東西(ip packet 中並不帶有 netmask 訊息),所以 B 電腦看到的就是一個 destination address 為 220.228.161.124 的封包,B 電腦就會把它收起來。 然後當 B 電腦要回傳封包給 A 時,會把 A 電腦的 IP 拿來和 B 電腦本身的 netmask 做運算,也就是 220.228.161.117 AND 255.255.255.192,算出來的 subnet id 為 220.168.161.64,正好就是 B 電腦的 eth0 界面,所以封包就往 B 電腦的 eth0 界面送出去。 當 A 電腦收到封包時,會看到的就是一個 destination address 為 220.228.161.117 的封包,A 電腦就會把它收起來,然後 A 與 B 的通訊就完成了。 附上一張 IP Header 的圖供參考: ![]() |
![]() |
送花文章: 8870,
![]() |