本文介紹一些入門基本概念
1. 辨析幾種“網”
1.1. 計算機網路
首先來看一張普通的網——蜘蛛網:
那麼該蜘蛛網有什麼特點呢?從幾何上看,無外乎有兩個特徵:點(紅色部分)和線(藍色部分)。
其實生活中你能見到的網,如漁網、鐵網、繩網等等,都具有這個特徵。
以此類推,計算機網路也具有這兩個特徵,只不過再叫點和線就不合適了,我們換兩個名詞:結點和鏈路。
所以,計算機網路就是由若干結點和連線這些結點的鏈路組成的。
結點可以是計算機、交換機、路由器等裝置。鏈路可以暫時簡單理解為網線。
下圖是由五個結點(四臺計算機、一臺集線器)和四條鏈路組成的計算機網路,可以簡稱為網路:
在研究網路之間的關係時,我們需要把網路當成一個整體來看,忽略網路內部的複雜情況。這時,一個網路可以用一朵雲來代替:
把某個網路比作一個人,結點和鏈路則是心肝脾肺腎和血管。
研究網路內部就好比醫生看病,關注的是你身體內的某個器官,以及這些器官之間的聯絡。
研究網路和網路之間的關係就好比人際交往,關注的是人這個完整的個體,而不關注器官,畢竟沒人要和器官交朋友。
1.2. 網路的網路(互連網/internet)
網路的網路就好比“人際關係網”:
智慧手機把人們連線在一起,構成了人際關係網。把人換成網路,智慧手機換成路由器,“人際關係網”即是“網路的網路”。
可以暫時把路由器看做一臺特殊的計算機。打個比方:
把結點比作市,鏈路比作高速公路,網路比作省,傳送的資料比作客運汽車,路由器比作省際高速公路收費站,互連網比作國。
網路之間通過路由器連線起來構成一個範圍更大的計算機網路,這種網路就是“網路的網路”,可稱之為互連網(internet)。
圖1-4中一朵雲代表了一個網路,該網路連線了多臺計算機。圖1-6中多朵藍色的雲(網路)連線在一起構成了一朵更大的灰色的雲(互連網)。由這兩張圖,我們可以得出:計算機連線在一起構成網路,網路通過路由器連線在一起構成互連網。
1.3. 網際網路(Internet)
網際網路(Internet) 是全球最大、最重要的計算機網路。如果你真正瞭解了網際網路,那麼你也可以說自己真正瞭解計算機網路。
那什麼是網際網路呢?
我們每天都會上網,微信聊天、王者榮耀、看視訊、看部落格等等。我們上的這個“網”指的就是網際網路。我們之所以能夠一起聊天、玩遊戲就是因為大家都被連線在了同一張“網”上了。這是網際網路給我們使用者的第一個體驗:所有上網的人被無形地連在一起了,即連通。各位現在能夠看到我寫的部落格文章,這是網際網路給我們使用者的第二個體驗:共享資源,如果沒網際網路,大家就看不到我的文章了。
網際網路的兩個特性:連通性、資源共享。
internet和Internet要做區分:
- internet泛指多個計算機網路連線在一起而形成的計算機網路。
- Internet特指網際網路,即現在全球最大、最重要的那個計算機網路,我們平時上的那個是Internet,而不是internet。
網際網路發展至今,連線在其中的已經不僅僅只是我們平常使用的“電腦”了,諸如智慧手機、智慧手環、智慧電器能都可以接入網際網路中。這些裝置我們可以都稱之為主機或端系統。
圖1-7強調了主機接入網路中,而忽略網路中的路由器或鏈路。
那主機是怎樣接入網際網路中的呢?
這就得先說說目前的網際網路的基礎結構了。現在的網際網路是多層次ISP結構的網際網路。
ISP即網際網路服務提供商(Internet Service Provider),比如中國移動。ISP從網際網路管理機構中申請到許多IP地址,同時也擁有通訊鏈路和路由器等裝置。我們普通使用者只需向ISP交納費用,就可獲得一個IP地址,然後就可以上網了(就是交網費上網,我家是交給中國移動)。
舉個例子,IP地址就像車牌一樣,你只買了個車,但是沒車牌是上不了路的。ISP就負責發車牌、修公路、修收費站。
IP地址經過了網際網路管理機構、ISP、最後才到使用者手中,並且網際網路管理機構分給ISP的是一批IP地址。
這個模式類似於生產廠家、經銷商、消費者。
多層次是指根據提供服務的覆蓋面積大小以及擁有的IP地址數目的不同,ISP可以分為不同層次的ISP:主幹ISP、地區ISP、本地ISP。
主幹ISP服務面積最大(通常能覆蓋全國),有幾個專門的公司建立和維持。地區ISP次之,地區ISP之間可通過主幹ISP連線起來。地區ISP則直接給使用者提供服務。
類似於國家、省、市,使用者則類似於市民。
2. 網際網路的組成
網際網路是全球最大的、覆蓋全球的計算機網路。如此之大的網路,從工作方式上看可以分為兩部分:邊緣部分和核心部分
2.1. 邊緣部分
邊緣部分由連線在網際網路上的主機組成,這部分由使用者直接使用,為使用者提供資料通訊和資源共享的服務。
邊緣部分要利用核心部分提供的服務,才能為使用者提供通訊和資源共享的服務。比如圖1-8中任意兩個人都可以利用面前的電腦進行通訊。
通訊的方式有兩種:客戶-伺服器方式和對等連線方式。
一. 客戶-伺服器方式
這種方式是目前網際網路上最常用的方式。網上的各種資訊都儲存在伺服器上,我們需要某資訊時就通過網際網路的核心部分提供的服務向伺服器傳送請求,將其檢索出來,然後伺服器再傳送給我們的裝置。
客戶是服務請求方,伺服器是服務提供方。
客戶和伺服器還具有以下特點:
- 客戶主動向伺服器傳送請求,伺服器被動接受請求,這就要求伺服器要一直執行。
- 客戶需要知道伺服器的地址,伺服器不需要知道客戶的地址。
- 客戶對硬體的要求不高(普通的電腦和智慧手機即可),伺服器對硬體要求較高。
二. 對等連線方式
即P2P(peer-to-peer),指兩臺主機在通訊時並不區分哪一個是服務請求方,哪一個是服務提供方。二者可以互相下載對方提供的內容。其實這種方式也是一種特殊的客戶-伺服器方式,只不過二者地位相等。
打個比方,客戶-伺服器方式就相當於學生向老師請教問題,而P2P方式就相當於學生之間互相請教問題。
2.2. 核心部分
核心部分由大量網路和連線這些網路的路由器組成。核心部分為邊緣部分提供了服務——連通性和交換,所以邊緣部分中的主機才能夠進行資料通訊和資源共享。核心部分要比邊緣部分複雜的多。
核心部分中的大量網路提供了連通性,這不難理解。那交換是誰提供的?交換的是什麼?分組是什麼?怎麼交換分組?下面就簡單介紹一下這些問題。
Q1: 交換是誰提供的?
A1: 路由器
路由器是一種特殊的計算機,它的任務就是進行分組交換。
Q2: 交換的是什麼?分組是什麼?
A2: 交換的是分組
在網路中,我們想要傳輸的資訊即報文(message),不是整個的傳輸出去,因為有的會比較長(比如這篇文章),所以通常會將其劃分一個個更小的資料段,但是這些資料塊中只有資料,它並不認識路,怎樣使它在複雜的網路中不迷路呢?需要給它再加上一些必要的控制資訊(首部),資料塊加上首部就構成了一個分組。
打個比方,一個公司要運100噸貨物,這麼多貨物一下肯定運不完,所以要分開運,比如每個集裝箱運10噸。但是這10噸貨物也不認識路,就需要給集裝箱加個貨車頭,貨車頭中有司機和地圖,所以能找到目的地。
100噸貨物就是我們要傳送的資訊(報文),每個集裝箱就是一個個劃分後的資料段,貨車頭就是首部,貨車頭加上集裝箱才是一個完整的貨車,即分組。
Q3: 怎麼交換分組?
A3: 使用分組交換技術
舉個例子,我們平常使用微信交流,兩人之間可能相隔十萬八千里,你想說的話怎麼會剛好到達對方的手機上?
這就是網路核心部分最重要的功能——分組交換。
圖1-6中路由器把許多網路連線在一起構成了一個更大的網路,網際網路中的大大小小的網路更是不計其數,而且通訊鏈路更是複雜多變。
你可以開啟中國地圖,看看上面的鐵路和公路,讓人眼花繚亂。網際網路中的情況和這差不多。
路由器是實現分組交換的關鍵部件,路由器收到一個分組,會先暫時存下來,然後根據分組中的首部資訊,為其選擇一條合適的介面,將其轉發出去。分組交換使用了儲存轉發技術。
舉個西遊記中的師徒四人去取經的例子,分組交換就是“敢問路在何方”。
唐僧每到一個地方都會說借宿人家說:“貧僧是從東土大唐而來,去往西天拜佛求經的和尚”,別人一聽這句話,只要不是妖怪,自然會告訴他下一步該走哪。雖然可能會走彎路,或者被妖怪抓,但是總體上肯定會離西天越來越近,最終到達。
在上面的情境中,“東土大唐”就是源地址,“西天”就是目的地址,這兩個資訊存在了分組的首部中,所以分組才能在網路中傳送。“唐僧四人”就是分組,“借宿人家”就是路由器,分組交換就是你問路的過程,不過這種問路,路人不會告訴你全路線,只會告訴你下一步怎麼走。
3. 瞭解計算機網路
3.1. 定義
上面介紹了好幾種網,蜘蛛網、人際關係網、計算機網路、網路的網路(互連網 / internet)、網際網路(Internet)。除了前兩種,其餘都是計算機網路。但是說了這麼多,好像也沒精準說清楚計算機網路到底是什麼?能不能像數學定理一樣,給出一個精準的定義?
我認為現在大可不必。(定義在相關書籍和網上都能檢索到)
舉個例子來說,在你第一次有想學計網這個念頭的時候,首先做的(幾乎是條件反射般的)是不是上網查一查什麼是計算機網路?這說明計算機網路已經深入了我們的生活,並且我們能夠很熟練地使用它。所以我認為初學計網時,不必死扣它的定義。
現在作為初學者的我們只需要提到計算機網路,就聯想到一張網,然後有許多計算機連線在一起就可以了,如圖1-4和圖1-6。
3.2. 分類
一. 按照網路的作用範圍分類:
- 廣域網WAN(Wide Area Network):作用範圍為幾十到幾千公里,能長距離地運送資料。
- 都會網路MAN(Metropolitan Area Network):作用範圍為5到50公里。
- 區域網LAN(Local Area Network):作用範圍較小,學校和公司經常使用。
- 個人區域網(Personal Area Network):作用範圍很小,10m左右,個人工作使用。
二. 按照網路的使用者分類
- 公用網(public network):電信公司出資建造的大型網路,普通使用者交納費用即可使用。
- 專用網(private network):某個單位自己建造的網路,不對本單位外的人提供使用。
3.3. 效能指標
以人為例,要衡量一個人健康或強壯與否,需要制定各種指標,比如身高體重、血壓、血糖、肺活量等來定量地衡量。計算機網路同樣如此,即效能指標。
在介紹計算機網路的幾種效能指標前,先再看一遍前面的那個比喻:
把結點比作市,鏈路比作高速公路,網路比作省,傳送的資料比作客運汽車,路由器比作省際高速公路收費站,互連網比作國。
一. 速率
速率指的是資料的傳送速率,即每秒鐘傳送多少位資訊,也叫資料率。因為無論傳送的是什麼資料,都得轉化為二進位制數字,所以單位是bit/s或b/s或bps。
注意這裡是小寫的b,而平常我們下載東西時會看到的MB/s、KB/s中的B是大寫的。小寫的指位(bit),大寫的指位元組(Byte),1Byte = 8 bit。
二. 頻寬
在計算機網路中,頻寬用來表示網路中某通道傳送資料的能力。也即單位時間內網路中某通道所能通過的最高資料率,因此單位也為bit/s。
所以頻寬越寬,所能傳送的最高資料率也越高。
頻寬類似於高速公路的路寬,路越寬,單位時間內能通過的車越多。
三. 吞吐量
吞吐量表示在單位時間內通過某個網路的實際資料量。
四. 時延
時延指資料從網路的一端傳送到另一端所需的時間,由多個部分組成。
時延可以比作你坐客運汽車從出發地到目的地的總時間。
(1)傳送時延:是主機或路由器傳送資料幀所需要的的時間。
傳送時延 = 資料幀長度(bit)/ 傳送速率(bit/s)
傳送時延可以比作你的客運汽車出收費站的時間。
(2)傳播時延:指電磁波在通道中傳播一定的距離需要花費的時間。
傳播時延 = 通道長度(m)/ 電磁波在通道上的傳播速率(m/s)
傳播時延可以比作客運汽車(假設速度像電磁波一樣恆定)在高速公路上花費的時間。
(3)處理時延:主機或路由器收到分組後處理分組花費的時間。
處理時延可以比作客運汽車經過收費站時繳費所花的時間。
(4)排隊時延:分組經過路由器後需要排隊等待處理的時間和處理完後排隊等待離開的時間。
排隊時延可以比作進入收費站後排隊等待繳費的時間。如果不需要排隊,則排隊時延為0.
所以,總時延 = 傳送時延 + 傳播時延 + 處理時延 + 排隊時延。資料在網路中的時延由這四部分組成,不能只考慮一部分。
五. 時延頻寬積
時延頻寬積是傳播時延和頻寬的乘積。
如上圖,用傳播時延表示長方形的長,頻寬表示寬,則時延頻寬積即是面積。
六. 往返時間RTT
往返時間即兩個結點雙向互動一次所需的時間。
類似於你買了個往返票,做客運汽車從車站出發到目的地一趟,再回到車站的總時間。
七. 利用率
分為通道利用率和網路利用率兩種。
- 通道利用率:指某通道有百分之幾的時間是被利用的(有資料通過)。完全空閒的的通道的通道利用率為0。
- 網路利用率:指全網路的通道利用率的加權平均值。
通道或網路的利用率過高會產生非常大的時延,所以某些較大主幹網ISP通常控制通道利用率不能超過50%,如果超過就要準備擴容,增大線路頻寬。
很好理解,路上車多了,就容易堵車,要麼把路上的車變少,要麼把路修的寬一些。
3.4. 非效能指標
如果把效能指標比作氪金遊戲中玩家的技術水平的高低,那非效能指標就相當於玩家的錢包厚度。人民幣玩家能夠彌補一些技術上的差距,如果該玩家技術又棒,錢包又鼓,那稱霸遊戲便不再話下。
非效能指標有:費用、質量、標準化、可靠性、可擴充套件性和可升級性、易於管理和維護。這些都是見名知意的名詞,不用再解釋了。
4. 計算機網路體系結構
4.1. 分層
觀察我們的現實社會,會發現有許多事物都有其體系結構,比如社會、學校、醫院、車站、人等等,這些都是複雜的集合體,正是有了體系結構,才使其能夠正確運作。
以車站為例,車站客流量大,但是人們進去之後能夠保持有序,該幹什麼就幹什麼,不會像無頭蒼蠅一樣亂撞。因為車站劃分好了層次,賣票視窗、安檢門、候車區、上車區、出站門......井井有序。
從下向上順次經過,乘客能在每一層完成部分動作,下層為上層提供服務,但層次之間不相互干擾。比如我們撤銷賣票視窗,改為取票機,並不影響其他層次,我們只要求過了安檢門能去取票機取票,取完票的能去候車區候車。如此一來,就把乘車這個“大問題”劃分成了若干小問題,這些小問題比較好解決。
計算機網路也是如此,對其體系結構進行劃分層次。這樣就能像圖1-12那樣按部就班的進行工作。對計算機網路進行分層能把這個複雜大問題,也能分成若干區域性小問題,便於研究和處理。
4.2. 協議分層
我們使用網際網路最常做的事就是通訊,那兩個通訊實體(比如兩臺電腦)之間進行通訊,是隨便傳送資訊就能接收到嗎?肯定不是。
舉個例子,甲乙的日常對話(乙不會英語):
甲:吃了嗎?
乙:吃了。
甲:What a nice day!
乙:你在說什麼?????
同一種意思可以用多種語言來表達,但甲和乙不用相同的語言是無法交流的,協議就好比語言。
網際網路中,涉及的兩個通訊實體受協議的約束,並且協議無處不在。協議定義了在兩個或多個通訊實體之間交換的報文的格式和 順序,以及報文傳送或接受報文或其他事件中所採取的動作。
前面的車站已經進行分層了,井然有序。現在對協議進行分層(這裡只介紹五層協議模型)。
- 應用層:定義應用程式之間的通訊和互動的規則。
- 運輸層:負責向兩臺主機中程式之間的通訊提供通用的資料傳輸服務。
- 網路層:負責為分組交換網上的不同主機提供通訊服務、路由選擇、IP地址管理。
- 資料鏈路層:負責在互連裝置之間傳遞資料。
- 物理層:考慮怎樣才能在連線各種計算機的傳輸媒體上傳輸資料位元流,而不是具體的傳輸媒體。
4.3. 實體、服務、協議、協議訪問點
一. 實體
實體就是用於傳送和接收資訊的硬體或軟體程式。如圖1-13中的使用者電腦中的軟體程式。
二. 服務
在分層體系中,每層都有各自的功能,下層會為上層提供服務,但下層提供的服務並不是其全部功能。只有上層看的見的功能才算是下層提供的服務。
打個比方,員工會為領導定時彙報工作,但彙報內容是有限的、精簡的。如果你把一日三餐,吃喝拉撒等雞毛蒜皮的小事都彙報了,那會被開的。
三. 協議
協議是控制兩個(多個)對等實體進行通訊的規則的集合。在協議的控制下,兩個對等實體間的通訊使得本層能夠向上一層提供服務。要實現本層協議,還要使用下面一層所提供的服務。
打個比方,員工之間需要交流進度,共同協作才能完成工作,然後向領導彙報工作。而領導需要下屬彙報的工作材料才能完成領導的工作。
四. 服務訪問點
上層使用下層提供的服務必須通過與下層交換一些命令——服務原語。
在同一系統中,相鄰兩層的實體進行互動的地方稱為服務訪問點(Service Access Point,SAP),它是抽象的,實際上是一個邏輯介面。
圖1-14畫出了上面四個名詞的關係:
可以看出:協議是不同系統對等實體間的,是水平方向的;服務是同一系統上下層之間的,是垂直方向的。
本文只是介紹了一些入門基本概念,並未真正深入。比如路由器、分組交換、協議、五層模型等,都只是稍微提一下。因為真正想要了解這些,隻言片語肯定不夠,比如對五層模型的理解,可能需要你把這五層都看了一篇,才能在心裡建立真正的五層模型。
作者簡介
我是「行小觀」,我會在公眾號『行人觀學』中持續更新「Java」、「Go」、「資料結構和演算法」、「計算機基礎」等相關文章。
本文章屬於系列文章「趣解計算機網路」。
歡迎關注,我們一起踏上程式設計的行程。
如有錯誤,還請指正。