我把自己以往的文章彙總成為了 Github ,歡迎各位大佬 star
https://github.com/crisxuan/bestJavaer
如果說計算機把我們從工業時代帶到了資訊時代,那麼計算機網路就可以說把我們帶到了網路時代。隨著使用計算機人數的不斷增加,計算機也經歷了一系列的發展,從大型通用計算機 -> 超級計算機 -> 小型機 -> 個人電腦 -> 工作站 -> 行動式電腦 -> 智慧手機終端等都是這一過程的產物。計算機網路也逐漸從獨立模式
演變為了 網路互聯模式
。
可以看到,在獨立模式下,每個人都需要排隊等待其他人在一個機器上完成工作後,其他使用者才能使用。這樣的資料是單獨管理的。
現在切換到了網路互聯模式,在這種模式下,每個人都能獨立的使用計算機,甚至還會有一個伺服器,來為老大哥、cxuan 和 sonsong 提供服務。這樣的資料是集中管理的。
計算機網路按規模進行劃分,有 WAN(Wide Area Network, 廣域網)
和 LAN(Local area Network, 區域網)
。如下圖所示
上面是區域網,一般用在狹小區域內的網路,一個社群、一棟樓、辦公室經常使用區域網。
距離較遠的地方組成的網路一般是廣域網。
最初,只是固定的幾臺計算機相連在一起形成計算機網路。這種網路一般是私有的,這幾臺計算機之外的計算機無法訪問。隨著時代的發展,人們開始嘗試在私有網路上搭建更大的私有網路,逐漸又發展演變為網際網路,現在我們每個人幾乎都能夠享有網際網路帶來的便利。
計算機網路發展歷程
批處理
就和早期的計算機作業系統一樣,最開始都要先經歷批處理(atch Processing)
階段,批處理的目的也是為了能讓更多的人使用計算機。
批處理就是事先將資料裝入卡帶或者磁帶,並且由計算機按照一定的順序進行讀入。
當時這種計算機的價格比較昂貴,並不是每個人都能夠使用的,這也就客觀暗示著,只有專門的操作員才能使用計算機,使用者把程式提交給操作員,由操作員排隊執行程式,等一段時間後,使用者再來提取結果。
這種計算機的高效性並沒有很好的體現,甚至不如手動運算快。
分時系統
在批處理之後出現的就是分時系統了,分時系統指的是多個終端與同一個計算機連線,允許多個使用者同時使用一臺計算機。分時系統的出現實現了一人一機
的目的,讓使用者感覺像是自己在使用計算機,實際上這是一種 獨佔性
的特性。
分時系統出現以來,計算機的可用性得到了極大的改善。分時系統的出現意味著計算機越來越貼近我們的生活。
還有一點需要注意:分時系統的出現促進了像是 BASIC 這種人機互動語言的誕生。
分時系統的出現,同時促進者計算機網路的出現。
計算機通訊
在分時系統中,每個終端與計算機相連,這種獨佔性的方式並不是計算機之間的通訊,因為每個人還是在獨立的使用計算機。
到了 20 世紀 70 年代,計算機效能有了高速發展,同時體積也變得越來越小,使用計算機的門檻變得更低,越來越多的使用者可以使用計算機。
沒有一個計算機是資訊孤島促使著計算機網路的出現和發展。
計算機網路的誕生
20 世紀 80 年代,一種能夠互連多種計算機的網路隨之誕生。它能夠讓各式各樣的計算機相連,從大型的超級計算機或主機到小型電腦。
20 世紀 90 年代,真正實現了一人一機的環境,但是這種環境的搭建仍然價格不菲。與此同時,諸如電子郵件(E-mail)
、全球資訊網(WWW,World Wide Web)
等資訊傳播方式如雨後春筍般迎來了前所未有的發展,使得網際網路從大到整個公司小到每個家庭內部,都得以廣泛普及。
計算機網路的高速發展
現如今,越來越多的終端裝置接入網際網路,使網際網路經歷了前所未有的高潮
,近年來 3G、4G、5G 通訊技術的發展更是網際網路高速發展的產物。
許多發展道路各不相同的網路技術也都正在向網際網路靠攏。例如,曾經一直作為通訊基礎設施、支撐通訊網路的電話網。隨著網際網路的發展,其地位也隨著時間的推移被 IP(Internet Protocol)
網所取代,IP 也是網際網路發展的產物。
網路安全
正如網際網路也具有兩面性,網際網路的出現方便了使用者,同時也方便了一些不法分子。網際網路的便捷也帶來了一些負面影響,計算機病毒的侵害、資訊洩漏、網路詐騙層出不窮。
在現實生活中,通常情況下我們捱揍了會予以反擊,但是在網際網路中,你被不法分子攻擊通常情況下是無力還擊的,只能防禦,因為還擊需要你精通計算機和網際網路,這通常情況下很多人辦不到。
通常情況下公司和企業容易被作為不法分子獲利的物件,所以,作為公司或者企業,要想不受攻擊或者防禦攻擊,需要建立安全的網際網路連線。
網際網路協議
協議這個名詞不僅侷限於網際網路範疇,也體現在日常生活中,比如情侶雙方約定好在哪個地點吃飯,這個約定也是一種協議
,比如你應聘成功了,企業會和你簽訂勞動合同,這種雙方的僱傭關係也是一種 協議
。注意自己一個人對自己的約定不能成為協議,協議的前提條件必須是多人約定。
那麼網路協議是什麼呢?
網路協議就是網路中(包括網際網路)傳遞、管理資訊的一些規範。如同人與人之間相互交流是需要遵循一定的規矩一樣,計算機之間的相互通訊需要共同遵守一定的規則,這些規則就稱為網路協議。
沒有網路協議的網際網路是混亂的,就和人類社會一樣,人不能想怎麼樣就怎麼樣,你的行為約束是受到法律的約束的;那麼網際網路中的端系統也不能自己想發什麼發什麼,也是需要受到通訊協議約束的。
我們一般都瞭解過 HTTP 協議, HTTP 是一個在計算機世界裡專門在兩點之間傳輸文字、圖片、音訊、視訊等超文字資料的約定和規範
但是網際網路又不只有 HTTP 協議,它還有很多其他的比如 IP、TCP、UDP、DNS 協議等。下面是一些協議的彙總和介紹
網路體系結構 | 協議 | 主要用途 |
---|---|---|
TCP/IP | HTTP、SMTP、TELNET、IP、ICMP、TCP、UDP 等 | 主要用於網際網路、區域網 |
IPX/SPX | IPX、NPC、SPX | 主要用於個人電腦區域網 |
AppleTalk | AEP、ADP、DDP | 蘋果公司現有產品互聯 |
ISO 在制定標準化的 OSI 之前,對網路體系結構相關的問題進行了充分的探討,最終提出了作為通訊協議設計指標的 OSI 參考模型。這一模型將通訊協議中必要的功能分為了 7 層。通過這 7 層分層,使那些比較複雜的協議簡單化。
在 OSI 標準模型中,每一層協議都接收由它下一層所提供的特定服務,並且負責為上一層提供服務,上層協議和下層協議之間通常會開放 介面
,同一層之間的互動所遵守的約定叫做 協議
。
OSI 標準模型
上圖只是簡單的介紹了一下層與層之間的通訊規範和上層與下層的通訊規範,並未介紹具體的網路協議分層,實際上,OSI 標準模型將複雜的協議整理並分為了易於理解的 7 層。如下圖所示
網際網路的通訊協議都對應了 7 層中的某一層,通過這一點,可以瞭解協議在整個網路模型中的作用,一般來說,各個分層的主要作用如下
應用層
:應用層是 OSI 標準模型的最頂層,是直接為應用程式提供服務的。其作用是在實現多個系統應用程式相互通訊的同時,完成一系列業務處理所需的服務。包括檔案傳輸、電子郵件遠端登入和遠端介面呼叫等協議。表示層
: 表示層向上對應用程式服務,向下接收會話層提供的服務,表示層位於 OSI 標準模型的第六層,表示層的主要作用就是將裝置的固有資料格式轉換為網路標準傳輸格式。會話層
:會話層位於 OSI 標準模型的第五層,它是建立在傳輸層之上,利用傳輸層提供的服務建立和維持會話。傳輸層
:傳輸層位於 OSI 標準模型的第四層,它在整個 OSI 標準模型中起到了至關重要的作用。傳輸層涉及到兩個節點之間的資料傳輸,向上層提供可靠的資料傳輸服務。傳輸層的服務一般要經歷傳輸連線建立階段,資料傳輸階段,傳輸連線釋放階段 3 個階段才算完成一個完整的服務過程。網路層
:網路層位於 OSI 標準模型的第三層,它位於傳輸層和資料鏈路層的中間,將資料設法從源端經過若干個中間節點傳送到另一端,從而向運輸層提供最基本的端到端的資料傳送服務。資料鏈路層
:資料鏈路層位於物理層和網路層中間,資料鏈路層定義了在單個鏈路上如何傳輸資料。物理層
:物理層是 OSI 標準模型中最低的一層,物理層是整個 OSI 協議的基礎,就如同房屋的地基一樣,物理層為裝置之間的資料通訊提供傳輸媒體及互連裝置,為資料傳輸提供可靠的環境。
TCP/IP 協議簇
TCP/IP 協議是我們程式設計師接觸最多的協議,實際上,TCP/IP 又被稱為 TCP/IP 協議簇
,它並不特指單純的 TCP 和 IP 協議,而是容納了許許多多的網路協議。
OSI 模型共有七層,從下到上分別是物理層、資料鏈路層、網路層、運輸層、會話層、表示層和應用層。但是這顯然是有些複雜的,所以在TCP/IP協議中,它們被簡化為了四個層次
和 OSI 七層網路協議的主要區別如下
- 應用層、表示層、會話層三個層次提供的服務相差不是很大,所以在 TCP/IP 協議中,它們被合併為應用層一個層次。
- 由於資料鏈路層和物理層的內容很相似,所以在 TCP/IP 協議中它們被歸併在網路介面層一個層次裡。
我們的主要研究物件就是 TCP/IP 的四層協議。
下面 cxuan 和你聊一聊 TCP/IP 協議簇中都有哪些具體的協議
IP 協議
IP 是 網際網路協議(Internet Protocol)
,位於網路層。IP是整個 TCP/IP 協議族的核心,也是構成網際網路的基礎。IP 能夠為運輸層提供資料分發,同時也能夠組裝資料供運輸層使用。它將多個單個網路連線成為一個網際網路,這樣能夠提高網路的可擴充套件性,實現大規模的網路互聯。二是分割頂層網路和底層網路之間的耦合關係。
ICMP 協議
ICMP 協議是 Internet Control Message Protocol
, ICMP 協議主要用於在 IP 主機、路由器之間傳遞控制訊息。ICMP 屬於網路層的協議,當遇到 IP 無法訪問目標、IP 路由器無法按照當前傳輸速率轉發資料包時,會自動傳送 ICMP 訊息,從這個角度來說,ICMP 協議可以看作是 錯誤偵測與回報機制
,讓我們檢查網路狀況、也能夠確保連線的準確性。
ARP 協議
ARP 協議是 地址解析協議
,即 Address Resolution Protocol
,它能夠根據 IP 地址獲取實體地址。主機傳送資訊時會將包含目標 IP 的 ARP 請求廣播到區域網路上的所有主機,並接受返回訊息,以此來確定實體地址。收到訊息後的實體地址和 IP 地址會在 ARP 中快取一段時間,下次查詢的時候直接從 ARP 中查詢即可。
TCP 協議
TCP 就是 傳輸控制協議
,也就是 Transmission Control Protocol
,它是一種面向連線的、可靠的、基於位元組流的傳輸協議,TCP 協議位於傳輸層,TCP 協議是 TCP/IP 協議簇中的核心協議,它最大的特點就是提供可靠的資料交付。
TCP 的主要特點有 慢啟動、擁塞控制、快速重傳、可恢復。
UDP 協議
UDP 協議就是 使用者資料包協議
,也就是 User Datagram Protocol
,UDP 也是一種傳輸層的協議,與 TCP 相比,UDP 提供一種不可靠的資料交付,也就是說,UDP 協議不保證資料是否到達目標節點,也就是說,當報文傳送之後,是無法得知其是否安全完整到達的。UDP 是一種無連線的協議,傳輸資料之前源端和終端無需建立連線,不對資料包進行檢查與修改,無須等待對方的應答,會出現分組丟失、重複、亂序等現象。但是 UDP 具有較好的實時性,工作效率較 TCP 協議高。
FTP 協議
FTP 協議是 檔案傳輸協議
,英文全稱是 File Transfer Protocol
,應用層協議之一,是 TCP/IP 協議的重要組成之一,FTP 協議分為伺服器和客戶端兩部分,FTP 伺服器用來儲存檔案,FTP 客戶端用來訪問 FTP 伺服器上的檔案,FTP 的傳輸效率比較高,所以一般使用 FTP 來傳輸大檔案。
DNS 協議
DNS 協議是 域名系統協議
,英文全稱是 Domain Name System
,它也是應用層的協議之一,DNS 協議是一個將域名和 IP 相互對映的分散式資料庫系統。DNS 快取能夠加快網路資源的訪問。
SMTP 協議
SMTP 協議是 簡單郵件傳輸協議
,英文全稱是 Simple Mail Transfer Protocol
,應用層協議之一,SMTP 主要是用作郵件收發協議,SMTP 伺服器是遵循 SMTP 協議的傳送郵件伺服器,用來傳送或中轉使用者發出的電子郵件
SLIP 協議
SLIP 協議是指序列線路網際協議(Serial Line Internet Protocol)
,是在序列通訊線路上支援 TCP/IP 協議的一種點對點(Point-to-Point
)式的鏈路層通訊協議。
PPP 協議
PPP 協議是 Point to Point Protocol
,即點對點協議,是一種鏈路層協議,是在為同等單元之間傳輸資料包而設計的。設計目的主要是用來通過撥號或專線方式建立點對點連線傳送資料,使其成為各種主機、網橋和路由器之間簡單連線的一種共通的解決方案。
網路核心概念
傳輸方式
網路根據傳輸方式可以進行分類,一般分成兩種 面向連線型和麵向無連線型。
- 面向連線型中,在傳送資料之前,需要在主機之間建立一條通訊線路。
- 面向無連線型則不要求建立和斷開連線,傳送方可用於任何時候傳送資料。接收端也不知道自己何時從哪裡接收到資料。
分組交換
在網際網路應用中,每個終端系統都可以彼此交換資訊,這種資訊也被稱為 報文(Message)
,報文是一個集大成者,它可以包括你想要的任何東西,比如文字、資料、電子郵件、音訊、視訊等。為了從源目的地向端系統傳送報文,需要把長報文切分為一個個小的資料塊,這種資料塊稱為分組(Packets)
,也就是說,報文是由一個個小塊的分組組成。在端系統和目的地之間,每個分組都要經過通訊鏈路(communication links)
和分組交換機(switch packets)
,分組要在端系統之間互動需要經過一定的時間,如果兩個端系統之間需要互動的分組為 L 位元,鏈路的傳輸速率問 R 位元/秒,那麼傳輸時間就是 L / R秒。
一個端系統需要經過交換機給其他端系統傳送分組,當分組到達交換機時,交換機就能夠直接進行轉發嗎?不是的,交換機可沒有這麼無私,你想讓我幫你轉發分組?好,首先你需要先把整個分組資料都給我,我再考慮給你傳送的問題,這就是儲存轉發傳輸
儲存轉發傳輸
儲存轉發傳輸指的就是交換機再轉發分組的第一個位元前,必須要接受到整個分組,下面是一個儲存轉發傳輸的示意圖,可以從圖中窺出端倪
由圖可以看出,分組 1、2、3 向交換器進行分組傳輸,並且交換機已經收到了分組1 傳送的位元,此時交換機會直接進行轉發嗎?答案是不會的,交換機會把你的分組先快取在本地。這就和考試作弊一樣,一個學霸要經過學渣 A 給學渣 B 傳答案,學渣 A 說,學渣 A 在收到答案後,它可能直接把卷子傳過去嗎?學渣A 說,等我先把答案抄完(儲存功能)後再把卷子給你。
排隊時延和分組丟失
什麼?你認為交換機只能和一條通訊鏈路進行相連?那你就大錯特錯了,這可是交換機啊,怎麼可能只有一條通訊鏈路呢?
所以我相信你一定能想到這個問題,多個端系統同時給交換器傳送分組,一定存在順序到達
和排隊
的問題。事實上,對於每條相連的鏈路,該分組交換機會有一個輸出快取(output buffer)
和 輸出佇列(output queue)
與之對應,它用於儲存路由器準備發往每條鏈路的分組。如果到達的分組發現路由器正在接收其他分組,那麼新到達的分組就會在輸出佇列中進行排隊,這種等待分組轉發所耗費的時間也被稱為 排隊時延
,上面提到分組交換器在轉發分組時會進行等待,這種等待被稱為 儲存轉發時延
,所以我們現在瞭解到的有兩種時延,但是其實是有四種時延。這些時延不是一成不變的,其變化程式取決於網路的擁塞程度。
因為佇列是有容量限制的,當多條鏈路同時傳送分組導致輸出快取無法接受超額的分組後,這些分組會丟失,這種情況被稱為 丟包(packet loss)
,到達的分組或者已排隊的分組將會被丟棄。
下圖說明了一個簡單的分組交換網路
在上圖中,分組由三位資料平板展示,平板的寬度表示著分組資料的大小。所有的分組都有相同的寬度,因此也就有相同的資料包大小。下面來一個情景模擬: 假定主機 A 和 主機 B 要向主機 E 傳送分組,主機 A 和 B 首先通過100 Mbps乙太網鏈路將其資料包傳送到第一臺路由器,然後路由器將這些資料包定向到15 Mbps 的鏈路。如果在較短的時間間隔內,資料包到達路由器的速率(轉換為每秒位元數)超過15 Mbps,則在資料包在鏈路輸出緩衝區中排隊之前,路由器上會發生擁塞,然後再傳輸到鏈路上。例如,如果主機 A 和主機 B 背靠背同時發了5包資料,那麼這些資料包中的大多數將花費一些時間在佇列中等待。實際上,這種情況與許多普通情況完全相似,例如,當我們排隊等候銀行出納員或在收費站前等候時。
轉發表和路由器選擇協議
我們剛剛講過,路由器和多個通訊線路進行相連,如果每條通訊鏈路同時傳送分組的話,可能會造成排隊和丟包的情況,然後分組在佇列中等待傳送,現在我就有一個問題問你,佇列中的分組發向哪裡?這是由什麼機制決定的?
換個角度想問題,路由的作用是什麼?把不同端系統中的資料包進行儲存和轉發 。在因特網中,每個端系統都會有一個 IP
地址,當原主機傳送一個分組時,在分組的首部都會加上原主機的 IP 地址。每一臺路由器都會有一個 轉發表(forwarding table)
,當一個分組到達路由器後,路由器會檢查分組的目的地址的一部分,並用目的地址搜尋轉發表,以找出適當的傳送鏈路,然後對映成為輸出鏈路進行轉發。
那麼問題來了,路由器內部是怎樣設定轉發表的呢?詳細的我們後面會講到,這裡只是說個大概,路由器內部也是具有路由選擇協議
的,用於自動設定轉發表。
電路交換
在計算機網路中,另一種通過網路鏈路和路由進行資料傳輸的另外一種方式就是 電路交換(circuit switching)
。電路交換在資源預留
上與分組交換不同,什麼意思呢?就是分組交換不會預留每次端系統之間互動分組的快取和鏈路傳輸速率,所以每次都會進行排隊傳輸;而電路交換會預留這些資訊。一個簡單的例子幫助你理解:這就好比有兩家餐館,餐館 A 需要預定而餐館 B 不需要預定,對於可以預定的餐館 A,我們必須先提前與其進行聯絡,但是當我們到達目的地時,我們能夠立刻入座並選菜。而對於不需要預定的那家餐館來說,你可能不需要提前聯絡,但是你必須承受到達目的地後需要排隊的風險。
下面顯示了一個電路交換網路
在這個網路中,4條鏈路用於4臺電路交換機。這些鏈路中的每一條都有4條電路,因此每條鏈路能支援4條並行的連結。每臺主機都與一臺交換機直接相連,當兩臺主機需要通訊時,該網路在兩臺主機之間建立一條專用的 端到端的連結(end-to-end connection)
。
分組交換和電路交換的對比
分組交換的支持者經常說分組交換不適合實時服務,因為它的端到端時延時不可預測的。而分組交換的支持者卻認為分組交換提供了比電路交換更好的頻寬共享;它比電路交換更加簡單、更有效,實現成本更低。但是現在的趨勢更多的是朝著分組交換的方向發展。
分組交換網的時延、丟包和吞吐量
因特網可以看成是一種基礎設施,該基礎設施為執行在端系統上的分散式應用提供服務。我們希望在計算機網路中任意兩個端系統之間傳遞資料都不會造成資料丟失,然而這是一個極高的目標,實踐中難以達到。所以,在實踐中必須要限制端系統之間的 吞吐量
用來控制資料丟失。如果在端系統之間引入時延,也不能保證不會丟失分組問題。所以我們從時延、丟包和吞吐量三個層面來看一下計算機網路
分組交換中的時延
計算機網路中的分組從一臺主機(源)出發,經過一系列路由器傳輸,在另一個端系統中結束它的歷程。在這整個傳輸歷程中,分組會涉及到四種最主要的時延:節點處理時延(nodal processing delay)、排隊時延(queuing delay)、傳輸時延(total nodal delay)和傳播時延(propagation delay)。這四種時延加起來就是 節點總時延(total nodal delay)
。
如果用 dproc dqueue dtrans dpop 分別表示處理時延、排隊時延、傳輸時延和傳播時延,則節點的總時延由以下公式決定: dnodal = dproc + dqueue + dtrans + dpop。
時延的型別
下面是一副典型的時延分佈圖,讓我們從圖中進行分析一下不同的時延型別
分組由端系統經過通訊鏈路傳輸到路由器 A,路由器A 檢查分組頭部以對映出適當的傳輸鏈路,並將分組送入該鏈路。僅當該鏈路沒有其他分組正在傳輸並且沒有其他分組排在該該分組前面時,才能在這條鏈路上自由的傳輸該分組。如果該鏈路當前繁忙或者已經有其他分組排在該分組前面時,新到達的分組將會加入排隊。下面我們分開討論一下這四種時延
節點處理時延
節點處理時延
分為兩部分,第一部分是路由器會檢查分組的首部資訊;第二部分是決定將分組傳輸到哪條通訊鏈路所需要的時間。一般高速網路的節點處理時延都在微妙級和更低的數量級。在這種處理時延完成後,分組會發往路由器的轉發佇列中
排隊時延
在佇列排隊轉發過程中,分組需要在佇列中等待傳送,分組在等待傳送過程中消耗的時間被稱為排隊時延
。排隊時延的長短取決於先於該分組到達正在佇列中排隊的分組數量。如果該佇列是空的,並且當前沒有正在傳輸的分組,那麼該分組的排隊時延就是 0。如果處於網路高發時段,那麼鏈路中傳輸的分組比較多,那麼分組的排隊時延將延長。實際的排隊時延也可以到達微秒級。
傳輸時延
佇列
是路由器所用的主要的資料結構。佇列的特徵就是先進先出,先到達食堂的先打飯。傳輸時延是理論情況下單位時間內的傳輸位元所消耗的時間。比如分組的長度是 L 位元,R 表示從路由器 A 到路由器 B 的傳輸速率。那麼傳輸時延就是 L / R 。這是將所有分組推向該鏈路所需要的時間。正是情況下傳輸時延通常也在毫秒到微妙級
傳播時延
從鏈路的起點到路由器 B 傳播所需要的時間就是 傳播時延
。該位元以該鏈路的傳播速率傳播。該傳播速率取決於鏈路的物理介質(雙絞線、同軸電纜、光纖)。如果用公式來計算一下的話,該傳播時延等於兩臺路由器之間的距離 / 傳播速率。即傳播速率是 d/s
,其中 d 是路由器 A 和 路由器 B 之間的距離,s 是該鏈路的傳播速率。
傳輸時延和傳播時延的比較
計算機網路中的傳輸時延和傳播時延有時候難以區分,在這裡解釋一下,傳輸時延
是路由器推出分組所需要的時間,它是分組長度和鏈路傳輸速率的函式,而與兩臺路由器之間的距離無關。而傳播時延
是一個位元從一臺路由器傳播到另一臺路由器所需要的時間,它是兩臺路由器之間距離的倒數,而與分組長度和鏈路傳輸速率無關。從公式也可以看出來,傳輸時延是 L/R
,也就是分組的長度 / 路由器之間傳輸速率。傳播時延的公式是 d/s
,也就是路由器之間的距離 / 傳播速率。
排隊時延
在這四種時延中,人們最感興趣的時延或許就是排隊時延了 dqueue。與其他三種時延(dproc、dtrans、dpop)不同的是,排隊時延對不同的分組可能是不同的。例如,如果10個分組同時到達某個佇列,第一個到達佇列的分組沒有排隊時延,而最後到達的分組卻要經受最大的排隊時延(需要等待其他九個時延被傳輸)。
那麼如何描述排隊時延呢?或許可以從三個方面來考慮:流量到達佇列的速率、鏈路的傳輸速率和到達流量的性質。即流量是週期性到達還是突發性到達,如果用 a 表示分組到達佇列的平均速率( a 的單位是分組/秒,即 pkt/s)前面說過 R 表示的是傳輸速率,所以能夠從佇列中推出位元的速率(以 bps 即 b/s 位單位)。假設所有的分組都是由 L 位元組成的,那麼位元到達佇列的平均速率是 La bps。那麼比率 La/R
被稱為流量強度(traffic intensity)
,如果 La/R > 1,則位元到達佇列的平均速率超過從佇列傳輸出去的速率,這種情況下佇列趨向於無限增加。所以,設計系統時流量強度不能大於1。
現在考慮 La / R <= 1 時的情況。流量到達的性質將影響排隊時延。如果流量是週期性
到達的,即每 L / R 秒到達一個分組,則每個分組將到達一個空佇列中,不會有排隊時延。如果流量是 突發性
到達的,則可能會有很大的平均排隊時延。一般可以用下面這幅圖表示平均排隊時延與流量強度的關係
橫軸是 La/R 流量強度,縱軸是平均排隊時延。
丟包
我們在上述的討論過程中描繪了一個公式那就是 La/R 不能大於1,如果 La/R 大於1,那麼到達的排隊將會無窮大,而且路由器中的排隊佇列所容納的分組是有限的,所以等到路由器佇列堆滿後,新到達的分組就無法被容納,導致路由器 丟棄(drop)
該分組,即分組會 丟失(lost)
。
計算機網路中的吞吐量
除了丟包和時延外,衡量計算機另一個至關重要的效能測度是端到端的吞吐量
。假如從主機 A 向主機 B 傳送一個大檔案,那麼在任何時刻主機 B 接收到該檔案的速率就是 瞬時吞吐量(instantaneous throughput)
。如果該檔案由 F 位元組成,主機 B 接收到所有 F 位元用去 T 秒,則檔案的傳送平均吞吐量(average throughput)
是 F / T bps。
單播、廣播、多播和任播
在網路通訊中,可以根據目標地址的數量對通訊進行分類,可以分為 單播、廣播、多播和任播
單播(Unicast)
單播最大的特點就是 1 對 1,早期的固定電話就是單播的一個例子,單播示意圖如下
廣播(Broadcast)
我們一般小時候經常會跳廣播體操
,這就是廣播的一個事例,主機和與他連線的所有端系統相連,主機將訊號傳送給所有的端系統。
多播(Multicast)
多播與廣播很類似,也是將訊息傳送給多個接收主機,不同之處在於多播需要限定在某一組主機作為接收端。
任播(Anycast)
任播是在特定的多臺主機中選出一個接收端的通訊方式。雖然和多播很相似,但是行為與多播不同,任播是從許多目標機群中選出一臺最符合網路條件的主機作為目標主機傳送訊息。然後被選中的特定主機將返回一個單播訊號,然後再與目標主機進行通訊。
物理媒介
網路的傳輸是需要介質的。一個位元資料包從一個端系統開始傳輸,經過一系列的鏈路和路由器,從而到達另外一個端系統。這個位元會被轉發了很多次,那麼這個位元經過傳輸的過程所跨越的媒介就被稱為物理媒介(phhysical medium)
,物理媒介有很多種,比如雙絞銅線、同軸電纜、多模光纖欖、陸地無線電頻譜和衛星無線電頻譜。其實大致分為兩種:引導性媒介和非引導性媒介。
雙絞銅線
最便宜且最常用的引導性傳輸媒介就是雙絞銅線
,多年以來,它一直應用於電話網。從電話機到本地電話交換機的連線超過 99% 都是使用的雙絞銅線,例如下面就是雙絞銅線的實物圖
雙絞銅線由兩根絕緣的銅線組成,每根大約 1cm 粗,以規則的螺旋形狀排列,通常許多雙絞線捆紮在一起形成電纜,並在雙絞餡的外面套上保護層。一對電纜構成了一個通訊鏈路。無遮蔽雙絞線
一般常用在區域網(LAN)中。
同軸電纜
與雙絞線類似,同軸電纜也是由兩個銅導體組成,下面是實物圖
藉助於這種結構以及特殊的絕緣體和保護層,同軸電纜能夠達到較高的傳輸速率,同軸電纜普遍應用在在電纜電視系統中。同軸電纜常被使用者引導型共享媒介。
光纖
光纖是一種細而柔軟的、能夠引導光脈衝的媒介,每個脈衝表示一個位元。一根光纖能夠支援極高的位元率,高達數十甚至數百 Gbps。它們不受電磁干擾。光纖是一種引導型物理媒介,下面是光纖的實物圖
一般長途電話網路全面使用光纖,光纖也廣泛應用於因特網的主幹。
陸地無線電通道
無線電通道承載電磁頻譜中的訊號。它不需要安裝物理線路,並具有穿透牆壁、提供與移動使用者的連線以及長距離承載訊號的能力。
衛星無線電通道
一顆衛星電通道連線地球上的兩個或多個微博發射器/接收器,它們稱為地面站。通訊中經常使用兩類衛星:同步衛星和近地衛星。
後記
這是計算機網路的第一篇文章,也是屬於基礎前置知識,後面會陸續更新計算機網路的內容。
如果文章還不錯,希望小夥伴們可以點贊、在看、留言、分享,這就是最好的白嫖 。
另外,我輸出了 六本 PDF,全集 PDF 如下。
連結: https://pan.baidu.com/s/1mYAeS9hIhdMFh2rF3FDk0A 密碼: p9rs