不同IP地址的主機之間是如何互相尋址?
假設這兩臺IP地址不同的主機分別為A和B。
A主機中如果使用名稱訪問B主機必須先使用DNS,將B的名稱解析為IP,然后A主機一以自己的IP為源地址,B的IP為目標地址封裝IP數據包,同時使用A自己的網卡接口的子網掩碼和B的IP進行與運算,如果B和自己在相同網絡機載接口直接發(fā)送出去。
但接口在發(fā)送時還需要將IP數據包封裝成數據幀,這需要兩臺主機的MAC地址。如果A知道B的MAC,則直接使用B 的MAC作為數據幀中的目的地址,如果不知道則向網絡中發(fā)送ARP廣播,將B的IP解析為MAC。
得到B的MAC地址后完成數據幀的封裝,將數據幀用高低不同的電平值表示發(fā)送到物理線路中就可以了。這是同一子網中A向B的單向通信過程。
不同子網的通信過程中,DNS的名稱解析是一樣的。在數據包當中封裝的源IP是A,目標IP是B,這個也一樣。但是當A主機使用接口掩碼和B的IP進行與運算后會發(fā)現兩個IP不在同一子網,這是A會將這個數據包發(fā)送給本網絡的網關(通常是本網的路由器),由網關來轉發(fā)。
另外,在封裝數據幀時,主機需要知道B的MAC地址,向外廣播要求解析B的MAC,但B不在本網絡,所以只能有網關的ARP代理功能實現,但A主機得到的并不是B的MAC地址,而是網關的MAC地址,所以A在數據幀中封裝目的地址為本地網關。接下來從接口發(fā)送出去,當數據到達網關,網關會讀取數據包中的目的IP,并根據目的IP進行轉發(fā),在轉發(fā)時數據包中的目的IP不變,但數據幀中的源MAC地址和目的MAC地址都會發(fā)生變化。源MAC地址變?yōu)榫W關的發(fā)送接口的MAC地址,而目的地址可能是B主機的MAC或是下一個路由器的接口MAC。這就是不同子網的單向通信過程。B向A的通信和此過程是一樣的。