C/C++編程筆記:計算機網絡基礎知識總結(全),不用再找第二份

若是說計算機把咱們從工業時代帶到了信息時代,那麼計算機網絡就能夠說把咱們帶到了網絡時代。隨着使用計算機人數的不斷增長,計算機也經歷了一系列的發展,從大型通用計算機 -> 超級計算機 -> 小型機 -> 我的電腦 -> 工做站 -> 便攜式電腦 -> 智能手機終端等都是這一過程的產物。計算機網絡也逐漸從獨立模式演變爲了 網絡互聯模式 。程序員

能夠看到,在獨立模式下,每一個人都須要排隊等待其餘人在一個機器上完成工做後,其餘用戶才能使用。這樣的數據是單獨管理的。數據庫

如今切換到了網絡互聯模式,在這種模式下,每一個人都能獨立的使用計算機,甚至還會有一個服務器,來爲老大哥、cxuan 和 sonsong 提供服務。這樣的數據是集中管理的。編程

計算機網絡按規模進行劃分,有 WAN(Wide Area Network, 廣域網) 和 LAN(Local area Network, 局域網)。以下圖所示segmentfault

上面是局域網,通常用在狹小區域內的網絡,一個社區、一棟樓、辦公室常用局域網。緩存

距離較遠的地方組成的網絡通常是廣域網。安全

最初,只是固定的幾臺計算機相連在一塊兒造成計算機網絡。這種網絡通常是私有的,這幾臺計算機以外的計算機沒法訪問。隨着時代的發展,人們開始嘗試在私有網絡上搭建更大的私有網絡,逐漸又發展演變爲互聯網,如今咱們每一個人幾乎都可以享有互聯網帶來的便利。服務器

計算機網絡發展歷程

批處理

就和早期的計算機操做系統同樣,最開始都要先經歷批處理(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 協議等。下面是一些協議的彙總和介紹

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秒。

一個端系統須要通過交換機給其餘端系統發送分組,當分組到達交換機時,交換機就可以直接進行轉發嗎?不是的,交換機可沒有這麼無私,你想讓我幫你轉發分組?好,首先你須要先把整個分組數據都給我,我再考慮給你發送的問題,這就是存儲轉發傳輸

存儲轉發傳輸

存儲轉發傳輸指的就是交換機再轉發分組的第一個比特前,必需要接受到整個分組,下面是一個存儲轉發傳輸的示意圖,能夠從圖中窺出端倪

由圖能夠看出,分組 一、二、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。它們不受電磁干擾。光纖是一種引導型物理媒介,下面是光纖的實物圖

通常長途電話網絡全面使用光纖,光纖也普遍應用於因特網的主幹。

陸地無線電信道

無線電信道承載電磁頻譜中的信號。它不須要安裝物理線路,並具備穿透牆壁、提供與移動用戶的鏈接以及長距離承載信號的能力。

衛星無線電信道

一顆衛星電信道鏈接地球上的兩個或多個微博發射器/接收器,它們稱爲地面站。通訊中常用兩類衛星:同步衛星和近地衛星。

後記

這是計算機網絡的第一篇文章,也是屬於基礎前置知識,後面會陸續更新計算機網絡的內容。

若是文章還不錯,但願小夥伴們能夠點贊、留言、分享,但願對你們有幫助!

原文連接:https://segmentfault.com/a/1190000037538113

另外若是你想更好的提高你的編程能力,學好C語言C++編程!彎道超車,快人一步!

C語言C++編程學習交流圈子,QQ羣1095293493點擊進入】微信公衆號:C語言編程學習基地

分享(源碼、項目實戰視頻、項目筆記,基礎入門教程)

歡迎轉行和學習編程的夥伴,利用更多的資料學習成長比本身琢磨更快哦!

編程學習書籍分享:

編程學習視頻分享:

相關文章
相關標籤/搜索