文章目錄
- 網絡基礎
- 網絡的發展——引出一些概念
- 協議認識
- 初識協議
- 協議分層
- 協議分層的模型
- 再談協議
- 為什么要有TCP/IP協議
- TCP/IP協議的宏觀認識
- 宏觀理解TCP/IP協議和操作系統的關系
- 協議的真正本質
網絡基礎
本篇文章,我們將正式進入網絡部分的學習。這是網絡部分的第一篇文章,我們需要簡單了解一下網絡的發展歷史,引出一些概念。這利于我們后序的學習!
網絡的發展——引出一些概念
早期的網絡
早期的計算機,其實都是獨立的!即不能像我們現在一樣,通過使用某些功能,就通過網絡把對應的數據信息傳到另外一臺計算機上了!
就如上圖所示,早期的計算機是沒有網絡的概念的!
早期的計算機,那是一些比較大型的學術機構和科研機構在使用。那他們肯定是有協作需求的!但是,早期的計算機沒有辦法直接進行通信。
所以,必然的,就需要人主動參與到數據的傳送。但是,這樣的效率可想是比較低效的!
而計算機本質就是個工具,是人在使用 -> 又因為人需要寫作 -> 導致了計算機之間需要協作!
所以,網絡的產生是必然的!因為網絡就是用于計算機之間通信寫作的!這是規律。
網絡技術的發展
后來,因為有了需求,所以那些持有計算機使用的機構必然需要想辦法讓計算機之間進行通信!所以,就衍生出了一系列網絡技術。
簡單一點的辦法就是讓一臺計算機專門充當服務器,然后所有主機通過網線相連:
當然,隨著需要通信的主機變多,就衍生出了新的通信方式(局域網 LAN),也誕生新的設備(交換機、路由器):
再后來,有衍生出了廣域網(WAN)的技術:
就可以通過技術迭代升級 + 市場消費需求提升,不斷地促進網絡技術的發展。讓不同地方的人都可以通過這樣的設備來進行通信交流!
當然,WAN和LAN是一個相對的概念。比如我們知道,我們國家的網絡是和外界不太一樣的。所以,我們國家的網絡在整個世界來看,就是一個巨大的局域網!
網絡整體發展歷史
網絡,其實最早是由美國的一些科學家研究出來的,而且是軍用級別的!所以,很多國家在網絡技術上的發展其實是有一定差距的!直到上世紀90年代,美國把第一代網絡技術(阿帕網)給公布出來。這時候全世界的國家都在競相發展網絡技術!
然后就有一大批的網絡技術公司(互聯網公司)成立,研發新的技術!
但是,我們需要銘記:任何新的技術發展,都需要有新的設備!
我們不能光看到表面上的一些互聯網公司。網絡技術的發展,必然是需要大量的網絡通信設備的!所以,這些公司也是在發展,如NOKIA。
所以,這些公司可以認為是互相進步發展的!在網絡公司和通信設備制造公司中,橫亙著一個叫做運營商的角色!他們負責收購大量的通信設備,完善一些基礎設施。推廣市場。這也就是為什么現在如此多的網民的原因!
輸出結論
最后要說明的是:
1.因為人要協作 -> 計算機之間也要協作 -> 網絡的誕生是必然的!
2.網絡,是有局部發展到整體的!
協議認識
我們在網絡世界里,經常會聽到協議這個概念。這里,我們就來簡單了解一下!
初識協議
首先,協議的本質就是一種約定!
比如兩個人之間規定的暗號,聽到什么暗號就要對應做出什么回應!這種協議是雙方都看得懂的!而且都要遵守該協議。
再舉一個例子:
計算機之間的傳輸媒介是光信號和電信號. 通過 “頻率” 和 “強弱” 來表示 0 和 1 這樣的信息. 要想傳遞各種不同的信息, 就需要約定好雙方的數據格式.
但是,并不是簡單地規定好了協議雙方就能夠直接進行通信的!
比如一個中國人和一個西班牙人,雙方都聽不懂對方在說什么!雖然規定了聽到0/1應該做什么,但是,由于雙方語言的不通,導致即使知道協議規則,也不知道對方說啥,應該做啥。
所以,協議并不是簡單地約定規則,而是需要一套完善的機制!
在計算機世界中,協議并不看似只有通信的計算機需要遵守!而是計算機中對應的一整套硬件體系、操作系統都要支持某種協議。這樣子,才能進行通信!
所以,如果說世界上的所有計算機都需要通信,那么,勢必要有一種統一的協議——即網絡協議!讓所有的設備都支持該協議,進行通信!
所以,一般具有定制協議或者標準的資格的組織或者公司都必須是業界公認或者具有江湖地
位的組織或者公司!下面我們來認識一下這些組織即可:
IETF (Internet Engineering Task Force)
- 參與領域: 互聯網核心協議(如TCP/IP、HTTP、DNS、QUIC等)
- 備注: 發布RFC文檔,實際互聯網標準的主要制定者
IEEE (Institute of Electrical and Electronics Engineers)
- 參與領域:
- IEEE 802系列(以太網/Wi-Fi等局域網標準)
- 無線通信協議(如802.11ac/ax)
- ITU-T (國際電信聯盟電信標準局)
- 參與領域:
- 電信網絡標準(如光傳輸/SDH)
- 視頻編碼標準(H.26x系列)
- 5G網絡部分標準
- W3C (World Wide Web Consortium)
- 參與領域:
- Web技術標準(HTML5、CSS、WebAssembly等)
- Web安全協議(如CORS)
- 3GPP (移動通信標準化組織)
- 參與領域:
- 蜂窩網絡標準(5G/4G/LTE協議棧)
- 移動通信安全架構
- ISO (國際標準化組織)
- 參與領域:
- OSI七層模型(理論框架)
- 通用數據格式標準(如ASN.1)
- 主要科技公司貢獻
- Google:
- QUIC協議(后成為HTTP/3基礎)
- SPDY(HTTP/2前身)
- Microsoft:
- SMB文件共享協議
- Active Directory相關協議
- Cisco:
- 路由協議(如EIGRP)
- 網絡設備管理協議
- Mozilla/Apple/Google:
- 聯合推動WebRTC標準
規定了相關的協議后,只要是需要參與網絡通信的設別,都需要支持這種通用的協議!
協議分層
如果有學過《計算機網絡》這門課程的同學就知道,網絡通信是被分層的:
如常見的兩種模型!OSI模型和TCP/IP模型!
我們肯定會有一個疑問,為什么要分層?有什么好處嗎?
我們回看一下這一張圖——操作系統體系結構圖:
我們知道,操作系統是一款管理計算機中軟硬件資源的軟件!它的設計就是分層的,為什么?
因為這樣子可以明確每一層的任務職能,還能最大程度上地解耦合!
所以,我們至少可以知道一點:網絡協議地分層是滿足高內聚、低耦合的!
輸出結論:
- 網絡協議分層,被稱為網絡協議棧!
- 網絡協議本質也是軟件,在設計上為了更好的進行模塊化,解耦合,也是被設計成為
層狀結構的!在未來的開發中,亦是如此!
這里的兩個結論目前是沒辦法解釋!我們等到后面部分再來細說!!!
這里來看一個例子:
即兩個人打電話的過程:
在我們打電話的用戶來看,就是兩個人拿著電話在進行對話!
但是,在實現電話功能的工程師看來,打電話沒有那么簡單!而是先要一方說話,把信息傳遞給底層通信層,然后通信層通過某種協議發送給另一臺電話的通信層。然后再處理后交付給另外一邊的用戶!
但是,如果通信設備需要替換了呢?如果不進行分層解耦,如果說我們發出聲音會直接影響到底層設備的通信,那么就沒那么容易替換了!
這就好比我們在操作系統中:如果操作系統中文件管理模塊和進程管理模塊有大量直接交互,那么想要修改代碼那是很麻煩的!
所以,分層的最大好處就是——在設計上為了更好的進行模塊化,解耦合
協議分層的模型
協議分層的模型,最常用的,也是大部分遵守的標準:
OSI模型 或 TCP/IP模型
OSI模型:
- OSI(Open System Interconnection,開放系統互連)七層網絡模型稱為開放式系統互聯參考模型,是一個邏輯上的定義和規范;
- 把網絡從邏輯上分為了7層,每一層都有相關、相對應的物理設備,比如路由器、交換機;
- OSI七層模型是一種框架性的設計方法,其最主要的功能是幫助不同類型的主機實現數據傳輸;
- 它的最大優點是將服務、接口和協議這三個概念明確地區分開來,概念清楚,理論也比較完整。通過七個層次化的結構模型使不同的系統、不同的網絡之間實現可靠的通訊;
- 但是,它既復雜又不實用,所以我們按照TCP/IP模型來講解。
其實,OSI協議規定的非常好!但是,實現起來是非常復雜的!所以更多的時候,都是使用的TCP/IP協議!這個協議是五層的。
TCP/IP模型:
TCP/IP 是一組協議的代名詞,它還包括許多協議,組成了 TCP/IP 協議簇。TCP/IP 通訊協議采用了 5 層的層級結構,每一層都呼叫它的下一層所提供的網絡來完成自己的需求。
只不過,后序我們談論的時候,都是了解四層即可!因為最底層的物理層是和硬件強相關的,我們目前了解一下即可:
- 物理層:負責光/電信號的傳遞方式。比如現在以太網通用的網線(雙絞線)、早期以太網采用的同軸電纜(現在主要用于有線電視)、光纖,以及現在的Wi-Fi無線網使用的電磁波等都屬于物理層的概念。物理層的能力決定了最大傳輸速率、傳輸距離、抗干擾性等。集線器(Hub)工作在物理層。
- 數據鏈路層:負責設備之間的數據幀的傳送和識別。例如網卡設備的驅動、幀同步(檢測信號以確定新幀的開始)、沖突檢測(檢測到沖突時自動重發)、數據差錯校驗等工作。常見的標準包括以太網、令牌環網、無線LAN等。交換機(Switch)工作在數據鏈路層。
- 網絡層:負責地址管理和路由選擇。例如在IP協議中,通過IP地址標識主機,并利用路由表規劃數據傳輸路徑。路由器(Router)工作在網絡層。
- 傳輸層:負責兩臺主機之間的數據傳輸。如傳輸控制協議(TCP),確保數據可靠地從源主機發送到目標主機。
- 應用層:負責應用程序間的通信,如簡單郵件傳輸協議(SMTP)、文件傳輸協議(FTP)、網絡遠程訪問協議(Telnet)等。網絡編程主要針對應用層。
其實TCP/IP模型就是OSI模型的簡易版本!(應用、表示、會話合三為一)。
再談協議
為什么要有TCP/IP協議
首先,我們來理解一下為什么要有這樣的協議!
首先,我們知道一個結論就是:主機之間拿著條線直接相連也是可以進行通信的!而且,內部的CPU、顯卡、內存都是直接根據對應的協議進行通信的!(沒錯,硬件也有通信協議!)
所以,如果說一臺機器的不同設備使用電線連著,讓它們分別處于我國的東西南北中方位,也一樣能夠通信!只不過說,效率會變得特別低!
->計算機內得馮諾依曼體系結構,也可以是一個網絡結構!
多臺主機其實就和上面得例子是類似的,通信的時候也是會受到距離得影響的!
所以,網絡通信就面臨著巨大的問題,在通信距離變得很長的情況下(新技術 -> 新問題):
1.如何保證數據的安全?即不丟失!
2.怎么找到要通信的位置?怎么確定通信路徑?
3.怎么解決當下要通信的下一個節點位置?(通信距離長,需要通過一個個節點發送)
還有一個問題,這個不是網絡通信獨有的。即如何處理通信數據?
上述的答案是:通過規定網絡協議層,即TCP/IP來解決!
TCP/IP協議的宏觀認識
? TCP/IP 協議的本質是一種解決方案
? TCP/IP 協議能分層,前提是因為問題們本身能分層
即上述所說到幾點問題,是可以解耦合放在不同的層進行處理的!
這樣子,就可以讓全世界一些比較權威的機構、組織、公司等代表進行討論設計標準!這種標準是國際化的!是非常合理的!然后讓所有和網絡通信相關的通信設備都要遵守該標準!
宏觀理解TCP/IP協議和操作系統的關系
了解完了協議基本概念和一種具體的協議——TCP/IP協議。我們肯定會想到一個問題:
即我們的計算機,是通關操作系統來管理的!那么,操作系統和TCP/IP協議有什么關系呢?
我們先以Linux系統來進行講解:
- 物理層,即用來進行數據通信的硬件,一般就是網卡!它是屬于硬件的,所以在操作系統的硬件層中也會有網卡設備!
- 數據鏈路層,其實就是解決如何找到下一個要去的節點!這個是屬于驅動程序的!
- 傳輸層和網絡層是在操作系統這一層進行實現的!其中,傳輸層使用的是TCP協議,網絡層使用的是IP協議!所以,這就是為什么這個協議叫做TCP/IP協議
- 最后是應用層,應用層就是用戶層的使用和用戶對應的接口
最終,我們可以明白一個道理:
網絡,其實是操作系統的一部分! 未來要進行網絡通信的時候,用戶層依然是可以使用大量的系統層面提供的系統調用接口!
我們來看看不同的操作系統下:
市面上系統都是如此。因為最終它們都需要進行網絡通信!需要網絡通信,它們又都會滿足同一種協議!所以,勢必它們的網絡部分實現的代碼是高度相似的!
無論不同的操作系統底層如何實現、如何管理的!但是,網絡部分一樣!必然可以進行網絡通信!這也就是為什么不同的系統之間也是可以進行通信的!
協議的真正本質
最后,我們再來探討一下,協議究竟是什么?我們到現在也不知道它是以什么形式存在的。
我們知道:OS的源碼,基本都是c/c++:
協議又是通信的雙方做出的通信約定!每一層都有對應的通信協議!
我們又知道,協議本質上也是軟件!
綜上所述,通信雙方的一些約定、要發送的數據、處理方法,其實都是可以用結構體來進行描述的。然后再組織起來! -> 協議,就是雙方約定好的數據結構!
所以,雙方的同一層都規定好一種協議(結構體),把需要通信的數據、處理方法、對應字段都約定到一個結構體內。又因為都遵守同一個網絡通信協議!所以,網絡部分的代碼是一樣的!
所以,一方發過來的結構體,另一方也一定能夠看得懂!這樣就可以通信了!
所以,所謂的協議,其實就是一種結構體!這是雙方約定的一種計算機式的表達!
如同我們上網購物一樣,發快遞的時候,快遞單子上會有一系列的信息。這個其實就是買賣雙方規定好的一種協議!又或是我們自己使用的c++類,這本質上編寫一個類,就是在編寫一個使用協議!使用者可以通過一些方式來明白使用方法!