當我們在瀏覽器中輸入連結https://www.baidu.com/
時, 就會百度的首頁展示到瀏覽器頁面中, Web瀏覽器中的內容不是憑空而來的, 它是通過在瀏覽器位址列的URL向伺服器獲取到資料以後, 將資料展示到介面上.
Web瀏覽器稱為客戶端, 而伺服器則稱為服務端, 客戶端和服務端之間的通訊需要建立在一定的規則基礎上, 才能進行通訊, Web採用HTTP的協議規範進行傳輸, 完成從客戶端傳送請求, 到服務端響應資料的一系列流程.
HTTP(HyperText Transfer Protocol) 通常被譯為超文字傳輸協議.
TCP/IP協議族
我們使用的網路是在TCP/IP協議族的基礎上運作的, 而HTTP協議指數屬於它的一個子集, TCP/IP協議是網際網路相關的各類協議族的總稱.
TCP/IP協議族中最重要的一點是分層管理, 按照層次劃分為:應用層, 傳輸層, 網路層, 資料鏈路層.
- 應用層:決定了向使用者提供應用服務時的通訊活動, HTTP協議位於應用層.
- 傳輸層:上層為應用層, 提供處於網路連線中的兩臺計算機之間的資料傳輸, TCP和UPD協議位於傳輸層.
- 網路層:用來處理在網路中流動的資料包, 資料包是網路傳輸的最小單位, 該層規定了通過怎樣的路徑(所謂的傳輸線路)到達對方計算機, 並把資料包傳送給對方.
- 鏈路層(資料鏈路層):用來處理連線網路的硬體部分, 包括控制作業系統、硬體的裝置驅動、NIC(網路卡),以及光纖等物理可見裝置。硬體上的範疇均在鏈路層的作用範圍之內.
在傳送端應用層傳送一個HTTP請求, 為了傳輸方便, 在傳輸層使用TCP協議將從應用層接收到的HTTP請求報文進行分割, 並在各個報文上打上標記序號以及埠號後(IP資料包)轉發給網路層, 在網路層使用IP協議增加作為通訊目的地的MAC地址後轉發給鏈路層(網路之間的通訊其實是MAC地址之間的通訊), 此時發往網路的通訊請求已經準備完畢. 接收端在鏈路層接收到資料以後, 按照層級向上傳輸, 一直到應用層.
IP協議
IP(Internet Protocol)協議位於網路層, IP協議的作用是將各種資料包傳遞給對方, 但是要傳輸到哪裡,就需要指定IP和MAC(Media Access Control Address)地址. IP地址指明瞭節點被分配到的地址, MAC地址是指網路卡所屬的固定地址. IP和MAC配對使用, IP可更改, MAC基本不會變. IP間的通訊以來MAC地址, 我們再Web瀏覽器中訪問百度官網時, 經過了無數個網路裝置進行中轉才能訪問到. 而在進行中轉時, 會利用ARP(Address Resolution Protocol)協議搜尋以一箇中轉目標. ARP是一種地址解析協議, 根據IP地址可以反查出對應的MAC地址.
確保安全的TCP協議
TCP協議位於傳輸層, 提供可靠的位元組流傳輸, 位元組流服務是指為了傳輸方便,將大塊資料分割成報文段(segment)為單位的資料包進行管理, TCP協議為了更容易傳送大資料才把資料分割,而且可以確保資料送達.
TCP協議為了確保資料安全送達目標出, 採用了三次握手策略, TCP將資料包傳送出去以後不會置之不理, 一定會確認資料是否成功送達. 客戶端傳送一個帶有SYN標誌的資料包給服務端, 在服務端接收到資料以後, 回傳一個帶有SYN/ACK標誌的資料包以傳達確認資訊, 最後客戶端回傳一個帶有ACK標誌的資料包, 表示握手結束.
DNS域名解析
DNS位於應用層的協議, 提供域名和IP地址之間的解析服務.
使用者通過域名來訪問伺服器, 而不是通過IP地址來訪問, 例如百度的域名為https://www.baidu.com/
, 而其IP地址為119.75.217.109
, 相比純數字而言, 字母配合數字的表示形式更好記.