瞭解Web及網絡基礎

在面試中經常會問一些關於TCP/IP和HTTP/HTTPS相關的問題,在工作中雖然可以用okhttp之類的庫,但是必須要有基礎才能把庫的實現瞭解清楚,才能更好的處理網絡問題。所以在這系列的博文中記錄下學習的內容。

網絡通信是需要一個統一的規則的,這樣纔可以在不同硬件、操作系統之間通信,這個規則稱爲協議。各種協議集合統稱爲TCP/IP。
TCP/IP協議族裏重要的一點就是分層,可以分爲4層:應用層、傳輸層、網絡層和數據鏈路層。(爲什麼要分層呢?這就像編程裏的常常說得MVC/MVP模式,把不同的內容分離開,方便日後維護,網絡分層也一樣,如果沒有分層,在需要改變設計的時候,就必須把所有部分整體替換掉,而分層之後只需要把變動的層替換掉即可,並且不需要管其它層的實現、是否能確保傳輸送達等問題)。

  1. 應用層:有我們熟悉的HTTP、HTTPS和FTP、DNS等,應用的網絡編程就是在這一層,所以要重點關注,其中HTTP的職責是生成針對目標WEB服務器的HTTP請求報文。
  2. 傳輸層:有兩種性質不同的協議TCP/UDP,這兩種不同的協議來告訴網絡數據傳輸的方式,也需要重點關注下,主要工作原理是把應用層收到的數據(HTTP請求報文)進行分割成多個報文段,並在各報文上打上標記序號及端口號後轉發給網絡層,其中TCP會進行可靠性傳遞(三次握手)。
  3. 網絡層:即IP層,用來處理在網絡上流動的數據包,即是搜索對方的地址,並把數據包傳輸給對方, 根據ARP協議來把IP地址反差出對應的MAC地址。
  4. 鏈路層:用來連接網絡的硬件部分,網絡適配器、網卡等,瞭解即可。

這裏寫圖片描述

發送端在各層之間傳輸數據時,每經過一層時會被打上一個該層所屬的首部信息,反之,接收端在層與層傳輸數據時,每經過一層時會把對應的首部消去。
這裏寫圖片描述

TCP是一種可靠的協議,爲了確保可靠,TCP協議採用了三次握手策略,如果在握手的過程中某個階段莫名中斷,TCP協議會再次以相同的順序發送相同的數據包。

第一次握手:客戶端向服務端發送一個SYN包
第二次握手:服務端接收到客戶端的SYN包進行確認,併發送ACK+SYN包
第三次握手:客戶端收到服務端的ACK+SYN包後向服務端發送ACK包**

這裏寫圖片描述

DNS(Domain Name System) 位於應用層的協議,提供域名到IP地址之間的解析服務。

從在瀏覽器輸入網址到顯示網址內容經歷的步驟如下:
1. 客戶端向DNS發起域名解析,解析後返回IP給客戶端;
2. HTTP協議生成針對目標WEB服務器的HTTP請求報文;
3. TCP協議將HTTP請求報文分割成報文段,按序號分爲多個報文段,把每個報文段可靠地傳遞給對方;
4. IP協議層負責搜索對方的地址,一邊中轉一邊傳送;
5. 服務器端的TCP層按序號以原來的順序重組請求報文;
6. 服務器端地HTTP層對請求的內容進行處理;

這裏寫圖片描述

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