1. 程式人生 > >域名--->IP 和 IP---->MAC

域名--->IP 和 IP---->MAC

結合前面兩篇文章,當在瀏覽器的位址列中輸入一個域名時域名------>IP地址的轉化與第一次資料傳輸之前IP------>MAC地址的對映是很相似的兩個過程。

接下來就對這兩個過程進行說明:

1、域名----->IP(DNS解析)

瀏覽器近期訪問的記錄會儲存在本地的一個DNS快取(域名------->IP對映)

首先瀏覽器會根據查詢自己的DNS快取找到與目的主機的域名匹配的一項,然後獲得目的主機的IP。如果在自己的DNS快取中沒有找到目的主機域名;

接下來會查詢系統快取(呼叫gethostbyname),如果在系統快取中還是沒有找到;

接下來會將查詢請求傳送到路由器中,在路由器的DNS快取中進行查詢,如果仍然沒有找到;

接下來會將查詢請求傳送到ISP提供的DSN伺服器上去查詢,所有的記錄都會在這個ISP上找到,然後返回給瀏覽器,瀏覽器就獲取了目的主機的IP地址。

2、IP------>MAC

ARP報文中主要的欄位是:客戶端IP、客戶端MAC、伺服器端IP、伺服器端MAC

TCP協議中規定目的地址為全1FFFFFFF的報文是廣播方式傳送的,會給整個區域網的所有主機發送。

在第一次資料交換之前,要獲取目的主機IP的MAC地址,通過ARP請求/應答的模式獲取目的主機的MAC地址的。

類似於DSN快取,每個瀏覽器都有自己的一個ARP快取記憶體,存放的是瀏覽器最近訪問的IP------->MAC對映。

首先瀏覽器會在自己的ARP快取記憶體中去查詢IP地址用來獲得IP對應的MAC地址,如果找到直接返回;如果在瀏覽器自己的ARP快取記憶體中沒有找到;

接下來,瀏覽器會對瀏覽器所在的區域網傳送ARP請求(目的MAC為FFFFFF的廣播報文),區域網的所有主機都會收到這個報文,收到後將ARP請求中IP與自己的IP進行匹配。如果匹配成功,將自己的MAC地址填充到ARP請求的MAC欄位,並作為ARP應答返回;如果ARP請求中的目的主機IP與自己的不匹配,直接丟棄ARP請求;

如果目的主機與客戶端不在同一網段,當ARP請求經過路由器時,路由器對ARP請求進行廣播到另一個區域網...不斷傳播直到ARP請求到達目的主機。

例子:


假設A要向B傳送資料,在第一次傳送資料之前要獲取到B的MAC地址。

A首先會查詢自己的ARP快取,去找B:IP------>MAC;如果沒有找到,A向A所在的區域網以廣播方式傳送一個ARP請求報文,A所在區域網的其他主機收到這個報文後丟棄(因為目的主機的IP與自己不符)。

路由器收到這個ARP請求後,會將ARP請求以廣播方式傳送到B所在的網路,然後B、C、D都會收到ARP請求報文,但是C和D會將ARP請求丟棄。B將自己的MAC地址填充到ARP請求中,將ARP應答以單播形式返回給A。

3、HTTP請求HOST請求頭的作用

一個物理伺服器上可以部署多個虛擬站點,相當於一個伺服器上部署有多個服務嗎,每一種服務都會在ISP的DSN伺服器上有一個對映記錄:域名-------->伺服器IP。

所以一個物理伺服器會有多個域名,每個域名就是一個服務。

HTTP請求的HOST欄位指明瞭具體使用的服務。在瀏覽器中輸入域名,首先會根據本地DSN快取、系統快取、路由器DSN快取、ISP的DNS快取找到域名對應的IP地址。