真正“搞”懂HTTP協議02之空間穿梭( 三 )

  • SMTP(簡單郵遞發送協議:通常用作發送電子郵件信息)
  • POP3(郵局協議:主要用于支持使用客戶端遠程管理在服務器上的電子郵件)
  • Whois(是用來查詢互聯網中的域名的ip以及所有者等信息的傳輸協議)
  • 等等 , 當然還有很多很多 。
    其中有一部分我們會在本系列中粗略的講講,比如DNS、SSH啥的,剩下的與HTTP關聯性不大的,大家有興趣可以自行了解 。
    在應用層的階段,我們講HTTP嘛,所以就以HTTP為例 , 會形成一個數據包,這個數據包有哪些內容我們暫時可以不去管 。反正就是一個包 。
    當應用層準備好了這個包以后,會把它發往**目標地址** 。那么第一個問題來了,當我在應用層準備好數據包之后,我是直接發送么?還是要做什么準備工作?
    首先,在準備發起真正的HTTP數據包傳遞之前,瀏覽器會率先把目標地址也就是一個域名發送給DNS服務器,換取目標IP 。
    然后我們就需要進行下一步,創建TCP通道,也就是通過三次握手建立TCP鏈接 。
    欸?感覺上面的描述有點問題,我在準備好包以后再去查DNS、建立TCP鏈接,那如果我TCP鏈接建立失敗了,那我HTTP的數據包不是白處理了么?
    哇^v^,好吧,被你發現了,其實這么說確實不太準確,更準確的應該是,在準備發起HTTP請求時,就會去做準備工作,等準備工作都做好了,才會去構建請求信息,然后傳遞出去 。
    整個過程,大致如下圖所示:
    真正“搞”懂HTTP協議02之空間穿梭

    文章插圖
    第四層/傳輸層:車在路上跑,我在路邊瞧一瞧上一小小節,我們停在了與服務器建立鏈接的部分,這鏈接還沒建立完呢,你就不說話了 。嗯 。。。因為后面的事情其實與應用層的關系不大,所以我們拿到這一小節傳輸層來聊一聊 。
    傳輸層的協議數量就要比引用層少的多的多的,有點繞,哈哈哈 。
    傳輸層協議除了我們最熟悉的TCP與UDP之外,還有諸如:DCCP(數據擁塞控制協議)、SCTP(流控制傳輸協議)、RSVP(資源預留協議)等協議 。當然這些協議 , 我們了解下就好 。重點還是在TCP和UDP 。
    TCP大名叫做傳輸控制協議 , 英文名叫做Transmission Control Protocol,TCP是傳輸控制協議的英文名的縮寫 。它是一種面向連接的、可靠的、基于字節流的傳輸層通信協議 。
    可靠和基于字節流都比較好理解 , 面向連接是怎么個意思?我聽說過面向對象,面向過程,怎么還有面向連接?怎么個面向法?我在大馬路上看車來車往算是面向連接么?(不好意思,一不小心點了一下題) 。
    假如你在大馬路上看車跑來跑去,那如果這個車到了某個目的地又返回到出發點,來來回回,來來回回,那就算是面向連接,如果這車從你面前過去,不回來了,跑沒影了,那就不算 。
    好啦 , 通過一個小栗子,我們大概理解了什么是面向連接 , 簡單說就是有來有回唄 。那么有來無回呢?巧了,就是UDP協議 。
    UDP的全稱是用戶數據報協議,英文名叫做**U**ser **D**atagram **P**rotocol,它是一個簡單的面向數據包的協議 , 換句話說,就是我只負責傳輸數據包,在傳輸的過程中跑丟了 , 那就不歸我管了 。
    簡單介紹了點概念哈,我們繼續上一小節中的圖 , 在真正發送HTTP數據包之前,最重要的就是要創建TCP連接 , 但是,要注意,我們創建TCP連接時,實際上并不關應用層什么事,只是應用層需要這個連接,所以才告知TCP去建立傳輸的通道 。也就是說,沒有應用層咯?嗯 , **簡單說就是,網絡傳輸中,可以有下層,沒上層,但是不可能有上層,沒下層 。** 這個一定要注意 。
    那么創建通道的第一步,大家一定耳熟能詳,就是TCP的三次握手 。欸?為啥是三次,不是一次,不是三十次?嗯,因為三次,是雙方可以最小確認彼此的次數 。再解釋下,也就是說,是客戶端與服務器各自都可以收到一個來回的信息 , 還記得面向連接不?
    我們來看看三次握手是咋握的 。
    真正“搞”懂HTTP協議02之空間穿梭

    文章插圖
    欸?你這不對啊,你這哪有握手的過程,"與服務器建立連接"這幾個字,就代表了三次握手的內容 。當然,真正的三次握手是這樣的:
    真正“搞”懂HTTP協議02之空間穿梭

    文章插圖
    我們來看上圖哈,里面還有點東西的 。在最開始的時候,客戶端和服務器都處于關閉的狀態,然后服務器會處于監聽的狀態 。當客戶端發起第一次握手連接請求時,客戶端會設置當前的狀態為SYN_SEND的狀態 , 注意這里發送的seq=x,**這個x并不是一個隨機數,而是當前的TCP包的序號**,注意這一點,我們描述完整個過程會在說說這個序號 。

    推薦閱讀