問:在xx校園網下,在IE中輸入www.sina.com.cn直到顯示結果,請描述這個過程是怎麼進行的,並描述過程中用到的協議和算法
1.本地過程:
-
若DNS緩存中沒有相關數據,則IE瀏覽器先向DNS服務器發出DNS請求:
-
這一過程的目的是獲取www.sina.com這個域名所對應的IP地址;
-
IE瀏覽器向本機DNS模塊發出DNS請求,DNS模塊生成相關的DNS報文;
-
DNS模塊將生成的DNS報文傳遞給傳輸層的UDP協議單元;
-
UDP協議單元將該數據封裝成UDP數據報,傳遞給網絡層的IP協議單元;
-
IP協議單元將該數據封裝成IP數據包,其中目的IP地址爲DNS服務器的IP地址;
-
封裝好的IP數據包將傳遞給數據鏈路層的協議單元進行發送;
-
發送時如果ARP緩存中沒有相關數據,則發送ARP廣播請求,等待ARP迴應;
-
得到ARP迴應後,將IP地址與路由下一跳MAC地址對應的信息寫入ARP緩存表;
-
寫入緩存後,以路由下一跳地址填充目的MAC地址,並以數據幀形式轉發;
-
這個轉發過程可能會進行多次,這取決於DNS服務器在校園網中的位置;
-
DNS請求被髮送到DNS服務器的數據鏈路層協議單元;
-
DNS服務器的數據鏈路層協議單元解析收到的數據幀,將其內部所含有的IP數據包傳遞給網絡層IP協議單元;
-
DNS服務器的IP協議單元解析收到的IP數據包,將其內部所含有的UDP數據報傳遞給傳輸層的UDP協議單元;
-
DNS服務器的UDP協議單元解析收到的UDP數據包,將其內部所含有的DNS報文傳遞給該服務器上的DNS服務單元;
-
DNS服務單元收到DNS請求,將域名解析爲對應的IP地址,產生DNS迴應報文;
-
(所有應用層報文必須通過傳輸層、網絡層和數據鏈路層,因此在下面的敘述中,我將簡化這一過程的敘述,簡化形式如下面的樣子,其中單箭頭爲本機內部傳遞,雙箭頭爲網絡上的發送)
-
DNS迴應報文→UDP→IP→MAC→→請求域名解析的主機;
-
請求域名解析的主機收到數據幀,該數據幀→IP→UDP→DNS→IE瀏覽器;
- 將域名解析的結果以域名和IP地址對應的形式寫入DNS緩存表。
-
IE瀏覽器向www.sina.com.cn發出TCP連接請求報文;
-
該請求TCP報文中的SYN標誌位被設置爲1,表示連接請求;
-
該TCP請求報文→IP(DNS)→MAC(ARP)→→校園網關→→www.sina.com.cn主機;
-
該TCP請求報文經過IP層時,填入的目的IP地址就是上面DNS過程獲得的IP地址;
-
經過數據鏈路層時,若MAC地址不明,還要進行上面所敘述的ARP過程;
-
www.sina.com.cn收到的數據幀→IP→TCP,TCP協議單元會迴應請求應答報文;
-
該請求應答TCP報文中的SYN和ACK標誌位均被設置爲1,表示連接請求應答;
-
該TCP請求應答報文→IP→MAC(ARP)→→校園網關→→請求主機;
-
請求主機收到數據幀→IP→TCP,TCP協議單元會迴應請求確認報文;
-
該請求應答TCP報文中的ACK標誌位被設置爲1,表示連接請求確認;
-
該TCP請求確認報文→IP→MAC(ARP)→→校園網關→→www.sina.com.cn主機;
- www.sina.com.cn收到的數據幀→IP→TCP,連接建立完成;
這個過程被稱爲TCP建立連接的三次握手。
-
IE瀏覽器向www.sina.com.cn發出HTTP-GET方法報文;
-
該HTTP-GET方法報文→TCP→IP→MAC→→校園網關→→www.sina.com.cn主機;
-
www.sina.com.cn收到的數據幀→IP→TCP→HTTP,HTTP協議單元會迴應HTTP協議格式封裝好的HTML超文本形式數據;
-
HTTP-HTML數據→TCP→IP→MAC(ARP)→→校園網關→→請求主機;
- 請求主機收到的數據幀→IP→TCP→HTTP→IE瀏覽器,瀏覽器會以網頁形式顯示HTML超文本,就是我們所看到的網頁。
-
IE瀏覽器向www.sina.com.cn發出TCP連接結束請求報文;
-
該請求TCP報文中的FIN標誌位被設置爲1,表示結束請求;
-
該TCP結束請求報文→IP→MAC(ARP)→→校園網關→→www.sina.com.cn主機;
-
www.sina.com.cn收到的數據幀→IP→TCP,TCP協議單元會迴應結束應答報文;
-
該結束應答TCP報文中的FIN和ACK標誌位均被設置爲1,表示結束應答;
- 該TCP結束應答報文→IP→MAC(ARP)→→校園網關→→請求主機;
整個過程被稱爲TCP斷開連接的四次握手