想請問一下 在2台用serial連接的環境下
假如分別各接一台電腦 要互相PING到對方
(10.10.10.1)HostA---ROUTER_A---(serial)---ROUTER_B---HostB(192.168.1.2)
我想請問的是在ROUTER_A比對完路由表後送到interface時 還沒到router_b
在SERIAL上 他所要封裝的第二層mac address
我知道是透過arp的方式得知 對方router_b的interface的mac address
但是 我記得 arp是用ip位址去詢問對方的mac address
who is 192.168.1.2 tell me mac address
但是再ROUTER_A時 src and dest 的IP位址都不會改變
封裝分別還是HostA and HostB的ip address
他是用什麼方式去詢問到ROUTER_B 介面端的MAC ADDRESS ,
ARP的條件不是自己的IP ADDRESS 不是會不理會嗎 那為何又知道要封裝
ROUTER_B的INTERFACE的MAC ADDRESS呢?
1:Host A要送封包給Host B因為不是在同一subnet上的,實際上Host A送給Host B的封包是Dst IP是Host B,Dst MAC address是其default gateway的MAC address(反之亦然)...
2:Router A和Router B是以串列模式界接(i.e. PPP等等),既非Ethernet就沒有MAC address可言(在您的例子中Router A和Router B只知道透過某個interface可以通到某個subnet)....
3:Host A->Router A->Router B->Host B的封包在出Router B時Src MAC address是Router B的MAC address(反之亦然)....
你好 那假如2顆ROUTER中間是用ETHERNET的網路線去接的話
那封裝的DEST的MAC位址又該是如何取得呢
ARP需求的IP依然是HOST_B~該如何去執行呢 感謝
1:MAC address只對同一subnet有意義,不同subnet要怎麼連是gateway的事...
2:麻煩仔細想一下ARP的時機,Host A要連到Host B時其TCP/IP stack會先判斷是否在同一subnet內(在此這一點是不成立的),是的話就會送Target IP欄位是Dst IP的ARP request到Ethernet broadcast address,同一subnet內所有主機收到這個Ethernet broadcast時會比對Target IP,若是自己的IP才會產生ARP reply....
3:您當然可以用非正規方式在Subnet A上產生一個Target IP是Host B的ARP request,Subnet A上所有Host(包括Router A)都會收到這個Ethernet broadcast封包,但因為Target IP不是自己,並不會有進一步的動作....
4:Router A和Router B如何界接和Host A/B送出來的封包並沒有關係,Host A/B只曉得不是往同subnet的封包就往default gateway送就是了(i.e. Dst IP當然不變,Ethernet的Dst MAC address是gateway的,至於gateway的MAC address也當然是透過ARP來的)....
5:Router A/B如果是用Ethernet界接的就代表兩者都有interface在同一subnet下,彼此的MAC address也是透過ARP來的....
嗯嗯 大大 那你說的第5點~
可是那時的封裝過程 LAYER3的 SRC 和DEST的 IP位址不變
但是 LAYER 2的 MAC ADDRESS 位啥會得知是ROUTER_B 介面的MAC ADDRESS呢?
ARP 那時的動作 不是還是會用HOST_B的IP去詢問ROUTER_B嗎?
可是ROUTER_B不認得~所以應該不會理會?
Router A遇到要送到subnet B的封包時會送到Router B(i.e.往subnet B的next hop是Router B,至於要怎麼讓Router A/B知道怎麼連就要靠routing table了,不論是手動加進去,還是跑RIP/OSPF/BGP等routing protocol就看著辦了),既然知道要送到同一個subnet的Router B,當然就是透過ARP取得其MAC address後送出Dst IP維持Host B(不然就甭玩了)但Dst MAC address是Router B的封包了(反之亦然)....BTW,與其在網路上問鵝等路人甲,鵝建議您還是找本書參考參考或是用虛擬化軟體架個LAB試試比較清楚(以您的case跑4台VM互連同時跑tcpdump之類觀察一下就得了,找台有2-4GB RAM的機器就跑得動了,以現在的環境應該沒啥大不了的吧)....
To Keep2,
想像一下你(封包)要來我家(Host B)所需搭乘的交通工具,我不需要知道你是如何從你家裡(Host A)來到我家,只需知道你是從花蓮車站坐計程車到我家即可.
在Layer 2所有的設備及電腦只管next hop在哪裡就好了,而next hop指的不一定是最終目的地.所以封包經由IP(Layer 3)來到達最終目的地,在Layer 2來到達next hop.
ARP封包也是Ethernet封包,但並不是IP封包,所以是不會過router的....
cmwang大大說明得很詳細, 也講到重點 keyword
ARP非路由 單純作 ARP mapping MAC
只在同一 subnet , 非同subnet則 SRC ARP 會改變為 B_Router 的 int src
OSI 7 Layer的 Layer 3層包涵 ARP / RARP封包, 但不作IP路由功能