互聯網是什么相信不用在這里贅述,大家平時“網上沖浪”都離不開它。本篇文章中我們就來翻譯翻譯,什么 ** 的叫 ** 的網絡。
(資料圖片)
對于網絡,我們可能聽過非常多的名詞,比如因特網、萬維網、互聯網。三者的關系其實為:
互聯網 > 因特網 > 萬維網
那么一個簡單的網絡看起來會是這樣:
一個簡單的網絡會由多個節點(AKA 計算機)和連接他們的鏈路組成。就好像你家里有 3 臺電腦,然后它們都相互連接,這樣你家里的 3 臺電腦就組成了一個簡單的網絡。而所謂的互聯網,就是網絡的網絡,如下所示:
而不同的網絡之間可以通過路由器來相互連接,就形成了覆蓋范圍更大的互聯網。所以總的來說,網絡連接了許多的計算機,而因特網將許多網絡連接到了一起。因此,因特網也是目前全球最大的計算機網絡。
因特網的發展第一階段互聯網的起源帶有一點戰爭的背景。它起源于 1960s,當時正值冷戰,美國國防部開發了一個分布式的、預期能夠抵御核攻擊的通訊網絡,而這就是世界上第一個互聯網的原型 —ARPANET。
在 1983 年,TCP/IP 協議成為了 ARPANET 上的標準協議,只要是使用了 TCP/IP 協議,計算機之間都能夠相互通信。
第二階段1985 年,美國國家科學基金會圍繞了 6 個大型計算機中心建設計算機網絡,這一階段的特點是形成了三級結構的因特網,分別是:主干網、地區網、校園網(企業網)。這個三級結構的網絡覆蓋了當時全美主要的大學和研究所。后續,越來越多的企業接入了因特網,導致了網絡上通信量激增,由于當時的因特網是由政府維護的,其容量已經滿足不了當時的需求了,所以美國政府決定將主干網轉交給私人企業經營,并開始收費。
第三階段隨著主干網開始由私人企業經營,該階段形成了多層次 ISP 結構的因特網。什么叫 ISP?其實也就是互聯網(因特網)服務的提供商。給你舉個例子你就知道了,比如咱們國內的三巨頭:中國聯通、電信、移動,他們就是典型的 ISP。
ISP 其實也是一層代理,因為他們也是從因特網管理機構去申請的一堆 IP 地址,然后我們去 ISP 那辦理寬帶,支付費用,然后我們就能夠在使用期間,用這個 IP 地址上網“沖浪”。
因特網中的協議經過了這么多年的發展,互聯網已經演變成了一個橫跨全球、極其復雜的網絡。這就好像我們每個城市的內部是通過各種道路相互連接的,而城市與城市之間也是相互連接的,而所有這些城市相互連接就組成了這個大型的“國家互聯網”。連接到互聯網的機器可以相互通信,而在“國家互聯網”中的城市也可以相互“通信”。
你說包裹有可能在運輸途中丟失嗎?當然有可能,這樣的例子還不少。同理,我們發送出去的數據包也有可能丟失。
所以為了保證數據包的準確送達,互聯網使用了很多種協議。例如我們非常熟悉的TCP/IP。TCP全稱是 Transmission Control Protocol,IP全稱是 Internet Protocol。
它們分工明確,IP 負責數據包的路由,讓它從一個“中轉站”跳到下一個“中轉站”,而 TCP 則是確保包裹可靠、準確、有序的到達“中轉站”。
當然,在互聯網這個巨大的概念里,TCP/IP 協議并不是全部,還有我們非常熟悉的DNS(Domain Name System)和HTTP(Hypertext Transfer Protocol)。
不太熟悉 DNS 及其底層原理的可以看看我之前寫的這篇文章你的域名是如何變成 IP 地址的?
還有像 SSL 和 TLS 這樣的網絡安全加密協議,讓我們的數據能夠安全的在互聯網上傳播。當然,現在 TLS 已經將 SSL 給替代了,因為 TLS 有著更高的安全性和更強的認證機制。
在互聯網的通信和數據交換流程中,協議扮演了一個非常關鍵的角色。這就好像人與人之間要進行溝通,語言是非常重要的一樣。語言不通,溝通起來是非常非常困難的。通信的前提也是雙方需要使用一樣的協議。
而協議其實就是一堆的規則,這些規則規定了信息交換的細節。就比如咱們的老朋友三次握手、四次揮手就屬于 TCP/IP 協議的一部分。而規定使用這些協議有什么好處?
答案當然是標準化,用標準化來屏蔽不通制造商或者不通系統之間的差異。舉個例子,假設不同的制造商的制造出來的手機使用了不同的協議,那么某個 APP 在制造商 A 上能用,在制造商 B 上又不能用,又或者不同的操作系統之間不能相互通信,這類問題以現在的眼光來看肯定是不能接受的。
再舉個標準化協議的例子,像我們用的 Type-C 這種接口的充電線就是一種標準,不管是哪個廠家生產的,只要遵循了這個標準,消費者就能夠正常使用。再舉一個協議不同的例子,不同的國家使用的充電器的標準不同,不同的標準之間要想充電則需要使用轉接頭,及其的不方便。
網絡分層模型OSI 七層模型相信大家曾經都被問過一個問題:“請簡單描述一下 OSI 七層模型”。這個網絡模型是啥意思?怎么來的?或者說,為什么需要網絡模型這個玩意兒?
這是因為 70 年代,網絡快速發展演進出了不同網絡體系結構,而由于全球的經濟發展,迫切的需要使在不同的網絡結構體系結構中的用戶相互通信,交換信息。為了達成這一目的,國際標準化組織在 1977 年成立了專門的機構來研究這個問題。
而他們的研究成果就是著名的 OSI 模型。在 OSI 模型中總共包含了 7 層(到這里是不是很多人就條件反射的開始全文背誦了),從下至上分別是:物理層、數據鏈路層、傳輸層、網絡層、會話層、表示層、應用層。
但,OSI 模型的設計,理想很豐滿,現實很骨感。OSI 僅僅取得了理論上的成果,這些專家在設計的時候,并沒有太考慮商業化,并且,OSI 協議設計過于復雜,復雜則導致其運行效率低下,并且 OSI 的層次中有重復的層次。
所以用一句話來總結 OSI 七層模型就是:既復雜又不實用。
TCP/IP 體系相對于 OSI 的不實用,TCP/IP 是一個四層的體系結構,分別是:應用層、運輸層、網際層、網絡接口層,和 OSI 的對比如下圖所示:
消息如何發送簡單的了解了一些背景之后,我們來看看網絡中的消息是如何發送的。那在一般的認知中,所謂的通信是啥樣的呢?可能看起來是這樣:
假設現在有 A、B 兩臺機器,其 IP 地址分別為 1.2.3.4 和 4.3.2.1,它們的 IP 地址都不相同,并且需要通過上圖中的“網絡”進行通信。那如果 A 要發送消息給 B,這個消息該如何“傳輸”到 B 呢?當然是通過連接到 B 機器上的網線(假設是有線),我們知道,線路中傳輸的是電信號,這套轉換的流程當然不需要我們手動的實現,這些功能都內置在了計算機中,而上面說的轉化,則是由協議棧來完成的,協議棧的大致工作流程如下:
這樣講有點抽象,比如協議棧到底是啥,它是通過什么方式來處理的數據的,都不知道。關于協議棧相關的概念,以及數據包發送、接收的大致流程,在我之前寫的數據包從發送到接收,都經歷了什么這篇文章里都有詳細的介紹,在此不再贅述。
這里我們拿 TCP/IP 協議棧來舉個例子,它分為4 層,大致長這樣:
應用層,就比如你看這篇文章所使用到的 HTTP 協議傳輸層,TCP 協議網絡層,IP 協議硬件層,使用的是以太網協議,將二進制的數據轉換成電信號,以及相互轉換,就比如網卡那結合上面這個圖,就會變成這樣:
這個流程跟上面舉過的網購、快遞包裹的例子非常類似,我們下單了東西,賣家會將東西層層的包裝,而這個“打包”的過程跟協議棧對數據包的處理非常像,從上至下,將數據「Hi, there」一步步的處理。而對于我們收快遞的人來說,我們會一點點從外至里的打開這個包裹,最終拿到我們購買的貨物。而對于 4.3.2.1 的協議棧來說,一步步的將電信號還原成「Hi, there」也是同樣的道理。
而我們將這個打包的細節添加到上圖的話,看起來就會是這樣,以 HTTP 協議來說:
可以看到,每一層的包都是由 XX 頭和 XX 數據包組成的,通過協議棧的“層層加碼”,通信所需要的關鍵的信息也會被打包進去:
傳輸層,會將 HTTP 報文添加到 TCP 的數據包中,并在 TCP 頭中添加發送方、接收方的端口號網絡層,會將上一層的 TCP 包添加到 IP 數據包中,并且在 IP 頭中添加發送方、接收方的 IP 地址硬件層,會將 IP 包添加到以太網數據包中,并在以太網頭中添加發送方、接收方的 Mac 地址。那么問題來了,我們現在只知道中間有個“網絡”,那從 1.2.3.4 機器 A 中出發的數據包,是如何找到 4.3.2.1 B 這臺機器的呢?A 從一開始就知道該走哪條線路
1.2.3.4 發送的數據,會經過協議棧從上至下的處理,變成一個一個的數據包,然后 4.3.2.1 收到數據包之后,也會經過協議棧從下至上的處理,解析出原始的消息。
參考How Does the Internet Work?《計算機網絡》關鍵詞:
X 關閉
X 關閉
- 15G資費不大降!三大運營商誰提供的5G網速最快?中國信通院給出答案
- 2聯想拯救者Y70發布最新預告:售價2970元起 迄今最便宜的驍龍8+旗艦
- 3亞馬遜開始大規模推廣掌紋支付技術 顧客可使用“揮手付”結賬
- 4現代和起亞上半年出口20萬輛新能源汽車同比增長30.6%
- 5如何讓居民5分鐘使用到各種設施?沙特“線性城市”來了
- 6AMD實現連續8個季度的增長 季度營收首次突破60億美元利潤更是翻倍
- 7轉轉集團發布2022年二季度手機行情報告:二手市場“飄香”
- 8充電寶100Wh等于多少毫安?鐵路旅客禁止、限制攜帶和托運物品目錄
- 9好消息!京東與騰訊續簽三年戰略合作協議 加強技術創新與供應鏈服務
- 10名創優品擬通過香港IPO全球發售4100萬股 全球發售所得款項有什么用處?