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

計算機(jī)網(wǎng)絡(luò)協(xié)議介紹

行業(yè)聚焦|深圳計算機(jī)協(xié)會走進(jìn)杰和,共探AI算力新邊界

計算機(jī)網(wǎng)絡(luò)架構(gòu)的演進(jìn)
云端超級計算機(jī)使用教程
LP-SCADA的發(fā)展歷程和應(yīng)用行業(yè)?
量子計算機(jī)與普通計算機(jī)工作原理的區(qū)別

評論