[计算机网络]应用层协议,HTTP,SMTP,DNS
應(yīng)用層
應(yīng)用層協(xié)議原理
網(wǎng)絡(luò)應(yīng)用程序體系結(jié)構(gòu)
規(guī)定如何在各種端系統(tǒng)上組織應(yīng)用程序,由研發(fā)者設(shè)計(jì)
客戶機(jī)/服務(wù)器
服務(wù)器:對外提供服務(wù)的一系列硬件和軟件
客戶機(jī):使用服務(wù)器提供的服務(wù)
服務(wù)器
- 7*24小時(shí)提供服務(wù)
- 永久性訪問地址/域名
- 利用大量服務(wù)器實(shí)現(xiàn)可擴(kuò)展性
客戶機(jī)
- 與服務(wù)器通信,使用服務(wù)器提供的服務(wù)
- 間歇性接入網(wǎng)絡(luò)
- 可能使用動(dòng)態(tài)IP地址
- 不會(huì)與其他客戶機(jī)直接通信
P2P
常見:文件分發(fā),因特網(wǎng)電話
- 無或最少打開的服務(wù)器
- 任意端系統(tǒng)/節(jié)點(diǎn)之間可以直接通訊
- 節(jié)點(diǎn)間歇性接入網(wǎng)絡(luò)
- 節(jié)點(diǎn)可能改變IP地址
-
優(yōu)點(diǎn):高度可伸縮
-
缺點(diǎn):難于管理
混合結(jié)構(gòu)
Napster
-
文件傳輸使用P2P結(jié)構(gòu)
-
文件的搜索采用C/S結(jié)構(gòu)——集中式
-
每個(gè)節(jié)點(diǎn)向中央服務(wù)器登記自己的內(nèi)容
-
每個(gè)節(jié)點(diǎn)向中央服務(wù)器提交查詢請求,
查找感興趣的內(nèi)容
網(wǎng)絡(luò)進(jìn)程通信
*進(jìn)程(process):*主機(jī)上運(yùn)行的程序
同一個(gè)主機(jī)上運(yùn)行的進(jìn)程通信方式:
- 進(jìn)程間的通信機(jī)制
- 操作系統(tǒng)提供
不同主機(jī)上運(yùn)行的進(jìn)程間通信方式:
- 消息交換
客戶機(jī)進(jìn)程:發(fā)起通信的進(jìn)程
服務(wù)器進(jìn)程:等待通信請求的進(jìn)程
Socket(套接字)
Socket=(IP地址:端口號)
同一臺主機(jī)內(nèi)應(yīng)用層與運(yùn)輸層之間的接口。
也叫應(yīng)用程序和網(wǎng)絡(luò)之間的應(yīng)用程序接口API ,是在網(wǎng)絡(luò)上建立網(wǎng)絡(luò)應(yīng)用程序的可編程接口。
類似于寄信
- 發(fā)送方將消息送到門外郵箱
- 發(fā)送方依賴(門外的)傳輸基礎(chǔ)設(shè)施將消息傳到接收方所在主機(jī),并送到接收方的門外
- 接收方從門外獲取消息
傳輸基礎(chǔ)設(shè)施向進(jìn)程提供API
- 傳輸協(xié)議的選擇
- 參數(shù)的設(shè)置
進(jìn)程尋址
根據(jù)進(jìn)程識別信息找到對應(yīng)進(jìn)程
不同主機(jī)上的進(jìn)程間通信,每個(gè)進(jìn)程必須擁有標(biāo)識符
-
使用IP地址尋址主機(jī)
-
使用端口號Port
為每個(gè)主機(jī)上需要通信的進(jìn)程分配一個(gè)端口號
HTTP Server:80
Mail Server:25
-
進(jìn)程的標(biāo)識符
IP地址+端口號 用于唯一標(biāo)識一個(gè)網(wǎng)絡(luò)上的進(jìn)程
用戶代理(user agent)
是用戶與網(wǎng)絡(luò)應(yīng)用程序之間的接口。
如:
Web應(yīng)用的用戶代理:是一些瀏覽器軟件。
一個(gè)通過套接字收發(fā)報(bào)文,并提供用戶接口的進(jìn)程。
電子郵件應(yīng)用程序用戶代理:是“郵件閱讀器”。
允許用戶進(jìn)行郵件的撰寫和閱讀。
應(yīng)用層協(xié)議
定義運(yùn)行在不同端系統(tǒng)上的應(yīng)用程序進(jìn)程間傳遞報(bào)文的格式和方式。
公開協(xié)議
- 由RFC(Request For Comments)定義
- 允許互操作
- HTTP, SMTP, ……
私有協(xié)議
- 多數(shù)P2P文件共享應(yīng)用
內(nèi)容
-
消息的類型(type)
請求響應(yīng)
響應(yīng)消息
-
消息的語法(syntax)/格式
消息中具有的字段(field)
每個(gè)字段的描述
-
字段的語義(semantics)
字段中信息的含義
-
規(guī)則(rules)
進(jìn)程何時(shí)發(fā)送/響應(yīng)消息
進(jìn)程如何發(fā)送/響應(yīng)消息
網(wǎng)絡(luò)應(yīng)用的需求與傳輸層服務(wù)
要求
-
某些網(wǎng)絡(luò)應(yīng)用能夠容忍一定的數(shù)據(jù)丟失:網(wǎng)絡(luò)電話
-
某些網(wǎng)絡(luò)應(yīng)用要求100%可靠的數(shù)據(jù)傳輸:文件傳輸,telnet
- 有些應(yīng)用只有在延遲足夠低時(shí)才“有效”
- 網(wǎng)絡(luò)電話/網(wǎng)絡(luò)游戲
- 某些應(yīng)用只有在帶寬達(dá)到最低要求時(shí)才“有效”:網(wǎng)絡(luò)視頻
- 某些應(yīng)用能夠適應(yīng)任何帶寬——彈性應(yīng)用:email
Internet提供的傳輸服務(wù)
| 面向連接 | 劃分三階段 建立連接(握手過程): 客戶機(jī)程序和服務(wù)器程序之間互相交換控制信息,在兩個(gè)進(jìn)程的套接字之間建立一個(gè)TCP連接。 *傳輸報(bào)文:*連接是全雙工的,即連接雙方的進(jìn)程可以在此連接上同時(shí)進(jìn)行報(bào)文收發(fā)。 拆除連接: 應(yīng)用程序報(bào)文發(fā)送結(jié)束。 | 無連接 | |
| 可靠的傳輸 | 通信進(jìn)程可以無差錯(cuò),按適當(dāng)順序交付發(fā)送的數(shù)據(jù)。無數(shù)據(jù)丟失和重復(fù) | 不可靠的傳輸服務(wù) | 不保證報(bào)文能夠被接收,或收到的報(bào)文是亂序到達(dá)。 |
| 流量控制 | 發(fā)送方不會(huì)發(fā)送速度過快,超過接收方的處理能力 | 沒有擁塞控制機(jī)制 | 發(fā)送進(jìn)程可以任何速率發(fā)送數(shù)據(jù) |
| 擁塞控制 | 當(dāng)網(wǎng)絡(luò)負(fù)載過重時(shí)能夠限制發(fā)送方的發(fā)送速度 | 不提供時(shí)延保證 | |
| 無時(shí)間/延遲保障 | 數(shù)據(jù)傳輸?shù)臅r(shí)間不確定。 | ||
| 不提供最小帶寬保障 | 發(fā)送進(jìn)程受擁塞控制機(jī)制制約。 | ||
| 特點(diǎn) | TCP協(xié)議能保證交付所有的數(shù)據(jù),但并不保證這些數(shù)據(jù)傳輸?shù)乃俾室约捌诖膫鬏敃r(shí)延。 | 適于實(shí)時(shí)應(yīng)用。 |
Web和HTTP
World Wide Web:Tim Berners - Lee
網(wǎng)頁且網(wǎng)頁相互連接
Web Page 包含多個(gè)對象(objects)
- 對象:HTML文件,JPEG圖片,視頻文件,動(dòng)態(tài)腳本
- 基本HTML文件:包含對其他對象引用的連接
對象的尋址(addressing)
-
URL(Uniform Resoure Locator):統(tǒng)一資源定位器
-
Scheme://host:port/path
格式記牢
HTTP協(xié)議
基本概念
超文本傳輸協(xié)議 HyperText Transfer Protocol
無狀態(tài)(stateless)
服務(wù)器不維護(hù)任何有關(guān)客戶端過去所發(fā)請求的信息
C/S結(jié)構(gòu)
- 瀏覽器(客戶機(jī)):是Web應(yīng)用的用戶代理。
- 用于顯示所請求的Web頁,提供導(dǎo)航功能和配置屬性。
- 實(shí)現(xiàn)了HTTP協(xié)議的客戶機(jī)端。
- Web服務(wù)器:用于存貯Web對象(由URL尋址)
- 實(shí)現(xiàn)HTTP協(xié)議的服務(wù)器端。
有狀態(tài)協(xié)議更復(fù)雜:
傳輸層協(xié)議
使用TCP傳輸服務(wù)
- 服務(wù)器在80端口等待客戶的請求
- 瀏覽器發(fā)起到服務(wù)器的TCP連接(創(chuàng)建套接字Socket)
- 服務(wù)器接受來自瀏覽器的TCP連接
- 瀏覽器(HTTP客戶端)與Web服務(wù)器(HTTP服務(wù)器)交換HTTP消息
- 關(guān)閉TCP連接
HTTP連接
類型
- 每個(gè)TCP連接最多允許傳輸一個(gè)對象
- HTTP 1.0版本使用非持久性連接
- 每個(gè)TCP連接允許傳輸多個(gè)對象
- HTTP 1.1版本默認(rèn)使用持久性連接
非持久性連接工作過程
響應(yīng)時(shí)間分析與建模
-
RTT(Round Trip Time)
客戶端發(fā)送一個(gè)很小的數(shù)據(jù)包到服務(wù)器并返回所經(jīng)歷的時(shí)間
-
響應(yīng)時(shí)間(Respone time)
- 發(fā)起、建立TCP連接:1個(gè)RTT
- 發(fā)送HTTP請求消息到HTTP響應(yīng)消息的前幾個(gè)字節(jié)到達(dá):1個(gè)RTT
- 響應(yīng)消息中所含的文件/對象傳輸時(shí)間
Total = 2RTT + 文件發(fā)送時(shí)間
非持久性連接問題
| *每一個(gè)對象的傳輸時(shí)延長:*每個(gè)對象需要2個(gè)RTT | 發(fā)送響應(yīng)后,服務(wù)器保持TCP連接的打開 | HTTP 1.1的默認(rèn)選項(xiàng) |
| *服務(wù)器負(fù)擔(dān)重:*操作系統(tǒng)需要為每個(gè)TCP連接開銷資源(overhead) | 后續(xù)的HTTP消息可以通過這個(gè)連接發(fā)送 | 客戶端只要遇到一個(gè)引用對象就盡快發(fā)出請求 |
| 理想情況下,收到所有的引用對象只需耗時(shí)約1個(gè)RTT | ||
| 瀏覽器做法 | 無流水(pipelining)的持久性連接 | |
| 打開多個(gè)并行的TCP連接以獲取網(wǎng)頁所需對象 | 客戶端只有收到前一個(gè)響應(yīng)后才發(fā)送新的請求 | |
| 每個(gè)被引用的對象耗時(shí)1個(gè)RTT |
HTTP消息格式
HTTP中的方法
| GET | 請求一個(gè)對象。實(shí)體主體為空。 | GET,POST,HEAD | |
| POST | 將實(shí)體信息交給服務(wù)器,用于提交表單 | PUT | 向服務(wù)器URL指定的路徑上載實(shí)體中的文件。 |
| HEAD | 請Server不要將所有請求的對象放入響應(yīng)消息中 | DELETE | 刪除服務(wù)器URL指定的文件。 |
請求消息(request)
ASCII:人直接可讀
要考
上傳輸入的方法
- 網(wǎng)頁經(jīng)常需要填寫表格(form)
- 在請求消息的消息體(entity body)中上傳客戶端的輸入
- 使用GET方法
- 輸入信息通過request行的URL字段上傳
響應(yīng)消息(response)
-
200 OK
-
301 Moved Permanently
-
400 Bad Request
-
404 Not Found
-
505 HTTP Version Not Supported
Cookie技術(shù)
HTTP協(xié)議無狀態(tài)
很多應(yīng)用需要服務(wù)器掌握客戶端的狀態(tài)
某些網(wǎng)站為了辨別用戶身份、進(jìn)行session跟蹤而儲(chǔ)存在用戶本地終端上的數(shù)據(jù)(通常經(jīng)過加密)。
Cookie組件
- HTTP響應(yīng)消息的cookie頭部行
- HTTP請求消息的cookie頭部行
- 保存在客戶端主機(jī)的cookie文件,由瀏覽器管理
- Web服務(wù)器的后臺數(shù)據(jù)庫
Cookie原理
Cookie使用范圍
- 身份認(rèn)證
- 購物車
- 推薦
- Web e-mail
隱私問題
Web緩存/代理服務(wù)器技術(shù)
目標(biāo):在不訪問服務(wù)器的前提下滿足客戶端的HTTP請求
Web緩存器(Web cache):也叫代理服務(wù)器。
代表起始服務(wù)器來滿足HTTP請求的網(wǎng)絡(luò)實(shí)體。
-
保存最近請求過的對象的副本。
-
可在客戶機(jī)或服務(wù)器工作,也可在中間系統(tǒng)工作。
起始(原始)服務(wù)器(origin server):對象最初存放并始終保持其拷貝的服務(wù)器。
作用
- 縮短客戶請求的響應(yīng)時(shí)間
- 減少機(jī)構(gòu)/組織的流量
- 在大范圍內(nèi)(Internet)實(shí)現(xiàn)有效的內(nèi)容分發(fā) CDN(內(nèi)容分發(fā)網(wǎng)絡(luò))
組成
Web緩存/代理服務(wù)器
-
用戶設(shè)定瀏覽器通過緩存進(jìn)行Web訪問
-
瀏覽器向緩存/代理服務(wù)器發(fā)送所有的HTTP請求
如果所請求對象在緩存中,緩存返回對象
否則,緩存服務(wù)器向原始服務(wù)器發(fā)送HTTP請求,獲取對象,然后返回給客戶端并保存該對象
-
緩存既充當(dāng)客戶端,也充當(dāng)服務(wù)器
-
一般由ISP架設(shè)
優(yōu)缺點(diǎn)
減少機(jī)構(gòu)內(nèi)部網(wǎng)絡(luò)與因特網(wǎng)連接鏈路上的通信量:
降低開銷,改善各種應(yīng)用的性能。
FTP
本地主機(jī)上的用戶,向遠(yuǎn)程主機(jī)上傳或者下載文件。
文件傳送協(xié)議FTP:用于從一臺主機(jī)到另一臺主機(jī)傳送文件的協(xié)議。
用戶通過一個(gè)FTP用戶代理與FTP服務(wù)器交互。
文件傳輸過程
建立TCP連接:用戶提供遠(yuǎn)程主機(jī)的主機(jī)名或者IP地址。在FTP客戶機(jī)進(jìn)程與FTP服務(wù)器進(jìn)程之間建立。
身份認(rèn)證:輸入用戶名和口令。向FTP服務(wù)器傳送。
服務(wù)器驗(yàn)證成功:進(jìn)行文件傳送(雙向)
將本地文件系統(tǒng)中的文件傳送到遠(yuǎn)程文件系統(tǒng)(上傳)
或從遠(yuǎn)程文件系統(tǒng)中得到文件(下載)
控制連接與數(shù)據(jù)連接
控制連接
作用:用于在兩主機(jī)間傳輸控制信息。如用戶名、口令;上載或下載文件命令等。
控制連接由客戶先發(fā)起,建立后一直保持:
FTP會(huì)話開始前,FTP的客戶機(jī)與服務(wù)器在21號端口上建立。
FTP的客戶機(jī)通過該連接發(fā)送用戶名和口令,或改變遠(yuǎn)程目錄命令、上載或下載文件命令。
數(shù)據(jù)連接
作用:用于準(zhǔn)確傳輸文件。
服務(wù)器收到一個(gè)文件傳輸?shù)拿?#xff1a;上載或下載
在20端口建立一個(gè)到客戶機(jī)的數(shù)據(jù)連接。
在該數(shù)據(jù)連接上傳送一個(gè)文件并關(guān)閉連接
每個(gè)數(shù)據(jù)連接只傳一個(gè)文件,每個(gè)文件都要建立和釋放數(shù)據(jù)連接。
控制連接與數(shù)據(jù)連接差異
FTP與HTTP比較
| 控制信息 | 帶外傳送(out-of-band) | 使用分離的控制連接。 | 帶內(nèi)傳輸(in-band) | 請求和響應(yīng)都是在傳輸文件的TCP連接中發(fā)送。 |
| 狀態(tài) | 有狀態(tài) | FTP服務(wù)器對每個(gè)活動(dòng)用戶會(huì)話的狀態(tài)進(jìn)行追蹤,并保留;限制同時(shí)會(huì)話的總數(shù)。 | 無狀態(tài) | 不對用戶狀態(tài)進(jìn)行追蹤 |
Email應(yīng)用
電子郵件快速、多方接收,包含附件、超鏈接、圖像、聲音、視頻等。
電子郵件系統(tǒng)總體結(jié)構(gòu)
用戶代理(user agent)
郵件閱讀器。允許用戶閱讀、回復(fù)、發(fā)送、保存和撰寫報(bào)文。
- 發(fā)郵件:郵件代理向其郵件服務(wù)器發(fā)送郵件,并存放在發(fā)送隊(duì)列中。
- 收郵件:郵件代理從其郵件服務(wù)器的郵箱中獲取該報(bào)文。
郵件服務(wù)器(mail server)
郵箱:發(fā)送給用戶的報(bào)文。
報(bào)文隊(duì)列:用戶要發(fā)出的郵件報(bào)文。
郵件發(fā)送主要過程:
郵件保存到發(fā)送方輸出報(bào)文隊(duì)列
通過SMTP協(xié)議轉(zhuǎn)發(fā)到接收方郵件服務(wù)器,保存到相應(yīng)郵箱中
若投遞失敗仍保存,以后每30分鐘發(fā)送一次,若幾天后仍未成功,將該報(bào)文刪除,并通知發(fā)送方。
用戶訪問自己郵箱時(shí),郵件服務(wù)器對其身份進(jìn)行驗(yàn)證(用戶名和口令)
SMTP
簡單郵件傳送協(xié)議
從發(fā)送方的郵件服務(wù)器向接收方的郵件服務(wù)器發(fā)送郵件。
每個(gè)郵件服務(wù)器上都有SMTP的客戶機(jī)端和服務(wù)器端。
應(yīng)用層協(xié)議。
使用TCP可靠數(shù)據(jù)傳輸服務(wù)。
包括兩部分:
客戶機(jī)端:在發(fā)送方郵件服務(wù)器上運(yùn)行;
服務(wù)器端:在接收方郵件服務(wù)器上運(yùn)行。
SMTP
SMTP過程
說明
客戶使用TCP來可靠傳輸郵件報(bào)文到服務(wù)器端口號25
建立TCP連接
握手:指明收發(fā)雙方的郵件地址
郵件報(bào)文的傳送
結(jié)束:關(guān)閉TCP連接
SMTP不使用中間郵件服務(wù)器發(fā)送郵件,TCP連接是發(fā)送方到接收方的直接連接
若接收方的郵件服務(wù)器未開機(jī),該郵件仍然保存在發(fā)送方的郵件服務(wù)器上,并在關(guān)機(jī)后進(jìn)行再次傳送
郵件不會(huì)在某個(gè)中間郵件服務(wù)器上停留
SMTP和HTTP比較
| 相同點(diǎn) | 都從一臺主機(jī)向另一臺主機(jī)傳送文件 | 從Web服務(wù)器想Web客戶機(jī)(瀏覽器)傳送文件(對象) | 從一個(gè)郵件服務(wù)器向另一個(gè)服郵件服務(wù)器傳送文件(電子郵件報(bào)文) |
| 都使用持久連接 | |||
| 不同點(diǎn) | 拉協(xié)議; | 推協(xié)議; | |
| 用戶使用HTTP協(xié)議從服務(wù)器 拉取信息。 | 發(fā)送郵件服務(wù)器吧文件推向接受有加你服務(wù)器; | ||
| TCP連接由想獲取文件的機(jī)器發(fā)起 | TCP連接是由 要發(fā)送文件的機(jī)器發(fā)起 | ||
| 數(shù)據(jù)傳送方式 | 無限制 | 使用7位ASCII碼格式;對包含非7位ASCII字符的報(bào)文或二進(jìn)制數(shù)據(jù)(如圖片、聲音),需要按照7位ASCII碼進(jìn)行編碼(MIME實(shí)現(xiàn)) ,再傳送。在接收方需要解碼還原為原有報(bào)文。 | |
| 對含有文本和圖形 (或其他媒體類型)的文檔: | 把每個(gè)對象封裝在它各自的HTTP響應(yīng)報(bào)文中發(fā)送。 | 所有報(bào)文對象放在一個(gè)報(bào)文中。 |
郵件報(bào)文格式和MIME
郵件報(bào)文格式
MIME
多用途因特網(wǎng)郵件擴(kuò)展
用于非ASCII數(shù)據(jù)傳輸
STMP:
MIME:
附加MIME郵件首部
說明采用何種編碼
MIME是SMTP的一個(gè)擴(kuò)展,不能替代SMTP
MIME首部
Content-Transfer-Encoding:告訴接收用戶代理,該報(bào)文主體采用了ASCII碼及相應(yīng)編碼類型,并以此還原成非ASCII碼。
常用編碼:
- base64編碼:將二進(jìn)制文件轉(zhuǎn)換為ASCII碼格式。
- 可打印內(nèi)容轉(zhuǎn)換編碼:將一個(gè)8位ASCII報(bào)文轉(zhuǎn)換為7位ASCII碼格式。
Content-Type:告訴接收用戶代理報(bào)文類型及應(yīng)采取的動(dòng)作。
如jpeg:要對jpeg文件解壓縮。
郵件訪問協(xié)議
用戶代理從接收方郵件服務(wù)器上讀取郵件。
起效過程
發(fā)送方:
- 用戶代理用SMTP將郵件推入其郵件服務(wù)器
- 郵件服務(wù)器用SMTP將郵件轉(zhuǎn)發(fā)到接收方的郵件服務(wù)器
接收方:
-
通過其用戶代理使用一個(gè)郵件訪問協(xié)議,從其郵件服務(wù)器上取回郵件。
取郵件是一個(gè)拉操作,而SMTP協(xié)議是一個(gè)推協(xié)議。
POP3
第三版郵局協(xié)議
簡單,功能有限
讀取郵件過程:
-
建立TCP連接:服務(wù)器通過110端口偵聽TCP請求,與客戶機(jī)建立TCP連接。
-
開始POP3會(huì)話讀取郵件,分為3個(gè)步驟。
*特許階段:*用戶代理發(fā)送用戶名和口令獲得下載郵件的特許。(身份認(rèn)證)
*事務(wù)處理階段:*用戶代理取回報(bào)文,可對郵件進(jìn)行某些操作。
? 如:下載并保留,下載并刪除等。
更新階段:郵件服務(wù)器刪除帶有刪除標(biāo)記的報(bào)文,結(jié)束POP會(huì)話。
IMAP
因特網(wǎng)郵件訪問協(xié)議
功能強(qiáng)
-
在用戶機(jī)上運(yùn)行IMAP客戶程序,并與郵件服務(wù)器上的IMAP服務(wù)器程序建立TCP連接。
-
用戶在自己的PC機(jī)上就可以操作郵件服務(wù)器的郵箱,就如同本地操縱一樣,是一個(gè)聯(lián)機(jī)協(xié)議。
如:建立文件夾,查詢,移動(dòng)郵件等。
-
未發(fā)出刪除命令前,一直保存在郵件服務(wù)器。
-
實(shí)現(xiàn)復(fù)雜
基于Web的電子郵件
用戶使用瀏覽器收發(fā)電子郵件。
1995年12月Hotmail 引入該技術(shù)。
-
用戶代理是普通的瀏覽器,用戶和其遠(yuǎn)程郵箱之間的通信通過HTTP進(jìn)行:
發(fā)件人使用HTTP 將電子郵件報(bào)文從其瀏覽器發(fā)送到其郵件服務(wù)器上。
收件人使用HTTP從其郵箱中取一個(gè)報(bào)文到瀏覽器。
-
郵件服務(wù)之間發(fā)送和接收郵件時(shí),使用SMTP
-
用戶可以再遠(yuǎn)程服務(wù)器上以層次目錄方式組織報(bào)文。
DNS
域名系統(tǒng)(Domain Name System):進(jìn)程主機(jī)名到IP地址的轉(zhuǎn)換。
DNS
- 一個(gè)分層的DNS服務(wù)器實(shí)現(xiàn)的分布式數(shù)據(jù)庫
- 允許主機(jī)查詢分布式數(shù)據(jù)庫的應(yīng)用層協(xié)議
- 采用C/S方式
名詞
| DNS協(xié)議 | 運(yùn)行在UDP之上,使用53號端口 |
| DNS | 直接由其他的應(yīng)用層協(xié)議 (包括HTTP、SMTP 和FTP)使用,以將用戶提供的主機(jī)名解析為IP地址。 |
| 用戶只是間接使用 |
標(biāo)識主機(jī)方式
標(biāo)識主機(jī)的兩種方式:
報(bào)文在網(wǎng)絡(luò)中傳輸,使用IP地址。
| 由不定長的字母和數(shù)字組成。 | 由4個(gè)字節(jié)組成,有嚴(yán)格的層次結(jié)構(gòu) |
| 便于記憶。路由器處理困難。 | 路由器容易處理。 |
域名解析過程
用戶主機(jī)上運(yùn)行DNS客戶機(jī)端。
瀏覽器從URL中解析出主機(jī)地址,傳給DNS客戶機(jī)端
DNS客戶機(jī)向DNS服務(wù)器發(fā)送一個(gè)包含主機(jī)名的請求
DNS客戶機(jī)收到含有對應(yīng)主機(jī)名的IP地址的回答報(bào)文
瀏覽器向該IP地址指定的HTTP服務(wù)器發(fā)起一個(gè)TCP連接。
1234稱為域名解析
增加一定時(shí)延
DNS服務(wù)
主機(jī)名到IP地址的轉(zhuǎn)換
主機(jī)別名和規(guī)范名的轉(zhuǎn)換:通過DNS可以得到主機(jī)別名對應(yīng)的規(guī)范主機(jī)名和IP地址
規(guī)范名:主機(jī)真正的名字。如host1.njust.edu.cn
別名:主機(jī)上運(yùn)行的某種應(yīng)用服務(wù)。如 www.njust.edu.cn 表示W(wǎng)eb服務(wù)器
同一臺主機(jī)可運(yùn)行多個(gè)應(yīng)用,多個(gè)別名與一臺主機(jī)聯(lián)系。如 ftp.njust.edu.cn 表示FTP服務(wù)器
郵件服務(wù)器別名和規(guī)范名轉(zhuǎn)換
負(fù)載均衡:Web服務(wù)器
DNS查詢方式
迭代查詢
被查詢服務(wù)器返回域名解析服務(wù)器的名字,逐個(gè)查找。
請求主機(jī)向本地DNS服務(wù)器發(fā)送請求,向連接的DNS服務(wù)器查找所需要的IP地址,沒有則返回本地域名服務(wù)器,再向其他DNS服務(wù)器發(fā)出請求
遞歸查詢
請求主機(jī)向本地DNS服務(wù)器發(fā)送請求,若沒有則直接向其他域名服務(wù)器發(fā)出請求直到查找到依次返回到本地DNS服務(wù)器,最終響應(yīng)請求。
P2P應(yīng)用
位于網(wǎng)絡(luò)邊緣的PC機(jī)(對等方peer)互相之間可以直接獲取對象
P2P文件分發(fā)
從單個(gè)源向大量對等方分發(fā)文件
C/S與P2P對比
| 服務(wù)器向每個(gè)對等方發(fā)送該文件的副本,負(fù)擔(dān)重。 | 每個(gè)對等方都能夠重新分發(fā)其所有文件的任何部分,協(xié)助服務(wù)器分發(fā)。 |
| 當(dāng)一個(gè)對等方收到文件數(shù)據(jù)時(shí),用其上載能力重新將數(shù)據(jù)分發(fā)給其他對等方。下載同時(shí)上載 |
BT協(xié)議
BitTorrent協(xié)議
Torrent:洪流。參與一個(gè)特定文件分發(fā)的所有對等方的集合。
- 一個(gè)洪流中,對等方彼此下載等長度的文件塊。
- 一個(gè)對等方最初加入到洪流時(shí),沒有文件塊,之后累積越來越多。
- 下載文件塊同時(shí),也為其他Torrent上載文件塊。
- 對等方可以在獲得整個(gè)文件后離開,也可以留下,繼續(xù)提供上載。
- 對等方可以任何時(shí)候加入到洪流或離開。
tracker追蹤器
跟蹤洪流中的對等方
交換原理
-
一個(gè)新對等方加入洪流時(shí),追蹤器從中隨機(jī)選擇一些對等方,并發(fā)送含有IP地址的對等方列表給新加入的對等方。
-
新對等方依次與列表中的對等方建立TCP連接,連接成功即獲取相關(guān)文件塊;
-
可以從多個(gè)對等方獲取文件的各個(gè)塊;
-
下載完成后,組裝還原為一個(gè)完整的文件。
P2P文件共享
對等方之間共享文件
每個(gè)參與的對等方既是內(nèi)容的消費(fèi)者也是內(nèi)容的發(fā)布者(下載同時(shí)也向其他用戶上載)
集中式目錄(索引)
源于Napster公司(第一家世界范圍內(nèi)從事MP3對等應(yīng)用程序)設(shè)計(jì)。
目錄服務(wù)器(大型服務(wù)器或服務(wù)器場):提供目錄服務(wù)。
收集可共享的對象,建立集中式的動(dòng)態(tài)數(shù)據(jù)庫(對象名稱到IP地址的映射)。
屬于客戶機(jī)/服務(wù)器與P2P的混合結(jié)構(gòu)。
工作
- 通知:對等方啟動(dòng)時(shí),將其IP地址及可共享內(nèi)容通知目錄服務(wù)器。
- 查詢內(nèi)容:用戶查詢需要共享的對象,獲得列表。
如 Alice 查詢某首歌。 - 獲取內(nèi)容:來自Bob。
- 更新:當(dāng)對等方獲得新對象或刪除對象時(shí),通知目錄服務(wù)器更新。
問題
查詢洪泛
建立在Gnutella協(xié)議基礎(chǔ)上:一個(gè)公共域文件共享應(yīng)用程序協(xié)議。
全分布方式:無中心服務(wù)器。
許多Gnutella客戶機(jī)實(shí)現(xiàn)協(xié)議:運(yùn)行在對等方。
對等方X加入方法
實(shí)現(xiàn)
對等方先形成一個(gè)抽象的邏輯網(wǎng)絡(luò)(覆蓋網(wǎng)絡(luò))
通過洪泛查詢,找到所需對象:
如,某個(gè)對等方Alice想得到一個(gè)對象。
特點(diǎn)
- 設(shè)計(jì)簡單。
- 擴(kuò)展性差。
- “查詢報(bào)文”在網(wǎng)絡(luò)中產(chǎn)生很大的流量。
限范圍的洪泛查詢:
-
在“查詢報(bào)文”中設(shè)置一個(gè)對等方計(jì)數(shù)字段,并給定一個(gè)特定值。
-
可能減少對等方數(shù)量。
層次覆蓋
與Gnutella類似,*無專用服務(wù)器,但對等方地位不平等。*如KaZaA。
實(shí)現(xiàn)
- 對等方先形成一個(gè)層次的覆蓋網(wǎng)絡(luò)
- 通過查詢,找到所需對象。
對等方根據(jù)通信關(guān)系劃分若干組,組成層次結(jié)構(gòu)。
每組包括若干組員,一個(gè)組長
組長追蹤其所有子節(jié)點(diǎn)上的內(nèi)容
- 組員與其組長有一個(gè)TCP連接,將共享內(nèi)容告訴組長。
- 組長維護(hù)一個(gè)數(shù)據(jù)庫,包括該組的共享內(nèi)容及相關(guān)對等方的IP地址。
- 相關(guān)組長之間建立TCP連接
查詢定位
對等方確定某個(gè)特定對象。
- 向組長發(fā)出查詢:組長用本組中含有該對象的對等方列表響應(yīng);
- 或與其他組長聯(lián)系:請它們向該對等方發(fā)送含有該對象的對等方列表。
特點(diǎn)
- 層次覆蓋網(wǎng)絡(luò)
- 查詢流量不大
- 設(shè)計(jì)技巧
請求排隊(duì):限制并行上載數(shù)量
激勵(lì)優(yōu)先權(quán):上載文件比下載文件多的用戶優(yōu)先
并行下載:從多個(gè)對等方請求并下載同一個(gè)文件的不同部分。
P2P因特網(wǎng)電話
應(yīng)用廣泛
提供PC到PC、PC到電話、電話到PC電話服務(wù)
PC 到PC視頻會(huì)議服務(wù)。
屬于即時(shí)通訊IM(Instant Messaging)
采用混合模式
集中式和分布式結(jié)合。
- 邊緣節(jié)點(diǎn)(普通節(jié)點(diǎn)SC)和超級節(jié)點(diǎn)SN之間采用集中式結(jié)構(gòu)
- 超級節(jié)點(diǎn)之間采用分布式的結(jié)構(gòu)
- 注冊服務(wù)器:負(fù)責(zé)客戶端注冊。存儲(chǔ)用戶名、密碼。登錄時(shí)身份認(rèn)證。
總結(jié)
以上是生活随笔為你收集整理的[计算机网络]应用层协议,HTTP,SMTP,DNS的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Beam Search的学习笔记(附代码
- 下一篇: 基于EasyExcel模板填充方式进行二