Web頁面的請求過程

前言:

到這裏的話,我想計網,應該告一段落了,還剩一點密碼安全之類的,有空再補補咯,這裏藉着書上的最後一波總結。

請求過程:

先貼上書上的場景圖。
在這裏插入圖片描述

準備:DHCP、UDP、IP和以太網

由於一開始主機通過網線連接入學校網絡的時候是沒有ip地址的,所以第一步當然是獲取自身ip地址。這就要用到DHCP協議了。
主機的動作:
1)主機的操作系統生成一個DHCP請求報文
2)封裝到目的端口67,源端口68的UDP報文段中
3)再被封裝到廣播地址是255.255.255.255 源ip地址是0.0.0.0的的ip數據報中
4)再被封裝到以太網幀中,該以太網幀的目的MAC地址是FF:FF:FF:FF:FF:FF,即將該幀廣播到與交換機連接的所有設備。該幀的源MAC地址是主機本身的MAC地址

然後就進入了鏈路層中進行廣播,傳輸到了交換機中,在交換機的所有出端口廣播此幀。隨意的廣播到了路由器中。

路由器的動作:
1)得到該以太網幀,該廣播MAC地址表示應該由更高層的協議處理,從中抽取出ip數據報
2)得到ip數據報,該廣播ip地址表示應該由更高層協議處理,從中抽取出UDP報恩段
3)DHCP服務器的UDP套接字收到該UDP報文,抽取出了DHCP請求報文
4)DHCP服務器爲主機分配ip地址,並且生成一個DHCP ACK報文,其中包含了所分配的ip地址、DNS服務器的ip地址、默認網關的IP地址、子網掩碼。
5)封裝在一個UDP報文段中,端口號爲68,再封裝到一個IP數據報中,仍然是廣播,最後封裝到以太網幀中。這時候以太網幀的MAC地址就是路由器該接口的MAC地址,目的地址就是主機的MAC地址.
該以太網幀由路由器發向交換機,由於交換機是自學習的,所以該交換機記錄下了主機的MAC地址,根據以太網幀中目的主機的MAC地址,直接轉發到主機

主機動作:
1)主機獲取該以太網幀,抽取ip數據報,抽取出UDP報文段傳入UDP68端口的套接字中,再抽取出DHCP ACK報文。
2)可能會由多個DHCP服務器同時響應,此時主機選擇其中一個進行響應,主機記錄下所分配的IP地址和 他的DNS服務器IP地址,再IP轉發表中安裝默認網關的地址,讓發送給外網的數據報發送給網關。

隨後主機還要給帶着所分配的ip地址和dhcp服務器ip地址,發送一個DHCP請求報文。後續的底層的協議運轉不說啦,默認DHCP收到該請求報文,又返回一個DHCP ACK報文,至此主機就有ip地址使用啦。

仍在準備:DNS、ARP

此時我的主機默默訪問了google.com,這時候由於主機的瀏覽器並沒有訪問過,沒有記錄下該url的ip地址,所以需要獲取該url的ip地址。這就要用到DNS服務器了
主機動作:
1)生成一個DNS查詢報文,將url放入DNS報文的問題段中。
2)放入目的端口53的UDP報文中。
3)再被封裝到IP地址爲DNS服務器的ip地址、源地址爲主機ip地址的IP數據報中。
4)再封裝到以太網幀中,該幀將發送到網關路由器中,(前面說過發送到外網的數據報都會轉發到網關中),但是有個問題主機不知道網關路由器的MAC地址,唏噓,又要用到一個協議ARP協議。
主機動作:
1)生成一個ip地址爲網關ip地址的ARP查詢報文。
2)將其放入具有廣播地址的(FF:FF:FF:FF:FF:FF)的以太網幀中廣播
網關路由器動作:
1)網關路由器收到該ARP查詢報文的幀,發現ARP報文的目的ip地址和本接口的ip地址一樣,所以準備一個ARP回答,指定MAC的地址對應本機的ip地址,然後將該ARP回答放在一個以太網幀中,目的MAC地址是我的主機,然後向交換機發送該幀
主機動作:
1)終於。。。。。竹節終於拿到了網關的MAC地址,終於可以發送DNS查詢報文了=。=

仍在準備:域內路由選擇到DNS服務器

1)收到該幀並且抽取包含DNS查詢的IP數據報。路由器查找該數據報的目的地址,根據轉發錶轉發到合適的路由器中。
2)DNS服務器收到了查詢報文,生成一條DNS回答報文,將其DNS回答放入UDP報文段中,放入尋址到主機的IP數據報中。
3)最終到達主機,成功拿到url對應的ip地址。

終於可以衝浪了

此時萬事具備,只差一手TCP連接,即可上google衝浪。
第一次握手:
客戶端主動打開,發送連接請求報文段(SYN報文),SYN標識位置爲1,Sequence Number會被設置爲一個隨機值,然後客戶端進入SYN_SEND狀態,同步已發送狀態
第二次握手:
服務器收到SYN報文段進行確認,將SYN標識位置爲1,ACK置爲1,Sequence Number置爲y,這裏是Acknowledgment Number置爲x+1,然後服務器進入SYN_RECV狀態,並且爲這個狀態被稱爲半連接狀態,會在第三次握手之前爲該TCP連接分配TCP緩存和變量,並將該TCP連接放入半連接隊列。此處服務器容易收到SYN攻擊。
第三次握手:
客戶端再進行一次確認,將ACK置爲1,Sequence Number置爲x+1,Acknowledgment Number置爲y+1,最後客戶端與服務器都進入ESTABLISHED狀態,已建立連接狀態,第三次連接可以在報文段負載中攜帶數據了。
最後TCP連接建立,主機向谷歌的http服務器請求一個get報文,然後谷歌的服務器生成一個http響應報文,將請求的頁面放入http響應體中,並將報文發送到TCP套接字。主機收到後,終於終於有頁面顯示了。

總結:

應用層:http 應用進程間通信和交互的規則。
運輸層:udp、tcp 對應的端口 多路複用/多路分解,即提供端口來區分不同進程
網絡層:ip 對應ip地址 根據ip地址傳輸報文,提供ip地址區分不同的區域的網絡
鏈路層:以太網 對應MAC地址 根據mac地址傳說幀,提供mac地址區分不同主機

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章