不同IP地址的主機之間是如何互相定址?郭員外2021-12-13 05:16:41

假設這兩臺IP地址不同的主機分別為A和B。

A主機中如果使用名稱訪問B主機必須先使用DNS,將B的名稱解析為IP,然後A主機一以自己的IP為源地址,B的IP為目標地址封裝IP資料包,同時使用A自己的網絡卡介面的子網掩碼和B的IP進行與運算,如果B和自己在相同網路機載介面直接傳送出去。

但介面在傳送時還需要將IP資料包封裝成資料幀,這需要兩臺主機的MAC地址。如果A知道B的MAC,則直接使用B 的MAC作為資料幀中的目的地址,如果不知道則向網路中傳送ARP廣播,將B的IP解析為MAC。

得到B的MAC地址後完成資料幀的封裝,將資料幀用高低不同的電平值表示傳送到物理線路中就可以了。這是同一子網中A向B的單向通訊過程。

不同子網的通訊過程中,DNS的名稱解析是一樣的。在資料包當中封裝的源IP是A,目標IP是B,這個也一樣。但是當A主機使用介面掩碼和B的IP進行與運算後會發現兩個IP不在同一子網,這是A會將這個資料包傳送給本網路的閘道器(通常是本網的路由器),由閘道器來轉發。

另外,在封裝資料幀時,主機需要知道B的MAC地址,向外廣播要求解析B的MAC,但B不在本網路,所以只能有閘道器的ARP代理功能實現,但A主機得到的並不是B的MAC地址,而是閘道器的MAC地址,所以A在資料幀中封裝目的地址為本地閘道器。接下來從介面傳送出去,當資料到達閘道器,閘道器會讀取資料包中的目的IP,並根據目的IP進行轉發,在轉發時資料包中的目的IP不變,但資料幀中的源MAC地址和目的MAC地址都會發生變化。源MAC地址變為閘道器的傳送介面的MAC地址,而目的地址可能是B主機的MAC或是下一個路由器的介面MAC。這就是不同子網的單向通訊過程。B向A的通訊和此過程是一樣的。