成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

一文讀懂互聯網的架構本質

原創 精選
開發 架構
互聯網提供了人們所依賴的無處不在的連接。許多人也都知道,互聯網的基本設計是在20世紀70年代發明的,以允許計算機交換數據。

談到互聯網,很多人腦海中會出現各種各樣的術語和服務,但是互聯網是如何設計并構建的呢?作為一個網絡,互聯網的架構本質是什么? 石頭兄弟和我曾經一起譯過一本《計算機網絡問題與解決方案》的巨著,但真正仔細閱讀并從中有所收獲的朋友并不多。最近,石頭兄弟推薦了另一篇文章https://cacm.acm.org/magazines/2023/2/268956-extracting-the-essential-simplicity-of-the-internet/fulltext ,內容精煉簡潔,不敢私藏,編譯分享給大家。

如今,互聯網提供了人們所依賴的無處不在的連接。許多人也都知道,互聯網的基本設計是在20世紀70年代發明的,以允許計算機交換數據。自1983年陸續采用以來,它基本上保持不變 ,同時優雅地適應應用程序,技術,規模,范圍和容量的根本變化,成為了人們不可或缺的一部分。

作為如此出色的IT基礎設施,其系統架構也是怎樣的呢?

1. 本質需求:互聯網的服務模型

在進行通信時,所有主機上的軟件都必須依賴基礎設施的服務模型。因此,服務模型的設計需要在最適合主機軟件的內容和基礎設施可以支持的內容之間進行折衷。在設計數據傳輸服務模型時,必須選擇其傳輸單元并確保性能。鑒于計算機通信的突發性,一個小的傳輸單元是必要的,以實現有效的資源利用。互聯網使用一組比特的數據包,當前的數據包大小通常不超過1.5 kb。

互聯網應用程序有著各種各樣的網絡性能要求,從低延遲(交互式視頻或閉環控制)到高帶寬(傳輸大數據集)和可靠傳輸(文件傳輸)。工程化的本能是支持將這些需求與網絡基礎設施結合起來,以保證延遲、帶寬和可靠性方面的特定界限。然而,互聯網必須與各種各樣的本地分組網絡互聯,例如無線和有線、共享接入以及點對點,其中許多網絡不能保證性能。這些網絡能夠支持的最小公分母是“盡最大努力”的數據包傳輸,網絡試圖傳輸所有的數據包,但是不能保證數據包是否、什么時候或以什么速率傳輸。

因此,關于服務模式的根本問題是,是更好的技術和支持所有應用需求或容納所有的數據分組網絡,只提供一個適度的最小公分母和“盡力而為”的服務模式。互聯網的設計選擇了質樸的方式,即采用盡力而為的服務模式。

現在看來,這是一個更好的選擇。首先,較松散的服務模式對基礎設施施加了最低限度的要求,從而使互聯網得以極其迅速地發展。簡而言之,由于對性能的要求不高,互聯網的部署速度和范圍都很大。其次,應用程序有嚴格的網絡要求是電話網絡的延續,電話網絡的智能終端系統與智能網絡相連,完全負責滿足電話的嚴格性能要求,即固定速率傳輸和可靠傳輸。隨著越來越強大的計算機作為終端,通過對互聯網應用程序的設計來適應不同級別的性能,從而放松了它們的需求。在大多數情況下,網絡運營商還可以通過提供足夠的帶寬來確保合理的性能,也就是說,通過部署更多和更快的鏈路,使網絡很少擁塞。

2. 體系抽象:互聯網的架構

體系結構是關于功能的組織,而不是它的實現。模塊化是體系結構的指導原則,要求將系統的目標分解為具有干凈接口的更小的任務。互聯網的目標是允許兩臺不同計算機上的應用程序進行通信,因此可以分解為兩個組成部分: 

(i)網絡基礎設施的作用(主機之間盡最大努力傳輸數據包)

(ii)主機上的網絡支持軟件的作用(使應用程序更容易使用這種盡力而為的傳輸)。

2.1 網絡基礎設施

基礎設施實現的主機到主機交付任務可以分解為三個不同的任務,這些任務被分層設計,高層具有更廣泛的空間范圍,低層處理更多的本地任務。因此,從發送主機向接收主機發送數據包的過程涉及到將這些本地發送任務集合在一起。提供最佳數據包傳輸的本地和低級的任務是通過鏈路或廣播進行傳輸,這需要數模轉換和糾錯,這兩者都不是互聯網所特有的。這個本地傳遞任務由所謂的物理層(L1)處理。

鑒于 L1能夠通過鏈路發送比特流,下一個任務是在本地分組網絡中實現通信(如以太網或無線網絡)。這包括兩個步驟: 

(i)用一組比特位組成數據包,前面有一個數據包頭,描述這些位應該傳送到哪里;

(ii)將這些數據包傳送到本地網絡中的適當目的地。將第二步限制為本地(而非全局)傳輸,可以使用不可伸縮的技術,如廣播(介質本身確保廣播數據包到達所有主機(如無線))和洪泛(網絡確保洪泛數據包到達所有主機)。這個任務是由傳統上稱為鏈路層或 L2來處理的。在非廣播網絡中,這項任務是由本地網絡中的交換機實現的,這些交換機將數據包轉發到它們的目的地。

最后一項任務是將數據包從發送方的網絡傳送到目的地的網絡,利用 L2的能力將這些網絡中的數據包傳送到各個主機。這種網絡的互連由網絡互連層(L3)處理,并由在 L2連接到兩個或多個網絡的路由器實現。數據包通過一系列的路由器進行轉發(路由器到路由器的交付由兩個路由器所連接的網絡中的 L2支持) ,直到它們到達目的網絡。這一層連接網絡還定義了 互聯網的服務模型,即 L3將數據傳送到更高層的主機軟件。

因此,互聯網提供的無處不在的連接能力始于一個概念上簡單而大膽的設計。

2.2 主機軟件中的網絡支持

網絡基礎設施中主機對主機服務模型沒有指定數據包應該傳遞到哪個主機的應用程序,而且如果沒有額外的幫助,應用程序很難達到最佳性能。為了糾正這些問題,主機操作系統除了提供其他網絡支持外,還提供了傳輸層(L4)。基于稱為“端口”的數據包頭中的元數據,L4將數據包傳遞給主機上的各個應用程序為了使應用程序更容易使用盡力而為的服務,一些公共傳輸協議提供了三種功能。

  1. 字節流 API,應用程序可以使用類似文件的簡單接口來寫入和讀取數據,而不必顯式地發送和接收單個數據包。
  2. 控制主機的數據包傳輸速率,以防止網絡過載,這種方法被稱為擁塞控制傳輸,涉及控制回路,在這個回路中,如果傳輸協議檢測到網絡擁塞(例如,通過丟失數據包或增加延遲) ,它們的發送速率就會降低。有許多擁塞控制算法,不同的是它們如何檢測和響應擁塞。
  3. 最基本的是可靠的數據包傳輸,應用程序不需要處理數據包丟失。這種丟失是最佳服務模型的自然組成部分,但是對于許多應用程序來說是不可接受的。盡管可靠性可以在應用程序本身或其他支持庫中實現,但為了清晰起見,這種可靠性是在 L4中實現的。

四層互聯網架構是模塊化的自然結果。每一層只與正上方和正下方的層相互作用。由于數據包總是通過 L1的物理媒體到達,所以主機必須實現所有四個層; 路由器實現前三個層,而交換機只實現前兩個層。因此,這里有四個問題需要解答。

問題 # 1: 這種分層架構支持哪種多樣性,如何管理它?

只要一個層的兩個實現提供相同的向上和向下接口,它們在架構上是可互換的。此外,互聯網架構的模塊化允許在 L4處共存多個傳輸協議,在 L2處共存多個本地網絡設計,在 L1處共存多個物理技術,每個都提供自己獨特的接口。L1和 L2技術由網絡提供商選擇,網絡提供商可以確保它們的接口兼容,也就是說,本地網絡設計可以使用一組鏈路技術。應用程序在調用操作系統的網絡 API 時選擇它所需的 L4協議。應用程序和網絡提供商獨立作出選擇,也就是說,應用程序不知道它目前所在的網絡,網絡提供商也不知道其網絡上將使用哪些應用程序。當且僅當 L3上有一組所有 L2設計和 L4協議都兼容的接口時,這種方法才能無縫地工作。因此,我們必須在 L3有一個單一的協議,即互聯網協議(IP) ,目前是 IPv4及IPv6。IP 作為互聯網架構的“蜂腰”,其獨特性使所有其他層次的多元化創新成為可能。

問題 # 2: Internet 使用什么標識符?

互聯網必須使 L2和 L3數據頭能夠識別路由的目的地,并允許用戶和應用程序識別他們想要訪問的服務。這導致了三種地址,通常,主機上每個可連接的硬件網絡接口(如 Wi-Fi、蜂窩網卡或以太網卡)都有一個稱為 MAC 地址的永久唯一地址,L2使用該地址來識別目的地。L3使用 IP 地址,它指定互聯網中的一個唯一網絡,以及當前使用該網絡中的地址的特定主機接口(這種地址分配可以隨時間變化)。用戶和應用程序使用應用程序級別的名稱來用基于主機的服務。為了使這些名稱具有某種程度的持久性,它們獨立于服務所基于的機器以及這些主機可能放置在網絡中的位置。在這三個標識符(應用程序級別的名稱、 IP 地址和 MAC 地址)中,前兩個必須解析為次低級別的標識符。因此,當一臺主機上的應用程序試圖向另一臺主機上的應用程序發送數據包時,它必須將應用程序級別的名稱解析為 IP 地址。當數據包到達網絡時,它通過 L2發送到目的地主機或下一跳的路由器。在這兩種情況下,IP 地址都必須解析為 MAC 地址。

問題3: 如何組織互聯網基礎設施?

互聯網不僅僅是一個由路由器連接的非結構化的 L2網絡集合。相反,它是自治系統(AS)的集合,也稱為域,每個域包含一組由單個實體管理的 L2網絡。AS的例子包括企業、大學和商業互聯網服務提供商(ISP)。這些系統控制它們自己的內部 L3路由,并且必須與其他系統建立路由協議,以便在系統之間提供主機到主機的傳輸。因此,L3涉及兩個路由任務: 

(i)在 AS 內的網絡之間進行路由(域內路由) ,由該 AS 中的路由器處理; 

(ii)在 AS 之間進行路由(域間路由) ,由連接兩個或更多個 AS 的所謂邊界路由器處理。

這兩個路由任務有不同的需求,因此需要不同的路由范例和協議。

問題4: 這些部分是如何組合在一起的?

通過互聯網傳送數據包的過程始于應用程序將應用程序級別的名稱解析為一個 IP 地址,然后調用主機的網絡支持將數據發送到該目標 IP 地址。這將導致對 L4的調用,該調用將數據打包并調用 L3來傳遞這些數據包。在 L3,數據包通過一系列路由器被轉發,直到它到達它的目的網絡(由數據包報頭中的目的 IP 地址標識)。每個路由器都有一個轉發表,它將目標 IP 地址映射到下一跳路由器的 IP 地址。在接收到數據包后,路由器在轉發表中查找合適的下一跳路由器,然后通過調用 L2將數據包發送到該下一跳節點。L2必須首先將下一跳路由器的 IP 地址解析為一個 MAC 地址,然后將數據包傳送到下一跳路由器(通過廣播或通過一系列交換機轉發數據包,如下一節所述) ,然后由下一跳路由器將數據包返回給 L3。這個過程中的關鍵技術挑戰是設置 L3轉發表,以便下一跳的集合總是導致數據包到達適當的目的地。

3. 互聯網的三個核心機制

互聯網架構確定了實現互聯網體系結構所必需的三個重要機制ーー路由、可靠性和名稱解析方案。

3.1 路由

術語“路由”是指通過互聯網將數據包轉發到目的地主機的一般問題,這種問題發生在 L3并由路由器實現,或者在 L2由交換機實現,而L2上的實現稱為交換而不是路由。從考慮 L3域內路由開始,假設: 

  • 每個 L3包頭包含一個目的 IP 地址,
  • 每個路由器有一組相鄰的路由器,它在 L2連接
  • 每個路由器有一個轉發表,正確地指示路由器是否連接(在 L2)到數據包的目的地網絡,如果沒有,確定性地將到達數據包的目的地映射到數據包應該轉發到的相鄰下一跳路由器。

簡化問題,重點先放在一組靜態轉發表成功引導數據包到達其目的地的情況。路由器之間的互連集稱為網絡拓撲圖,假設它們是連接的; 將轉發表集稱為轉發狀態; 將這些表的并集稱為路由狀態。給定的路由狀態實例是有效的,如果它總是將數據包指向它們的目的地; 如果存在一個環(即,一個起始位置和一個目的地址) ,數據包可以返回到它已經訪問過的路由器。因此,當且僅當沒有環時,路由狀態實例才有效。

假設沒有循環; 因為網絡是連接的和有限的,所以任何數據包最終都必須到達連接(在 L2)到其目的地的路由器。假設存在一個給定目的地的循環; 任何尋址到該目的地的包進入循環將永遠不會到達目的地。

為什么要關心這個明顯的結果?因為互聯網使用各種路由算法來計算轉發狀態,這些路由算法之間的關鍵概念差異在于它們在穩態下避免循環的方式。路由協議是一種復雜的分布式系統,它解決了由于網絡鏈路失效和恢復而導致網絡拓撲圖發生變化時,如何快速自動地重新計算轉發狀態的問題。這里,避免了這些分布式協議的復雜性,只關注算法在靜態網絡上收斂到一個穩定狀態時所產生的轉發狀態。在這些算法中,避免穩態循環的方法主要取決于路由器之間共享什么樣的信息。

例如,一個路由器知道它的鄰近路由器,并且可以使用洪泛算法與其他路由器共享這個本地信息。在穩定狀態下,每個路由器都可以利用這些信息來組裝整個網絡拓撲圖。如果所有路由器在這個共享網絡拓撲圖上使用相同的無環路徑查找算法來計算它們的轉發表,那么得到的路由狀態總是有效的。這種方法稱為“鏈路狀態”路由。

許多計算機科學界人士認為,互聯網僅僅是一個復雜協議的集合,而不是一個概念上簡單而大膽的設計。

另一種情況是,每個路由器根據一些度量(如延遲)通知它的鄰近路由器它自己的距離所有其他網絡。路由器 α 可以計算其到每個目的地網絡 n 的距離為 dα (n) = minβ [ dβ (n) + d (α,β)] ,其中 dβ (n)是從每個相鄰路由器 β 到網絡 n 的距離,d (α,β)是兩個路由器之間的距離 α,β。這種分布式計算的穩定狀態產生到每個目的地的最短路徑路由,這不能有環。這就是所謂的“距離矢量”路由。

當網絡拓撲圖發生變化時,在距離向量路由和鏈路狀態路由的重新計算路由過程中(即協議尚未收斂到穩定狀態時)都可能出現路由狀態的臨時環路。如果不加以檢查,數據包在這樣的循環中無休止地循環可能會導致嚴重的擁塞控制。為了防止這種情況,IP 協議明智地在數據包頭中加入了一個字段,該字段從發送主機設置的初始數字開始,然后每當數據包到達一個新的路由器時,該數字就遞減。如果該字段達到零,則丟棄數據包,從而限制數據包可以穿越臨時環路的次數,從而確保臨時環路不會發生災難性的情況。如果沒有這種簡單的機制,所有的路由協議都需要排除臨時環路,這種程度的關注可能會使路由協議復雜化。

考慮 L3域間路由。AS顯然必須攜帶它們作為源或目的地的所有數據包; 所有其他數據包都被視為傳輸通信,在從源 AS 到目的 AS 的路上通過其他 AS。AS 希望能夠自由選擇他們所攜帶的傳輸流量,以及他們用來將傳輸流量轉移到目的地的路線。對于互聯網服務提供商來說,這兩種策略選擇在很大程度上取決于它們與鄰近的自主網絡服務提供商的經濟性考量,因此它們希望將這些選擇保密,以避免泄露有助于競爭對手的信息。

雖然域間路由選擇實際上是由邊界路由器實現的,這涉及到它們之間一些復雜的域內協調,但是可以簡單地建立域間路由模型,將互連的 AS 集合形成一個圖,并由 AS 自己做出路由決策。域間路由必須: 

  • 允許 AS 做出任意的策略選擇,所以不能使用距離向量
  • 保持這些策略選擇的私有性,所以不能使用鏈路狀態路由

這將需要 AS 使他們的策略明確,以便每個其他 AS 可以計算使用這些策略的路由。另一種方法是允許AS系統通過選擇向誰宣傳他們的路由(通過向鄰近的AS系統發送消息說,“你可以使用我的路徑到達這個目的地”) ,以及當幾個鄰居已經向他們發送到給定目的地的路由時,選擇這些路由來實現他們的策略。這些都是在距離向量路由中使用的相同消息和選擇,但距離向量不允許策略靈活性: 路由向所有鄰居公布,只選擇最短路徑。這種局部自由提供了政策靈活性和隱私,但是如何防止在計算路由時出現穩態環路?互聯網的解決方案是交換路徑信息。當 AS“ A”公布到相鄰 AS“ B”的路徑(針對特定目的地)時,它指定該流量到目的地的整個 AS 級路徑。如果 AS“ B”看到它已經在那條路徑上,它就不會使用那條路徑。如果所有的 AS都遵守這個明顯的約束,那么無論 AS做出什么策略選擇,我們稱之為“路徑向量”路由的穩定狀態都將是無環的。路徑向量路由在目前的域間路由協議 BGP 中使用,因此,BGP 是將互聯網上的許多自動化系統粘合在一起的粘合劑。

由于對性能要求不高,互聯網的部署速度和范圍都很大。

這種路徑矢量方法確保在任何穩態下都沒有回路。然而,這并不能確保路由協議收斂到一個穩定狀態, 例如,策略振蕩就是路徑向量算法不收斂的情況。它也不能確保所有產生的穩定狀態提供所有端點之間的連接,因為所有 AS 都可以拒絕向給定 AS 提供過境連接。令人感到困惑的是,為什么這些異常沒有在互聯網上觀察到,理論分析表明,典型的運營實踐(路由選擇最大化收入和最小化成本)產生路由策略,將總是收斂到穩定的狀態,提供端到端連接之間的所有端點。

在非廣播網絡中,避免環路也起到了一定的作用,在非廣播網絡中,洪泛通常用于到達目的地。生成樹協議(spanning-tree protocol,STP)通過選擇不使用某些鏈接在網絡之外來創建一棵樹,也就是說,從網絡拓撲圖中消除所有環。一旦網絡成為生成樹,就可以通過讓每個交換機在生成樹的所有相鄰鏈路上轉發數據包(數據包到達的鏈路除外) ,將數據包洪泛給所有主機。這種洪泛允許主機和路由器通過一個“地址解析協議”(ARP)消息來解析 IP 地址到 MAC 地址,該消息詢問,“哪個主機或路由器有這個 IP 地址?”; 所有者然后響應其 MAC 地址。在這個 ARP 交換期間(實際上每當主機發送數據包時) ,交換機可以通過記住它們最近從該主機收到數據包的鏈路來學習如何在不發生洪泛的情況下到達特定主機。生成樹上的任意兩個節點之間只有一條路徑,因此可以通過發送來自該主機的數據包到達的鏈路來到達該主機。因此,使用這樣的“學習式交換機”,將 IP 地址解析為 MAC 地址的行為確定了發送和接收主機之間的轉發狀態。當向 MAC 地址已經解析的主機發送數據包時,網絡不需要使用洪泛,而是可以直接發送數據包。

總而言之,所有的路由算法都必須有一種機制來避免處于穩定狀態(即協議收斂之后)的環路形成,而穩定狀態又依賴于交換的信息。為了限制 AS 中與相鄰路由器之間的信息交換,需要使用距離向量來保證無環,從而產生最短路徑。為了提高域內路由的路由靈活性,一個更好的選擇是鏈路狀態,它需要洪泛的鄰居信息,但允許使用任意的無環路徑計算。為了允許 AS 在域間路由中實施單獨的策略控制,它們可以交換顯式的路徑信息以避免環路。為了在 L2中實現動態洪泛和路由學習,有必要將網絡拓撲圖轉換為生成樹,因為它們本身是無環的。在路由中可能會考慮其他問題,例如,如何從失敗中恢復而不必重新計算路由,以及如何使用集中控制來簡化路由協議(如 SDN) ,但是這里的重點是闡明在常用的路由范例中避免環路的作用。

3.2 可靠傳輸

在討論的路由分析時,即使有效的路由狀態,由于過載鏈路或故障路由器仍然會導致數據包的丟棄。互聯網架構并不能保證前三層的可靠性,而是明智地將這個任務留給傳輸層或應用程序本身,丟失的數據包只有在被發送主機重新傳輸時才會被傳輸。

可靠的傳輸是由傳輸協議確保的,該協議建立了從一個應用程序獲取數據并將其傳輸到遠程應用程序的連接。一些重要的傳輸協議,例如廣泛使用的 TCP,提供了一個可靠的字節流抽象,其中字節流中的數據被分成數據包并按順序傳輸,所有數據包丟失由傳輸協議本身來恢復。可靠的字節流抽象可以完全由主機軟件實現,可以區分一個字節流中的數據包和另一個字節流中的數據包,在數據包上有序號,這樣它們就可以在任何數據傳遞到接收應用程序之前被正確地重新排序,并且重新傳輸數據包直到它們成功地傳遞。

非正式情況下,可靠的傳輸協議從應用程序獲取數據,以數據包的形式將其傳輸到目的地,最終通知應用程序傳輸已成功完成或失敗終止,在這兩種情況下都停止進一步的傳輸。假設底層網絡最終傳遞一個重復發送的數據包,因此持久協議總是能夠成功。對于這種情況,在發送方和接收方之間需要什么通信來確保協議可以通知應用程序它已經成功了,當且僅當所有數據包已經被接收么?有兩種常見的方法: 接收方可以在接收到數據包時向發送方發送確認(ACK) ,或者在懷疑數據包丟失時向發送方發送非確認(NACK)。

ACK 對于可靠的傳輸是必要的和充分的,而 NACK 既不是必要的也不是充分的。一個可靠的傳輸協議只有當它知道所有的數據包都已經發送完畢時才能宣布成功,這只能通過每個數據包接收到一個 ACK 來推測。沒有 NACK (它本身可以被刪除)并不意味著已經接收到了數據包。但是,NACK 可能很有用,因為它們可以提供關于發送方應該何時重新傳輸的及時信息。例如,TCP 使用顯式 ACK 來提高可靠性,并根據超時和隱式 NACK (當預期的 ACK 未到達時)發起重新傳輸。

3.3 名稱解析

除了通過 ARP 將 IP 地址解析為 MAC 地址之外,互聯網還必須將應用級別的名稱解析為一個或多個 IP 地址。這些名稱非正式地稱為主機名,正式的名稱被稱為完備的域名。可以使用非標準術語應用程序級別的名稱,既不指特定的物理機器(而 MAC 地址指的是) ,也不直接關系到域間路由中使用的域概念。

任何應用程序級的命名系統必須: 

  1. 將每個名稱的管理控制分配給一個獨特的權限,該權限決定該名稱將解析到哪個 IP 地址; 
  2. 處理高解析請求; 
  3. 以數十億應用程序級名稱的規模提供這兩個屬性。

為了應對這些挑戰,互聯網采用了一種稱為域名系統(DNS)的分層命名結構。命名空間被劃分為稱為域的區域,這些區域被遞歸地細分為較小的域,并且解析和管理控制都是分層完成的。每個命名域都有一個或多個命名服務器,可以在其域內創建新的子域并解析名稱。名稱可以完備的解析為一個或多個 IP 地址),也可以將解析指向一個或多個可以進一步解析此類名稱的子域名服務器。此層次結構從一組頂級域(TLD)開始,商業注冊允許客戶在這些 TLD 下注冊子域。TLD 到其名稱服務器的解析由一組 DNS 根服務器(其地址為所有主機所知)處理,解析從那里沿著命名層次結構進行。例如, www.myschool.edu 首先由根服務器解析,該根服務器指向edu域名服務器,再指向 myschool. edu 的一個名稱服務器,然后將 www.myschool.edu 解析為一個 IP 地址。這種層次結構允許高度并行的名稱解析和完全分布式管理控制,這兩者對于處理 互聯網命名的規模至關重要。

4. 互聯網成功的秘密

本文試圖將互聯網難以理解的復雜性降低為一小組設計選擇: 

  1. 服務模型
  2. 四層架構
  3. 三個關鍵機制(路由,可靠性和分辨率)

理解這些決定背后的原因不足以理解當今互聯網的復雜性,但足以設計一個具有大致相同屬性的新互聯網。不幸的是,這種簡單性并不足以解釋互聯網的長壽,為什么互聯網的設計在處理速度、規模、范圍、技術和使用方面的巨大變化方面如此成功呢?

4.1 質樸

互聯網沒有設法滿足所有可能的應用要求,而是采用了一種非常有限但非常普遍的服務模式,這種模式沒有任何保障。于是再對智能設備和非智能網絡上: 

  1. 允許新的應用程序蓬勃發展,因為互聯網沒有被定制到任何具體的應用需求;
  2. 利用主機的能力,以各種方式適應變化無常的最佳互聯網服務(例如,通過速率適應,緩沖和重傳) ; 
  3. 能夠快速提高網絡速度,服務模式是相對簡單的。

如果因特網采用了一種更為復雜的服務模式,它可能會將自己局限于創建時存在的應用程序要求,可以用當時可用的技術實現。這將導致一種針對少數應用程序的復雜設計和迅速過時的技術,這是短期成功但長期失敗的根源。

4.2 模塊化

四層互聯網架構的模塊化導致了清晰的責任劃分: 網絡基礎設施(L1/L2/L3)支持更好的數據包傳遞(在容量、覆蓋范圍和彈性方面) ,而應用程序(由 L4協助)為用戶創建基于這種數據包傳遞服務模型的新功能。因此,這種架構使得兩種截然不同的生態系統,即網絡基礎設施和互聯網應用得以獨立地繁榮發展。

然而,互聯網的模塊化超越了其正式的體系結構,在其標準驅動的基礎設施范圍內,最大限度地實現了自治的更一般方法,這與電話網絡更嚴格的一致性形成了鮮明的對比。例如,對 AS 的唯一要求是其路由器支持 IP 并參與域間路由協議 BGP。否則,每個系統都可以部署任何 L1和 L2技術以及任何域內路由協議,而無需與其他系統協調。類似地,各個命名域必須支持 DNS 協議,否則可以采用它們選擇的任何名稱管理策略和名稱解析基礎結構。這種基礎結構的自主性允許出現不同的操作實踐。例如,一個大學校園網絡、一個超大規模的數據中心網絡和一個 ISP 骨干網絡有著非常不同的運營需求; 互聯網固有的自主性使得它們能夠以自己的方式滿足自己的需求,并且隨著時間的推移不斷發展。

4.3 失敗是常見情形

隨著系統規模的擴大,在任何時候,系統的某些組件發生故障的可能性越來越大。因此,通常會認為按照算法復雜性或狀態爆炸來擴展,而有效地處理故障也是一個關鍵的可擴展性要求。與期望正常運行并進入特殊模式以從故障中恢復的系統不同,幾乎所有的互聯網機制都將故障視為常見事件。

例如,在基本的路由算法中,無論是由于鏈路故障還是由于環路的重新計算,路由的計算都以相同的方式進行。類似地,當一個數據包丟失時,它必須被重新傳輸,但是這種重新傳輸預計會頻繁發生,而且在傳輸協議中并不是特殊情況。這種將失敗視為常見案例的設計風格,是谷歌等構建超大規模基礎設施的基礎,這種風格最初是在互聯網上開創的。

4.4 粗略共識和可運行代碼

互聯網發明者沒有采用當時電信世界中流行的正式設計委員會,而是明確地選擇了另一條道路: 鼓勵較小的團體構建可行的設計,然后由一個社區選擇采用哪種設計。大衛 · 克拉克是互聯網架構的領袖之一,他在一次演講中說: “我們拒絕國王、總統和投票。我們相信粗略的共識和可運行的代碼。”這種平等主義精神延伸到互聯網作為連接所有用戶的統一交流平臺的共同愿景。因此,互聯網的發展不僅受到純技術決策的影響,而且受到早期互聯網社區對連接世界的共同平臺價值以及他們對實現這一愿景的共同所有權的信念影響。

5. 沒有完美

有許多領域的互聯網的設計是次優解,但其中大多數是低層次的細節,不會改變高層次的表示。互聯網設計中有三個領域存在著更多的基本問題。

5.1 安全性

許多人將互聯網安全的糟糕狀況歸咎于安全性,認為安全性并不是其設計的首要考慮因素,盡管面對失敗時的處理能力確實是一個重要的考慮因素。這種批評是錯誤的,原因有兩個: 

(1)在一個相互聯系的世界中,安全性是一個比網絡安全更復雜和難以捉摸的目標,而互聯網只能確保后者; 

(2)雖然互聯網架構本身并不提供網絡安全,但有一些協議和技術,其中一些正在廣泛使用,可以在很大程度上實現了這些安全性。

更準確地說,如果能確保下列屬性傳輸兩個主機之間的數據:,那么就可以說網絡是安全的:

  1. 主機之間的連接是合理可靠的(可用性) ; 
  2. 接收方可以告訴知道數據的來源;
  3. 數據在傳輸中沒有被篡改完整性) ; 
  4. 數據沒有被任何中間人讀取,沒有人窺探一個鏈接并清楚哪個主機正在交換數據包(隱私)。

后三種一般可以通過加密協議來保證。互聯網的可用性容易受到分布式拒絕服務(DDoS)攻擊,其中許多主機被當作了機器人使目標的流量過載。有一些技術可以過濾掉這種攻擊性流量,但它們只是部分有效。可用性還受到 BGP 易受攻擊的威脅,因為 AS的路由存在漏洞; 加密解決方案是可用的,但它們沒有得到廣泛部署。因此,有一些加密協議和緩解方法可以使因特網在很大程度上滿足安全網絡的定義。

然而,未能使互聯網成為一個固有的安全網絡絕對不是當前安全問題的主要原因,安全網絡不能防止主機軟件的不安全性。例如,如果一個應用程序被設計為泄露其用戶的信息,或者冒充其用戶執行不必要的金融交易,那么網絡幾乎無法阻止這種惡意行為。如果用戶無意中下載了惡意應用程序,或者某些攻擊(如緩沖區溢出)將一個良性應用程序變成了惡意應用程序,那么主機就可能被感染。關于互聯網安全性的指責通常指的是在主機上放置惡意軟件的容易性,但這主要不是一個網絡安全問題。

5.2 網絡內分組處理

早期的互聯網設計者認為,網絡基礎設施應該通常集中于數據包傳輸,避免更高層次的功能,但是目前幾乎每個運營的網絡都違反了所謂的網絡內數據包處理的規則。現代網絡有許多中間地帶,它們提供了不只是傳輸的功能,例如防火墻(控制哪些數據包可以進入網絡)、廣域網優化(通過緩存以前的數據來提高網絡效率)和負載均衡(將請求導向負載不足的主機)。

2012年的一項調查顯示,大約三分之一的網絡組件是中間件,三分之一是路由器,三分之一是交換機。其中一些網內處理功能部署在單個企業內部,以提高其內部效率; 這種行為只在企業網內產生影響,因此被廣泛視為一種可接受的現實。此外,正如下面所討論的,一些云和內容提供商已經部署了大型專用網絡,部署網內功能(特別是斷流、緩存和負載均衡) ,降低了延遲,提高客戶可見的可靠性。

5.3 缺乏進化能力

由于每個路由器都實現了 IP 協議,因此很難改變互聯網的服務模式。最近由于 IPv4地址短缺而加速過渡到 IPv6的過程,也保留了相同的服務模式。幾十年來,互聯網一直沒有重大的架構變化,沒有可行的方案替代互聯網。然而,中央控制的數據中心部署的大型專用網絡通過其網內處理為客戶提供優越的服務,今天的大多數客戶端流量要么通過本地控制中心緩存其原始 AS 服務,要么直接使用從源 AS 到具有其專用網內處理中心的大型專用網絡。中央控制中心的大型專用網絡與云和內容服務垂直整合,這些服務是現在比 ISP 更占主導地位的經濟力量。

因此,已經開始看到了一個新的全球基礎設施的過渡,這些私有網絡已經取代了當前互聯網的幾乎所有流量的最后一公里,這將標志著互聯網經濟時代的結束,當時它沒有真正的競爭對手,雖然互聯網面臨著許多挑戰,但是,對于互聯網的未來,沒有一個挑戰比解決兩種愿景的分歧更為重要: 一種愿景是使早期互聯網社區活躍起來的,即一個統一的互聯網將所有用戶連接起來,基本上與端點提供的服務脫節; 另一種愿景是以新興的大型私有網絡為代表,在這種網絡中使用網內處理提供了更好的性能。

6. 一句話小結

互聯網是一個工程奇跡,體現了非常大膽且有預見的設計決策。不要讓互聯網的復雜性掩蓋了其核心設計的簡單性和所取得的成就,不要忘記導致互聯網誕生的勇氣、社區精神和高瞻遠矚,這或許是互聯網更有價值的一個方面。

責任編輯:武曉燕 來源: 喔家ArchiSelf
相關推薦

2022-07-07 18:03:15

網絡協議網絡通信

2021-04-19 10:13:25

互聯網數據技術

2018-05-31 09:26:04

2017-10-15 14:36:10

互聯網分層架構服務化

2020-08-11 09:43:28

分層架構互聯網架構

2024-07-11 10:27:52

2021-09-13 22:34:56

區塊鏈新基建數字化轉型

2019-04-24 12:30:36

2021-10-18 14:30:55

物聯網IOT

2021-05-18 09:48:58

前端開發架構

2020-12-30 09:05:24

架構微內核系統

2022-04-26 06:04:11

零信任網絡安全

2020-03-14 13:13:02

物聯網IOT通信協議

2023-05-17 16:01:00

物聯網數據治理

2023-11-08 08:21:52

MVPMVVMMVI

2023-12-22 19:59:15

2021-08-04 16:06:45

DataOps智領云

2022-02-16 18:24:38

互聯網產品分析

2020-08-13 09:22:11

MapReduce分層架構架構

2018-08-22 17:58:01

數據平臺數據倉庫架構
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 精品国产乱码久久久久久闺蜜 | 国产精品区一区二 | 免费中文字幕日韩欧美 | 日韩欧美二区 | 久久精品在线 | av看片网站 | 日韩视频福利 | 久久精品福利 | 九九综合| 欧美a级成人淫片免费看 | 伊人久久大香线 | 国产成人精品午夜视频免费 | 亚洲欧美久久 | 欧美a级成人淫片免费看 | 国产欧美在线 | 日本精品一区二区三区视频 | 伊人狠狠 | 天天摸天天干 | 国产日韩精品久久 | 伊人成人免费视频 | 国产精品久久国产愉拍 | 777zyz色资源站在线观看 | 一区二区三区高清不卡 | 伊人在线 | 国产精品不卡视频 | 日韩欧美在线观看 | 在线国产一区二区 | 精品九九九 | 亚洲一区二区综合 | 免费一级黄色录像 | 欧美 日韩 国产 成人 在线 | 久久91精品国产一区二区三区 | 久久成人亚洲 | 成人高清在线视频 | 97色在线视频 | 亚洲精品丝袜日韩 | 日韩在线中文字幕 | 欧美一级全黄 | 红桃成人在线 | 国产一区二区影院 | 国产精品美女久久久久久免费 |