查看單個文章
舊 2007-07-27, 07:23 PM   #15 (permalink)
Admin1
管理員
 
Admin1 的頭像
榮譽勳章
UID - 112827
在線等級: 級別:29 | 在線時長:972小時 | 升級還需:48小時級別:29 | 在線時長:972小時 | 升級還需:48小時級別:29 | 在線時長:972小時 | 升級還需:48小時級別:29 | 在線時長:972小時 | 升級還需:48小時級別:29 | 在線時長:972小時 | 升級還需:48小時級別:29 | 在線時長:972小時 | 升級還需:48小時級別:29 | 在線時長:972小時 | 升級還需:48小時級別:29 | 在線時長:972小時 | 升級還需:48小時級別:29 | 在線時長:972小時 | 升級還需:48小時
註冊日期: 2007-02-18
VIP期限: 0000-00
文章: 3507
精華: 0
現金: 1702 金幣
資產: 10196 金幣
預設

====================
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 的圖供參考:
http://www.ssfnet.org/Exchange/tcp/Graphics/tcpHeader1.gif
Admin1 目前離線  
送花文章: 8870, 收花文章: 2195 篇, 收花: 5820 次
回覆時引用此帖
有 2 位會員向 Admin1 送花:
netbird (2007-07-28),rezard (2007-07-28)
感謝您發表一篇好文章