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