第二章 應(yīng)用層
應(yīng)用層協(xié)議原理
網(wǎng)絡(luò)應(yīng)用程序體系結(jié)構(gòu)
- 客戶機(jī)/服務(wù)器體系結(jié)構(gòu):至少有一個(gè)服務(wù)器,一個(gè)客戶機(jī),其中服務(wù)器總是打開(kāi)的,具有固定的眾所周知的IP地址,主機(jī)群集常被用于創(chuàng)建強(qiáng)大的虛擬服務(wù)器,而客戶機(jī)向服務(wù)器端進(jìn)行通信,可以間斷的同服務(wù)器連接,可以擁有動(dòng)態(tài)的IP地址,客戶機(jī)相互之間不直接通信
-
P2P體系結(jié)構(gòu):沒(méi)有總是打開(kāi)的服務(wù)器,任意一對(duì)主機(jī)直接相互通信,對(duì)等方間歇連接并且可以改變IP地址
- 優(yōu)點(diǎn):自擴(kuò)展性
- 缺點(diǎn):難以管理
- 客戶機(jī)/服務(wù)器和P2P混合的體系結(jié)構(gòu):文件直接在對(duì)等方之間交換,文件搜索通過(guò)服務(wù)器,中心服務(wù)器記錄對(duì)等方內(nèi)容,對(duì)等方查詢中心服務(wù)器來(lái)決定要求文件位置,兩個(gè)聊天用戶之間是P2P,注冊(cè)查詢時(shí)通過(guò)服務(wù)器,用戶上線時(shí)要在中心服務(wù)器上進(jìn)行注冊(cè),用戶與中心服務(wù)器聯(lián)系以找出在線小伙伴,git配合上共享服務(wù)器就能實(shí)現(xiàn)該種方式
進(jìn)程通信
- 進(jìn)程:運(yùn)行在端系統(tǒng)中的程序
- 同一主機(jī)上的兩個(gè)進(jìn)程通過(guò)內(nèi)部進(jìn)程通信機(jī)制進(jìn)行通信
- 不同主機(jī)上的進(jìn)程通過(guò)交換報(bào)文相互通信
- 客戶進(jìn)程: 發(fā)起通信的進(jìn)程
- 服務(wù)器進(jìn)程: 等待聯(lián)系的進(jìn)程
- 尋址通過(guò)IP地址和端口號(hào)
注意:具有P2P體系結(jié)構(gòu)的應(yīng)用程序既有客戶進(jìn)程和服務(wù)器進(jìn)程。
應(yīng)用層協(xié)議
- 交換的報(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)
因特網(wǎng)傳輸協(xié)議提供的服務(wù)
-
TCP服務(wù)
- 面向連接的服務(wù):在客戶機(jī)程序和服務(wù)器程序之間必須建立連接
- 可靠的傳輸服務(wù):接收和發(fā)送進(jìn)程間,數(shù)據(jù)是可靠的
- 流量控制:發(fā)送方不會(huì)淹沒(méi)接收方
- 擁塞控制:網(wǎng)絡(luò)出現(xiàn)擁塞時(shí)抑制發(fā)送進(jìn)程
- 沒(méi)有提供:時(shí)延保證,最小帶寬保證
-
UDP服務(wù)
- 無(wú)連接服務(wù)
- 不可靠數(shù)據(jù)傳輸
- 沒(méi)有提供:建立連接,可靠性,流量控制,擁塞控制,時(shí)延和帶寬保證
面向連接是指:必須在建立連接之前確認(rèn)雙方鏈路可達(dá),并已準(zhǔn)備好才開(kāi)始通信,提供了可靠或者不可靠的服務(wù)
無(wú)連接指:發(fā)送端在開(kāi)始通信前不去詢問(wèn)接收端是否可達(dá)和是否已準(zhǔn)備好數(shù)據(jù),提供不可靠的服務(wù)
應(yīng)用 | 應(yīng)用層協(xié)議 | 下面的傳輸協(xié)議 |
---|---|---|
電子郵件 | SMTP [RFC 28c21] | TCP |
遠(yuǎn)程終端訪問(wèn) | Telnet [RFC 854] | TCP |
Web | HTTP [RFC 2616] | TCP |
文件傳輸 | FTP [RFC 959] | TCP |
流媒體 | 通常專用(e.g. RealNetworks) | TCP or UDP |
因特網(wǎng)電話 | 通常專用(e.g., Skype) | 典型用 UDP |
- TCP和UDP
- 沒(méi)有加密
- 網(wǎng)絡(luò)明文傳輸,如用戶名和口令信息等
- SSL【應(yīng)用層】
- 提供加密的TCP連接
- 保證數(shù)據(jù)完整性
- 端點(diǎn)認(rèn)證
- 應(yīng)用使用SSL庫(kù)調(diào)用TCP服務(wù)接口
- SSL提供套接字API
Web應(yīng)用和Http協(xié)議
- 網(wǎng)頁(yè)(Web頁(yè),或稱文檔)由許多對(duì)象組成。
- 對(duì)象就是文件,可以是HTML文件, JPEG圖像, Java applet, 音頻文件…
- 多數(shù)網(wǎng)頁(yè)由單個(gè)基本HTML文件和若干個(gè)所引用的對(duì)象構(gòu)成
- 每個(gè)對(duì)象被一個(gè)URL(Uniform Resource Locator統(tǒng)一資源定位符)尋址
舉例URL:
-
HTTP: 超文本傳輸協(xié)議(HyperText Transfer Protocol)
- Web的應(yīng)用層協(xié)議
- client/server模式
- client: 瀏覽器browser請(qǐng)求, 接收, “解釋顯示” Web對(duì)象
- server: Web服務(wù)器響應(yīng)請(qǐng)求,發(fā)送 Web對(duì)象
- HTTP 1.0: RFC 1945
- HTTP 1.1: RFC 2616
-
使用TCP:
- 客戶初始化一個(gè)與HTTP服務(wù)器80端口的TCP連接 (創(chuàng)建套接字)
- HTTP服務(wù)器接受來(lái)自客戶的TCP連接請(qǐng)求, 建立連接
- Browser (HTTP client)和Web服務(wù)器 (HTTP server) 交換HTTP消息(應(yīng)用層協(xié)議消息)包括HTTP請(qǐng)求和響應(yīng)消息
- 最后結(jié)束(或叫關(guān)閉)TCP連接
-
HTTP是無(wú)狀態(tài)協(xié)議
-
HTTP服務(wù)器不維護(hù)客戶先前的狀態(tài)信息
非持續(xù)連接和持續(xù)連接
-
非持久HTTP連接
- 每個(gè)TCP連接上只傳送一個(gè)對(duì)象,下載多個(gè)對(duì)象需要建立多個(gè)TCP連接
- HTTP/1.0使用的是非持久HTTP連接
-
持久HTTP連接
- 一個(gè)TCP連接上可以傳送多個(gè)對(duì)象
- HTTP/1.1默認(rèn)使用持久HTTP連接
- 不帶流水的持久HTTP連接:客戶必須收到響應(yīng)才能繼續(xù)發(fā)送請(qǐng)求,也就說(shuō)多個(gè)資源之間不能夠并發(fā)
- 帶流水的持久HTTP連接:客戶可以在收到響應(yīng)之前發(fā)送新的請(qǐng)求,多個(gè)請(qǐng)求可以同時(shí)發(fā)送,只需要一個(gè)RTT就能獲得所有資源
- 定義往返時(shí)間RTT(Round-Trip Time):
- 1個(gè)小分組從客戶主機(jī)到服務(wù)器再到客戶主機(jī)所花費(fèi)的時(shí)間
- 響應(yīng)時(shí)間:
- 1個(gè)RTT用于建立TCP連接
- 1個(gè)RTT用于HTTP請(qǐng)求/響應(yīng)消息的交互
- html文件傳輸時(shí)間
- total = 2RTT+transmit time
![]()
HTTP/2
- 關(guān)鍵目標(biāo):減少多對(duì)象HTTP請(qǐng)求的延遲
- HTTP1.1:在單個(gè)TCP連接上引入了多個(gè)流水線GET
- 服務(wù)器按順序響應(yīng)GET請(qǐng)求(FCFS: first-come-first-served scheduling)
- 對(duì)于FCFS,小對(duì)象可能必須在大對(duì)象后面等待傳輸( head-of-line (HOL) blocking, 線頭阻塞HOL)
- 丟失恢復(fù)(重新傳輸丟失的TCP段)對(duì)對(duì)象傳輸時(shí)間的影響
- HTTP/2:[RFC 7540,2015]增加了服務(wù)器向客戶端發(fā)送對(duì)象的靈活性
- 方法、狀態(tài)代碼、大多數(shù)頭字段與HTTP1.1相比沒(méi)有變化
- 基于客戶端指定的對(duì)象優(yōu)先級(jí)的請(qǐng)求對(duì)象的傳輸順序(不一定是FCFS)
- 將未請(qǐng)求的對(duì)象推送到客戶端
- 將對(duì)象劃分為框架,安排框架以減少HOL阻塞
- 普通TCP連接沒(méi)有安全性
- HTTP/3:通過(guò)UDP增加了安全性、每個(gè)對(duì)象的錯(cuò)誤和擁塞控制(更多的流水線操作)
- 關(guān)于傳輸層支持HTTP/3的更多信息: QUIC協(xié)議(Quick UDP Internet Connections)
HTTP報(bào)文格式
請(qǐng)求報(bào)文格式
請(qǐng)求方法類型
- GET
- POST
- HEAD
- 服務(wù)器收到請(qǐng)求時(shí),用HTTP報(bào)文進(jìn)行響應(yīng),但不返回請(qǐng)求對(duì)象
- HTTP1.1
- PUT
- 文件在實(shí)體主體中被上載到URL字段指定的路徑
- DELETE
- 刪除URL字段指定的文件
響應(yīng)報(bào)文格式
HTTP 響應(yīng)的狀態(tài)碼
位于服務(wù)器響應(yīng)客戶的響應(yīng)消息的第一行
幾個(gè)常見(jiàn)的樣本狀態(tài)碼:
- 200:請(qǐng)求成功,所請(qǐng)求信息在響應(yīng)消息中返回
- 301:所請(qǐng)求的對(duì)象已永久遷移,新的URL在本響應(yīng)信息的頭部指出
- 400:該請(qǐng)求不能被服務(wù)器解讀
- 404:服務(wù)器不存在所請(qǐng)求文檔
Cookies
目的:提高用戶和服務(wù)的交互性
- cookie頭部行在HTTP請(qǐng)求消息中
- cookie頭部行在HTTP響應(yīng)消息中
- cookie文件保存在用戶主機(jī)中并被用戶瀏覽器管理
- cookie信息也保存在Web站點(diǎn)的后端數(shù)據(jù)庫(kù)中
cookies可以跟蹤用戶:例如虛擬購(gòu)物車,推薦廣告,身份認(rèn)證,用戶會(huì)話狀態(tài)
Web緩存
-
目標(biāo): 代表起始服務(wù)器滿足HTTP請(qǐng)求
-
用戶配置瀏覽器: Web 訪問(wèn)經(jīng)由緩存
-
所有HTTP請(qǐng)求指向緩存
- 對(duì)象在緩存中:緩存器返回對(duì)象
- 否則緩存器向起始服務(wù)器發(fā)出請(qǐng)求,接收對(duì)象后轉(zhuǎn)發(fā)給客戶機(jī)
-
減少對(duì)客戶機(jī)請(qǐng)求的響應(yīng)時(shí)間
-
減少內(nèi)部網(wǎng)絡(luò)與接入鏈路上的通信量
-
能從整體上大大降低因特網(wǎng)的Web流量
條件GET方法:
- 用于判斷緩存是否為最新的版本,在請(qǐng)求中包含if-modified-since:根據(jù)響應(yīng)報(bào)文的內(nèi)容判斷緩存是否為最新的
- 如果是最新的,響應(yīng)報(bào)文中不會(huì)含有請(qǐng)求的對(duì)象,會(huì)包含:HTTP/1.0 304Not Modified表示緩存是最新版本
- 如果修改過(guò),則會(huì)返回正常請(qǐng)求的對(duì)象
文件傳輸協(xié)議:FTP
FTP:傳輸文件到遠(yuǎn)程主機(jī)/從遠(yuǎn)程主機(jī)下載文件,默認(rèn)端口號(hào)21
FTP的工作流程:
- 客戶首先發(fā)起建立一個(gè)與服務(wù)器21端口之間的TCP連接(控制連接)
- 客戶在控制連接上進(jìn)行身份認(rèn)證
- 客戶在控制連接上發(fā)送命令瀏覽遠(yuǎn)程主機(jī)目錄
- 當(dāng)服務(wù)器接收到一個(gè)文件傳輸命令時(shí),他使用端口20創(chuàng)建一個(gè)與客戶的TCP數(shù)據(jù)連接
- 傳輸一個(gè)文件后,服務(wù)器結(jié)束這個(gè)連接,因?yàn)镕TP是帶外發(fā)送控制信息,也就是說(shuō)如果要請(qǐng)求其他的文件會(huì)建立新的TCP連接,因?yàn)镕TP傳輸?shù)膯挝皇俏募?,所以傳輸多個(gè)文件時(shí)會(huì)創(chuàng)建多個(gè)TCP連接這是低效的,推薦打包后傳送
FTP數(shù)據(jù)連接的建立的方式:
-
主動(dòng)模式(客戶端指定地址和端口):
- 客戶端通過(guò)發(fā)送PORT命令來(lái)指定IP地址和端口號(hào)
- 服務(wù)器根據(jù)PORT命令的端口號(hào)和地址來(lái)建立連接
-
被動(dòng)模式(服務(wù)器指定地址和端口):
- 客戶端發(fā)送PASV命令
- 服務(wù)器返回監(jiān)聽(tīng)的地址和端口號(hào)
- 客戶端發(fā)起數(shù)據(jù)連接
SMTP
電子郵件的三大組成
- 用戶代理:運(yùn)行在客戶端的軟件或者Web網(wǎng)頁(yè),允許用戶對(duì)郵件進(jìn)行相關(guān)操作(發(fā)送,轉(zhuǎn)發(fā)等)
- 郵件服務(wù)器:存放用戶郵件的服務(wù)器,郵件之間的發(fā)送通過(guò)郵件服務(wù)器通信來(lái)完成
- 郵件協(xié)議:郵件的發(fā)送協(xié)議,郵件的收取協(xié)議,采用標(biāo)準(zhǔn)的7位ASCII碼
SMTP
- 用來(lái)交換郵件消息的協(xié)議
- 客戶使用TCP來(lái)可靠傳輸郵件消息到服務(wù)器端口號(hào)25
- 直接傳送: 發(fā)送服務(wù)器到接收服務(wù)器
- 傳輸?shù)?個(gè)階段
- 握手 (問(wèn)候)
- 郵件消息的傳輸
- 結(jié)束
- 命令/應(yīng)答的交互
- 命令: ASCII文本格式
- 應(yīng)答: 狀態(tài)碼及其短語(yǔ)
- 郵件消息必須是7-bit ASCII
SMTP: 總結(jié)
- SMTP使用持久連接
- SMTP 要求郵件消息(header & body)必須是7-bit ASCII
- SMTP服務(wù)器使用CRLF.CRLF 來(lái)判斷郵件消息的結(jié)束
與HTTP的比較:
- HTTP: 拉協(xié)議
- SMTP: 推協(xié)議
- 都有ASCII 命令/應(yīng)答交互, 狀態(tài)碼
- HTTP: 每個(gè)對(duì)象封裝在它各自的HTTP響應(yīng)消息中發(fā)送
- SMTP: 一個(gè)郵件內(nèi)各個(gè)對(duì)象置于同一個(gè)郵件消息的多目部分發(fā)送
郵件訪問(wèn)協(xié)議
- SMTP: 遞送/存儲(chǔ)郵件消息到接收者郵件服務(wù)器
-
郵件訪問(wèn)協(xié)議: 從服務(wù)器獲取郵件消息
- POP: Post Office Protocol 郵局協(xié)議[RFC 1939]110端口號(hào)
- 身份認(rèn)證 (代理 <–>服務(wù)器) 并 下載郵件消息
- 包含三個(gè)階段:
- 授權(quán),事務(wù)處理,更新,POP是沒(méi)有狀態(tài)的,當(dāng)斷開(kāi)連接之后,需要重新登錄
- IMAP: Internet Message Access Protocol [RFC 3501] 143端口
- 更多功能特征 (更復(fù)雜!)
- 允許用戶像對(duì)待本地郵箱那樣操縱遠(yuǎn)程郵箱的郵件
- HTTP: 也可以通過(guò)HTTP來(lái)進(jìn)行郵件的接收
- POP: Post Office Protocol 郵局協(xié)議[RFC 1939]110端口號(hào)
POP3協(xié)議
DNS
DNS: 存儲(chǔ)資源記錄(RR,Resource Records)的分布式數(shù)據(jù)庫(kù)
DNS的出現(xiàn)是為了方便人們記憶網(wǎng)站的地址,IP地址難以記憶,可以轉(zhuǎn)換為其他的字符串例如轉(zhuǎn)換為uestc.edu.cn
DNS主要提供的功能:
- 主機(jī)名到IP地址的轉(zhuǎn)換
- 主機(jī)別名
- 一個(gè)主機(jī)可以有一個(gè)規(guī)范主機(jī)名和多個(gè)主機(jī)別名
- 郵件服務(wù)器別名
- 負(fù)載分配
- DNS實(shí)現(xiàn)冗余服務(wù)器:一個(gè)IP地址集合可以對(duì)應(yīng)同一個(gè)規(guī)范主機(jī)名
DNS的分層架構(gòu)【Domain Name System】域名系統(tǒng):
- 分布式數(shù)據(jù)庫(kù):一個(gè)由分層DNS服務(wù)器實(shí)現(xiàn)的分布式數(shù)據(jù)庫(kù)
- 應(yīng)用層協(xié)議:DNS服務(wù)器實(shí)現(xiàn)域名轉(zhuǎn)換 (域名/地址轉(zhuǎn)換)
客戶機(jī)怎樣決定主機(jī)名www.amazon.com的IP地址?
-
客戶機(jī)查詢根服務(wù)器得到com DNS服務(wù)器
-
客戶機(jī)查詢com DNS服務(wù)器得到amazon.comDNS服務(wù)
-
客戶機(jī)查詢amazon.comDNS服務(wù)器得到www.amazon.com的IP地址
根名字服務(wù)器負(fù)責(zé)記錄頂級(jí)域名服務(wù)器的信息
頂級(jí)域服務(wù)器(top-level domain servers):負(fù)責(zé)頂級(jí)域名 com, org, net, edu, etc, 和所有國(guó)家的頂級(jí)域名 uk, fr, ca, jp.
- Network solutions 公司維護(hù)com頂級(jí)域的TLD服務(wù)器
- Educause 公司維護(hù)edu頂級(jí)域的 TLD服務(wù)器
權(quán)威DNS服務(wù)器(authoritative DNS servers):
在因特網(wǎng)上具有公共可訪問(wèn)主機(jī)(如Web服務(wù)器和郵件服務(wù)器)的每個(gè)組織機(jī)構(gòu)必須提供公共可訪問(wèn)的DNS記錄,這些記錄將這些主機(jī)的名字映射為IP地址。組織機(jī)構(gòu)的權(quán)威DNS服務(wù)器負(fù)責(zé)保存這些DNS記錄。
- 多數(shù)大學(xué)和公司維護(hù)它們的基本權(quán)威DNS服務(wù)器
本地DNS服務(wù)器:Local DNS Name Server
- 嚴(yán)格來(lái)說(shuō)不屬于層次架構(gòu)
- 每個(gè)ISP都有一個(gè)本地DNS服務(wù)器,也叫默認(rèn)服務(wù)器
- 當(dāng)主機(jī)發(fā)出DNS請(qǐng)求時(shí),該請(qǐng)求被發(fā)往本地DNS服務(wù)器,起著代理的作用,轉(zhuǎn)發(fā)請(qǐng)求到層次結(jié)構(gòu)中
DNS存儲(chǔ)資源記錄(RR:Resource Records)
RR格式(name,value,type,ttl)
當(dāng)type=A(Address)時(shí),name表示主機(jī)名,value表示ip地址
當(dāng)type=CNAME(canonical)時(shí),name表示主機(jī)別名,value表示規(guī)范主機(jī)名
當(dāng)type=NS(name server)時(shí),name表示域名,value表示權(quán)威名字服務(wù)器的主機(jī)名
當(dāng)type=MX(Mail Exchange)時(shí),name表示郵件服務(wù)器的主機(jī)別名,value表示郵件服務(wù)器的真實(shí)規(guī)范主機(jī)名
DNS協(xié)議 : 查詢報(bào)文與應(yīng)答報(bào)文 , 但具有同樣的報(bào)文格式
P2P技術(shù)
- 沒(méi)有總是在線的服務(wù)器
- 任意端系統(tǒng)之間直接通信
- 對(duì)等方之間可以間斷連接并可以改變IP地址
一般采用集中式目錄架構(gòu):例如git+github
存在問(wèn)題
- 單點(diǎn)故障
- 性能瓶頸
- 侵犯版權(quán)
BitTorrent是一種用于文件分發(fā)的流行P2P協(xié)議。
參與一個(gè)特定文件分發(fā)的所有對(duì)等方的集合被稱為一個(gè)洪流(torrent)。
一個(gè)洪流中的對(duì)等方彼此下載等長(zhǎng)度的文件塊(chunk),典型塊長(zhǎng)度為256KB。
內(nèi)容分發(fā)網(wǎng)絡(luò)(CDN)
- 將多份拷貝存儲(chǔ)在地理上分散的不同站點(diǎn)來(lái)提供服務(wù)(CDN)
-
深入: 將CDN服務(wù)器部署在眾多的接入網(wǎng)絡(luò)中
- 靠近用戶
- Akamai首創(chuàng), 使用了1700多個(gè)位置
-
邀請(qǐng)做客: 在少量(例如10個(gè))靠近接入網(wǎng)的關(guān)鍵位置(例如IXP)建造大集群,邀請(qǐng)到ISP做客
- Limelight等使用
網(wǎng)絡(luò)應(yīng)用程序體系結(jié)構(gòu)
Web應(yīng)用和HTTP協(xié)議
基本術(shù)語(yǔ)(網(wǎng)頁(yè)、URL等)
HTTP的特性及其區(qū)別(無(wú)狀態(tài)、非持久和持久等)
請(qǐng)求和響應(yīng)報(bào)文
COOKIE技術(shù)
Web緩存文件傳輸協(xié)議FTP :兩種連接*
- 數(shù)據(jù)連接、控制連接
電子郵件:組成及其使用的協(xié)議
- SMTP
- POP
- IMPA
- HTTP
DNS的功能和實(shí)現(xiàn)
P2P文件共享原理和實(shí)現(xiàn)技術(shù)*
CDN
構(gòu)造簡(jiǎn)單的web服務(wù)器*文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-486985.html
第二章單元檢測(cè)
文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-486985.html
到了這里,關(guān)于【計(jì)算機(jī)網(wǎng)絡(luò)自頂向下】如何學(xué)好計(jì)網(wǎng)-第二章應(yīng)用層的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!