基礎 | 你必須得會網絡知識之初識HTTP
本文轉載自微信公眾號「前端萬有引力」,作者一川。轉載本文請聯系前端萬有引力公眾號。
寫在前面
秋招已經開始,校招筆試面試環節經常考察《計算機網絡》、《操作系統》、《數據庫原理》等計算機基礎知識,對于應屆生而言這是必須掌握的技能。已經工作的伙伴在技術發展遇到瓶頸,不妨將基礎再進行鞏固,才能讓自己走得更遠。
初識HTTP
HTTP協議
瀏覽器的簡易原理圖
HTTP:超文本傳輸協議(HTTP)是一種通信協議,它允許將超文本標記語言文檔從web服務器傳送到客戶端的瀏覽器。HTTP協議是構建在TCP/IP協議之上的,是TCP/IP協議的一個子集。
TCP/IP族:TCP/IP協議是一系列與互聯網相關聯的協議集合的總成,分層管理是TCP/IP協議的重要特征。TCP/IP族通常由應用層、傳輸層、網絡層以及數據鏈路層構成的系統。
計算機網絡的分層
應用層:應用層一般是編寫的應用程序,決定向用戶提供什么應用服務。可以通過系統調用與傳輸層進行通信,比如:FTP、DNS、HTTP等。
傳輸層:傳輸層是通過系統調用向應用層提供處于網絡連接中的兩臺計算機之間的數據傳輸功能。傳輸層具有兩個不同性質的協議:TCP和UDP。TCP是面向連接的,可靠的,效率低。UDP是無連接的,可靠性低,效率高
網絡層:網絡層是用于處理在網絡上流動的數據包,而數據包是網絡傳輸的最小數據單位。此層規定了通過什么路徑(傳輸路線)到達對方對方計算機,并把數據包傳輸給對方。
鏈路層:鏈路層用于處理連接網絡的硬件部分,包括控制操作系統、硬件設備驅動、NIC網絡適配器以及光纖等物理可見部分。硬件上的范疇均在鏈路層的作用范圍內。
數據包的封裝過程
HTTP的傳輸過程
在發送端發送數據時,數據會從上層傳輸到下層,且每經過一層都會被打上該層的頭部信息。而接收端接收數據時,數據會從下層傳輸到上層,傳輸前會把下層的頭部信息刪除。
在下圖中,當你想在瀏覽器查看某個頁面時,會在應用層發起一個HTTP請求,通過傳輸層的TCP協議進行分割HTTP報文,并為每個報文打上標記序號、端口號等信息后發送到網絡層。在網絡層通過IP協議為每個報文增加作為通訊目的地的MAC地址,然后轉發給鏈路層,接收端的服務器在鏈路層接收請求的HTTP數據。在服務器返回到瀏覽器的流程則是相反的。
HTTP數據傳輸過程
TCP的三次握手
使用TCP協議進行通信的雙方必須先建立連接,然后才能開始傳輸數據。為了確保連接雙方的可靠性,在雙方建立連接時,TCP協議會采用三次握手策略。
第一次握手:客戶端發送帶有SYN標志的連接請求報文段,然后進入SYN_SEND狀態,等待服務端的確認。
第二次握手:服務端接受到客戶端的SYN報文段后,需要發送ACK信息對這個SYN報文段進行確認,同時還要發送自己的SYN請求信息。服務端會將上述的信息放到一個報文段(SYN+ACK報文段)中,一并發送給客戶端,此時服務端將會進入SYN_SEND狀態。
第三次握手:客戶端接收到服務端的SYN+ACK報文段后,會向服務端發送ACK確認報文段,這個報文段發送完畢后,客戶端和服務端都進入ESTABLISHED狀態,完成TCP三次握手。
客戶端與服務端之間的三次握手
講到這里,通常會有疑問:為什么TCP協議要進行三次握手而不是兩次呢?
這是因為要建立可靠的通信,首先客戶端和服務端都得確保對方具有完整的收發能力。第一次握手客戶端發送請求報文給服務端,服務端可以確認客戶端的發送能力是正常的以及服務端的接收能力是正常的;第二次握手客戶端接收到服務端返回的報文信息,可以確認服務端的收發能力是正常的,同時客戶端的收發能力是正常的;第三次握手客戶端再次向服務端發送確認信息,此時服務端可以確認客戶端的接收報文的能力和服務端的發送能力是正常。最后能夠確認雙方的收發能力是正常的,因此需要進行三次握手,而兩次握手是不能彼此確認雙方的收發能力是否正常。
DNS域名解析
在上面的知識點中,我們知道與HTTP有著密切聯系的TCP/IP協議,而DNS服務與HTTP協議也有著密不可分的關系。
比如說你要訪問百度www.baidu.com,可以使用主機名100.100.10.10或者域名www.baidu.com進行訪問,但是相比于一串純數字的IP地址而言,使用域名更容易讓人記住和訪問。要知道在計算機網絡中TCP/IP協議使用的就是IP地址進行訪問,因此需要通過一種機制將域名轉換為IP地址。而 DNS服務正是用于解決這個問題的,可以提供域名到IP地址之間的解析服務,其實就像我們打電話時查閱通訊錄一樣。
DNS域名解析過程
如圖所示,當我們在瀏覽器輸入www.baidu.com時,具體細節如下:
① TCP/IP協議會先去訪問本地域名解析器,當搜索到對應的IP地址則直接返回到客戶端,客戶端則直接向服務端發起HTTP請求;而當沒有搜索到www.baidu.com對應的IP地址時,則向上溯源,查找上一級域名解析器
② TCP/IP協議訪問根域名服務器搜索對應的IP地址,若同樣的搜索通過則沿原路返回到客戶端;若沒有搜索到則繼續溯源搜尋
③ TCP/IP協議一直溯源搜尋直至頂級域名服務器,搜尋沿原路返回,否則則告知客戶端沒有此域名
HTTP事務處理過程
當客戶端訪問WEB站點時,首先會用過DNS服務查詢到域名對應的IP地址,返回到客戶端生成HTTP請求,通過TCP/IP協議發送給WEB服務器。WEB服務器接收到請求后,會根據請求生成相應內容,并通過TCP/IP協議返回到客戶端。
HTTP事務處理過程
參考資料
- 《超詳細 DNS 協議解析》
- 《圖解HTTP》
- 《計算機網絡》
- 慕課網《編程必備基礎-大話HTTP協議》



































