【求助】請教一個PACKET傳送的小觀念



贊助商連結


b90220208
2005-01-05, 05:34 PM
請教一個觀念:

在LAN中假如我主機的gateway設錯
那麼當我有封包要傳出區網網段時,此時因ARP broadcast會查無回應(因gateway設錯),...此情況下,該封包會被如何處理(
...是直接丟棄還是照送不誤)?

若照送不誤,那麼該frame header中的MAC欄會填什麼值呢?

贊助商連結


raytracy
2005-01-06, 10:50 AM
Gateway 設錯, 會發生幾種不同的狀況:

1. 被您設 Gateway 的那個 IP 實際上不存在:

1.a 當時在同一個 broadcast domain 之下 (白話文: 同一個 LAN), 並沒有其他特殊設備在監聽所有廣播封包, 此時因為不會有人回應這個 Broadcast 封包, 所以當 ARP timeout 之後, 您的電腦就會將封包丟棄.

1.b 當時的 broadcast domain 之中, 還有另外一個未設 IP (或它的 IP 並非您設的 gateway IP) 的設備, 在監聽網路上的 broadcast 封包, 且該設備具有 ARP spoofing (假造 ARP) 的能力, 若該設備有意攔截竊聽您的封包的話, 它可以送出假的 ARP, 讓您誤以為他就是 Gateway, 而將封包傳給他. 至於傳給他之後會發生什麼事? 那就要看該設備打算怎麼做囉..... :D

2. 被您設 Gateway 的那個 IP 實際上也存在:

2.a 該設備並不具備 routing 能力, 所以當您的封包送給它之後, 它就直接丟棄.

2.b 該設備不一定具備 routing 能力, 但是卻具備 ICMP redirect 能力, 而且知道正確的 Gateway IP 在哪裡; 此時, 它會回送一個 ICMP redirect 的封包給您的電腦, 告知正確的 gateway IP, 之後您的電腦便會將封包送往正確的 gateway 去.

2.c 該設備具備 routing 能力, 且其設定(acl, netmask, routing table...)正好可接受您電腦網段的封包轉送, 此時封包會由該設備轉送出去, 但回來的封包不一定會經由此設備回來, 要看外面的 routing 設定來決定.

2.d 該設備具備 routing 能力, 但其設定無法接受您電腦網段的封包, 此時您的封包到達該設備之後, 就會被它丟棄.

b90220208
2005-01-06, 04:39 PM
真是太感謝了!

關於1.a:
結論是arp timeout後,傳送端電腦會drop掉該packet.
如此是否表示該packet由頭至尾未曾流出網卡過呢?
ex:以linux為例,也就是不會反應在ifconfig指令的tx欄,...對嗎?

關於2.b:
請教一下哪種設備,OS,還是需啟動什麼service才會具有 ICMP redirect 的能力?

raytracy
2005-01-07, 10:00 AM
關於1.a:
結論是arp timeout後,傳送端電腦會drop掉該packet.
如此是否表示該packet由頭至尾未曾流出網卡過呢?
ex:以linux為例,也就是不會反應在ifconfig指令的tx欄,...對嗎??電腦會 drop 掉想要傳送的 IP 層封包; 但是先前用來詢問 ARP 的第二層廣播封包則已經發出去了, 由於 ifconfig 的 tx 是統計流經第一層的資料量, 所以在 tx 中還是會看到一點點流量....


關於2.b:
請教一下哪種設備,OS,還是需啟動什麼service才會具有 ICMP redirect 的能力?這裡有些文件可以研究 ICMP redirect 的行為:
http://linux-ip.net/html/routing-icmp.html
http://www.networksorcery.com/enp/protocol/icmp/msg5.htm

基本上, 只要該設備宣稱符合 RFC-1812 規範的話, 就應該有這個功能. 請參閱 RFC-1812 的 5.2.7.2 小節: http://www.freesoft.org/CIE/RFC/1812/106.htm
(註: RFC-1812 定義的內容是 Requirements for IP Version 4 Routers - IPv4 路由器的要求, 所以通常是具有 Routing 功能的設備, 就必須要有這功能)