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


服務器收到這個消息后,就會把x+1作為ack結果,也就是返回的消息,在返回的消息中還給回客戶端一個seq為y,同樣的,這個y也是一個序號 。那么此時服務器就處于SYN_RCVD也就是接收到了消息的狀態 。
繼續 , 當客戶端收到了服務器的回信后,知道這個連接已經通知服務器建立了,于是客戶端把服務器端傳過來的seq再加1作為ack應答給服務器,并且設置當前狀態為ESTABLISHED,也就是建交成功,當服務器收到結果,一計算seq和ack沒問題,那么服務器也設置為建交成功,可以傳遞數據了 。
這就是三次握手 。那為啥要有seq和ack呢?我直接喊一聲,你答應一聲,然后我再喊一聲不就完事了么,非要加一加一干啥啊 。
嗯~這是為了記錄當前的包是從哪開始的,你想像一下,在馬路上跑的車有很多 , 有的車可能跑丟了,或者跑到別的國家了,壓根不回來了,你咋整?所以TCP每發一個包都會記錄一下,也就是遞增1 , 你的seq和ack是要屬于本次請求要求遞增的包序號才算是屬于本次建交的應答和響應 。
那么接下來就要開始傳輸數據了 , 應用層把HTTP數據包都準備好了,已經迫不及待要出發了,那么到了TCP這一層后,TCP會往這個包里加點東西:

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

文章插圖
TCP會在應用層的HTTP包的基礎上再加上TCP頭,這里面包含了源端口號和目標端口號,有了端口號,我們就可以確定目標端口號從而找到目標應用,當信息返回的時候還會用到源端口號 , 這個我們后面再說 。
第三層/網絡層:5號樓2單元101?網絡層提供路由和尋址的能力 , 由于在TCP/IP協議族中,網絡層的能力由IP協議來實現 , 所以又稱為網絡層又可以叫做IP層 。
但是網絡層可不僅僅只有IP協議,還有比如ICMP(互聯網控制消息協議)、IGMP(互聯網組管理協議)、BGP(邊界網關協議)、RIP(路由信息協議)、OSPF(開放式最短路徑優先協議)、RARP(逆地址解析協議)等等 。我們簡單了解下就可了 。
還是說回IP協議 , IP的主要任務其實很簡單 , 就是根據源主機和目的主機的地址來傳遞數據 。當數據包到了三層之后,就會把源主機和目的主機的IP地址再加入到數據包中傳給第二層 。
真正“搞”懂HTTP協議02之空間穿梭

文章插圖
而這一層的IP頭,形象的比喻一下的話 , 就像是我們所在小區的樓牌號,有了樓牌號我們就能找到具體的人 。在互聯網中,有了IP才可以找到具體是哪一臺機器 。
當然,我們僅僅只知道樓牌號還不行,還得知道是哪個省市區的,北京的某某一小區和南京的某某小區,極大的可能會有同一個樓牌號,這肯定不行 。
所以我們就得來到下一層,也就是鏈路層來解決省市區的問題了 。
第二層/鏈路層:跳一跳鏈路層的主要作用是在局域網中專職處理介質的爭用與沖突問題 。換句話說,就是我到了這個小區 , 要把快遞給誰的問題 。而鏈路層的協議其實也不少,其中還有不少大家耳熟能詳的協議,比如GPRS,Wi-Fi都是鏈路層協議,當然還有很多 , 有興趣大家可以自行了解 。
鏈路層也可以叫做MAC層,MAC的全稱叫做Medium Access Control,媒體訪問控制,它要控制啥呢?其實就是控制數據發送的順序和目標 , 誰先發,誰后發 , 誰來接收誰來發送的問題 , 不能搞亂了 。
當數據傳遞到MAC層后,MAC層會再加上一個MAC頭,這里有源MAC地址和目標MAC地址:
真正“搞”懂HTTP協議02之空間穿梭

文章插圖
按理來說?。?到這后面就是一片坦途的到達目標服務器了,但是數據包的旅程其實才剛剛開始 。
當數據包出了網關之后,也就是出了我們的小區,你的小區會告訴這個數據包下一個小區要去哪,一個小區一個小區的跳啊跳,最終才會到達我們的目的地,那你可能會問,我直接讓我的小區告訴我直接要到哪個小區不行么 , 為啥只能一個一個的跳來跳去的呢,嗯……因為全世界的小區數量太大,你的小區記不了那么多 。
第一層/物理層:世界的基石到了物理層,實際上就脫離了軟件層面,是實實在在的可以接觸到的電子設備了 , 比如光纖,同軸電纜,雙絞線等等 , 嗯……它們是干啥的我都不知道,我也不告訴你 。
到了物理層后,數據最終會到達服務器,然后再反過來經歷剛才的階段,層層解開數據包,獲取當前層所需要的信息,最終定位到目標應用的端口號,此時 , 我們包的旅程才算是真正的完成了 。

推薦閱讀