第6章:請求到達Web服務器,相應返回瀏覽器

1.客戶端和服務器的區別
(1)硬件和操作系統不同。
(2)TCP/IP的功能相同,但是用法不同,客戶端用來發起連接,而服務器端要等待連接。即應用程序調用Socket庫的程序組件不同。
(3)服務器程序可以同時和多臺客戶端計算機進行通信。
(4)雖然有很多不同,但是客戶端計算機也可以用來當作服務器使用,只是性能和可靠性比較差。

2.使用描述符代替套接字的原因
(1)等待連接的套接字中沒有客戶端IP地址和端口號,無法確定套接字。
(2)使用描述符這一消息比較簡單。

3.連接中網卡的作用
(1)網卡的MAC模塊將網絡包從信號還原成數字信息,校驗FCS(幀校驗序列)並存入緩存區。
(2)網卡驅動會根據MAC頭部判斷協議類型,並將包交給相應的協議棧。

4.IP模塊的接收操作
協議棧的IP模塊會檢查IP頭部
(1)判斷是不是發給自己的。
(2)判斷網絡包是否經過分片。
(3)將包轉給TCP模塊或者UDP模塊。

5.TCP模塊如何處理連接包
如果收到的包是連接包,則TCP模塊會
(1)確認TCP頭部的控制位SYN。
(2)檢查接收方端口號。
(3)爲相應的等待連接套接字複製一個新的副本。
(4)記錄發送方Ip地址和端口號等信息。

6.TCP模塊如何處理數據包
收到數據包時,TCP模塊會
(1)根據收到包的發送方IP地址、端口號、接收方IP地址、端口號找到相應的套接字。
(2)將數據塊拼合起來保存在接收緩存區中。
(3)向客戶端返回ACK。
注意:
*(1)服務器向客戶端的響應消息,和客戶端向服務器發起的請求消息不一定通過相同的路由傳輸。具體走哪條路由,是通過路由器的路由表和交換機的地址表的配置決定的。
*

總結:網絡包的旅程
(1)首先,用戶輸入網址。
(2)瀏覽器解析網址,生成http消息並轉交給Socket庫。
(3)Socket庫將收到的http消息作爲數據交給協議棧。
(4)TCP按照網絡包的長度對數據進行拆分,在每個包前面加上TCP頭部並交給IP。
(5)IP在TCP包前面加上IP頭部,然後查詢MAC地址並加上MAC頭部,然後將包交給網卡驅動。
(6)網卡驅動收到IP發來的包,將其交給網卡併發出發送指令。
(7)網卡檢查以太網的可發送狀態,將包轉換成電信號通過雙絞線發送出去。
(8)信號通過雙絞線到達集線器。
(9)集線器將信號廣播到所有端口,這樣信號便到達交換機。
(10)交換機根據收到的包的接收方MAC地址查詢自身的地址表找到輸出端口,並將包轉發到輸出端口。
(11)互聯網接入路根據收到的包接收方IP地址查詢自身的路由表找到端口,並將包轉發到輸出端口。
(12)互聯網接入路由器輸出互聯網的包帶有PPPoE頭部和PPP頭部。
(13)ADSL Modem將收到的包拆分成ATM信元。
(14)ADSL Modem將拆分後的ATM信元轉換成電信號通過電話線發送出去。
(15)ADSL Modem發送的信號經過電線杆上的電話線到達電話局的DSLAM(局端多路Modem)。
(16)DSLAM將收到的電信號還原成ATM信元併發送給BAS。
(17)BAS將ATM信元還原成網絡包,根據接收方IP地址進行轉發。
(18)BAS轉發的包被加上L2TP頭部並通過隧道。
(19)網絡包到達位於隧道出口的隧道路由器,L2TP頭部和PPP頭部被丟棄,通過互聯網流向Web服務器。
(20)服務器的局域網中有防火牆,對進入的包進行檢查,判斷是否允許通過。
(21)Web服務器前面如果有緩存服務器,會攔截通過防火牆的包。如果用戶請求的頁面已經緩存在服務器上,則代替服務器向用戶返回頁面數據。
(22)如果請求的頁面沒有被緩存,緩存服務器會將請求轉發給Web服務器。
(23)Web服務器收到包後,網卡和網卡驅動會接收這個包並轉發給Web服務器。
(24)協議棧依次檢查IP頭部和TCP頭部,如果沒有問題則取出HTTP消息的數據塊並進行組裝。
(25)HTTP消息被恢復成原始狀態,然後通過Socket庫轉交給Web服務器。
(26)Web服務器分析http消息的內容,並根據請求內容將讀取的數據返回客戶端。

發佈了17 篇原創文章 · 獲贊 55 · 訪問量 4437
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章