本文介紹一些入門基本概念
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」、「數據結構和算法」、「計算機基礎」等相關文章。
本文章屬於系列文章「趣解計算機網絡」。
歡迎關注,我們一起踏上編程的行程。
如有錯誤,還請指正。