天天看點

TCP/IP 協定大緻的概念

最近在看《圖解HTTP》和《HTTP權威指南》,對TCP/IP大緻過了一下。

  TCP/IP 不僅僅是TCP 和 IP 

  TCP/IP 是協定族,與之相對的事IEEE等标準組織設定的OSI七層。這裡面涉及到的協定有:

TCP   傳輸控制協定                     傳輸層。

IP     網際協定                           網絡層。

ARP    位址解析協定                        資料鍊路層協定。

UDP    使用者資料報協定                  傳輸層。

DNS    域名系統                      為ip綁定邏輯名稱。

HTTP   超文本傳輸協定                 應用層。

作為一名java web工程師,可以說90%涉及的工作是HTTP協定,如果做IM或者雲存儲可能會涉及到TCP+UDP。是以,HTTP和TCP,是基本功。

     為什麼要分層,要能了解,每一層的意義所在 

  作為分隔兩地的計算機系統上不同應用程式,他們之間如果需要通信,首先要知道對方是誰。

傳輸層是怎麼區分不同對象的,ip:端口。

然後我要傳輸資料,資料按照什麼方式打包送過去呢?

封包 Message,封包是什麼,是使用者自定義長度(相對于底層協定來說)的二進制資料。然後在Message前加上傳輸層封包。

傳輸層的資料到網絡層,然後網絡層是怎麼區分不同對象的,ip。

封包  Package,是我網絡層無差别地對你傳輸層大資料報進行切割的小機關。然後在package前加上網絡層封包。

網絡層到資料鍊路層,怎麼辦,這個時候,已經沒有ip了,有的是什麼,mac,真實實體世界的身份證。

分組 frame, 進一步進行切割的機關。然後在frame前加上鍊路層封包。

 可以看到,這三層的行為模式很相近。那為什麼要分為三層。 因為,資料傳輸要解決的問題太多了。通過對問題進行歸類,不同層次來專門解決不同問題。有點工業2.0,福特生産線的味道。 傳輸層,要解決的事,兩個應用程式間傳輸資料。其實問題很抽象,因為層次高。是以,隻設定兩個應用程式的位址(ip+端口)就好了。 網絡層,要解決在跨越多個網絡,長距離的情況下,我怎麼找到另外一個主機,其實核心就是路由尋址。 然後,就進入了“最後半公裡”,将ip轉換為mac,在鍊路層傳輸分組。 分層,也是大型軟體設計的工程學思想。 

       還有,每到下面一層時,一般都會進行資料切片分割?   

  

  因為需要複用。複用的場景是不同的。比如在資料鍊路層,有很多編碼方式,還有什麼頻分複用、碼分複用、時分複用等等,通過不同的編碼方式來進行複用。

  在網絡層也是,通過分片,我可以走多個通路。并行的思想。

  在傳輸層,有一個概念叫帶寬,就算我能一下把所有資料給你送過去,你機器的記憶體難道不會撐爆嗎。

             

 本文轉自二郎三郎部落格園部落格,原文連結:http://www.cnblogs.com/haore147/p/5510462.html,如需轉載請自行聯系原作者