協議簡史:如何學習網絡協議?

大學時,學到網絡協議的7層模型時,老師教了你們一個順口溜:物數網傳會表應。並說這是重點,年年必考,5分的題目擺在這裏,大家愛背不背。面試

考試的時候,果真遇到這個問題,搜索枯腸,只能想到這7個字的第一個字,由於這5分,差點掛科。ajax

後來工做面試,面試官也是很喜歡七層模型,三次握手之類的問題,可是遇到這些問題時,老是以爲很心虛。網絡

1. 協議分層

四層網絡協議模型中,應用層如下通常都是交給操做系統來處理。應用層對於四層模型來講,僅僅是冰山一角。海面下巨複雜的三層協議,都被操做系統給隱藏起來了,通常咱們在頁面上發起一個ajax請求,看見了network面板多了一個http請求,至於底層是如何實現的,咱們並不關心。架構

應⽤層
運輸層
網絡層
鏈路層

下面重點講一下運輸層和網絡層併發

1.1. 運輸層的兩兄弟

運輸層有兩個比較重要的協議。tcp和udp。tcp

大哥tcp是比較 嚴謹認真、溫柔體貼、慢熱內向 的協議,發出去的消息,老是一個一個認真檢查,等待對方回覆和確認,若是一段時間內,對方沒有回覆確認消息,還會再次發送消息,若是對方回覆說你發的太快了,tcp還會體貼的把發送消息的速度下降。分佈式

弟弟udp則比較可愛呆萌、調皮好動、不負責任的協議。哥哥tcp所具備的特色,弟弟udp一個也沒有。可是 有的人說不清哪裏好 但就是誰都替代不了 ,udp沒有tcp那些複雜的校驗和重傳等複雜的步驟,因此它發送消息很是快,並且並不保證對方必定收到。若是對方收不到消息,那麼udp就會呆萌的看着你,笑着對你說: 我已經盡力了 。通常語音而視頻數據都是用udp協議傳輸的,由於音頻或者視頻卡了一下並不影響總體的質量,而對實時性的要求會更高。微服務

1.2. 運輸層和網絡層的區別

運輸層關注的是端到端層面
網絡層關注兩點之間的層面
網絡層並不保證消息可靠性

從下圖tcp, udp, ip協議中,能夠發現高併發

  • 傳輸層的tcp和udp都是有源端口和目的端口,可是沒有ip字段
  • 源ip和目的ip只在ip數據報中
  • 理解各個協議,關鍵在於理解報文的各個字段的含義

1.3. ip和端口號的真正含義

上個章節講到運輸層和網絡層的區別,其中端口號被封裝在運輸層,ip被封裝到網絡成,源碼分析

那麼端口號和ip地址到底有什麼區別呢?

  • ip用來用來標記主機的位置
  • 端口號用來標記該數據應該被目標主機上的哪一個應用程序去處理

1.4. 數據在協議棧的流動 封裝與分用

  • 當發送消息時,數據在向下傳遞時,通過不一樣層次的協議處理,打上各類頭部信息
  • 當接受消息時,數據在向上傳遞,經過不一樣的頭部信息字段,才知道要交給上層的那個模塊來處理。好比一個ip包,若是沒有頭部信息,那麼這個消息到底是交給tcp協議來處理,仍是udp來處理,就不得而知了

想免費學習Java工程化、分佈式架構、高併發、高性能、深刻淺出、微服務架構、Spring,MyBatis,Netty源碼分析等技術的朋友,能夠加羣:479499375,羣裏有阿里大牛直播講解技術,以及Java大型互聯網技術的視頻免費分享給你們,歡迎進羣一塊兒深刻交流學習。

2. 深刻閱讀,好書推薦

有人說這本書太厚,偷偷告訴你,其實這本書並厚,由於這本書的後面的30%部分都是附錄,這本書的精華是前50%的部分
這兩本圖解的書,知識點講的都是比較通俗易懂的,適合入門
這本書,讓你知其然,更知其因此然
這兩本書,會讓你從不一樣角度思考協議
若是你看了不少書,卻歷來沒有試過網絡抓包,那你只是懂紙上談兵罷了。你永遠沒法理解tcp三次握手的怦然
相關文章
相關標籤/搜索