计算机网络笔记整理(第七版)谢希仁
第1章 概述
本章最重要的內(nèi)容:
(1)互聯(lián)網(wǎng)邊緣部分和核心部分的作用,其中包括分組交換的概念
(2)計(jì)算機(jī)網(wǎng)絡(luò)的性能指標(biāo)
(3)計(jì)算機(jī)網(wǎng)絡(luò)分層次的體系結(jié)構(gòu),包括協(xié)議和服務(wù)的概念
ISP(Internet Service Provider)互聯(lián)網(wǎng)服務(wù)提供商
1.互聯(lián)網(wǎng)的組成
(1)邊緣部分:由所有連接在互聯(lián)網(wǎng)上的主機(jī)組成。這部分是用戶直接使用的,用來(lái)進(jìn)行通信(傳送數(shù)據(jù)、音頻或視頻)和資源共享
(2)核心部分:由大量網(wǎng)絡(luò)和連接這些網(wǎng)絡(luò)的路由器組成。這部分是為邊緣部分提供服務(wù)的(提供連通性和交換)
2.在網(wǎng)絡(luò)邊緣的端系統(tǒng)之間的通信方式可劃分為兩大類:客戶-服務(wù)器方式(C/S方式)和對(duì)等方式(P2P方式)
(1)客戶-服務(wù)器方式
客戶是服務(wù)請(qǐng)求方,服務(wù)器是服務(wù)提供方。服務(wù)請(qǐng)求方和服務(wù)提供方都要使用網(wǎng)絡(luò)核心部分所提供的服務(wù)。
在實(shí)際應(yīng)用中,客戶程序和服務(wù)器程序通常還具有以下一些主要特點(diǎn):
客戶程序:
1)被用戶調(diào)用有運(yùn)行,在通信時(shí)主動(dòng)向遠(yuǎn)程服務(wù)器發(fā)起通信(請(qǐng)求服務(wù))。因此,客戶程序必須知道服務(wù)器程序的地址。
2)不需要特殊的硬件和很復(fù)雜的操作系統(tǒng)
服務(wù)器程序:
1)是一種專門用來(lái)提供某種服務(wù)的程序,可同時(shí)處理多個(gè)遠(yuǎn)程或本地客戶的請(qǐng)求。
2)系統(tǒng)啟動(dòng)后即自動(dòng)調(diào)用并一直不斷運(yùn)行著,被動(dòng)地等待并接受來(lái)自各地的客戶的通信請(qǐng)求。因此,服務(wù)器程序不需要知道客戶程序的地址。
3)一般需要有強(qiáng)大的硬件和高級(jí)的操作系統(tǒng)支持
上述客戶和服務(wù)器本來(lái)都指的是計(jì)算機(jī)進(jìn)程(軟件)
(2)對(duì)等連接方式(peer-to-peer)
對(duì)等連接是指兩臺(tái)主機(jī)在通信時(shí)并不區(qū)分哪一個(gè)是服務(wù)請(qǐng)求方哪一個(gè)是服務(wù)提供方。只要兩臺(tái)主機(jī)都運(yùn)行了對(duì)等連接軟件(P2P軟件),它們就可以進(jìn)行平等的、對(duì)等連接通信。
3.互聯(lián)網(wǎng)的核心部分
在網(wǎng)絡(luò)核心部分起特殊作用的是路由器。路由器是實(shí)現(xiàn)分組交換(packet swithching)的關(guān)鍵構(gòu)件,其任務(wù)是轉(zhuǎn)發(fā)收到的分組。
電路交換:
在使用電路交換通話之前,必須先撥號(hào)請(qǐng)求建立連接。當(dāng)被叫用戶聽(tīng)到交換機(jī)送來(lái)的振鈴聲并摘機(jī)后,從主叫端到被叫端就建立了一條連接,也就是一條專用的物理通路。這種必須經(jīng)過(guò)“建立連接”(占用通信資源)—通話(一直占用通信資源)—釋放連接(歸還通信資源)三個(gè)步驟的交換方式成為電路交換。
電路交換的一個(gè)重要特點(diǎn)就是在通話的全部時(shí)間內(nèi),通話的兩個(gè)用戶始終占用端到端的通信資源。缺點(diǎn):線路的傳輸效率往往很低,通信資源浪費(fèi)。
分組交換:分組交換采用存儲(chǔ)轉(zhuǎn)發(fā)技術(shù)
該圖表示把一個(gè)報(bào)文劃分為幾個(gè)分組后再進(jìn)行傳送。通常我們把發(fā)送的整塊數(shù)據(jù)成為一個(gè)報(bào)文(message)。在發(fā)送報(bào)文之前,先把較長(zhǎng)的報(bào)文劃分成為一個(gè)更小的等長(zhǎng)數(shù)據(jù)端。在每一個(gè)數(shù)據(jù)段前面,加上一些由必要的控制信息組成的首部(header)后,就構(gòu)成了一個(gè)分組(packet)。分組又稱為“包”,而分組的首部也可稱為"包頭"
分組交換在傳送數(shù)據(jù)之前不必先占用一條端到端的鏈路的通信資源。分組在哪段鏈路上傳送才占用這段鏈路的通信資源。分組到達(dá)一個(gè)路由器后,先暫時(shí)存儲(chǔ)下來(lái)查找轉(zhuǎn)發(fā)表,然后從一條合適的鏈路轉(zhuǎn)發(fā)出去。分組在傳輸時(shí)就這樣一段一段地?cái)嗬m(xù)占用通信資源,而且還省去了建立連接和釋放連接的開(kāi)銷,因而數(shù)據(jù)的傳輸效率更高。
分組交換的優(yōu)點(diǎn):
| 高效 | 在分組傳輸?shù)倪^(guò)程中動(dòng)態(tài)分配傳輸帶寬,對(duì)通信鏈路是逐段占用的 |
| 靈活 | 為每一個(gè)分組獨(dú)立地選擇最合適的轉(zhuǎn)發(fā)路由 |
| 迅速 | 以分組作為傳送單位,可以不先建立連接就能向其他主機(jī)發(fā)送分組 |
| 可靠 | 保證可靠的網(wǎng)絡(luò)協(xié)議 |
三種交換方式在數(shù)據(jù)傳送階段的主要特點(diǎn):
電路交換—整個(gè)報(bào)文的比特流連續(xù)地從源點(diǎn)直到終點(diǎn),好像在一個(gè)管道中傳送
報(bào)文交換—整個(gè)報(bào)文先傳送到相鄰結(jié)點(diǎn),全部存儲(chǔ)下來(lái)后查找轉(zhuǎn)發(fā)表,轉(zhuǎn)發(fā)到下一個(gè)結(jié)點(diǎn)。
分組交換—單個(gè)分組(這只是整個(gè)報(bào)文的一部分)傳送到相鄰結(jié)點(diǎn),存儲(chǔ)下來(lái)后查找轉(zhuǎn)發(fā)表,轉(zhuǎn)發(fā)到下一個(gè)結(jié)點(diǎn)。
計(jì)算機(jī)網(wǎng)絡(luò)的性能:速度 帶寬 吞吐量 時(shí)延 時(shí)延帶寬積 往返時(shí)間RTT 利用率
5.計(jì)算機(jī)網(wǎng)絡(luò)體系結(jié)構(gòu)
在計(jì)算機(jī)網(wǎng)絡(luò)中藥做到有條不紊第交換數(shù)據(jù),就必須遵守一些事先約定好的規(guī)則。這些規(guī)則明確規(guī)定了所交換的數(shù)據(jù)的格式以及有關(guān)的同步問(wèn)題。
這些為進(jìn)行網(wǎng)絡(luò)中的數(shù)據(jù)交換而建立的規(guī)則、標(biāo)準(zhǔn)或約定稱為網(wǎng)絡(luò)協(xié)議。
(3)網(wǎng)絡(luò)層
網(wǎng)絡(luò)層負(fù)責(zé)為分組交換網(wǎng)上的不同主機(jī)提供通信服務(wù)。在發(fā)送數(shù)據(jù)時(shí),網(wǎng)絡(luò)層把運(yùn)輸層產(chǎn)生的報(bào)文段或用戶數(shù)據(jù)報(bào)封裝成分組或包進(jìn)行傳送。在TCP/IP體系中,由于網(wǎng)絡(luò)層使用IP協(xié)議,因此分組也叫作IP數(shù)據(jù)報(bào),或簡(jiǎn)稱數(shù)據(jù)報(bào)。
網(wǎng)絡(luò)層的另一個(gè)任務(wù)就是要選擇合適的路由,使源主機(jī)運(yùn)輸層所傳下來(lái)的分組,能夠通過(guò)網(wǎng)絡(luò)中的路由器找到目的主機(jī)。
(4)數(shù)據(jù)鏈路層
在兩個(gè)相鄰結(jié)點(diǎn)之間傳送數(shù)據(jù)時(shí),數(shù)據(jù)鏈路層將網(wǎng)絡(luò)層交下來(lái)的IP數(shù)據(jù)報(bào)組裝成幀(framing),在兩個(gè)相鄰結(jié)點(diǎn)間的鏈路上傳送幀。每一幀包括數(shù)據(jù)和必要的控制信息(如同步信息、地址信息、差錯(cuò)控制等)。
(5)物理層
在物理層上所傳數(shù)據(jù)的單位是比特。發(fā)送方發(fā)送1(0)時(shí),接收方應(yīng)當(dāng)受到1(0),而不是0(1)。
圖1-19說(shuō)明的是應(yīng)用進(jìn)程的數(shù)據(jù)在各層之間的傳遞過(guò)程中 所經(jīng)歷的變化。
在協(xié)議的控制下,兩個(gè)對(duì)等實(shí)體間的通信使得本層能夠向上一層提供服務(wù)。要實(shí)現(xiàn)本層協(xié)議,還需要使用下面一層所提供的服務(wù)。
協(xié)議是“水平的”,即協(xié)議是控制對(duì)等實(shí)體之間通信的規(guī)則。但服務(wù)是“垂直的”,即服務(wù)是由下層向上層通過(guò)層間接口提供的。
第2章 物理層
從通信的雙方信息交互的方式來(lái)看,可以有以下三種基本方式:
(1)單向通信:又稱為單工通信,即只能有一個(gè)方向的通信而沒(méi)有反方向的交互。無(wú)線電廣播或有線電廣播以及電視廣播就屬于這種類型。
(2)雙向交替通信:又稱為半雙工通信,即通信的雙方都可以發(fā)送信息,但不能雙發(fā)同時(shí)發(fā)送(當(dāng)然也不能同時(shí)接收)。這種通信方式是一方發(fā)送另一方接收,過(guò)一段時(shí)間后可以再反過(guò)來(lái)。
(3)雙向同時(shí)通信:又稱為全雙工通信,即通信的雙方可以同時(shí)發(fā)送和接收信息。
第3章 數(shù)據(jù)鏈路層
數(shù)據(jù)鏈路層使用的信道主要有以下兩種類型:
(1)點(diǎn)對(duì)點(diǎn)信道。這種信道使用一對(duì)一的點(diǎn)對(duì)點(diǎn)通信方式
(2)廣播信道。這種信道使用一對(duì)多的廣播通信方式,因此過(guò)程比較復(fù)雜。廣播信道上連接的主機(jī)很多,因此必須使用專用的共享信道協(xié)議來(lái)協(xié)調(diào)這些主機(jī)的數(shù)據(jù)發(fā)送。
本章主要內(nèi)容:
(1)數(shù)據(jù)鏈路層的點(diǎn)對(duì)點(diǎn)信道和廣播信道的特點(diǎn),以及這種信道所使用的協(xié)議(PPP協(xié)議以及CSMA/CD協(xié)議)的特點(diǎn)。
(2)數(shù)據(jù)鏈路層呢個(gè)的三個(gè)基本問(wèn)題:封裝成幀、透明傳輸和差錯(cuò)檢測(cè)。
(3)以太網(wǎng)MAC層的硬件地址
(4)適配器、轉(zhuǎn)發(fā)器、集線器網(wǎng)橋、以太網(wǎng)交換機(jī)的作用以及使用場(chǎng)合。
1.點(diǎn)對(duì)點(diǎn)信道的數(shù)據(jù)鏈路層在進(jìn)行通信時(shí)的主要步驟如下:
(1)結(jié)點(diǎn)A的數(shù)據(jù)鏈路層把網(wǎng)絡(luò)層交下來(lái)的IP數(shù)據(jù)報(bào)添加首部和尾部封裝成幀
(2)結(jié)點(diǎn)A把封裝好的幀發(fā)送給結(jié)點(diǎn)B的數(shù)據(jù)鏈路層
(3)若結(jié)點(diǎn)B的數(shù)據(jù)鏈路層收到額幀無(wú)差錯(cuò),則從收到的幀中提取出IP數(shù)據(jù)報(bào)交給上面的網(wǎng)絡(luò)層;否則丟棄這個(gè)幀。
數(shù)據(jù)鏈路層三個(gè)基本問(wèn)題:封裝成幀、透明傳輸和差錯(cuò)檢測(cè)
(1)封裝成幀:就是在一段數(shù)據(jù)的前后分別添加首部和尾部,這樣就構(gòu)成了一個(gè)幀。接收端在收到物理層上交的比特流后,就能根據(jù)首部和尾部的標(biāo)記,從收到的比特流中識(shí)別幀的開(kāi)始和結(jié)束。
網(wǎng)絡(luò)層的IP數(shù)據(jù)報(bào)傳送到數(shù)據(jù)鏈路層就成為幀的數(shù)據(jù)部分。在幀的數(shù)據(jù)部分的前面和后面分別添加首部和尾部,就構(gòu)成了一個(gè)完整的幀。這樣的幀就是數(shù)據(jù)鏈路成的數(shù)據(jù)傳送單元。
為了提高幀的傳輸效率,應(yīng)當(dāng)使幀的數(shù)據(jù)部分長(zhǎng)度盡可能地大于首部和尾部的長(zhǎng)度。但是,每一種鏈路層協(xié)議都規(guī)定了所能傳送的幀的數(shù)據(jù)部分長(zhǎng)度上限—最大傳送單元MTU(Maximum Transfer Unit)
(3)差錯(cuò)檢測(cè)
比特在傳輸過(guò)程中可能會(huì)產(chǎn)生差錯(cuò)。在計(jì)算機(jī)網(wǎng)絡(luò)傳輸數(shù)據(jù)時(shí),必須采用差錯(cuò)檢測(cè)措施。目前在數(shù)據(jù)鏈路層廣泛使用了循環(huán)冗余檢驗(yàn)CRC(Cyclic Redundancy Check)的檢錯(cuò)技術(shù)。
CRCFO運(yùn)算就是在數(shù)據(jù)M的后面添加供差錯(cuò)檢測(cè)用得n位冗余碼,然后構(gòu)成一個(gè)幀發(fā)送出去,一位共發(fā)送(k+n)
這個(gè)余數(shù)R作為冗余碼,拼接在數(shù)據(jù)M的后面發(fā)送出去。
2.使用廣播信道的數(shù)據(jù)鏈路層
廣播信道可以進(jìn)行一對(duì)多的通信。
局域網(wǎng)按網(wǎng)絡(luò)拓?fù)浞诸?#xff1a;星型網(wǎng),環(huán)形網(wǎng)和總線網(wǎng)
共享信道要著重考慮一個(gè)問(wèn)題就是如何使眾多用戶能夠合理而方便地共享通信媒體資源。在技術(shù)上有兩種方法:
(1)靜態(tài)劃分信道
(2)動(dòng)態(tài)媒體接入控制,它又稱為多點(diǎn)接入(multiple access),其特點(diǎn)是信道并非用戶通信時(shí)固定分配給用戶。這里又分為兩類:
- 隨機(jī)接入:隨機(jī)接入的特點(diǎn)是所有的用戶可隨機(jī)地發(fā)送信息。但如果恰巧有兩個(gè)或更多的用戶在同一時(shí)刻發(fā)送信息,那么在共享媒體上就要產(chǎn)生碰撞(即發(fā)生了沖突),使得這些用戶的發(fā)送都失敗。因此,必須有解決碰撞的網(wǎng)絡(luò)協(xié)議。
- 受控接入
IEEE802委員會(huì)把局域網(wǎng)的數(shù)據(jù)鏈路層拆分成兩個(gè)子層,即邏輯鏈路控制LLC(Logical Link Control)子層和媒體接入控制MAC(Medium Access Control)子層。
3.適配器(網(wǎng)卡):
計(jì)算機(jī)與外界局域網(wǎng)的連接是通過(guò)通信適配器(Adapter)進(jìn)行的。適配器和局域網(wǎng)之間的通信時(shí)通過(guò)電纜或雙絞線以串行傳輸方式進(jìn)行的,而適配器和計(jì)算機(jī)之間的通信是通過(guò)主板上的I/O總線以并行傳輸方式進(jìn)行的。因此,**適配器的一個(gè)重要功能就是要進(jìn)行數(shù)據(jù)串行傳輸和并行傳輸?shù)霓D(zhuǎn)換。**由于網(wǎng)絡(luò)上的數(shù)據(jù)率和計(jì)算機(jī)總線上的數(shù)據(jù)率并不相同,因此在適配器中必須裝有對(duì)數(shù)據(jù)進(jìn)行緩存的存儲(chǔ)芯片。在主板撒花姑娘插入適配器時(shí),還需要把管理適配器的設(shè)備驅(qū)動(dòng)程序安裝在計(jì)算機(jī)的操作系統(tǒng)中。這個(gè)驅(qū)動(dòng)程序以后就會(huì)告訴適配器,應(yīng)當(dāng)從存儲(chǔ)器的什么位置上把多長(zhǎng)的數(shù)據(jù)塊發(fā)送到局域網(wǎng),或者應(yīng)當(dāng)在存儲(chǔ)器的什么位置上把局域網(wǎng)傳送過(guò)來(lái)的數(shù)據(jù)塊存儲(chǔ)下來(lái)。適配器還要能夠?qū)崿F(xiàn)以太網(wǎng)協(xié)議。
4.CSMA/CD協(xié)議
總線上只要有一臺(tái)計(jì)算機(jī)在發(fā)送數(shù)據(jù),總線的傳輸資源就被占用。因此,在同一時(shí)間只能允許一臺(tái)計(jì)算機(jī)發(fā)送數(shù)據(jù),否則各計(jì)算機(jī)之間就會(huì)互相干擾,使得所發(fā)送數(shù)據(jù)被破壞。因此,如何協(xié)調(diào)總線上各計(jì)算機(jī)的工作就是以太網(wǎng)要解決的一個(gè)重要問(wèn)題。CSMA/CD就是為了解決這一問(wèn)題的。
CSMA/CD載波監(jiān)聽(tīng)多點(diǎn)接入/碰撞檢測(cè)(Carrier Sense Multiple Access with Collision Detection)
多點(diǎn)接入:總線型網(wǎng)絡(luò),許多計(jì)算機(jī)以多點(diǎn)接入的方式連接在一根總線上。
載波監(jiān)聽(tīng):用電子技術(shù)檢測(cè)總線上有沒(méi)有其他計(jì)算機(jī)也在發(fā)送。不管在發(fā)送前,還是在發(fā)送中,每個(gè)站都必須不停地檢測(cè)信道。
碰撞檢測(cè):邊發(fā)送邊監(jiān)聽(tīng),即適配器邊發(fā)送數(shù)據(jù)邊檢測(cè)信道上的信號(hào)電壓的變化情況,以便判斷自己在發(fā)送數(shù)據(jù)時(shí)其他站是否也在發(fā)送數(shù)據(jù)。
MAC層的硬件地址:在局域網(wǎng)中,硬件地址又稱為物理地址或MAC地址,也即適配器地址。
適配器有過(guò)濾功能。適配器從網(wǎng)絡(luò)上每收到一個(gè)MAC幀就先用硬件檢查MAC幀中的目的地址。如果發(fā)往本站的幀則收下,然后再進(jìn)行其他的處理。否則就將此幀丟棄,不再進(jìn)行其他的處理。發(fā)往本站的幀包括以下三種幀:
(1)單播(unicast)幀(一對(duì)一),即收到的幀的MAC地址與本站的硬件地址相同。
(2)廣播(broadcast)幀(一對(duì)全體),即發(fā)送給本局域網(wǎng)所有站點(diǎn)的幀(全1地址)
(3)多播(multicast)幀(一對(duì)多),即發(fā)送給本局域網(wǎng)上一部分站點(diǎn)的幀
5.MAC幀的格式
第4章 網(wǎng)絡(luò)層
本章最主要的內(nèi)容:
(1)虛擬互連網(wǎng)絡(luò)的概念
(2)IP地址與物理地址的關(guān)系
(3)傳統(tǒng)的分類的IP地址(包括子網(wǎng)掩碼)和無(wú)分類域間路由選擇CIDR
(4)路由選擇協(xié)議的工作原理
網(wǎng)絡(luò)層向上只提供簡(jiǎn)單靈活的、無(wú)連接的、盡最大努力交付的數(shù)據(jù)報(bào)服務(wù)。
網(wǎng)絡(luò)在發(fā)送分組時(shí)不需要先建立連接。每一個(gè)分組(也就是IP數(shù)據(jù)報(bào))獨(dú)立發(fā)送,與其前后的分組無(wú)關(guān)(不進(jìn)行編號(hào))。網(wǎng)絡(luò)層不提供服務(wù)質(zhì)量的承諾。
1.網(wǎng)際協(xié)議IP
與IP協(xié)議配套使用的還有三個(gè)協(xié)議:
- 地址解析協(xié)議ARP(Address Resolution Protocol)
- 網(wǎng)際控制報(bào)文協(xié)議ICMP(Internet Control Message Protocol)
- 網(wǎng)際組管理協(xié)議IGMP(Internet Group Management Protocol)
ARP畫(huà)在最小面,因?yàn)镮P經(jīng)常要使用這個(gè)協(xié)議。ICMP和IGMP畫(huà)在這一層的上部,因?yàn)樗鼈円褂肐P協(xié)議。
2.網(wǎng)絡(luò)中的一些中間設(shè)備
將網(wǎng)絡(luò)互相連接起來(lái)要使用一些中間設(shè)備。根據(jù)中間設(shè)備所在的層次,可以有以下四種不同的中間設(shè)備:
(1)物理層使用的中間設(shè)備叫做轉(zhuǎn)發(fā)器
(2)數(shù)據(jù)鏈路層使用的中間設(shè)備叫做網(wǎng)橋或橋接器(bridge)
(3)網(wǎng)絡(luò)層使用的中間設(shè)備叫做路由器
(4)在網(wǎng)絡(luò)層以上使用的中間設(shè)備叫做網(wǎng)關(guān)(gateway)。用網(wǎng)關(guān)連接兩個(gè)不兼容的系統(tǒng)需要在高層進(jìn)行協(xié)議轉(zhuǎn)換。
源主機(jī)H1要把一個(gè)IP數(shù)據(jù)報(bào)發(fā)送給目的主機(jī)H2的過(guò)程:
主機(jī)H1先要檢查自己的路由表,看目的主機(jī)是否就在本網(wǎng)絡(luò)上。如果是,則不需要經(jīng)過(guò)任何路由器而是直接交付,任務(wù)就完成了。如果不是,則必須把IP數(shù)據(jù)報(bào)發(fā)送給某個(gè)路由器(圖中的R1)。R1在查找了自己的路由表后,知道應(yīng)當(dāng)把數(shù)據(jù)報(bào)轉(zhuǎn)發(fā)給R2,進(jìn)行間接交付。這樣一直轉(zhuǎn)發(fā)下去,最后由路由器R5知道自己是和H2連接在同一個(gè)網(wǎng)絡(luò)上,不需要再使用別的路由器轉(zhuǎn)發(fā)了,于是就把數(shù)據(jù)報(bào)直接交付給目的主機(jī)H2。
3.分類的IP地址
IP地址的編址方法共經(jīng)過(guò)了三個(gè)歷史階段:
(1)分類的IP地址。這是最基本的編址方法
(2)子網(wǎng)的劃分。這是對(duì)最基本的編址方法的改進(jìn)
(3)構(gòu)成超網(wǎng)。這是比較新的無(wú)分類編址方法
4.IP地址與硬件地址
從層次角度看,物理地址是數(shù)據(jù)鏈路層和物理層使用的地址,而IP地址是網(wǎng)絡(luò)層和以上各層使用的地址,是一種邏輯地址。
地址解析協(xié)議ARP:
在實(shí)際應(yīng)用中,我們經(jīng)常會(huì)遇到這樣的問(wèn)題:已經(jīng)知道了一個(gè)機(jī)器(主機(jī)或路由器)的IP地址,需要找出其相應(yīng)的硬件地址。地址解析協(xié)議ARP就是用來(lái)解決這樣的問(wèn)題的。
在一個(gè)網(wǎng)絡(luò)上可能經(jīng)常會(huì)有新的主機(jī)加入進(jìn)來(lái),或撤走一些主機(jī)。更換網(wǎng)絡(luò)適配器也會(huì)使主機(jī)的硬件地址改變。地址解析協(xié)議ARP解決這個(gè)問(wèn)題的方法是在主機(jī)ARP高速緩存中存放一個(gè)從IP地址到硬件地址的映射表,并且這個(gè)映射表還經(jīng)常動(dòng)態(tài)更新(新增或超時(shí)刪除)。每一臺(tái)主機(jī)都設(shè)有一個(gè)ARP高速緩存(ARP Cache),里面有本局域網(wǎng)上的各主機(jī)和路由器的IP地址到硬件地址的映射表,這些都是該主機(jī)目前知道的一些地址。那么主機(jī)怎樣知道這些地址呢?
5.IP數(shù)據(jù)報(bào)的格式
一個(gè)IP數(shù)據(jù)報(bào)由首部和數(shù)據(jù)兩部分組成。首部的前一部分是固定長(zhǎng)度,共20字節(jié),是所有IP數(shù)據(jù)報(bào)必須具有的。在首部的固定部分的后面是一些可選字段,其長(zhǎng)度是可變的。
(1)版本 占4位,指IP協(xié)議的版本。通信雙方使用的IP協(xié)議的版本必須一致。
(2)首部長(zhǎng)度 占4位
(3)區(qū)分服務(wù) 用來(lái)獲得更好的服務(wù)。
(4)總長(zhǎng)度 總長(zhǎng)度指首部和數(shù)據(jù)之和的長(zhǎng)度
(5)標(biāo)識(shí)
(6)標(biāo)志(flag)
(7)片偏移
(8)TTL生存時(shí)間
由發(fā)出數(shù)據(jù)報(bào)的源點(diǎn)設(shè)置這個(gè)字段,其目的是防止無(wú)法交付的數(shù)據(jù)報(bào)無(wú)限制地在互聯(lián)網(wǎng)中兜圈子(例如從路由器R1轉(zhuǎn)發(fā)到R2,再轉(zhuǎn)發(fā)到R3,然后又轉(zhuǎn)發(fā)到R1),因而白白消耗網(wǎng)絡(luò)資源。每經(jīng)過(guò)一個(gè)路由器時(shí),就把TTL減去1。當(dāng)TTL值為零時(shí),就丟棄這個(gè)數(shù)據(jù)報(bào)。
(9)協(xié)議 協(xié)議字段指出此數(shù)據(jù)報(bào)攜帶的數(shù)據(jù)是使用何種協(xié)議,以便使目的主機(jī)的IP層知道應(yīng)將數(shù)據(jù)部分上交給哪個(gè)協(xié)議進(jìn)行處理。
(10)首部校驗(yàn)和 這個(gè)字段只檢驗(yàn)數(shù)據(jù)報(bào)的首部,不包括數(shù)據(jù)部分。
6.劃分子網(wǎng)和構(gòu)造超網(wǎng)
(1)從兩級(jí)IP地址到三級(jí)IP地址 即劃分子網(wǎng)
劃分子網(wǎng):從網(wǎng)絡(luò)的主機(jī)號(hào)借用若干位作為子網(wǎng)號(hào)(subnet-id),于是兩級(jí)IP地址在本單位內(nèi)部就變成了三級(jí)IP地址:網(wǎng)絡(luò)號(hào)、子網(wǎng)號(hào)和主機(jī)號(hào)
IP地址::={<網(wǎng)絡(luò)號(hào)>,<子網(wǎng)號(hào)>,<主機(jī)號(hào)>}
圖4-18表示某單位擁有近一個(gè)B類IP地址,網(wǎng)絡(luò)地址145.13.0.0(網(wǎng)絡(luò)號(hào)是145.13)。凡目的地址為145.13.x.x的數(shù)據(jù)報(bào)都被送到這個(gè)網(wǎng)絡(luò)上的路由器R1
現(xiàn)在剩下一個(gè)問(wèn)題就是:假定一個(gè)數(shù)據(jù)報(bào)(其目的地址是145.13.3.10)已經(jīng)到達(dá)了路由器R1。那么這個(gè)路由器如何把它轉(zhuǎn)發(fā)到子網(wǎng)145.13.3.0呢?子網(wǎng)掩碼
把子網(wǎng)掩碼255.255.255.0和IP地址145.13.3.10逐位“與”AND運(yùn)算,就可得出網(wǎng)絡(luò)地址145.13.3.0
路由器在和相鄰路由器交換路由信息時(shí),必須把自己所在網(wǎng)絡(luò)(或子網(wǎng))的子網(wǎng)掩碼告訴相鄰路由器。在路由器的路由表中的每一個(gè)項(xiàng)目,除了要給出目的網(wǎng)絡(luò)地址,還必須同時(shí)給出該網(wǎng)絡(luò)的子網(wǎng)掩碼。若一個(gè)路由器連接在兩個(gè)子網(wǎng)上就擁有兩個(gè)網(wǎng)絡(luò)地址和兩個(gè)子網(wǎng)掩碼。
7.查找路由表
下面進(jìn)一步討論使用了子網(wǎng)掩碼后應(yīng)怎樣查找路由表
使用子網(wǎng)時(shí)分組的轉(zhuǎn)發(fā):
使用子網(wǎng)劃分后,路由表必須包含以下三項(xiàng)內(nèi)容:目的網(wǎng)絡(luò)地址、子網(wǎng)掩碼和下一跳地址
8.無(wú)分類編址CIDR(構(gòu)造超網(wǎng))
使用變長(zhǎng)子網(wǎng)掩碼VLSM(Variable Length Subnet Mask)可進(jìn)一步提高IP地址資源的利用率。在VLSM的基礎(chǔ)上又進(jìn)一步研究出無(wú)分類編碼方法,即無(wú)分類域間路由選擇CIDR(Classless Inter-Domain Routing)
CIDR最主要的特點(diǎn)有兩個(gè):
(1)CIDR消除了傳統(tǒng)的A類、B類和C類地址以及劃分子網(wǎng)的概念。
CIDR把32位的IP地址劃分為前后兩個(gè)部分。前面部分是“網(wǎng)絡(luò)前綴”(network-prefix),用來(lái)指明網(wǎng)絡(luò),后面部分則用來(lái)指明主機(jī)。因此CIDR使IP地址從三級(jí)編址(使用子網(wǎng)掩碼)又回到了兩級(jí)編址。
IP地址::={<網(wǎng)絡(luò)前綴>,<主機(jī)號(hào)>}
(2)CIDR把網(wǎng)絡(luò)前綴都相同的連續(xù)的IP地址組成一個(gè)“CIDR地址塊”
分配到一個(gè)CIDR地址塊的單位,仍然可以在本單位內(nèi)根據(jù)需要?jiǎng)澐殖鲆恍┳泳W(wǎng)。這些子網(wǎng)也都只有一個(gè)網(wǎng)絡(luò)前綴和一臺(tái)主機(jī)號(hào)字段,但子網(wǎng)的網(wǎng)絡(luò)前綴比整個(gè)網(wǎng)絡(luò)前綴要長(zhǎng)些。例如,某單位分配到地址塊/20,就可以再繼續(xù)劃分為8個(gè)子網(wǎng)(即需要從主機(jī)號(hào)中借用3位來(lái)劃分子網(wǎng))。這時(shí)每一個(gè)子網(wǎng)的網(wǎng)絡(luò)前綴就變成23位(原來(lái)的20位加上從主機(jī)號(hào)借來(lái)的3位),比該單位的網(wǎng)絡(luò)前綴多了3位
128.1435.7/20=10000000 00001110 00100011 00000111
/20地址塊的子網(wǎng)掩碼:**11111111 11111111 1111**0000 00000000
斜線記法中,斜線后面的數(shù)字就是子網(wǎng)掩碼中1的個(gè)數(shù)。
9.網(wǎng)際控制報(bào)文協(xié)議ICMP
為了更有效地轉(zhuǎn)發(fā)IP數(shù)據(jù)報(bào)和提高交付成功的機(jī)會(huì),在網(wǎng)際層使用了ICMP。ICMP允許主機(jī)或路由器報(bào)告差錯(cuò)情況和提供有關(guān)異常情況的報(bào)告。ICMP報(bào)文封裝在IP數(shù)據(jù)報(bào)中共,作為其中的數(shù)據(jù)部分。
ICMP報(bào)文的種類有兩種:ICMP差錯(cuò)報(bào)告報(bào)文和ICMP詢問(wèn)報(bào)文
10.路由選擇協(xié)議
路由選擇協(xié)議:路由表中的路由是怎么得出的
路由選擇協(xié)議的核心是路由算法,即需要何種算法來(lái)獲得路由表中的各項(xiàng)目
根據(jù)路由算法能夠隨網(wǎng)絡(luò)的通信量或拓?fù)渥赃m應(yīng)地進(jìn)行調(diào)整變化來(lái)劃分,靜態(tài)路由選擇策略和動(dòng)態(tài)路由選擇策略
靜態(tài)路由選擇特點(diǎn):簡(jiǎn)單和開(kāi)銷小,但不能即使適應(yīng)網(wǎng)絡(luò)狀態(tài)的變化。對(duì)于很簡(jiǎn)單的小型網(wǎng)絡(luò),完全可以采用靜態(tài)路由選擇,人工配置每一條路由。
動(dòng)態(tài)路由特點(diǎn):能較好地適應(yīng)網(wǎng)絡(luò)狀態(tài)的變化,但實(shí)現(xiàn)起來(lái)較為復(fù)雜,開(kāi)銷也比較大。動(dòng)態(tài)路由適合較復(fù)雜的大型網(wǎng)絡(luò)。
分層次的路由選擇協(xié)議:
內(nèi)部網(wǎng)關(guān)協(xié)議IGP(Interior Gateway Protocol):即一個(gè)自治系統(tǒng)內(nèi)部使用的路由選擇協(xié)議,而這與在互聯(lián)網(wǎng)中的其他自治系統(tǒng)選用什么路由選擇協(xié)議無(wú)關(guān)。目前這類路由選擇協(xié)議最多,如RIP和OSPF協(xié)議。
外部網(wǎng)關(guān)協(xié)議EGP(External Gateway Protocol):若源主機(jī)和目的主機(jī)處在不同的自治系統(tǒng)中(這兩個(gè)自治系統(tǒng)可能使用不同額內(nèi)部網(wǎng)關(guān)協(xié)議),當(dāng)數(shù)據(jù)報(bào)傳到一個(gè)自治系統(tǒng)的邊界時(shí),就需要使用功能一種協(xié)議將路由選擇信息傳遞到另一個(gè)自治系統(tǒng)中。目前使用最多的外部網(wǎng)關(guān)協(xié)議是邊界網(wǎng)關(guān)協(xié)議BGP(Broder Gateway Protocol)
10.1 內(nèi)部網(wǎng)關(guān)協(xié)議RIP
路由信息協(xié)議RIP(Routing Information Protocol)。RIP是一種分布式的基于距離向量的路由選擇協(xié)議。最大優(yōu)點(diǎn)就是簡(jiǎn)單
RIP協(xié)議要求網(wǎng)絡(luò)中的每一個(gè)路由器都要維護(hù)從它自己到其他每一個(gè)目的網(wǎng)絡(luò)的距離記錄(一組距離,即距離向量)。RIP協(xié)議的“距離”也稱為“跳數(shù)”,因?yàn)槊拷?jīng)過(guò)一個(gè)路由器,跳數(shù)就加1.RIP認(rèn)為好的路由就是它通過(guò)的路由器的數(shù)目少,即“距離短”。RIP允許一條路徑最多只能包括15個(gè)路由器。因此“距離”等于16時(shí)即相當(dāng)于不可達(dá)。(注意理解TTL字段的含義) RIP只適合于小型網(wǎng)絡(luò)
RIP協(xié)議三個(gè)要點(diǎn):和哪些路由器交換信息?交換什么信息?在什么時(shí)候交換信息?
RIP協(xié)議的特點(diǎn):
(1)僅和相鄰路由器交換信息
(2)路由器交換的信息時(shí)當(dāng)前本路由器所知道的全部信息,即自己現(xiàn)在的路由表。也就是說(shuō),交換的信息是:“我到本自治系統(tǒng)中所有網(wǎng)絡(luò)的(最短)距離,以及到每個(gè)網(wǎng)絡(luò)應(yīng)經(jīng)過(guò)的下一跳路由器”
(3)按固定的時(shí)間間隔交換路由信息
RIP協(xié)議讓一個(gè)自治系統(tǒng)中的所有路由器都和自己的相鄰路由器定期交換路由信息,并不斷更新其路由表,使得從每一個(gè)路由器到每一個(gè)目的網(wǎng)絡(luò)的路由都是最短的(即跳數(shù)最少)
RIP協(xié)議使用運(yùn)輸層的用戶數(shù)據(jù)報(bào)UDP進(jìn)行傳送(使用UDP端口520)
RIP協(xié)議在應(yīng)用層,為網(wǎng)絡(luò)層服務(wù)。
10.2內(nèi)部網(wǎng)關(guān)協(xié)議OSPF
開(kāi)放最短路徑優(yōu)先OSPF(Open Shortest Path First)最主要的特征就是使用分布式的鏈路狀態(tài)協(xié)議,而不是像RIP那樣的距離向量協(xié)議。和RIP協(xié)議相比,OSPF的三個(gè)要點(diǎn)和RIP的都不一樣:
(1)向本自治系統(tǒng)中所有路由器發(fā)送信息。洪泛法(flooding),路由器通過(guò)所有輸出端口向所有相鄰的路由器發(fā)送信息。
(2)發(fā)送的信息就是與本路由器相鄰的所有路由器的鏈路狀態(tài),但這只是路由器所知道的部分信息。
(3)只有當(dāng)鏈路狀態(tài)發(fā)送變化時(shí),路由器才向所有路由器用洪泛法發(fā)送此信息。而不像RIP那樣,不管網(wǎng)絡(luò)拓?fù)溆袩o(wú)發(fā)生變化,路由器之間都要定期交換路由表的信息。
OSPF適用于大型網(wǎng)絡(luò),OSPF不用UDP而是直接用IP數(shù)據(jù)報(bào)傳送
11.VPN和NAT
1.虛擬專用網(wǎng)VPN
讓本機(jī)構(gòu)的一些計(jì)算機(jī)使用僅在本機(jī)構(gòu)有效的IP地址(這種地址為本地地址),而不需要向互聯(lián)網(wǎng)的管理機(jī)構(gòu)申請(qǐng)全球唯一的IP地址(這種地址稱為全球地址)
專用地址只能用做本地地址而不能用做全球地址。在互聯(lián)網(wǎng)中的所有路由器,對(duì)目的地址是專用地址的數(shù)據(jù)報(bào)一律不進(jìn)行轉(zhuǎn)發(fā)。專用地址塊:
10.0.0.0~10.255.255.255 172.16.0.0~172.31.255.255
192.168.0.0~192.168.255.255
采用這樣的專用IP地址的互連網(wǎng)絡(luò)稱為專用互聯(lián)網(wǎng)或本地互聯(lián)網(wǎng),或?qū)S镁W(wǎng)。
有時(shí)一個(gè)很大的機(jī)構(gòu)的許多部分分布的范圍很廣(例如,在世界各地),這些部門經(jīng)常要互相交換信息。這可以有兩種方法。(1)租用電信公司的通信線路為本機(jī)構(gòu)專用。這種方法雖然簡(jiǎn)單,但線路的租金太高,一般難于承受。(2)利用公用的互聯(lián)網(wǎng)作為本機(jī)構(gòu)各專用網(wǎng)之間的通信載體,這樣的專用網(wǎng)又稱為虛擬專用網(wǎng)(Virtual Private Network)
之所以稱為"專用網(wǎng)"是因?yàn)檫@種網(wǎng)絡(luò)是為本機(jī)構(gòu)的主機(jī)用于機(jī)構(gòu)內(nèi)部的通信,而不是用于和網(wǎng)絡(luò)外非本機(jī)構(gòu)的主機(jī)通信。如果專用網(wǎng)不同網(wǎng)點(diǎn)之間的通信必須經(jīng)過(guò)公用的互聯(lián)網(wǎng),但又有保密的要求,那么所有通過(guò)互聯(lián)網(wǎng)傳送的數(shù)據(jù)都必須加密。
2.網(wǎng)絡(luò)地址轉(zhuǎn)換NAT
下面討論另一種情況,就是在專用網(wǎng)內(nèi)部的一些主機(jī)本來(lái)已經(jīng)分配了本地IP地址(即僅在專用網(wǎng)內(nèi)使用的專用地址),但現(xiàn)在又想和互聯(lián)網(wǎng)上的主機(jī)通信(并不需要加密),那么應(yīng)當(dāng)采取什么措施?NAT技術(shù)
在專用網(wǎng)連接到互聯(lián)網(wǎng)的路由器上安裝NAT軟件,裝有NAT軟件的路由器叫做NAT路由器,它至少有一個(gè)有效的外部全球IP地址。這樣,所有使用本地地址的主機(jī)在和外界通信時(shí),都要在NAT路由器上將其本地地址轉(zhuǎn)換成全球IP地址,才能和互聯(lián)網(wǎng)連接。
NAT路由器收到從專用網(wǎng)內(nèi)部的主機(jī)A發(fā)往互聯(lián)網(wǎng)上主機(jī)B的IP數(shù)據(jù)報(bào):源IP地址是192.168.0.3,而目的IP地址是213.18.2.4。NAT路由器把IP數(shù)據(jù)報(bào)的源IP地址192.168.0.3,轉(zhuǎn)換為新的源IP地址(即NAT路由器的全球IP地址)172.38.1.5,然后轉(zhuǎn)發(fā)出去。因此,主機(jī)B收到這個(gè)IP數(shù)據(jù)報(bào)時(shí),以為A的IP地址是172.38.1.5.B并不知道A的專用地址192.168.0.3.當(dāng)NAT路由器收到互聯(lián)網(wǎng)上的主機(jī)B發(fā)來(lái)的IP數(shù)據(jù)報(bào)時(shí),還要進(jìn)行一次IP地址的轉(zhuǎn)換。通過(guò)NAT地址轉(zhuǎn)換表,就可把IP數(shù)據(jù)報(bào)上的舊的目的IP地址172.38.1.5,轉(zhuǎn)換為新的目的IP地址192.168.0.3(主機(jī)A真正的本地IP地址)
為了更有效地利用NAT路由器上的全球IP地址,現(xiàn)在常用的NAT轉(zhuǎn)換表把傳輸層的端口號(hào)也利用上。這樣,就可以使多個(gè)擁有本地地址的主機(jī),共用一個(gè)NAT路由器上的全球IP地址,因而可以同時(shí)和互聯(lián)網(wǎng)上的不同主機(jī)進(jìn)行通信。使用端口號(hào)的NAT也叫網(wǎng)絡(luò)地址和端口號(hào)轉(zhuǎn)換NAPT,端口映射。
第5章 運(yùn)輸層
本章先概括介紹運(yùn)輸層協(xié)議的特點(diǎn)、進(jìn)程之間的通信和端口等重要概念,然后講述比較簡(jiǎn)單的UDP協(xié)議。其余的篇幅都是討論較為復(fù)雜但非常重要的TCP協(xié)議和可靠傳輸?shù)墓ぷ髟?#xff0c;包括停止等待協(xié)議盒ARQ協(xié)議。在詳細(xì)講述TCP報(bào)文段的首部格式之后,討論TCP的三個(gè)重要問(wèn)題:滑動(dòng)窗口、流量控制和擁塞控制。最后,介紹TCP的連接管理。
主要概念:
(1)運(yùn)輸層為相互通信的應(yīng)用進(jìn)程提供邏輯通信
(2)端口和套接字的意義
(3)無(wú)連接的UDP的特點(diǎn)
(4)面向連接的TCP的特點(diǎn)
(5)在不可靠的網(wǎng)絡(luò)上實(shí)現(xiàn)可靠傳輸?shù)墓ぷ髟?#xff0c;停止等待協(xié)議盒ARQ協(xié)議
(6)TCP的滑動(dòng)窗口、流量控制、擁塞控制和連接管理
1.進(jìn)程之間的通信
通信的真正的端點(diǎn)并不是主機(jī)而是主機(jī)中的進(jìn)程。端到端的通信時(shí)應(yīng)用進(jìn)程之間的通信。運(yùn)輸層提供應(yīng)用進(jìn)程之間的邏輯通信
可以看出網(wǎng)絡(luò)成和運(yùn)輸層有明顯的區(qū)別。網(wǎng)絡(luò)層為主機(jī)之間提供邏輯通信,而運(yùn)輸層為應(yīng)用進(jìn)程之間提供端到端的的邏輯通信。
運(yùn)輸層還要對(duì)收到的報(bào)文進(jìn)行差錯(cuò)檢測(cè)
2.運(yùn)輸層的兩個(gè)主要協(xié)議
根據(jù)應(yīng)用程序的不同需求,運(yùn)輸層需要有兩種不同的協(xié)議,即面向連接的TCP和無(wú)連接的UDP。
用戶數(shù)據(jù)報(bào)協(xié)議UDP(User Datagram Protocol)
傳輸控制協(xié)議TCP(Transmission Control Protocol)
在TCP/IP體系中,根據(jù)所使用的協(xié)議是TCP還是UDP,兩個(gè)對(duì)等運(yùn)輸實(shí)體在通信時(shí)傳送的數(shù)據(jù)單位,分別稱為TCP報(bào)文段(Segment)或UDP用戶數(shù)據(jù)報(bào)。
3.運(yùn)輸層的端口
當(dāng)運(yùn)輸層收到IP層交上來(lái)的運(yùn)輸層報(bào)文時(shí),就能夠根據(jù)其首部中的目的端口號(hào)把數(shù)據(jù)交付應(yīng)用層的目的應(yīng)用進(jìn)程
TCP/IP的運(yùn)輸層用一個(gè)16位端口號(hào)來(lái)標(biāo)志一個(gè)端口
兩個(gè)計(jì)算機(jī)中的進(jìn)程要相互通信,不僅必須知道對(duì)方的IP地址(為了找到的對(duì)方的主機(jī)),而且要知道對(duì)方的端口號(hào)(為了找到對(duì)方計(jì)算機(jī)中的應(yīng)用進(jìn)程)
運(yùn)輸層的端口號(hào)分為兩大類:
(1)服務(wù)器端使用的端口號(hào)
分為兩類,最重要的一類叫做熟知端口號(hào)或系統(tǒng)端口號(hào),數(shù)值為0~1023
另一類叫做等級(jí)端口號(hào),數(shù)值為1024~49151
(2)客戶端使用的端口號(hào)
數(shù)值為49152~65535,由于這類端口號(hào)僅在客戶進(jìn)程運(yùn)行時(shí)才動(dòng)態(tài)選擇,因此叫做短暫端口號(hào)。這類端口號(hào)留給客戶進(jìn)程選擇暫時(shí)使用。當(dāng)服務(wù)器進(jìn)程收到客戶進(jìn)程的報(bào)文時(shí),就知道了客戶進(jìn)程所使用的端口號(hào),因而可以把數(shù)據(jù)發(fā)送給客戶進(jìn)程。通信結(jié)束后,剛才已使用的客戶端口號(hào)就不復(fù)存在,這個(gè)端口號(hào)就可以供其他客戶進(jìn)程使用。
4.用戶數(shù)據(jù)報(bào)協(xié)議UDP
UDP只在IP的數(shù)據(jù)報(bào)服務(wù)之上增加了很少一點(diǎn)的功能,這就是復(fù)用和分用的功能以及差錯(cuò)檢測(cè)的功能。
UDP的主要特點(diǎn):
(1)UDP是無(wú)連接的,即發(fā)送數(shù)據(jù)之前不需要建立連接
(2)UDP使用盡最大努力交付,即不保證可靠交付
(3)UDP是面向報(bào)文的。發(fā)送方的UDP對(duì)應(yīng)用進(jìn)程交下來(lái)的報(bào)文,在添加首部后就向下交付IP層。UDP對(duì)應(yīng)用層交下來(lái)的報(bào)文,既不合并,也不拆分,而是保留這些報(bào)文的邊界。即應(yīng)用層交個(gè)UDP多長(zhǎng)的報(bào)文,UDP就照樣發(fā)送,即一次發(fā)送一個(gè)報(bào)文。UPD一次交付一個(gè)完整的報(bào)文。
(4)UDP沒(méi)有擁塞控制
網(wǎng)絡(luò)出現(xiàn)的擁塞不會(huì)使源主機(jī)的發(fā)送速率降低,這對(duì)某些實(shí)時(shí)應(yīng)用是很重要的。很多的實(shí)時(shí)應(yīng)用(如IP電話,實(shí)時(shí)視頻會(huì)議等)要求源主機(jī)以恒定的速率發(fā)送數(shù)據(jù),并且允許在網(wǎng)絡(luò)發(fā)生擁塞時(shí)丟失一些數(shù)據(jù),但卻不允許數(shù)據(jù)有太大的時(shí)延。UDP正好符合這種要求。
(5)UDP支持一對(duì)一、一對(duì)多、多對(duì)一和多對(duì)多的交互通信
(6)UDP的首部開(kāi)銷小,只有8字節(jié),比TCP的20字節(jié)的首部要短。
UDP的首部格式
用戶數(shù)據(jù)報(bào)UDP有兩個(gè)字段:數(shù)據(jù)字段和首部字段。首部字段很簡(jiǎn)單,只有8個(gè)字節(jié),由四個(gè)字段組成。各字段意義如下:
當(dāng)運(yùn)輸層從IP層收到的UDP數(shù)據(jù)報(bào)時(shí),就根據(jù)首部中的目的端口,把UDP數(shù)據(jù)報(bào)通過(guò)相應(yīng)的端口,上交最后的終點(diǎn)—應(yīng)用程序
請(qǐng)注意,雖然在UDP之間的通信要用到其端口號(hào),但由于UDP的通信是無(wú)連接的,因此不需要使用套接字(TCP之間的通信必須要在兩個(gè)套接字之間建立連接)
5.傳輸控制協(xié)議TCP
TCP最主要的特點(diǎn):
(1)TCP是面向連接的。應(yīng)用程序在使用TCP協(xié)議之前,必須先建立連接。在傳送數(shù)據(jù)完畢后,必須釋放已經(jīng)建立的TCP連接。
(2)每一條TCP連接只能有兩個(gè)端點(diǎn)(endpoint),每一條TCP連接只能是點(diǎn)對(duì)點(diǎn)(一對(duì)一)
(3)TCP提供可靠交付的服務(wù)。通過(guò)TCP連接傳送的數(shù)據(jù),無(wú)差錯(cuò)、不丟失、不重復(fù),并且按序到達(dá)。
(4)TCP提供全雙工通信。TCP允許通信雙方的應(yīng)用進(jìn)程在任何時(shí)候都能發(fā)送數(shù)據(jù)。TCP連接的兩端都設(shè)有發(fā)送緩存和接收緩存,用來(lái)臨時(shí)存放雙方通信的數(shù)據(jù)。在發(fā)送時(shí),應(yīng)用程序在把數(shù)據(jù)傳送給TCP的緩存后,就可以做自己的事,而TCP在合適的時(shí)候把數(shù)據(jù)發(fā)送出去
(5)TCP是面向字節(jié)流的
TCP中的“流”stream指的是流入到進(jìn)程或從進(jìn)程流出的字節(jié)序列
圖5-8指出,TCP和UDP在發(fā)送報(bào)文時(shí)所采用的方式完全不同。TCP并不關(guān)心應(yīng)用進(jìn)程一次把多長(zhǎng)的報(bào)文發(fā)送到TCP的緩存中,而是根據(jù)對(duì)方給出的窗口值和當(dāng)前網(wǎng)絡(luò)擁塞的程度來(lái)決定一個(gè)報(bào)文段應(yīng)包含多少個(gè)字節(jié)(UDP發(fā)送的報(bào)文長(zhǎng)度是應(yīng)用進(jìn)程給出的)。如果應(yīng)用進(jìn)程傳送到TCP緩存的數(shù)據(jù)塊太大,TCP就可以把它劃分短一些再傳送。如果應(yīng)用程序一次只發(fā)來(lái)一個(gè)字節(jié),TCP也可以等到積累有足夠多的字節(jié)后再構(gòu)成報(bào)文段發(fā)送出去。
TCP的連接
每一條TCP連接有兩個(gè)端點(diǎn),這兩個(gè)端點(diǎn)叫做套接字(Socket)
套接字(socket)=(IP地址:端口號(hào))
**每一條TCP連接唯一地被通信兩端的兩個(gè)端點(diǎn)(即兩個(gè)套接字)所確定。**即:
TCP連接 ::= {socket1,socket2}={ (IP1:port1), (IP2:port2)}
這里IP1和IP2分別是兩個(gè)端點(diǎn)主機(jī)的IP地址,而port1和port2分別是兩個(gè)端點(diǎn)主機(jī)中的端口號(hào)。
TCP和UDP主要區(qū)別:
(1)TCP是有連接的,UDP是無(wú)連接的
(2)TCP提供可靠交付的服務(wù),UDP不保證可靠交付
(4)TCP是面向字節(jié)流的,UDP是面向報(bào)文的
(5)TCP連接是一對(duì)一的,UDP連接可以是一對(duì)一,一對(duì)多和多對(duì)多的通信
6.可靠傳輸?shù)墓ぷ髟?/h2>
6.1 停止等待協(xié)議
“停止等待”就是每發(fā)送完一個(gè)分組就停止發(fā)送,等待對(duì)方的確認(rèn)。在收到確認(rèn)后再發(fā)送下一個(gè)分組。
使用上述的確認(rèn)和重傳機(jī)制,我們就可以再不可靠的傳輸網(wǎng)絡(luò)上實(shí)現(xiàn)可靠的通信。
為了提高傳輸效率,發(fā)送方可以不使用低效率的停止等待協(xié)議,而是采用流水線傳輸。流水線傳輸就是發(fā)送方可連續(xù)多個(gè)分組,不必每發(fā)完一個(gè)分組就停頓下來(lái)等待對(duì)方的確認(rèn)。
當(dāng)使用流水線傳輸時(shí),就要使用連續(xù)的ARQ協(xié)議和滑動(dòng)窗口協(xié)議
6.2 連續(xù)ARQ協(xié)議
連續(xù)ARQ協(xié)議規(guī)定,發(fā)送方每收到一個(gè)確認(rèn),就把發(fā)送窗口向前滑動(dòng)一個(gè)分組的位置。接收方一般都是采用積累確認(rèn)的方式。即接收方不必對(duì)收到的分組逐個(gè)發(fā)送確認(rèn),而是在收到幾個(gè)分組后,對(duì) 按序到達(dá)的最后一個(gè)分組發(fā)送確認(rèn),這就表示:到這個(gè)分組為止的所有分組都已正確收到了。
累積確認(rèn)優(yōu)點(diǎn):容易實(shí)現(xiàn),即使確認(rèn)丟失也不必重傳。缺點(diǎn):不能向發(fā)送方反映出接收方已經(jīng)正確收到的所有分組的信息。
7.TCP報(bào)文段的首部格式
TCP雖然是面向字節(jié)流的,但TCP傳送的數(shù)據(jù)單元是報(bào)文段。一個(gè)TCP報(bào)文段分為首部和數(shù)據(jù)兩部分,而TCP的全部功能都體現(xiàn)在它首部中各字段的作用。因此,只有弄清TCP首部各字段的作用才能掌握TCP的工作原理
TCP報(bào)文段首部的前20個(gè)字節(jié)是固定的
(1)序號(hào) 在一個(gè)TCP連接中傳送的字節(jié)流中的每一個(gè)字節(jié)都按順序編號(hào)。整個(gè)要傳送的字節(jié)流的起始序號(hào)必須在連接建立時(shí)設(shè)置。首部中的序號(hào)字段值則指的是本報(bào)文段所發(fā)送的數(shù)據(jù)的第一個(gè)字節(jié)的序號(hào)。
(2)確認(rèn)號(hào) 占4字節(jié),是期望收到對(duì)方下一個(gè)報(bào)文段的第一個(gè)數(shù)據(jù)字節(jié)的序號(hào)
例如,B正確收到了A發(fā)送過(guò)來(lái)的一個(gè)報(bào)文段,其序號(hào)字段值是501,而數(shù)據(jù)長(zhǎng)度是200字節(jié)(序號(hào)501~700),這表明B正確收到了A發(fā)送的到序號(hào)700為止的數(shù)據(jù)。因此,B期望收到A的下一個(gè)數(shù)據(jù)序號(hào)是701,于是B在發(fā)送給A的確認(rèn)報(bào)文段中把確認(rèn)號(hào)置為701。請(qǐng)注意,現(xiàn)在的確認(rèn)號(hào)不是501,也不是700,而是701。
若確認(rèn)號(hào)=N,則表明:到序號(hào)N-1為止的所有數(shù)據(jù)都已正確收到。
(3)數(shù)據(jù)偏移 占4位,它指出TCP報(bào)文段的數(shù)據(jù)起始處距離TCP報(bào)文段的起始處有多遠(yuǎn)
(4)緊急URG(URGent) 當(dāng)URG=1時(shí),表明緊急指針字段有效,它告訴系統(tǒng)此報(bào)文段中有緊急數(shù)據(jù),應(yīng)盡快傳送(相當(dāng)于高優(yōu)先級(jí)的數(shù)據(jù)),而不是按原來(lái)的排隊(duì)順序來(lái)傳送。
(5)確認(rèn)ACK(ACKnowledgment) 僅當(dāng)ACK=1時(shí)確認(rèn)號(hào)字段才有效。當(dāng)ACK=0時(shí),確認(rèn)號(hào)無(wú)效。TCP規(guī)定,在連接建立后所有傳送的報(bào)文段都必須把ACK置1
(6)推送PSH(Push)
(7)復(fù)位RST(ReSeT) 當(dāng)RST=1時(shí),表明TCP連接中共出現(xiàn)嚴(yán)重差錯(cuò)
(8)同步SYN(SYNchronization) 在連接建立時(shí)用來(lái)同步序號(hào)。當(dāng)SYN=1而ACK=0,表明這是一個(gè)連接請(qǐng)求報(bào)文段。對(duì)方若同意建立連接,則應(yīng)在響應(yīng)的報(bào)文段中使SYN=1和ACK=1。因此,SYN置為1就表示這是一個(gè)連接請(qǐng)求或連接接受報(bào)文。
(9)終止FIN 用來(lái)釋放一個(gè)連接。當(dāng)FIN=1時(shí),表明此報(bào)文的發(fā)送方的數(shù)據(jù)已發(fā)送完畢,并要求釋放運(yùn)輸連接。
(10)窗口 占2字節(jié)。窗口值[0,2^16-1]之間的整數(shù)。窗口指的是發(fā)送本報(bào)文段中的一方的接受窗口(而不是自己的發(fā)送窗口)。窗口值告訴對(duì)方:從本報(bào)文段首部中的確認(rèn)號(hào)算起,接收方目前允許對(duì)方發(fā)送的數(shù)據(jù)量。窗口值作為接收方讓發(fā)送方設(shè)置其發(fā)送窗口的依據(jù)
例如,發(fā)送了一個(gè)報(bào)文段,其確認(rèn)號(hào)是701,窗口字段是1000.這就是告訴對(duì)方:“從701號(hào)算起,我(即發(fā)送此報(bào)文段的一方)的接受緩存空間還可接收1000個(gè)字節(jié)數(shù)據(jù)(字節(jié)序號(hào)是701~~1700),你在給我發(fā)送數(shù)據(jù)時(shí),必須考慮到這一點(diǎn)”。
窗口字段明確指出了現(xiàn)在允許對(duì)方發(fā)送的數(shù)據(jù)量。窗口值經(jīng)常在動(dòng)態(tài)變化著。
(11)檢驗(yàn)和
(12)緊急指針
8.TCP可靠傳輸?shù)膶?shí)現(xiàn)
8.1以字節(jié)為單位的滑動(dòng)窗口
現(xiàn)假定A收到了B發(fā)來(lái)的確認(rèn)報(bào)文段,其中窗口是20字節(jié),而確認(rèn)號(hào)是31(這表明B期望收到的下一個(gè)序號(hào)是31,而序號(hào)30為止的數(shù)據(jù)已經(jīng)收到了)。根據(jù)這兩個(gè)數(shù)據(jù),A就構(gòu)造出自己的發(fā)送窗口,如圖5-15所示
9.TCP流量控制
利用滑動(dòng)窗口實(shí)現(xiàn)流量控制
一般來(lái)說(shuō),我們總是希望數(shù)據(jù)局傳輸?shù)酶煲恍5绻l(fā)送方把數(shù)據(jù)發(fā)送得過(guò)快,接收方可能來(lái)不及接收,這就會(huì)造成數(shù)據(jù)的丟失。所謂流量控制就是讓發(fā)送方的發(fā)送速率不要太快,要讓接收方來(lái)得及接收。
設(shè)A向B發(fā)送數(shù)據(jù)。在連接建立時(shí),B告訴了A:“我的接收窗口rwdn=400”。因此,發(fā)送方的發(fā)送窗口不能超過(guò)接收方給出的接收窗口的數(shù)值。
接收方B進(jìn)行了三次流量控制。第一次把窗口減小到rwnd=300,第二次又減到rwnd=100,最后減到0,即不允許發(fā)送方再發(fā)送數(shù)據(jù)了。這種使發(fā)送方暫停發(fā)送的狀態(tài)將持續(xù)到主機(jī)B重新發(fā)出一個(gè)新的窗口值為止。
10.TCP的擁塞控制
擁塞控制與流量控制的關(guān)系密切,它們之間也存在一些差別。所謂擁塞控制就是防止過(guò)多的數(shù)據(jù)注入到網(wǎng)絡(luò)中,這樣可以使網(wǎng)絡(luò)中的路由器或鏈路不致過(guò)載
擁塞控制是一個(gè)全局性的過(guò)程,涉及到所有的主機(jī)、所有的路由器,以及與降低網(wǎng)絡(luò)傳輸性能有關(guān)的所有因素。流量控制往往是值點(diǎn)對(duì)點(diǎn)通信量的控制,是個(gè)端到端的問(wèn)題(接收端控制發(fā)送端),流量控制所要做的就是抑制發(fā)送端發(fā)送數(shù)據(jù)的速率,以便使接收端來(lái)得及接收。
10.1 TCP擁塞控制方法
TCP進(jìn)行擁塞控制的算法有四種:慢開(kāi)始(Slow-start)、擁塞避免(Congestion avoidance)、快重傳(fast retransmit)和快恢復(fù)(fast recovery)
1.慢開(kāi)始和擁塞避免
下面討論的擁塞控制也叫作基于窗口的擁塞控制。為此,發(fā)送方維持一個(gè)叫做擁塞窗口cwnd(congestion window)的狀態(tài)變量。擁塞窗口的大小取決于網(wǎng)絡(luò)的擁塞程度,并且動(dòng)態(tài)地在變化。發(fā)送方讓自己的發(fā)送窗口等于擁塞窗口。
發(fā)送方控制擁塞窗口的原則是:只要網(wǎng)絡(luò)沒(méi)有出現(xiàn)擁塞,擁塞窗口就可以再增大一些,以便把更多的分組發(fā)送出去,這樣就可以提高網(wǎng)絡(luò)的利用率。但只要網(wǎng)絡(luò)出現(xiàn)擁塞或有可能出現(xiàn)擁塞,就必須把擁塞窗口減少一些,以減少注入到網(wǎng)絡(luò)中的分組數(shù),以便緩解網(wǎng)絡(luò)出現(xiàn)的擁塞。
下面討論擁塞窗口cwnd的大小是怎樣變化的。
慢開(kāi)始算法:當(dāng)主機(jī)開(kāi)始放松數(shù)據(jù)時(shí),由于不清楚網(wǎng)絡(luò)的負(fù)荷情況,所以如果立即把大量數(shù)據(jù)字節(jié)注入到網(wǎng)絡(luò),那么就有可能引起網(wǎng)絡(luò)發(fā)送擁塞。經(jīng)驗(yàn)證明,較好的方法是先探測(cè)一下,即由小到大逐漸增大發(fā)送窗口,即由小到大逐漸增加擁塞窗口數(shù)值。
慢開(kāi)始的“慢”并不是指cwnd的增長(zhǎng)速率慢,而是指在TCP開(kāi)始發(fā)送報(bào)文段先設(shè)置cwnd=1,使發(fā)送方在開(kāi)始時(shí)只發(fā)送一個(gè)報(bào)文段(目的是試探一個(gè)網(wǎng)絡(luò)的擁塞情況),然后再逐漸增大cwnd。
擁塞避免算法:讓擁塞窗口cwnd緩慢地增大,即每經(jīng)過(guò)一個(gè)往返時(shí)間RTT就把發(fā)送方的擁塞窗口cwnd加1,而不是像慢開(kāi)始階段那樣加倍增長(zhǎng)。因此擁塞避免階段就有“加法增大”的特點(diǎn)。這表明在擁塞避免階段,擁塞窗口cwnd按線性規(guī)律緩慢增長(zhǎng),比慢開(kāi)始算法的擁塞窗口增長(zhǎng)速率緩慢很多。
當(dāng)擁塞窗口cwnd=24時(shí),網(wǎng)絡(luò)出現(xiàn)了超時(shí),發(fā)送方判斷為網(wǎng)絡(luò)擁塞。于是調(diào)整門限值ssthresh=cwnd/2=12,同時(shí)設(shè)置擁塞窗口cwnd=1,進(jìn)入慢開(kāi)始階段。
快重傳算法:
在圖5-25中的點(diǎn)4,發(fā)送方知道現(xiàn)在只是丟失了個(gè)別的報(bào)文段。于是不啟動(dòng)慢開(kāi)始,而是執(zhí)行快恢復(fù)算法。這時(shí),發(fā)送方調(diào)整門限值ssthresh=cwnd/2=8,同時(shí)設(shè)置擁塞窗口cwnd=ssthresh=8,并開(kāi)始執(zhí)行擁塞避免算法。
11.TCP的運(yùn)輸連接管理
運(yùn)輸連接有三個(gè)階段:連接建立、數(shù)據(jù)傳送和連接釋放
運(yùn)輸連接的管理就是使運(yùn)輸連接的建立和釋放都能正常地進(jìn)行
在TCP連接建立過(guò)程中要解決一下三個(gè)問(wèn)題:
(1)要使每一方能夠確知對(duì)方的存在
(2)要允許雙方協(xié)商一些參數(shù)(如最大窗口值、是否使用窗口擴(kuò)大選項(xiàng)和時(shí)間戳選項(xiàng)以及服務(wù)質(zhì)量等)
(3)能夠?qū)\(yùn)輸實(shí)體資源(如緩存大小、連接表中的項(xiàng)目等)進(jìn)行分配
TCP連接的建立采用客戶服務(wù)器方式。主動(dòng)發(fā)起連接建立的應(yīng)用程序叫做客戶,而被動(dòng)等待建立的應(yīng)用程序叫做服務(wù)器
11.1 TCP的連接建立
TCP建立連接的過(guò)程叫做握手,握手需要在客戶和服務(wù)器之間交換三個(gè)TCP報(bào)文段,如圖所示
上面給出的連接建立過(guò)程叫做三次握手。請(qǐng)注意,在圖5-28中B發(fā)送給A的報(bào)文段,也可以拆成兩個(gè)報(bào)文段。可以先發(fā)送一個(gè)確認(rèn)報(bào)文段(ACK=1,ack=x+1),然后再發(fā)送一個(gè)同步報(bào)文段(SYN=1,seq=y)。這樣的過(guò)程就變成了四報(bào)文握手,但效果是一樣的。
為什么不是兩次握手?
采用三次握手,可以防止上述現(xiàn)象的發(fā)生。例如剛才的異常情況下,A不會(huì)向B的確認(rèn)發(fā)出確認(rèn)。B由于收不到確認(rèn),就知道A并沒(méi)有要求建立連接。
服務(wù)器要確認(rèn)客戶的連接請(qǐng)求,然后客戶要對(duì)服務(wù)器的確認(rèn)進(jìn)行確認(rèn)。
11.2 TCP的連接釋放
數(shù)據(jù)傳輸結(jié)束后,通信的雙方都可釋放連接。
A的應(yīng)用進(jìn)程先向其TCP發(fā)出連接釋放報(bào)文段,并停止再發(fā)送數(shù)據(jù),主動(dòng)關(guān)閉TCP連接。A把連接釋放報(bào)文段首部的終止控制位FIN置1,其seq=u,它等待前面已傳送過(guò)得數(shù)據(jù)的最后一個(gè)字節(jié)的序號(hào)加1。這時(shí)A進(jìn)入FIN-WAIT-1(終止等待1)狀態(tài),等待B的確認(rèn)。
B收到連接釋放報(bào)文段后即發(fā)出確認(rèn),確認(rèn)號(hào)是ack=u+1,而這個(gè)報(bào)文段自己的序號(hào)是v,等于B前面已傳送過(guò)得數(shù)據(jù)的最后一個(gè)字節(jié)的序號(hào)加1.然后B就進(jìn)入CLOSE-WAIT(關(guān)閉等待)狀態(tài)。
TCP的連接釋放采用四次握手機(jī)制。任何一方都可以在數(shù)據(jù)傳送結(jié)束后發(fā)出連接釋放的通知,待對(duì)方確認(rèn)后就進(jìn)入半關(guān)閉狀態(tài)。當(dāng)另一方也沒(méi)有數(shù)據(jù)再發(fā)送時(shí),則發(fā)送連接釋放通知,對(duì)方確認(rèn)后就完全關(guān)閉了TCP連接。
第6章 應(yīng)用層
本章討論各種應(yīng)用進(jìn)程通過(guò)什么樣的應(yīng)用層協(xié)議來(lái)使用網(wǎng)絡(luò)所提供的通信服務(wù)
在上一章,我們已經(jīng)學(xué)習(xí)了運(yùn)輸層為應(yīng)用層提供了端到端的通信服務(wù)。但不同的網(wǎng)絡(luò)應(yīng)用的應(yīng)用進(jìn)程之間,還需要不同的通信規(guī)則。因此在運(yùn)輸層協(xié)議之上,還需要有應(yīng)用層協(xié)議。這是因?yàn)?#xff0c;每個(gè)應(yīng)用層協(xié)議都是為了解決某一個(gè)類應(yīng)用問(wèn)題,而問(wèn)題的解決又必須通過(guò)位于不同主機(jī)中的多個(gè)應(yīng)用進(jìn)程之間的通信和協(xié)同工作來(lái)完成。應(yīng)用進(jìn)程之間的這種通信必須遵循嚴(yán)格的規(guī)則。應(yīng)用層的具體內(nèi)容就是精確定義這些通信規(guī)則。應(yīng)用層協(xié)議應(yīng)當(dāng)定義:
- 應(yīng)用進(jìn)程交換的報(bào)文類型,如請(qǐng)求報(bào)文和響應(yīng)報(bào)文’
- 各種報(bào)文類型的語(yǔ)法,如報(bào)文中的各個(gè)字段及其詳細(xì)描述
- 字段的語(yǔ)義,即包含在字段中的信息的含義
- 進(jìn)程何時(shí)、如何發(fā)送報(bào)文,以及對(duì)報(bào)文進(jìn)行響應(yīng)的規(guī)則
下面先討論許多應(yīng)用協(xié)議都要使用的域名系統(tǒng)。在介紹了文件傳輸協(xié)議和遠(yuǎn)程登錄協(xié)議后,再重點(diǎn)介紹萬(wàn)維網(wǎng)的工作原理及其主要協(xié)議。
本章主要內(nèi)容:
- 域名系統(tǒng)DNS------從域名解析出IP地址
- HTTP協(xié)議
- 電子郵件的傳送過(guò)程,SMTP協(xié)議等
- 動(dòng)態(tài)主機(jī)配置協(xié)議DHCP的特點(diǎn)
- 系統(tǒng)調(diào)用和應(yīng)用編程接口的基本概念
1.域名系統(tǒng)DNS
用戶與互聯(lián)網(wǎng)上某臺(tái)主機(jī)通信時(shí),必須要知道對(duì)方的IP地址。然而用戶很難記住對(duì)方的IP地址。應(yīng)用層為了便于用戶記憶各種網(wǎng)絡(luò)應(yīng)用,連接在互聯(lián)網(wǎng)上的主機(jī)不僅有IP地址,而且還有便于用戶記憶的主機(jī)名字。域名系統(tǒng)DNS能夠把互聯(lián)網(wǎng)上的主機(jī)名字轉(zhuǎn)換為對(duì)應(yīng)的IP地址
2.FTP
FTP使用客戶服務(wù)器方式。一個(gè)FTP服務(wù)器進(jìn)程可同時(shí)為多個(gè)客戶進(jìn)程提供服務(wù)。FTP的服務(wù)器進(jìn)程由兩大部分組成:一個(gè)主進(jìn)程,負(fù)責(zé)接收新的請(qǐng)求;另外有若干個(gè)從屬進(jìn)程,負(fù)責(zé)處理單個(gè)請(qǐng)求。
主進(jìn)程的工作步驟如下:
(1)打開(kāi)熟知端口(端口號(hào)為21),使客戶進(jìn)程能夠臉上
(2)等待客戶進(jìn)程發(fā)出連接請(qǐng)求。
(3)啟動(dòng)從屬進(jìn)程處理客戶進(jìn)程發(fā)來(lái)的請(qǐng)求。從屬進(jìn)程對(duì)客戶進(jìn)程的請(qǐng)求處理完畢后即終止,但從屬進(jìn)程在運(yùn)行期間根據(jù)需要還可能創(chuàng)建其他一些子進(jìn)程
(4)回到等待狀態(tài),繼續(xù)接受其他客戶進(jìn)程發(fā)來(lái)的請(qǐng)求。主進(jìn)程與從屬進(jìn)程的處理是并發(fā)進(jìn)行的
在進(jìn)行文件傳輸時(shí),FTP的客戶和服務(wù)器之間要建立兩個(gè)并行的TCP連接:“控制連接”和“數(shù)據(jù)連接”。控制連接在整個(gè)會(huì)話期間一直保持打開(kāi),FTP客戶所發(fā)出的傳送請(qǐng)求,通過(guò)控制連接發(fā)送給服務(wù)器端的控制進(jìn)程,但控制連接并不用來(lái)傳送文件。服務(wù)器端的控制進(jìn)程在接收到FTP客戶發(fā)送來(lái)的文件傳輸請(qǐng)求后就創(chuàng)建“數(shù)據(jù)傳送進(jìn)程”和“數(shù)據(jù)連接”,用來(lái)連接客戶端和服務(wù)器端的數(shù)據(jù)傳送進(jìn)程。數(shù)據(jù)傳送進(jìn)程實(shí)際完成文件的傳送,在傳送完畢后關(guān)閉“數(shù)據(jù)傳送連接”并結(jié)束運(yùn)行。
當(dāng)客戶進(jìn)程向服務(wù)器進(jìn)程發(fā)出建立連接請(qǐng)求時(shí),要尋找連接服務(wù)器進(jìn)程的熟知端口21,同時(shí)還要告訴服務(wù)器進(jìn)程自己的另一個(gè)端口號(hào)碼,用于建立數(shù)據(jù)傳送連接。接著,服務(wù)器進(jìn)程用自己傳送數(shù)據(jù)的熟知端口20與客戶進(jìn)程所提供的端口號(hào)建立數(shù)據(jù)傳送連接。由于FTP使用了兩個(gè)不同的端口號(hào),所以數(shù)據(jù)連接與控制連接不會(huì)發(fā)生混亂。
3.遠(yuǎn)程終端協(xié)議TELNET
用戶用TELNET就可在其所在地通過(guò)TCP連接注冊(cè)(即登錄)到遠(yuǎn)地的另一臺(tái)主機(jī)上(使用主機(jī)名或IP地址)。TELNET能將用戶的擊鍵傳到遠(yuǎn)地主機(jī),同時(shí)也能將遠(yuǎn)地主機(jī)的輸出通過(guò)TCP連接返回到用戶屏幕。
4.統(tǒng)一資源定位符URL
URL(Uniform Resource Locator)
URL用來(lái)表示從互聯(lián)網(wǎng)撒花姑娘得到的資源位置和訪問(wèn)這些資源的方法。URL實(shí)際上就是在互聯(lián)網(wǎng)上的資源的地址。
URL的一般形式由以下四個(gè)部分組成: <協(xié)議>://<主機(jī)>:<端口>/<路徑>
主機(jī)就是指該主機(jī)在互聯(lián)網(wǎng)上的域名。
HTTP的URL的一般形式: http://<主機(jī)>:<端口>/<路徑>
5.HTTP
HTTP協(xié)議定義了 瀏覽器(即萬(wàn)維網(wǎng)客戶進(jìn)程)怎樣向萬(wàn)維網(wǎng)服務(wù)器請(qǐng)求萬(wàn)維網(wǎng)文檔,以及服務(wù)器怎樣把文檔傳送給瀏覽器。
HTTP協(xié)議是無(wú)狀態(tài)的(stateless).也就是說(shuō),同一個(gè)客戶第二次訪問(wèn)同一個(gè)服務(wù)器上的頁(yè)面時(shí),服務(wù)器的響應(yīng)與第一次被訪問(wèn)的相同(假定現(xiàn)在服務(wù)器還沒(méi)有把該頁(yè)面更新),因?yàn)榉?wù)器并不記得曾經(jīng)訪問(wèn)過(guò)的這個(gè)客戶,也不記得為該客戶曾經(jīng)服務(wù)過(guò)多少次。HTTP的無(wú)狀態(tài)特性簡(jiǎn)化了服務(wù)器的設(shè)計(jì),使服務(wù)器更容易支持大量并發(fā)的HTTP請(qǐng)求。
HTTP/1.1協(xié)議使用了持續(xù)連接,所謂持續(xù)連接就是萬(wàn)維網(wǎng)服務(wù)器在發(fā)送響應(yīng)后仍然在一段時(shí)間內(nèi)保持這條連接,使同一個(gè)客戶和服務(wù)器可以繼續(xù)在這條連接上傳送后續(xù)的HTTP請(qǐng)求報(bào)文和響應(yīng)報(bào)文。
代理服務(wù)器(proxy server) 代理服務(wù)器把最近的一些請(qǐng)求和響應(yīng)暫存在本地磁盤中。當(dāng)新請(qǐng)求達(dá)到時(shí),若代理服務(wù)器發(fā)現(xiàn)這個(gè)請(qǐng)求與暫時(shí)存放的請(qǐng)求相同,就返回暫存的響應(yīng),而不需要按URL的地址再次去互聯(lián)網(wǎng)訪問(wèn)該資源。
HTTP的報(bào)文結(jié)構(gòu)
HTTP有兩類報(bào)文:
(1)請(qǐng)求報(bào)文------從客戶向服務(wù)器發(fā)送請(qǐng)求報(bào)文
(2)響應(yīng)報(bào)文------從服務(wù)器到客戶的回答
HTTP請(qǐng)求報(bào)文和響應(yīng)報(bào)文都是由三個(gè)部分組成的
請(qǐng)求報(bào)文的第一行“請(qǐng)求行”只有三個(gè)內(nèi)容,即方法,請(qǐng)求資源的URL,以及HTTP的版本
**在服務(wù)器上存放用戶的信息:**Cookie
Cookie工作原理:當(dāng)用戶A瀏覽某個(gè)使用Cookie的網(wǎng)站時(shí),該網(wǎng)站的服務(wù)器就為A產(chǎn)生一個(gè)唯一的識(shí)別碼,并以此作為索引在服務(wù)器的后端數(shù)據(jù)庫(kù)中產(chǎn)生一個(gè)項(xiàng)目。接著在給A的HTTP響應(yīng)報(bào)文中共添加一個(gè)叫做Set-cookie的首部行。例如這個(gè)首部行:
Set-cookie:31d4d96e407aad42
當(dāng)A收到這個(gè)響應(yīng)時(shí),其瀏覽器就在它管理的特定Cookie文件中添加一行,其中包括這個(gè)服務(wù)器的主機(jī)名和Set-cookie后面給出的識(shí)別碼。當(dāng)A繼續(xù)瀏覽這個(gè)網(wǎng)站時(shí),每發(fā)送一個(gè)HTTP請(qǐng)求報(bào)文,其瀏覽器就會(huì)從其Cookie文件中取出這個(gè)網(wǎng)站的識(shí)別碼,并放在HTTP請(qǐng)求報(bào)文的cookie首部行中。cookie:31d4d96e407aad42
于是,這個(gè)網(wǎng)站就能夠跟蹤用戶31d4d96e407aad42(用戶A)在該網(wǎng)站的活動(dòng)。需要注意的是,服務(wù)器并不需要知道這個(gè)用戶的真實(shí)姓名以及其他的信息。但服務(wù)器能夠知道用戶31d4d96e407aad42在什么時(shí)候訪問(wèn)了哪些頁(yè)面,以及訪問(wèn)這些頁(yè)面的順序。如果A是在網(wǎng)上購(gòu)物,那么這個(gè)服務(wù)器可以為A維護(hù)一個(gè)所購(gòu)物品的列表,使A在結(jié)束這次購(gòu)物是可以一起付費(fèi)。
6.簡(jiǎn)單郵件傳送協(xié)議SMTP(Simple Mail Transfer Protocol)
一個(gè)電子郵件系統(tǒng)具有三個(gè)主要組成構(gòu)件:用戶代理、郵件服務(wù)器,以及郵件發(fā)送協(xié)議(SMTP)和郵件讀取協(xié)議(POP3)
用戶代理UA(User Agent)就是用戶與電子郵件系統(tǒng)的接口,在大多數(shù)情況下它就是運(yùn)行在用戶電腦中的一個(gè)程序。因此用戶代理又稱為電子郵件客戶端軟件。用戶代理向用戶提供一個(gè)很友好的接口來(lái)發(fā)送和接收郵件。
7.動(dòng)態(tài)主機(jī)配置協(xié)議DHCP
8.應(yīng)用進(jìn)程跨越網(wǎng)絡(luò)的通信
系統(tǒng)調(diào)用和應(yīng)用編程接口
大多數(shù)操作系統(tǒng)使用系統(tǒng)調(diào)用的機(jī)制在應(yīng)用程序和操作系統(tǒng)之間傳遞控制權(quán)。
當(dāng)某個(gè)應(yīng)用進(jìn)程啟動(dòng)系統(tǒng)調(diào)用時(shí),控制權(quán)就從應(yīng)用進(jìn)程傳遞給了系統(tǒng)調(diào)用接口。此接口再把控制權(quán)傳遞給計(jì)算機(jī)的操作系統(tǒng)。操作系統(tǒng)把這個(gè)調(diào)用轉(zhuǎn)給某個(gè)內(nèi)部過(guò)程,并執(zhí)行所請(qǐng)求的操作。內(nèi)部過(guò)程一旦執(zhí)行完畢,控制權(quán)就又通過(guò)系統(tǒng)調(diào)用接口返回給應(yīng)用進(jìn)程。因此系統(tǒng)調(diào)用實(shí)際上就是應(yīng)用進(jìn)程的控制權(quán)和操作系統(tǒng)的控制權(quán)進(jìn)行轉(zhuǎn)換的一個(gè)接口。由于應(yīng)用程序在使用系統(tǒng)調(diào)用之前要編寫一些程序,特別是需要設(shè)置系統(tǒng)調(diào)用中的許多參數(shù),因此這種系統(tǒng)調(diào)用又稱為應(yīng)用編程接口API。應(yīng)用進(jìn)程只要使用標(biāo)準(zhǔn)的系統(tǒng)調(diào)用函數(shù)就可得到操作系統(tǒng)的服務(wù)。從程序設(shè)計(jì)角度看,可以把API看成是應(yīng)用程序和操作系統(tǒng)之間的接口。
現(xiàn)在TCP/IP協(xié)議軟件已駐留在操作系統(tǒng)中。由于TCP/IP協(xié)議族被設(shè)計(jì)成能運(yùn)行在多種操作系統(tǒng)的環(huán)境中,因此TCP/IP標(biāo)準(zhǔn)沒(méi)有規(guī)定應(yīng)用程序與TCP/IP協(xié)議軟件如何接口的細(xì)節(jié),而是允許系統(tǒng)設(shè)計(jì)者能夠選擇有關(guān)API的具體實(shí)現(xiàn)細(xì)節(jié)。
網(wǎng)絡(luò)編程時(shí)常常把套接字作為應(yīng)用進(jìn)程和運(yùn)輸層協(xié)議之間的接口。
幾種常用的系統(tǒng)調(diào)用:
(1)連接建立階段 (2)數(shù)據(jù)傳送階段 (3)連接釋放階段
第7章 網(wǎng)絡(luò)安全
本章最主要的內(nèi)容:
(1)對(duì)稱密鑰密碼體制和公鑰密碼體制的特點(diǎn)
(2)數(shù)字簽名與鑒別的概念
(3)網(wǎng)絡(luò)層協(xié)議IPsec協(xié)議族和運(yùn)輸層安全協(xié)議SSL/TLS的要點(diǎn)
(4)系統(tǒng)安全:防火墻與入侵檢測(cè)
1.數(shù)據(jù)加密模型
密鑰通常由密鑰中心提供,當(dāng)密鑰需要向遠(yuǎn)地傳送時(shí),一定要通過(guò)另一個(gè)安全信道。
2.兩類密碼體制
對(duì)稱密鑰密碼體制:加密密鑰與解密密鑰使用相同的密碼體制
數(shù)據(jù)加密標(biāo)準(zhǔn)DES屬于對(duì)稱密鑰體制,DES的保密性僅取決于密鑰的保密,而算法是公開(kāi)的。DES的問(wèn)題是它的密鑰長(zhǎng)度,56位的密鑰意味著有2^56中可能的密鑰,
公鑰密碼體制:使用不同的加密密鑰與解密密鑰
公鑰密碼體制的產(chǎn)生主要有兩個(gè)方面的原因:一是由于對(duì)稱密鑰密碼體制的密鑰分配問(wèn)題,二是由于對(duì)數(shù)字簽名的需求。
在許多應(yīng)用中共,人們需要對(duì)純數(shù)字的電子電子信息進(jìn)行簽名,表明該信息確實(shí)是某個(gè)特定的人產(chǎn)生的。
在公鑰密碼體制中,加密密鑰PK是向公眾公開(kāi)的,而解密密鑰SK是需要保密的,加密算法E和解密算法D也都是公開(kāi)的
第8章 互聯(lián)網(wǎng)上的音視頻服務(wù)
本章首先對(duì)互聯(lián)網(wǎng)提供音頻/視頻服務(wù)進(jìn)行概述。然后介紹流式音頻/視頻中的媒體服務(wù)器和實(shí)時(shí)流式協(xié)議RTSP,并以IP電話為例介紹交互式音視頻所使用的一些協(xié)議,如實(shí)時(shí)運(yùn)輸協(xié)議RTP、實(shí)時(shí)傳送控制協(xié)議RTCP、H.323以及會(huì)話發(fā)起協(xié)議SIP。接著討論改進(jìn)"盡最大努力交付"的服務(wù)的一些措施,包括怎樣使互聯(lián)網(wǎng)能夠提供服務(wù)質(zhì)量,并介紹綜合服務(wù)IntServ、資源預(yù)留協(xié)議RSVP和區(qū)分服務(wù)DiffServ的要點(diǎn)。
1.流式(streaming)存儲(chǔ)音視頻
流式存儲(chǔ)音視頻文件的特點(diǎn)是能夠邊下載邊播放
實(shí)時(shí)流式協(xié)議RTSP(Real-Time Streaming Protocol) RTSP是為了給流式過(guò)程增加更多的功能而設(shè)計(jì)的協(xié)議。RTSP本身并不傳送數(shù)據(jù),而僅僅是使媒體播放器能夠控制多媒體的傳送,因此RTSP又稱為外帶協(xié)議。RTSP協(xié)議以客戶服務(wù)器方式工作,它是一個(gè)應(yīng)用層的多媒體播放控制協(xié)議,用來(lái)使用戶在播放從互聯(lián)網(wǎng)下載的實(shí)時(shí)數(shù)據(jù)時(shí)能夠控制,如:暫停/繼續(xù)、快退、快進(jìn)等。因此RTSP又稱為“互聯(lián)網(wǎng)錄像機(jī)遙控協(xié)議”
2.交互式音視頻
這種類型是用戶使用互聯(lián)網(wǎng)和其他人進(jìn)行實(shí)時(shí)交互式通信。現(xiàn)在的互聯(lián)網(wǎng)電話或互聯(lián)網(wǎng)會(huì)議就屬于這種類型。
實(shí)時(shí)運(yùn)輸協(xié)議RTP及其配套的協(xié)議—實(shí)時(shí)運(yùn)輸控制協(xié)議RTCP
實(shí)時(shí)運(yùn)輸協(xié)議RTP(Real-time Transport Protocol) RTP為實(shí)時(shí)應(yīng)用提供端到端的運(yùn)輸,但不提供任何服務(wù)質(zhì)量的保證。
需要發(fā)送的多媒體數(shù)據(jù)塊(音視頻)經(jīng)過(guò)壓縮編碼處理后,先送給RTP封裝稱為RTP分組(也可稱為RTP報(bào)文)。RTP分組裝入運(yùn)輸層的UDP用戶數(shù)據(jù)報(bào)后,再向下遞交給IP層。
RTP自己并不對(duì)多媒體數(shù)據(jù)塊做任何處理,而只是向應(yīng)用層提供一些附加的信息,讓應(yīng)用層知道應(yīng)當(dāng)如何進(jìn)行處理。
實(shí)時(shí)運(yùn)輸控制協(xié)議RTCP,RTCP協(xié)議也是RTP協(xié)議不可分割的部分
FTCP協(xié)議的主要功能:服務(wù)質(zhì)量的監(jiān)視與反饋、媒體間同步(如某一個(gè)RTP發(fā)送的聲音和圖像的配合),以及多播中成員的標(biāo)志。RTCP分組(也可稱為RTCP報(bào)文)也使用UDP來(lái)傳送,但RTCP并不對(duì)音頻/視頻分組進(jìn)行封裝。RTCP分組周期性地在網(wǎng)上傳送,它帶有發(fā)送端和接收端對(duì)服務(wù)質(zhì)量的統(tǒng)計(jì)信息報(bào)告(例如,已發(fā)送的分組數(shù)和字節(jié)數(shù)、分組丟失率、分組到達(dá)時(shí)間間隔的抖動(dòng)等)
實(shí)時(shí)流式協(xié)議RTSP(Real-Time Streaming Protocol) RTSP是為了給流式過(guò)程增加更多的功能而設(shè)計(jì)的協(xié)議。RTSP本身并不傳送數(shù)據(jù),而僅僅是使媒體播放器能夠控制多媒體的傳送,因此RTSP又稱為外帶協(xié)議。RTSP協(xié)議以客戶服務(wù)器方式工作,它是一個(gè)應(yīng)用層的多媒體播放控制協(xié)議,用來(lái)使用戶在播放從互聯(lián)網(wǎng)下載的實(shí)時(shí)數(shù)據(jù)時(shí)能夠控制,如:暫停/繼續(xù)、快退、快進(jìn)等。因此RTSP又稱為“互聯(lián)網(wǎng)錄像機(jī)遙控協(xié)議”
2.交互式音視頻
這種類型是用戶使用互聯(lián)網(wǎng)和其他人進(jìn)行實(shí)時(shí)交互式通信。現(xiàn)在的互聯(lián)網(wǎng)電話或互聯(lián)網(wǎng)會(huì)議就屬于這種類型。
實(shí)時(shí)運(yùn)輸協(xié)議RTP及其配套的協(xié)議—實(shí)時(shí)運(yùn)輸控制協(xié)議RTCP
實(shí)時(shí)運(yùn)輸協(xié)議RTP(Real-time Transport Protocol) RTP為實(shí)時(shí)應(yīng)用提供端到端的運(yùn)輸,但不提供任何服務(wù)質(zhì)量的保證。
需要發(fā)送的多媒體數(shù)據(jù)塊(音視頻)經(jīng)過(guò)壓縮編碼處理后,先送給RTP封裝稱為RTP分組(也可稱為RTP報(bào)文)。RTP分組裝入運(yùn)輸層的UDP用戶數(shù)據(jù)報(bào)后,再向下遞交給IP層。
RTP自己并不對(duì)多媒體數(shù)據(jù)塊做任何處理,而只是向應(yīng)用層提供一些附加的信息,讓應(yīng)用層知道應(yīng)當(dāng)如何進(jìn)行處理。
實(shí)時(shí)運(yùn)輸控制協(xié)議RTCP,RTCP協(xié)議也是RTP協(xié)議不可分割的部分
FTCP協(xié)議的主要功能:服務(wù)質(zhì)量的監(jiān)視與反饋、媒體間同步(如某一個(gè)RTP發(fā)送的聲音和圖像的配合),以及多播中成員的標(biāo)志。RTCP分組(也可稱為RTCP報(bào)文)也使用UDP來(lái)傳送,但RTCP并不對(duì)音頻/視頻分組進(jìn)行封裝。RTCP分組周期性地在網(wǎng)上傳送,它帶有發(fā)送端和接收端對(duì)服務(wù)質(zhì)量的統(tǒng)計(jì)信息報(bào)告(例如,已發(fā)送的分組數(shù)和字節(jié)數(shù)、分組丟失率、分組到達(dá)時(shí)間間隔的抖動(dòng)等)
總結(jié)
以上是生活随笔為你收集整理的计算机网络笔记整理(第七版)谢希仁的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: [附源码]Java计算机毕业设计SSM宠
- 下一篇: 英语教学计划软件测试,第一学期英语教学计