計算機之前是如何實現互相通信的呢?
正文
首先,計算機之間通信人為設定一個準則,這個準則是什么呢?
如果兩臺計算機在一個相同網段,不需要輔助設備(網關)的幫助,可以直接通信。
如果兩臺計算機在不同網段,一定需要輔助設備(網關)的接力幫助,實現間接通信。
上文一下子出現很多陌生名詞,需要解釋:
相同網段
計算機A如果想和計算機B通信,用自己的網絡掩碼的二進制長度,遮掩自己的IP地址,IP地址被遮住的數字即為自己的網段。

用相同的方法,計算B的網段,如果A、B網段相同,則為相同網段。
不同網段
否則為不同網段。
網關
網關專門是為不同網段通信設計的硬件設備,它的存在使得不同網段通信成為可能,充當網關的硬件設備,通常有路由器、三層交換機、防火墻。

直接通信
盡管A、B知道對方和自己在一個網段,但是對方的硬件網卡地址(MAC地址)卻不知道,為了實現通信,還需要知道對方的MAC地址,怎么辦?
廣播通信(一對多)
使用MAC = 0x FF.FF.FF.FF.FF.FF 先詢問一下B的MAC,B能收到這個廣播嗎?可以的!B回復一下自己的MAC地址,A自然就知道了,然后A與B就可以點對點單播(一對一)通信了。
ARP協議
實現廣播通信的協議是ARP協議,地址解析協議,為了解析對方計算機的IP、MAC的一個協議。

間接通信
既然網絡設計之初,不同網段主機之間的通信需要網關中轉,那就必須服從這個準則。
計算機A需要把自己和計算機B通信的IP報文發給網關,這里的所謂發給網關,是二層/數據鏈路層/以太幀頭的目的MAC地址是網關的,這里是關鍵,理解了這點就理解了這個問題!
這個小菜一碟,因為計算機A與自己的網關在相同網段,使用廣播通信,可以發現網關的MAC地址,就可以把IP報文發給自己的網關了。
網關收到這個IP報文,獲得了IP報文中的目的IP,查詢自己的路由表,發現主機B與自己另外一個接口在相同網段,于是通過廣播通信獲得主機B的MAC地址,然后就把IP報文以點對點(一對一)單播方式發給主機B,這樣IP報文就到達了主機B。
主機B發出的返程IP報文,同樣的原理,可以到達主機A。
所以主機A、B不會有對方的MAC地址,只會有自己網關的MAC地址。