1. 程式人生 > >讀《網路是怎樣連線的》第六章 總結

讀《網路是怎樣連線的》第六章 總結

這章可以說是非常簡單了,基本都是之前的東西.那麼,我們開始吧.

 

第五章我們知道了資料包最終都是要到達web伺服器的,不管是用了負載均衡技術還是快取的技術, 其 讓使用者接收的的響應資料都是通過 web伺服器產生的, 那麼,我們這一章就聊聊 資料包到達了 web伺服器發生了什麼吧.

 

  • 伺服器與客戶端的區別
  • 複習以下如何接收包
  • web伺服器如何形成響應資料
  • 瀏覽器得到了相應資料,如何生成顯示內容

 

一. 伺服器端與 客戶端有什麼區別呢?

 

嗯哈,很明顯,效能就是巨大的區別 啊,,,但是,,我們先不關注這個,我們看看tcp連線 與 收發資料包 的層面,兩者有什麼區別.

tcp 連線層面:

在這個層面,  我們知道,  兩端通訊, 首先各自都要生成表示 自身的 socket識別符號.  (客戶端的埠號按應用不同而設定,伺服器端的埠號根據規則設定,如web伺服器就設定80)

 

然後,客戶端向伺服器端傳送SYN=1的tcp控制訊號(還有像序號、視窗大小等東西)。

 

在客戶端進行一系列騷操作之前, 伺服器端 需要先監聽連線, 發現有人在試圖連線後,就把我們原先在伺服器端建立的socket 識別符號複製產生一個 新的套接字,然後把客戶端傳送過來的配置資訊放進去(如,客戶端的ip、埠、需要、視窗大小等),

 

 之後, 這個socket需要 給 客戶端返回一個tcp控制資訊 的響應,(ack=1 、 序號、視窗大小等高速客戶端),然後客戶端再返回一個確認響應就好了.

 

收發資料包:   

這個與客戶端是完全一樣的,   因為不管 伺服器的硬體和作業系統如何變化 ,其網路服務的元件都是一樣的,不然網路就太複雜了.

所以,伺服器收發資料包 也是用的網絡卡.

 

二. 接收資料包

複習一下:

網卡里的MAC模組在    PHY把 網路中傳輸的訊號轉換成一般的 電訊號後,  就進行了如下操作:

 

1.接收電訊號, 並把電訊號轉換成數字訊號( 利用報頭中的時鐘訊號)

2.利用 FCS進行校驗. (正確,則進行下一步,否則就丟棄該包)

3.檢測MAC首部。的MAC接收地址是不是MAC 模組中的MAC地址,不是就丟掉, 是的話就放入 網絡卡的緩衝區中.

 

ok,接下去就看看誰在接力了:

 

在資料在緩衝區後, 中斷程式告知cpu ,資料到了,你來取一下, cpu知道後,就中斷當前的工作, 呼叫網絡卡驅動程式衝網絡卡的快取中讀資料, 並根據 MAC中的乙太網型別判斷協議種類,  把資料送給處理該協議的軟體(如IP協議 就——》TCP/IP協議棧)

 

再之後呢?

ip 模組在接力:

1.看看 ip是不是發給自己的(不是就轉發出去)

2.網路包是否經過分片(等所有分片全部到達後組裝回原來的 原始包)

3.檢測ip頭部的協議欄位(tcp就是06),那麼就把包給TCP模組處理

 

不慌,TCP模組在操作:

1.根據收到的包的放鬆方IP和埠, 接收方的ip和埠, 在 套接字表中找到對應要通訊 的是 哪個套接字

 

2.將資料塊拼合起來放在接收緩衝區中(檢查傳送的序號, 序號正確就把包放入緩衝區拼接起來)

3.返回ACK

 

這時,資料都存到了緩衝裡面,接下來,應用程式會呼叫Socket.read() 把資料取走,然後分析資料,作出響應.

 

三. 如何形成響應

 

先不急著做響應, 我們起碼得先看看請求的是什麼,  如果是文字(html、、、),那麼我們直接從檔案中讀取文件,然後將其作為響應訊息返回就好了, 如果是CGI程式( 不太明白 ), 那麼 我們就要執行這個程式,把必要的引數傳給它,然後把程式執行結束產生的資料嵌入HTML文件 作為響應返回.

 

補: web伺服器的訪問控制

就是 我們訪問的目錄其實是假的,是虛擬目錄,  在我們所看到的根目錄之外其實還有其他目錄存在,不過我們被限制了訪問罷了.

 

三種 訪問控制的規則:

1.客戶端ip

2.客戶端域名

 

3.使用者名稱和密碼

 

只有滿足條件的客戶端可以訪問伺服器的資料.

 

四. 瀏覽器如何顯示內容

要顯示內容,首先要看看響應訊息中的資料屬於哪種型別,web可以處理的型別包括 文字、影象、聲音和視訊等.每種型別的顯示方式都不同,所以先確定資料的型別才行.

 

瀏覽器檢視響應頭, 響應頭中有個存在  名為 Content-Type : text/html。 (左邊為 主型別, 右邊為 子型別)

 

ok,接下來我們看看具體如何顯示內容:

對於圖片文字這類的資料,瀏覽器可以自行顯示:     瀏覽器解釋標籤的含義,按照指定的樣式顯示文件內容,實際的顯示操作由作業系統完成, 瀏覽器負載對作業系統發出指令.

 

對於其他內容的資料(eg: ppt),瀏覽器會呼叫相應的程式來幫忙.  將資料傳給幫忙的程式,然後改程式負責顯示相應的內容.

 

 

嗯哈,這本書結束啦,雖然寫部落格挺花時間,但感覺還不錯

✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️