![計算機(jī)網(wǎng)絡(luò)精編教程-原理與實踐 課件 第5章 互聯(lián)網(wǎng)應(yīng)用層協(xié)議_第1頁](http://file4.renrendoc.com/view11/M02/28/3A/wKhkGWXppe6AWwpWAAFPUNhSI6I960.jpg)
![計算機(jī)網(wǎng)絡(luò)精編教程-原理與實踐 課件 第5章 互聯(lián)網(wǎng)應(yīng)用層協(xié)議_第2頁](http://file4.renrendoc.com/view11/M02/28/3A/wKhkGWXppe6AWwpWAAFPUNhSI6I9602.jpg)
![計算機(jī)網(wǎng)絡(luò)精編教程-原理與實踐 課件 第5章 互聯(lián)網(wǎng)應(yīng)用層協(xié)議_第3頁](http://file4.renrendoc.com/view11/M02/28/3A/wKhkGWXppe6AWwpWAAFPUNhSI6I9603.jpg)
![計算機(jī)網(wǎng)絡(luò)精編教程-原理與實踐 課件 第5章 互聯(lián)網(wǎng)應(yīng)用層協(xié)議_第4頁](http://file4.renrendoc.com/view11/M02/28/3A/wKhkGWXppe6AWwpWAAFPUNhSI6I9604.jpg)
![計算機(jī)網(wǎng)絡(luò)精編教程-原理與實踐 課件 第5章 互聯(lián)網(wǎng)應(yīng)用層協(xié)議_第5頁](http://file4.renrendoc.com/view11/M02/28/3A/wKhkGWXppe6AWwpWAAFPUNhSI6I9605.jpg)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
互聯(lián)網(wǎng)應(yīng)用層協(xié)議第5章5.1域名系統(tǒng)DNS5.2Web與HTTP
5.3文件傳輸協(xié)議5.4簡單文件傳輸協(xié)議5.5
遠(yuǎn)程登錄Telnet
5.6電子郵件應(yīng)用層5.1.1概述5.1.2 域名空間5.1.3資源記錄5.1.4 域名服務(wù)器5.1.5域名的解析過程5.1域名系統(tǒng)5.1.6 DNS報文的格式5.1.1域名系統(tǒng)概述許多應(yīng)用層軟件經(jīng)常直接使用域名系統(tǒng)DNS(DomainNameSystem),但計算機(jī)的用戶只是間接而不是直接使用域名系統(tǒng)?;ヂ?lián)網(wǎng)采用層次結(jié)構(gòu)的命名樹作為主機(jī)的名字,并使用分布式的域名系統(tǒng)DNS。名字到IP地址的解析是由若干個域名服務(wù)器程序完成的。域名服務(wù)器程序在專設(shè)的結(jié)點上運行,運行該程序的機(jī)器稱為域名服務(wù)器。域名解析過程域名服務(wù)器HTTP瀏覽器運輸層網(wǎng)絡(luò)層用戶①②③202.193.xxx.xxx④202.193.xx.xxx⑤
202.193.xx.xxx5.1.2域名空間域名結(jié)構(gòu)互聯(lián)網(wǎng)采用了層次樹狀結(jié)構(gòu)的命名方法。任何一個連接在互聯(lián)網(wǎng)上的主機(jī)或路由器,都有一個唯一的層次結(jié)構(gòu)的名字,即域名。域名的結(jié)構(gòu)由標(biāo)號序列組成,各標(biāo)號之間用點隔開:….三級域名.二級域名.頂級域名5.1.2域名空間域名結(jié)構(gòu)各標(biāo)號分別代表不同級別的域名。每個域和域名都是從它向上到根節(jié)點的路徑,各部分用圓點“.”分隔。每個域可以自由控制和管理它的下級域。
5.1.2域名空間通用域國別域rootintcomnetorgedugovmilcnusukjp…頂級域baidu…qq163milorgedugovcom…二級域域名map
www
wwwwwwtsinghuapkusjtuzjufudan…三級域四級域rdwwwnewsmailftpbbs…域名域名www5.1.2域名空間域名服務(wù)器空間結(jié)構(gòu)根DNS服務(wù)器comDNS服務(wù)器cn
DNS服務(wù)器edu
DNS服務(wù)器DNS服務(wù)器DNS服務(wù)器DNS服務(wù)器DNS服務(wù)器DNS服務(wù)器DNS服務(wù)器DNS服務(wù)器5.1.3資源記錄域名空間中的每個域或域名都有與之相關(guān)的資源記錄集RRs,這個集可以為空,該集被保存在域中的權(quán)威域名服務(wù)器中。每一個資源記錄都是一個五元組:(1)域或域名:它是域名解析時的探索關(guān)鍵字,本身包含了屬于哪一個域的信息。(2)生存期:指明了該記錄的穩(wěn)定程度,極穩(wěn)定的記錄分配一個較大的值,一般是86400秒(一天),而極為不穩(wěn)定的記錄信息則分配一個較小的值。5.1.3資源記錄每一個資源記錄都是一個五元組:(3)類別:指明協(xié)議簇的類型,對于互聯(lián)網(wǎng)中記錄信息而言,類型值是IN。(4)類型:指出是何種類型的資源記錄。(5)值:值取決于類型,可以是IP地址、域名或ASCII字符。資源記錄類型類型含義SOA權(quán)威DNS授權(quán)開始,規(guī)定本域的全局參數(shù)A一臺主機(jī)的IP地址CNAME別名,可將一個域名指向另一個域名MX域中的郵件交換服務(wù)器NS域中的權(quán)威域名服務(wù)器PTR一個IP地址的名字HINFO域名服務(wù)器系統(tǒng)的信息SOA記錄01:origin=02:mailaddr=03:serial=201214617504:refresh=30005:retry=30006:expire=259200007:minimum=7200第1行,是組織機(jī)構(gòu)信息,即當(dāng)前域的名字。第2行,是管理者郵件地址。第3行,是序列號,反映域中資源記錄變化。第4行,是備份域名服務(wù)器刷新的時間間隔。第5行,是重試時間間隔。第6行,是過期時長。第7行,是默認(rèn)的TTL(最小生存期)。01:. 544 IN CNAME .02:. 62 IN A 803:. 62 IN A 9A記錄A(Address)記錄,地址記錄,這是資源記錄集中最重要的資源記錄,它記錄了主機(jī)域名的32位IP地址,當(dāng)通過域名來查詢IP地址時,便使用該記錄中的IP地址進(jìn)行響應(yīng),這種查詢也稱為正向查找。CNAME記錄CNAME(CanonicalName)記錄,CNAME常常通俗地被稱為別名,該記錄用于將一個域名指向另一個域名。CNAME記錄的優(yōu)勢:1、多個不同域名的可以指向同一臺主機(jī)。2、CNAME常與內(nèi)容分發(fā)網(wǎng)絡(luò)CDN相配合,實現(xiàn)用戶就近訪問網(wǎng)絡(luò)資源。3、CNAME還常與負(fù)載均衡系統(tǒng)相配合,實現(xiàn)將大量的訪問請求指向多臺不同的服務(wù)器,以提高用戶訪問的速度。01:. 6668 IN MX 20.02:. 6668 IN MX 30.03:. 6668 IN MX 10.MX(MailExchanger)記錄,該記錄的重要性僅次于A記錄,如果本域中需要提供電子郵件服務(wù),則必須指定電子郵件的服務(wù)器,MX記錄就是用于指定本域中的電子郵件服務(wù)器。注意,命令dig查詢的是某個域的MX記錄。MX記錄01:. 21181 IN NS .02:. 21181 IN NS .03:. 21181 IN NS .04:. 21181 IN NS .05:. 21181 IN NS .NS記錄NS(NameServer)記錄,該記錄指定了本域中的權(quán)威域名服務(wù)器,用于提供域名解析服務(wù)。PTR記錄PTR(PointerRecord)記錄,記錄IP地址關(guān)聯(lián)的名字,也稱為反向解析(reverselookups)。反向解析常用于防止郵件服務(wù)器接收垃圾郵件。例如郵件用戶xx@test.domain向域中的郵件服務(wù)器中的用戶xxx@發(fā)送郵件,域中的郵件服務(wù)器可以根據(jù)郵件地址的來源(哪個IP地址發(fā)過來的),進(jìn)行反向解析,若結(jié)果是test.domain則接收該郵件,否則丟棄該郵件。01:dig@0hinfo02:03:04:05:;;ANSWERSECTION:06:.10800INHINFO"6-coreIntelCorei6""macOSCatalina"HINFO記錄HINFO(HostInformation)記錄,記錄域名服務(wù)器系統(tǒng)的信息,例如,CPU、操作系統(tǒng)。出于安全的考慮,一般的情況下RRs中不會添加這類記錄。1)權(quán)威域名服務(wù)器負(fù)責(zé)一個區(qū)的域名服務(wù)器。當(dāng)一個權(quán)威域名服務(wù)器還不能給出最后的查詢回答時,就會告訴發(fā)出查詢請求的DNS客戶,下一步應(yīng)當(dāng)找哪一個權(quán)威域名服務(wù)器。1)權(quán)威域名服務(wù)器如果客戶向域名服務(wù)器查詢域名的IP地址,而該域名服務(wù)器恰好緩存了資源記錄,便可用緩存的資源記錄進(jìn)行“非權(quán)威回答”。本地域名服務(wù)器對域名系統(tǒng)非常重要。當(dāng)一個主機(jī)發(fā)出DNS查詢請求時,這個查詢請求報文就發(fā)送給本地域名服務(wù)器。每一個互聯(lián)網(wǎng)服務(wù)提供者ISP,或一個大學(xué),甚至一個大學(xué)里的系,都可以擁有一個本地域名服務(wù)器。這種域名服務(wù)器有時也稱為默認(rèn)域名服務(wù)器。2)本地域名服務(wù)器3)根域名服務(wù)器根域名服務(wù)器是最高層次的域名服務(wù)器,也是最重要的域名服務(wù)器。所有的根域名服務(wù)器都知道所有的頂級域名服務(wù)器的域名和IP地址。不管是哪一個本地域名服務(wù)器,若要對互聯(lián)網(wǎng)上任何一個域名進(jìn)行解析,只要自己無法解析,就首先求助于根域名服務(wù)器。在互聯(lián)網(wǎng)上共有13個不同IP地址的根域名服務(wù)器,它們的名字是用一個英文字母命名,從a一直到m(前13個字母)。4)頂級域名服務(wù)器頂級域名服務(wù)器(即TLD服務(wù)器)負(fù)責(zé)管理在該頂級域名服務(wù)器注冊的所有二級域名。當(dāng)收到DNS查詢請求時,就給出相應(yīng)的回答(可能是最后的結(jié)果,也可能是下一步應(yīng)當(dāng)找的域名服務(wù)器的IP地址)。1)解析過程主機(jī)向本地域名服務(wù)器的查詢一般都是采用遞歸查詢。如果主機(jī)所詢問的本地域名服務(wù)器不知道被查詢域名的IP地址,那么本地域名服務(wù)器就以DNS客戶的身份,向其他根域名服務(wù)器繼續(xù)發(fā)出查詢請求報文。1)解析過程本地域名服務(wù)器向根域名服務(wù)器的查詢通常是采用迭代查詢。當(dāng)根域名服務(wù)器收到本地域名服務(wù)器的迭代查詢請求報文時,要么給出所要查詢的IP地址,要么告訴本地域名服務(wù)器:“你下一步應(yīng)當(dāng)向哪一個域名服務(wù)器進(jìn)行查詢”。然后讓本地域名服務(wù)器進(jìn)行后續(xù)的查詢。頂級域名服務(wù)器權(quán)限域名服務(wù)本地域名服務(wù)器根域名服務(wù)器
迭代查詢
的IP地址
遞歸查詢
需要查找
的IP地址迭代查詢頂級域名服務(wù)器權(quán)限域名服務(wù)本地域名服務(wù)器根域名服務(wù)器
迭代查詢
的IP地址
遞歸查詢
需要查找
的IP地址
迭代查詢每個域名服務(wù)器都維護(hù)一個高速緩存,存放最近用過的名字以及從何處獲得名字映射信息的記錄??纱蟠鬁p輕根域名服務(wù)器的負(fù)荷,使互聯(lián)網(wǎng)上的DNS查詢請求和回答報文的數(shù)量大為減少。2)DNS緩存為保持高速緩存中的內(nèi)容正確,域名服務(wù)器應(yīng)為每項內(nèi)容設(shè)置計時器,并處理超過合理時間的項(例如,每個項目只存放兩天)。當(dāng)權(quán)限域名服務(wù)器回答一個查詢請求時,在響應(yīng)中都指明綁定有效存在的時間值。增加此時間值可減少網(wǎng)絡(luò)開銷,而減少此時間值可提高域名轉(zhuǎn)換的準(zhǔn)確性。2)DNS緩存5.1.6DNS報文的格式DNS報文由兩種類型的DNS報文組成,一種是DNS請求(查詢)報文,一種是DNS響應(yīng)(回答)報文。TransactionIDFlagsQuestionsAnswerRRsAuthorityRRsAdditionalRRsQueriesAnswerAuthonritativenameserversAdditional01631查詢問題首部資源記錄5.1.6DNS報文的格式
(1)TransactionID,傳輸ID,占16位。該標(biāo)識由發(fā)起DNS查詢程序產(chǎn)生,且被復(fù)制到DNS回答報文中,用以標(biāo)識一對DNS查詢與回答。
(2)Flags,標(biāo)志,占16位。16位標(biāo)志一共分為8個字段。
(3)Questions,表示查詢域名的數(shù)量,即查詢多少個域名,一般情況下,一個DNS查詢報文只查詢一個域名。
(4)AnswersRRs:表示DNS回答報文中,包含的資源記錄的數(shù)量。5.1.6DNS報文的格式
(5)AuthorityRRs:表示權(quán)威域名服務(wù)器的數(shù)量。
(6)AdditionalRRs:表示附加信息資源記錄的數(shù)量。
(7)Queries:查詢的域或域名,一般一個DNS查詢報文中只查詢一個域或域名。
(8)資源記錄(返回查詢的結(jié)果)。Name:查詢的域或域名,長度可變。Type:查詢類型,占16位。每個問題有一個查詢類型,取值可以是任何可用的類型。Class:查詢類,占16位。通常是1,表明是Internet數(shù)據(jù)。NameTypeClass01631查詢的問題格式Name:域名,長度可變。Type:查詢類型。Class:查詢類。TTL:生存期。RDLength:資源記錄長度。RData:長度可變。NameTypeClaseTTLRDLengthRData01631資源記錄格式5.2Web與HTTP5.2.1HTTP協(xié)議5.2.2HTTP報文的格式5.2.3代理服務(wù)器5.2.4數(shù)據(jù)同步5.2.1HTTP協(xié)議1).概述Web應(yīng)用使用的是超文本傳輸協(xié)議HTTP(HypetTxtTransfetProtocol),它是基于分布式、協(xié)作的超媒體信息系統(tǒng),它規(guī)定了客戶與服務(wù)器間交換文檔的規(guī)則,例如,采用什么語言、是否支持?jǐn)?shù)據(jù)壓縮以及傳輸?shù)奈臋n類型等。HTTP有多種版本,其中HTTP1.0由RFC1945定義,HTTP1.1由RFC2616定義,HTTP2.0由RFC7540定義。5.2.1HTTP協(xié)議1).概述HTTP協(xié)議采用C/S工作模式,由客戶程序和服務(wù)器程序組成。目前,人們普遍使用的客戶程序就是各種不同的瀏覽器(Browser),例如,Chrome、Firefox、Safari、Edge、Opera等,常用的HTTP服務(wù)器程序有Apache、nginx、tomcat、IIS等。在理解HTTP協(xié)議之前,首先理解HTTP協(xié)議中的幾個概念。(1)Web頁面(Webpage)頁面是由一系列各種類型的對象所組成,而一個對象(object)就是某種類型的文件(資源),例如,jpeg格式的圖片文件、avi格式的視頻文件、mp3格式的音頻文件、txt格式的文本文件或一個java小程序等,且這些對象是可以尋址的(即通過某種途徑可以找到它),這種尋址方式稱為URL。(1)Web頁面(Webpage)通常情況下,一個頁面有一個HTML的基本文件(BaseHTMLfile)和若干個引用對象,該基本文件可看作是一個HTML容器,在該容器中包含了很多對象。例如,在一個基本文件index.html中(index.html通常是訪問一個Web服務(wù)器站點的第一個文件,即站點的首頁面),往往包含一些文本、圖片等多個對象。例如,在百度的首個頁面中,包含了一張百度的圖片、一個輸入框、一個可點擊的按鍵以及若干文本等對象。(2)超媒體在理解超媒體之前,首先需要理解超文本(Hypertext)的概念,傳統(tǒng)普通的文本是以線性方式組織的,而超文本是以非線性方式、通過鏈接來組織的,超文本是包含一些鏈接關(guān)系的文本,這些鏈接一般帶有下劃線并以不同顏色加以區(qū)分,通過鼠標(biāo)點擊這些鏈接,可以跳轉(zhuǎn)閱讀鏈接所指向的其他文本。需要注意的是,相互鏈接的文件不受空間位置的限制,可以是同一個文件的某一個位置,也可以是不同的文件,還可以是互聯(lián)網(wǎng)中任何一臺連網(wǎng)主機(jī)(Web服務(wù)器)上的文件。所謂超媒體(Hypermedia),是指建立鏈接關(guān)系的對象不僅僅是文本,還可以是圖形、圖像、聲音、動畫或影視片斷等。超媒體、超文本之間的鏈接稱為“超鏈接”(hyperlink)。(3)URL統(tǒng)一資源定位符URL(UniformResourceLocator)是互聯(lián)網(wǎng)中資源的地址,即定義了在互聯(lián)網(wǎng)中標(biāo)識本地文件的一種方法。我們知道,在本地計算機(jī)系統(tǒng)中,通過路徑加文件名的方式來訪問本地系統(tǒng)中的文件。在Windows系統(tǒng)中,more命令訪問文件hosts的方法(絕對路徑):moreC:\Windows\System32\drivers\etc\hosts(3)URL而在Linux系統(tǒng)中,more命令訪問hosts文件的方法(絕對路徑):more/etc/hosts在互聯(lián)網(wǎng)中,URL包含兩大部分:存放文件(對象)的服務(wù)器域名或IP地址和對象的路徑名,URL格式是:<協(xié)議>://<主機(jī)>:<端口>/<路徑>/<對象>。(3)URL?協(xié)議:指明采用何種協(xié)議來獲取對象,對于Web應(yīng)用,采用的是HTTP協(xié)議和安全的超文本傳輸協(xié)議HTTPS(HypertextTransferProtocolSecure),另一個常用的協(xié)議是文件傳輸協(xié)議FTP(FileTransferProtocol)。當(dāng)在瀏覽器中輸入URL時,如果不指明“協(xié)議”,則默認(rèn)使用HTTP或HTTPS協(xié)議。?主機(jī):可以是域名,也可以是IP地址,指明對象存放在互聯(lián)網(wǎng)中的哪臺主機(jī)中,大多數(shù)情況下都是使用域名,此時需要使用DNS系統(tǒng)對域名進(jìn)行解析以獲取主機(jī)的IP地址。(3)URL?端口:指明是主機(jī)中的什么進(jìn)程提供了對象資源,如果省略,則默認(rèn)訪問主機(jī)的80端口或443端口。?路徑:主機(jī)中服務(wù)進(jìn)程存放對象的路徑,如果省略路徑,則表示訪問服務(wù)進(jìn)程存放對象的根路徑。?對象:客戶請求的資源文件,如果省略對象,對于Web應(yīng)用而言,則是請求Web服務(wù)器程序指定的、存放于根路徑下的特定文件,例如,index.htm、index.html、index.jsp、index.php、default.htm、default.jsp等等。(3)URLURL的例子::80/info/1177/101411.htm哪個進(jìn)程提供采用什么協(xié)議對象存放在哪臺主機(jī)存放對象路徑請求的對象:443/info/1177/101441.htm/info/1177/101441.htm(3)URL三個URL都是訪問資源101441.htm,需要注意的是,在瀏覽器的地址欄(URL)中,如果僅輸入域的名稱,瀏覽器自動加上“www”而變成一個主機(jī)的域名,例如,在瀏覽器的URL中輸入,表明瀏覽器訪問默認(rèn)的頁面。(3)URL現(xiàn)在大部分Web服務(wù)器采用了HTTPS協(xié)議,當(dāng)客戶采用HTTP協(xié)議請求資源時,將自動轉(zhuǎn)變?yōu)槭褂肏TTPS協(xié)議來請求資源。上述例子從一個側(cè)面說明,在一個單位所管轄的域中,一般都有一臺主機(jī)提供Web服務(wù)來作為該單位的官方站點,通常該主機(jī)在單位域中的名稱為“www”。2).HTTP工作過程HTTP在運輸層上使用TCP協(xié)議,服務(wù)器默認(rèn)使用80端口。當(dāng)HTTP客戶(瀏覽器)向服務(wù)器請求一個頁面時(輸入URL獲取頁面或點擊超鏈接),客戶首先與服務(wù)器建立TCP連接,然后再向服務(wù)器發(fā)送HTTP請求,最后服務(wù)器向客戶發(fā)送HTTP響應(yīng)且釋放TCP連接。2).HTTP工作過程HTTP服務(wù)器程序始終持續(xù)運行(監(jiān)聽80端口),等待HTTP客戶主動與其建立TCP連接,這需要消耗一個RTT的時間。當(dāng)完成了客戶與服務(wù)器之間的TCP連接建立之后,客戶向服務(wù)器發(fā)送HTTP請求(Request)。2).HTTP工作過程以獲取相關(guān)頁面,服務(wù)器向客戶發(fā)送HTTP響應(yīng)(Response)將頁面發(fā)送給客戶,這一過程又需要消耗一個RTT的時間。最后客戶與服務(wù)器之間釋放TCP連接,這也需要消耗多于一個的RTT時間(如果4次揮手,則需要消耗2個RTT的時間)。2).HTTP工作過程HTTP是無狀態(tài)的協(xié)議(statelessprotocol),當(dāng)服務(wù)器通過HTTP響應(yīng)報文,將客戶請求的頁面發(fā)送給客戶之后,它并不會保存客戶的任何狀態(tài)信息,當(dāng)客戶短時間內(nèi)再次向服務(wù)器請求同一頁面時,服務(wù)器又將這一請求頁面重新發(fā)送給客戶,即上述過程又被重復(fù)一遍。3).持續(xù)連接與非持續(xù)連接(1)非持續(xù)連接如前所述,在一個Web頁面中,可能包含很多對象,在非持續(xù)連接(non-persistentconnection)的情況下,每個對象都需要使用一個單獨的TCP連接進(jìn)行傳輸,故非持續(xù)連接將消耗更多的時間與網(wǎng)絡(luò)資源。例如,假如某網(wǎng)站的首頁中包含了圖片、動畫等5個不同的對象,那么客戶與服務(wù)器間的工作過程如下:3).持續(xù)連接與非持續(xù)連接(1)非持續(xù)連接?客戶與服務(wù)器建立TCP連接。?客戶向服務(wù)器發(fā)送HTTP請求,請求中包含了對象的路徑和名稱,例如,/index.htm。?服務(wù)器收到該請求報文,將請求對象發(fā)送給客戶。?客戶與服務(wù)器間釋放TCP連接。?客戶瀏覽器解析index.htm文件,發(fā)現(xiàn)需要繼續(xù)請求其他的5個對象。?客戶重復(fù)上述前三個步驟以獲取另外的5個對象。3).持續(xù)連接與非持續(xù)連接可以看出,由于每一個TCP連接僅獲取了一個對象,客戶為了在瀏覽器上顯示全部頁面的內(nèi)容(包括5個對象),客戶需要與服務(wù)器間建立6次TCP連接。這種非持續(xù)連接的方式,適合早期的Web服務(wù),這是因為早期服務(wù)器與客戶間數(shù)據(jù)交換的間歇性較長,即數(shù)據(jù)傳輸具有突發(fā)性和瞬時性的特點,并且頁面間的關(guān)聯(lián)性也很低,這種情況下,如果采用持續(xù)連接會導(dǎo)致TCP連接很空閑,浪費了網(wǎng)絡(luò)資源。(2)持續(xù)連接在持續(xù)連接(persistentconnection)的情況下,某段時間內(nèi)的客戶與服務(wù)器間的所有請求與響應(yīng),是在同一個TCP連接下完成的。即服務(wù)器向客戶發(fā)送響應(yīng)之后,不是立即釋放TCP連接,而是繼續(xù)保持這條TCP一段時間,以便使客戶可以繼續(xù)向服務(wù)器發(fā)送多個請求并且得到多個響應(yīng)。一般情況下,服務(wù)器默認(rèn)使用持續(xù)連接。持續(xù)連接又被分為非流水線(withoutpipelining)和流水線(withpipelining)兩種方式。(2)持續(xù)連接所謂非流水線方式,是指客戶在收到上一個請求的響應(yīng)之后才能發(fā)送下一個請求,即每請求一個對象就要消耗一個RTT的時間,這也使得服務(wù)器發(fā)送完一個響應(yīng)之后,需要等待一段時間后才能收到下一個客戶的請求,這使得TCP連接處于空閑狀態(tài)。(2)持續(xù)連接所謂流水線方式,是指客戶在收到服務(wù)器響應(yīng)之前,便可以連續(xù)地向服務(wù)器發(fā)送新的請求,服務(wù)器便可以連接不斷地向客戶發(fā)送響應(yīng)。這種情況下,在大約消耗一個RTT的時間內(nèi),客戶便得到了所有的對象,采用這種方式,明顯地減少了TCP連接的空閑時間,也提高了客戶頁面的呈現(xiàn)速度。(2)持續(xù)連接在持續(xù)連接的情況下,當(dāng)客戶發(fā)送完所有請求,且服務(wù)器發(fā)送完了所有的響應(yīng),如果服務(wù)器沒有釋放TCP連接(一個糟糕的服務(wù)器程序),則客戶無法知道服務(wù)器是否完成了全部數(shù)據(jù)的傳輸,客戶便一直等待,只有當(dāng)服務(wù)器程序關(guān)閉TCP連接之后,客戶瀏覽器才能呈現(xiàn)頁面內(nèi)容。(2)持續(xù)連接一個糟糕的Web服務(wù)器程序(持續(xù)連接)01://5-1_WebServer.js一個糟糕的Web服務(wù)器程序02:03:require('net').createServer(function(sock){04:sock.on('data',function(data){05:sock.write('HTTP/1.1200OK\r\n');06:sock.write('\r\n');07:sock.write('HelloWorld!');08://sock.destroy();09:});10:}).listen(9090,'');(2)持續(xù)連接一個糟糕的Web服務(wù)器程序(持續(xù)連接)第08行,將關(guān)閉TCP連接的代碼行注釋掉。第10行,Web服務(wù)器監(jiān)聽9090端口(即不再監(jiān)聽默認(rèn)的80端口)。首先在服務(wù)器上運行Web服務(wù)程序:nodewebserver.js然后在瀏覽器的地址欄中輸入:“:9090”(2)持續(xù)連接當(dāng)客戶向服務(wù)器請求對象之后,服務(wù)器將“HelloWorld!”封裝到響應(yīng)中發(fā)送給客戶,但是由于服務(wù)器沒有關(guān)閉它與客戶的這條TCP連接,因此,雖然數(shù)據(jù)已經(jīng)傳輸完畢,但由于TCP連接一直保持著,客戶并不知道請求對象數(shù)據(jù)是否全部傳輸完畢,故客戶瀏覽器中始終不會顯示“HelloWorld!”。當(dāng)服務(wù)器程序退出(意味著服務(wù)器關(guān)閉了TCP連接),客戶瀏覽器知道服務(wù)器已經(jīng)沒有后續(xù)數(shù)據(jù)傳輸了,便在瀏覽器中呈現(xiàn)“HelloWorld!”。(2)持續(xù)連接
HTTP協(xié)議采用了兩種方法來解決上述持續(xù)連接可能出現(xiàn)的問題:
方法一,分塊傳輸編碼(Chunkedtransferencoding),即服務(wù)器在響應(yīng)報文中將數(shù)據(jù)分成若干塊發(fā)送給客戶,且指明了每個數(shù)據(jù)塊的大小。
方法二,服務(wù)器在響應(yīng)報文中,明確地告訴客戶,其發(fā)送的響應(yīng)報文中返回數(shù)據(jù)的長度(Content-Length)。4).HTTP記憶:cookieHTTP是無狀態(tài)的,服務(wù)器不能識別并記住曾經(jīng)服務(wù)過的客戶信息,HTTP的這種設(shè)計減輕了Web服務(wù)器的負(fù)荷,但是對于現(xiàn)今商業(yè)用途的HTTP服務(wù)(例如,網(wǎng)絡(luò)購物),Web服務(wù)器必須跟蹤客戶在服務(wù)器上的訪問行為,即識別客戶以及客戶訪問的內(nèi)容信息。HTTP采用cookie來實現(xiàn)HTTP狀態(tài)管理,cookie在RFC6265中被定義。4).HTTP記憶:cookieCookie由4部分組成:(1)HTTP響應(yīng)中的cookie行,即為客戶生成一個惟一的cookie識別碼。(2)HTTP請求中的cookie行,即帶有cookie識別碼的HTTP請求。(3)客戶瀏覽器管理的一個cookie文件,即保存特定服務(wù)器分配的cookie識別碼等信息。(4)Web服務(wù)器中的一個后臺數(shù)據(jù)庫文件,即保存客戶身份及訪問數(shù)據(jù)的行為。cookie跟蹤用戶ClientServerttRTTjd:5879jd:5879jd:5879tmail:2588tmail:2588訪問通常的HTTP請求通常的HTTP響應(yīng)Set-cookie:2588通常的HTTP請求cookie:2588cookie:2588通常的HTTP請求通常的HTTP響應(yīng)通常的HTTP響應(yīng)服務(wù)器為客戶創(chuàng)建ID2588cookie特定動作cookie特定動作一星期后4).HTTP記憶:cookie客戶本地保存了一個cookie文件,其中jd:5879表示該客戶曾經(jīng)訪問過jd。假設(shè)客戶第一次訪問tmall,它向tmall服務(wù)器發(fā)送一個HTTP請求。tmall服務(wù)器收到客戶請求之后,為客戶產(chǎn)生一個惟一的cookieID2588,并將該ID作為索引保存到服務(wù)器的cookie文件中,同時服務(wù)器向客戶發(fā)送一個包含ID2588cookie行的HTTP響應(yīng),這個cookie行可能是:Set-Cookie:SSID=2588;domain=;path=/;max-age=800\r\n4).HTTP記憶:cookie當(dāng)客戶瀏覽器收到服務(wù)器HTTP的響應(yīng)之后,瀏覽器將服務(wù)器設(shè)置的cookie信息作為一條記錄寫入到本地cookie文件中。當(dāng)客戶瀏覽器再次向jd服務(wù)器發(fā)送HTTP請求時,瀏覽器將發(fā)送一個包含cookieID2588行的HTTP請求。4).HTTP記憶:cookiejd服務(wù)器依據(jù)HTTP請求中的cookieID,記錄該ID在服務(wù)器中的訪問行為:什么時間、何種順序訪問了什么內(nèi)容。當(dāng)然,如果客戶在jd服務(wù)器中注冊了帳戶,且正常登錄到j(luò)d,則這些帳戶信息也會與客戶cookieID關(guān)聯(lián)起來。一個星期以后,當(dāng)客戶再去訪問jd,瀏覽器會用cookieID中保存的帳戶信息,自動完成登錄工作??梢钥闯觯琧ookie具有一定的安全隱患,即客戶的帳戶在不知情的情況下很容易被他人使用。5.2.2HTTP報文的格式HTTP報文分為兩種類型,分別是HTTP請求報文和HTTP響應(yīng)報文(1)請求行:該行包含請求方法、URL和版本3字段,字段間以空格sp(space)進(jìn)行分隔,最后以回車換行結(jié)束(注意是兩個字符)。字段URL用來指明請求的資源,版本則用來指明采用何種版本的HTTP協(xié)議來請求資源。常用的請求方法包括GET、POST、HEAD、PUT和DELETE方法。
?GET方法:大部分的HTTP請求報文使用該方法,用來請求URL中指明的對象。在使用GET方法的HTTP請求報文中,不使用實體主體部分,且請求的資源將在HTTP響應(yīng)報文的實體主體中返回。HTTP請求報文的格式版本spURLsp版本CRLF請求行首部字段名:sp值CRLF請求首部……首部字段名:sp值CRLF空行CRLF實體主體1).HTTP請求報文?POST方法:使用POST方法時,客戶可以向服務(wù)器提交一個表單資源,該資源包含在請求報文的實體主體中。例如,輸入的用戶名和密碼來登錄某一個網(wǎng)站或提交一個調(diào)查表格等,因此,POST方法的HTTP請求報文可能會在服務(wù)器上新建資源或修改已有的資源。?HEAD方法:該方法與GET方法類似,服務(wù)器收到該方法的請求報文,也會發(fā)送HTTP響應(yīng)報文,但不會返回具體的請求對象,該方法主要用于調(diào)試和跟蹤。1).HTTP請求報文?PUT方法:該方法可以使客戶上傳對象到Web服務(wù)器中指定的路徑,例如,上傳一張圖片文件。?DELETE方法:該方法允許客戶刪除Web服務(wù)器中指定的對象,例如,刪除購物車中的待購物品等或注銷一個帳戶等。1).HTTP請求報文(2)請求首部行(首部行):首部行中的每一行均由首部字段名和值構(gòu)成(以空格分隔),例如:Host::80,注意冒號后面必須跟上一個空格。首部行的數(shù)量及每一行的長度是不固定的,不同的瀏覽器和不同的Web服務(wù)器能夠支持的首部行的內(nèi)容各不相同,但是,它們都支持一些通用的請求首部。1).HTTP請求報文HTTP/1.1中支持的部分通用的請求首部行:Accetp:客戶告知服務(wù)器可支持的資源類型。Accept-Charset:可支持的字符集。Accept-Encoding:可支持的編碼格式,例如gzip、Chunked。Accept-Language:可支持的語言。Host:Web服務(wù)器的名稱及端口。User-Agent:客戶所使用的瀏覽器的版本信息。1).HTTP請求報文(3)空行:請求首部之后必須有換行/回車而形成的一個空行。(4)實體主體:對于GET方法的請求報文,該部分為空,對于POST方法的請求報文,該部分是表單中輸入的值。01:TransmissionControlProtocol,SrcPort:58592,DstPort:8002:HypertextTransferProtocol03:GET/HTTP/1.1\r\n第03行是請求行,請求方法是GET方法,請求的對象是Web服務(wù)器設(shè)置的、根路徑下默認(rèn)的對象,例如,index.html、default.js等,版本是HTTP/1.1。1).HTTP請求報文(3)空行:請求首部之后必須有換行/回車而形成的一個空行。(4)實體主體:對于GET方法的請求報文,該部分為空,對于POST方法的請求報文,該部分是表單中輸入的值。例14,一個HTTP請求報文的例子:04:Host::80\r\n05:Upgrade-Insecure-Requests:1\r\n06:Accept:text/html,application/xhtml+xml,……\r\n07:User-Agent:Mozilla/5.0...Safari/605.1.15\r\n08:Accept-Language:zh-cn\r\n09:Accept-Encoding:gzip,deflate\r\n10:Connection:keep-alive\r\n11:\r\n第04-10行是請求首部(包含7個請求行),其中第10行表示連接方式是持續(xù)連接。第11行是空行。由于這是一個GET方法的HTTP請求報文,故該HTTP請求報文沒有實體主體部分的信息。2)HTTP響應(yīng)報文HTTP響應(yīng)報文的格式如下。HTTP響應(yīng)報文與請求報文類似,它也由四部分構(gòu)成,它們分別是狀態(tài)行、響應(yīng)首部、空行和實體主體。(1)狀態(tài)行:狀態(tài)行中包含了版本、狀態(tài)碼和短語3字段,字段間以空格sp(space)分隔,最后以回車換行結(jié)束(注意是兩個字符)。狀態(tài)碼和對應(yīng)的短語指明了請求得到的是何種結(jié)果。版本sp狀態(tài)碼sp短語CRLF狀態(tài)行首部字段名:sp值CRLF響應(yīng)首部……首部字段名:sp值CRLF空行CRLF實體主體2)HTTP響應(yīng)報文狀態(tài)碼由三位數(shù)字組成,其中第一個數(shù)字規(guī)定了響應(yīng)的類型,一共有5種類型:?1xx:指示信息,表示服務(wù)器已經(jīng)收到請求,繼續(xù)處理當(dāng)中。?2xx:表示服務(wù)器已經(jīng)收到請求并且能夠理解、和接受請求。?3xx:重定向:請求的對象被轉(zhuǎn)移了。?4xx:客戶端錯誤:請求中有語法錯誤或請求無法實現(xiàn)。?5xx:服務(wù)器端錯誤:服務(wù)器未能實現(xiàn)合法的請求,例如不支持請求報文的版本。2)HTTP響應(yīng)報文常見的狀態(tài)碼:200OK:請求成功,請求的對象在響應(yīng)報文的實體主體中。301MovedPermanently:客戶請求的對象被永久轉(zhuǎn)移了,請求對象的新的URL在響應(yīng)報文首部中的Location給出,客戶需向該URL重新發(fā)送請求報文。400BadRequest:通用的錯誤代碼,表示該請求不被服務(wù)器所理解。404NotFound:服務(wù)器中沒有客戶請求的對象。2)HTTP響應(yīng)報文(2)響應(yīng)首部:與請求首部類似,響應(yīng)首部中也有一些通用的首部行(HTTP/1.1),例如:Age:服務(wù)器產(chǎn)生響應(yīng)以來的時間。ETag:資源的匹配信息。Locatio:告知客戶重定向的URL。ServerHTTP:服務(wù)器的信息。2)HTTP響應(yīng)報文一個HTTP響應(yīng)報文的例子:01:HypertextTransferProtocol02:HTTP/1.1200OK\r\n03:Set-Cookie:SSID=Ap4GTEq;max-age=120000\r\n04:Content-Type:text/html\r\n05:Date:Thu,31Oct201907:28:10GMT\r\n06:Connection:keep-alive\r\n07:Transfer-Encoding:chunked\r\n08:\r\n5.2.3代理服務(wù)器代理服務(wù)器(proxyserver)也稱為Web緩存器(Webcache),它能夠緩存最近請求過的對象的副本,如果代理服器中保存有客戶請求的對象,則代理服務(wù)器便可以直接響應(yīng)客戶的請求,而不會向原始服務(wù)器請求對象。如果代理服務(wù)器中沒有客戶請求的對象,代理服務(wù)器則向原始服務(wù)器請求該對象,并保存原始服務(wù)器返回的對象,同時將該對象返回給請求客戶。代理服務(wù)器既是服務(wù)器又是客戶,當(dāng)它向原始服務(wù)器請求對象時,它是客戶,當(dāng)它向客戶發(fā)送響應(yīng)時,它又是服務(wù)器。5.2.3代理服務(wù)器代理服務(wù)器的優(yōu)點:一方面大大減少了客戶請求的響應(yīng)時間,特別是客戶與代理服務(wù)器間的帶寬遠(yuǎn)遠(yuǎn)高于客戶與原始服務(wù)器間的帶寬時更是如此。另一方面,代理服務(wù)器可以減少單位網(wǎng)絡(luò)與互聯(lián)網(wǎng)間的通信流量,從而減少租用通信鏈路的費用。2)HTTP響應(yīng)報文一個校園網(wǎng)絡(luò)經(jīng)路由器R1接入互聯(lián)網(wǎng),R1與R2之間的帶寬是20Mb/s,即R1能以20Mb/s的速率向互聯(lián)網(wǎng)注入比特流量。校園網(wǎng)絡(luò)的帶寬100Mb/s,假設(shè)校園網(wǎng)絡(luò)每秒產(chǎn)生40個請求報文,且每個請求報文是0.5Mb,則總的請求報文將以20Mb/s速率進(jìn)入R1。由于R1存在處理時延等原因,致使R1不可能線性轉(zhuǎn)發(fā)即使是存在非常短的處理時延,也會導(dǎo)致待轉(zhuǎn)發(fā)的分組需要在R1中排隊等待轉(zhuǎn)發(fā),且該隊列的長度不斷增長。在這種情況下,校園網(wǎng)絡(luò)中的客戶請求將需要花費較長的時間才能得到響應(yīng)。2)HTTP響應(yīng)報文校園網(wǎng)絡(luò)中增加了一臺代理服務(wù)器,校園網(wǎng)絡(luò)中的主機(jī)的所有請求均發(fā)送給代理服務(wù)器,如果代理服務(wù)器中緩存的對象能夠滿足40%的客戶請求,則發(fā)往R1的請求報文的流量減少到12Mb/s,R1便能夠?qū)⑦@些請求報文很快地發(fā)送出去。2)HTTP響應(yīng)報文假設(shè)在校園網(wǎng)絡(luò)中,從主機(jī)發(fā)送請求開始到收到互聯(lián)網(wǎng)中的原始服務(wù)器的響應(yīng)為止,共耗時2秒(不考慮排隊時延),而在校園網(wǎng)絡(luò)內(nèi),主機(jī)間的往返時延是10毫秒(0.01秒)。則在使用代理服務(wù)器的情況下,請求/響應(yīng)的往返時間是:可見,如果請求的資源在代理服務(wù)器的命中率越高,則響應(yīng)時間越短。0.4×0.01+0.6×(2+0.01)≈1.22s2)HTTP響應(yīng)報文以代理服務(wù)器構(gòu)建的CDN內(nèi)容分發(fā)網(wǎng)絡(luò)(ContentDeliveryNetwork),已成為當(dāng)今互聯(lián)網(wǎng)一種重要的優(yōu)化技術(shù),該技術(shù)采用一組分布在不同物理地點的服務(wù)器,將內(nèi)容緩存在離用戶更近的服務(wù)器之中,這使得大量的網(wǎng)絡(luò)流量實現(xiàn)了本地化,用戶也就能夠更快捷地訪問網(wǎng)絡(luò)資源,從而提高了網(wǎng)站的性能,也提高了用戶的滿意度。5.2.4數(shù)據(jù)同步如前所述,代理服務(wù)器可以用本地緩存的對象代替原始服務(wù)器來響應(yīng)客戶的請求。但是,原始服務(wù)器中的對象發(fā)生了變化,而本地緩存的對象沒有及時更新,那么客戶從代理服務(wù)器中得到的對象則是陳舊的甚至是錯誤的。為了解決這個問題,HTTP在GET方法的請求報方中,分別采用兩個條件的GET。1).If-Modified-Since當(dāng)代理服務(wù)器首次采用GET方法,向原始服務(wù)器請求對象后,原始服務(wù)器在其響應(yīng)報文的響應(yīng)首部中,以Last-Modified響應(yīng)行來告知代理服務(wù)器,請求對象最后被修改的時間。1).If-Modified-Since響應(yīng)首部中帶有Last-Modified響應(yīng)行的響應(yīng)報文。(1)第一次請求報文,代理服務(wù)器首次向原始服務(wù)器發(fā)送的請求報文:01:HypertextTransferProtocol02:GET/HTTP/1.1\r\n03:Host:47\r\n04:Connection:keep-alive\r\n05:Upgrade-Insecure-Requests:1\r\n06:User-Agent:Mozilla/5.0Chrome/Safari/537.36\r\n07:Accept:text/html,application/xhtml+xml,\r\n08:Accept-Encoding:gzip,deflate\r\n09:Accept-Language:zh-CN,zh;q=0.9\r\n10:\r\n1).If-Modified-Since(2)第一次響應(yīng)報文,原始服務(wù)器第一次向客戶發(fā)送帶有Last-Modified響應(yīng)行的響應(yīng)報文:01:HypertextTransferProtocol02:HTTP/1.1200OK\r\n03:Date:Sat,04Mar202313:27:30GMT\r\n04:Server:Apache\r\n05:X-Frame-Options:SAMEORIGIN\r\n06:Last-Modified:Wed,23Nov202211:05:37GMT\r\n07:ETag:"15-5ee2144b920c8"\r\n08:Accept-Ranges:bytes\r\n第06行:原始服務(wù)器在響應(yīng)報文中的響應(yīng)首部中,通過Last-Modified首部行給出了代理服務(wù)器請求的對象的最后修改時間,代理服務(wù)器則緩存請求得到的對象以及該對象最后被修改的日期等信息。1).If-Modified-Since(2)第一次響應(yīng)報文,原始服務(wù)器第一次向客戶發(fā)送帶有Last-Modified響應(yīng)行的響應(yīng)報文:09:Content-Length:21\r\n10:Keep-Alive:timeout=5,max=100\r\n11:Connection:Keep-Alive\r\n12:Content-Type:text/html\r\n13:\r\n14:FileData:21bytes15:Line-basedtextdata:text/html(1lines)16:Thisismyfirstweb.在間隔了一段時間之后,如果代理服務(wù)器再次向原始服務(wù)器請求同一對象,它會在其請求報文中的請求首部中以If-Modified-Since請求行來告訴原始服務(wù)器:請求的對象包含在自己的緩存中,其最后的修改日期是什么。1).If-Modified-Since(3)第二次請求報文,代理服務(wù)器第二次發(fā)送帶有If-Modified-Since請求行的請求報文:01:HypertextTransferProtocol02:GET/HTTP/1.1\r\n03:Host:47\r\n04:Connection:keep-alive\r\n05:Cache-Control:max-age=0\r\n06:Upgrade-Insecure-Requests:1\r\n1).If-Modified-Since(3)第二次請求報文,代理服務(wù)器第二次發(fā)送帶有If-Modified-Since請求行的請求報文:07:User-Agent:Mozilla/5.0Chrome/Safari/537.36\r\n08:Accept:text/html,application/xhtml+xml,\r\n09:Accept-Encoding:gzip,deflate\r\n10:Accept-Language:zh-CN,zh;q=0.9\r\n11:If-None-Match:"15-5ee2144b920c8"\r\n12:If-Modified-Since:Wed,23Nov202211:05:37GMT\r\n13:\r\n1).If-Modified-Since(4)第二次響應(yīng)報文,由于請求對象在服務(wù)器中沒有發(fā)生改變,故原始服務(wù)器第二次響應(yīng)報文的狀態(tài)碼是304:01:HypertextTransferProtocol02:HTTP/1.1304NotModified\r\n03:Date:Sat,04Mar202313:29:57GMT\r\n04:Server:Apache\r\n05:Connection:Keep-Alive\r\n06:Keep-Alive:timeout=5,max=100\r\n07:ETag:"15-5ee2144b920c8"\r\n08:\r\n②第一次HTTP請求1).If-Modified-Since當(dāng)代理服務(wù)器收到原始服務(wù)器返回的上述響應(yīng)報文,它便知道自己緩存的對象與原始服務(wù)器中的對象是一致的,那么,代理服務(wù)器就會用緩存的對象來響應(yīng)客戶的請求。ttt①HTTP請求④HTTP響應(yīng)⑧HTTP響應(yīng)⑤HTTP請求③第一次HTTP響應(yīng)Last-Modified:123456
代理服務(wù)器原始服務(wù)器2).EtagEtag(Entify-Tag)是服務(wù)器為對象生成的一個唯一標(biāo)識符,也是另一種緩存版本的檢驗方式,它解決了Last-Modified緩存檢驗存在的一些問題:第一個問題,原始服務(wù)器中的某些對象,它會隨時間而發(fā)生變化,但某段時間內(nèi),對象僅僅是改變了修改時間,而對象的內(nèi)容并沒有發(fā)生變化,在這種情況下,服務(wù)器并不希望代理服務(wù)器認(rèn)為該對象發(fā)生了變化。第二個問題,Last-Modified檢查的粒度是秒級的,現(xiàn)代網(wǎng)站上的很多資源其變化速度更快,在1秒時間內(nèi)可能發(fā)生了多次變化(例如股票交易數(shù)據(jù)等),這種變化對于Last-Modified就很難判斷。2).EtagEtag也是由原始服務(wù)器在第一次響應(yīng)時生成,并通過響應(yīng)體中的Etag響應(yīng)行返回給代理服務(wù)器,代理服務(wù)器緩存對象以及其Etag的值。例如,前面所述的原始服務(wù)器第一次響應(yīng)報文中的第07行:ETag:“15-5ee2144b920c8"\r\n就是一個Etag首部行。當(dāng)代理服務(wù)器第二次請求同一對象時,在請求首部中以If-None-Match請求行將Etag的值返回給服務(wù)器。2).Etag原始服務(wù)器對代理服務(wù)器發(fā)送的請求對象重新計算Etag,如果得到的結(jié)果與代理服務(wù)器請求行If-None-Match的值一致,則發(fā)送狀態(tài)碼是“304NotModified”的響應(yīng)報文,否則發(fā)送狀態(tài)碼是“200OK”的響應(yīng)報文,將發(fā)生變化的對象存入實體主體返回給代理服務(wù)器。Etag生成方法是多種多樣的,例如散列函數(shù)就是常用的方法之一。2).Etag緩存檢驗②第一次HTTP請求ttt①HTTP請求④HTTP響應(yīng)⑧HTTP響應(yīng)⑤HTTP請求③第一次HTTP響應(yīng)Last-Modified:123456
代理服務(wù)器原始服務(wù)器代理服務(wù)器緩存版本的檢驗過程代理服務(wù)器客戶發(fā)送HTTP請求客戶Max-age>0?是否有Elag?是否有Last-Modified?緩存響應(yīng),狀態(tài)碼200代理發(fā)送HTTP請求發(fā)送響應(yīng),狀態(tài)碼200原始服務(wù)器與服務(wù)器相同嗎?修改時間是否一致發(fā)送新的響應(yīng),狀態(tài)碼200,包括實體主體發(fā)送響應(yīng)首部,狀態(tài)碼304YNNNYYYNNYYYmax-age的作用代理服務(wù)器緩存有客戶請求的對象的情況,虛線以上部分是代理服務(wù)器和客戶間的請求/響應(yīng)過程,虛線以下是原始服務(wù)器的響應(yīng)過程。max-age=N是Cache-Control字段的值,當(dāng)代理服務(wù)器第一次向原始服務(wù)器請求對象時,如果原始服務(wù)器的響應(yīng)報文中包含了Cache-Control:max-age=N,則通告代理服務(wù)器,在N秒時間之內(nèi),不需要向原始服務(wù)器再次請求該對象,代理服務(wù)器可以直接使用緩存的對象來響應(yīng)客戶的請求.②第一次HTTP請求ttt①HTTP請求④HTTP響應(yīng)⑧HTTP響應(yīng)⑤HTTP請求③第一次HTTP響應(yīng)Max-age=60
⑨第二次HTTP響應(yīng)304NotModified或200OK代理服務(wù)器原始服務(wù)器⑥HTTP響應(yīng)⑦HTTP請求1s60s2).Etag①客戶向代理服務(wù)器請求原始服務(wù)器中的對象。②代理服務(wù)器中沒有緩存對象,代理服務(wù)器向原始服務(wù)器請求。③原始服務(wù)器發(fā)送響應(yīng)報文回送請求對象,并且設(shè)置了max-age=60、Last-Modified和Etag等首部行。④代理服務(wù)器響應(yīng)客戶請求,將請求對象發(fā)送給客戶。2).Etag⑤間隔一段時間之后(例如,圖示中的1秒),客戶再次向代理服務(wù)器請求對象。
⑥代理服務(wù)器發(fā)現(xiàn)自己緩存有客戶請求的對象,且緩存時間未過期,它便用緩存的對象來響應(yīng)客戶的請求。⑦再間隔一段時間之后,客戶又向代理服務(wù)器請求對象。2).Etag⑧代理服務(wù)器發(fā)現(xiàn)自己緩存有客戶請求的對象,且緩存時間已經(jīng)過期,故代理服務(wù)器再次向原始服務(wù)器請求對象,該請求報文中包含了If-Modified-Since和If-None-Match(請求緩存版本的檢驗)。⑨原始服務(wù)器發(fā)送響應(yīng)報文,該報文的狀態(tài)碼是200OK(請求對象發(fā)生變化,在實體主體中返回更新的請求對象,并重新設(shè)置max-age等首部行)或304NotModified(請求對象未發(fā)生變化,不包含實體主體)。2).Etag⑩代理服務(wù)器以緩存中的對象或原始服務(wù)器返回的更改后的對象(同時更新緩存中的對象)來響應(yīng)客戶請求。最后需要強調(diào)的是,代理服務(wù)器的緩存機(jī)制是多種多樣的,這里僅僅介紹了最為基本的一些機(jī)制。另外,想象一下將代理服務(wù)器的緩存遷移到本地主機(jī)中,那么本地主機(jī)也實現(xiàn)了類似的緩存機(jī)制,事實上,本地主機(jī)也有Web緩存,其工作機(jī)制與代理服務(wù)器類似,當(dāng)客戶在瀏覽器中不斷刷新同一頁面時,其實就是從Web緩存中不斷請求頁面,本小節(jié)中的實例內(nèi)容,就是來自于本地Web緩存機(jī)制。5.3.2FTP的工作方式5.3文件傳輸協(xié)議5.3.1概述5.3.3
FTP的會話5.3.1概述在互聯(lián)網(wǎng)環(huán)境下,可以通過網(wǎng)絡(luò)作為“中介”來實現(xiàn)異構(gòu)系統(tǒng)間文件的復(fù)制,這種文件復(fù)制工作所采用的協(xié)議稱為文件傳輸協(xié)議FTP(FileTransferprotocol)。確切地說,F(xiàn)TP是互聯(lián)網(wǎng)中主機(jī)間傳輸文件的協(xié)議,在協(xié)議的控制之下,被授權(quán)的用戶(支持匿名的服務(wù)器除外)可以向文件服務(wù)器上傳文件,或從文件服務(wù)器中下載文件,5.3.1概述即通過互聯(lián)網(wǎng),最終實現(xiàn)文件的遠(yuǎn)程管理,例如遠(yuǎn)程文件的查看、復(fù)制、刪除、更名等文件操作,它屏蔽了計算機(jī)系統(tǒng)的細(xì)節(jié),實現(xiàn)了在異構(gòu)網(wǎng)絡(luò)中的任意計算機(jī)系統(tǒng)之間的文件傳輸。FTP支持兩種傳輸模式:ASCII模式(文本序列傳輸)和Binary模式(二進(jìn)制序列傳輸)。FTP在RFC959中被定義。5.3.1概述與Telnet、Email一樣,F(xiàn)TP是一個非常古老的互聯(lián)網(wǎng)應(yīng)用,當(dāng)今普通用戶很少通過FTP來實現(xiàn)主機(jī)間的上傳或下載文件,基本上都是通過HTTP來上傳或下載文件。但是FTP在網(wǎng)絡(luò)管理中是一個非常有意義的應(yīng)用,例如,網(wǎng)絡(luò)管理人員可以將網(wǎng)絡(luò)設(shè)備的配置文件備份到FTP服務(wù)器中,在網(wǎng)絡(luò)設(shè)備的配置文件出現(xiàn)了錯誤或問題時,無需重新配置網(wǎng)絡(luò)設(shè)備便可以直接從FTP服務(wù)器中將配置文件安裝到網(wǎng)絡(luò)設(shè)備中。5.3.2FTP的工作方式
FTP與HTTP一樣,采用客戶/服務(wù)器工作模式,并且在運輸層上也采用TCP協(xié)議,但FTP使用了兩條TCP連接,一條TCP連接用來傳輸控制命令(控制連接),另一條TCP連接用來傳輸數(shù)據(jù)(數(shù)據(jù)連接)。
控制連接用于傳輸控制信息,實現(xiàn)客戶與服務(wù)器間交互式訪問,例如傳輸用戶名稱、用戶口令、切換遠(yuǎn)程服務(wù)器目錄命令、上傳文件/下載文件命令、刪除文件命令以及更改傳輸模式等命令。
5.3.2FTP的工作方式數(shù)據(jù)連接僅用于客戶與服務(wù)器間的數(shù)據(jù)傳輸。
正是因為FTP使用了單獨的一條控制連接來傳輸控制命令,因此稱FTP的控制信息為帶外(out-of-band)傳輸?shù)男畔ⅲ贖TTP協(xié)議中,數(shù)據(jù)傳輸與控制信息是在同一個TCP連接上傳輸?shù)模虼朔QHTTP的控制信息是帶內(nèi)(in-band)傳輸?shù)男畔ⅰ?.3.2FTP的工作方式當(dāng)FTP客戶需要與服務(wù)器建立會話時,首先客戶用一個臨時端口(例如5505)與服務(wù)器端口21建立用于傳輸控制信息的TCP連接,然后客戶在這條連接上向服務(wù)器傳輸用戶名和密碼,并且切換到遠(yuǎn)程文件系統(tǒng)的工作目錄。
當(dāng)需要將本地文件上傳到遠(yuǎn)程文件系統(tǒng)的工作目錄中或從遠(yuǎn)程工作目錄中將文件下載到本地文件系統(tǒng)時,客戶再用一個臨時端口(例如5506)與服務(wù)器端口20建立用于傳輸文件的另一條TCP連接,客戶在這條連接上完成文件的上傳或下載。當(dāng)文件傳輸完畢,這條數(shù)據(jù)連接被關(guān)閉。FTP的兩條TCP連接當(dāng)客戶再次需要上傳或下載另一個文件時,客戶又用一個新的臨時端口(例如5507)與服務(wù)器20端口建立TCP連接,以完成文件的上傳或下載。由此可見,控制連接始終維持著直到FTP會話被關(guān)閉。FTP客戶FTP服務(wù)器遠(yuǎn)程文件系統(tǒng)控制進(jìn)程控制進(jìn)程數(shù)據(jù)傳輸進(jìn)程數(shù)據(jù)傳輸進(jìn)程TCPTCP212055065505本地文件系統(tǒng)FTP會話的過程
客戶5505端口與服務(wù)器21端口建立了一條TCP控制連接,在該控制連接下,又分別建立了兩次數(shù)據(jù)連接完成兩次數(shù)據(jù)傳輸,每一次數(shù)據(jù)傳輸完成,該數(shù)據(jù)連接即被關(guān)閉。
當(dāng)客戶與服務(wù)器間不再需要傳輸文件時,客戶便關(guān)閉控制連接退出FTP會話。FTPClientFTPServerFTP會話port:5505port:5506port:5507port:21port:20port:20文件傳輸文件傳輸控制連接數(shù)據(jù)連接文件傳輸關(guān)閉數(shù)據(jù)連接數(shù)據(jù)連接文件傳輸關(guān)閉數(shù)據(jù)連接關(guān)閉控制連接tt5.3.2FTP的工作方式
控制連接的建立一定是由客戶端主動發(fā)起,那么數(shù)據(jù)連接是由誰主動發(fā)起的呢?根據(jù)服務(wù)器數(shù)據(jù)連接的建立過程,F(xiàn)TP被區(qū)分為主動方式和被動方式。
當(dāng)客戶需要與服務(wù)器建立FTP會話,客戶首先用一個臨時端口N(N>1023)與服務(wù)器端口21建立控制連接,然后客戶監(jiān)聽端口P(P>1023),并向服務(wù)器發(fā)送命令“portP”,服務(wù)器用端口20主動與客戶端口P建立連接。當(dāng)客戶需要另一個數(shù)據(jù)連接時,則用一個新的端口重復(fù)上述過程。FTP的這種工作模式稱為主動方式,這種服務(wù)器主動向客戶建立連接的工作方式帶來了一定的安全隱患。另一方面,機(jī)構(gòu)中的客戶機(jī)往往都是置于防火墻之后,防火墻會阻止外界主機(jī)與客戶機(jī)主動建立TCP連接,這會導(dǎo)致FTP的主動工作方式無法完成。FTP的主動工作方式:客戶與服務(wù)器建立控制連接34是FTP服務(wù)器,
是FTP客戶。序號1-3的包是客戶與服務(wù)器通過三次握手建立了TCP控制連接的過程。序號4-11的包是服務(wù)器的響應(yīng)信息以及用戶身份認(rèn)證的過程。序號12的包是客戶向服務(wù)器發(fā)送的“port53732”。序號15的包表示客戶發(fā)送了list命令,請求服務(wù)器列出當(dāng)前目錄下的文件。1).主動方式序號是12的port命令有些奇怪,顯示的并不是“port53732”,我們將該包展開:第02-06行是port命令的格式,在第04行中,分別給出了客戶的IP地址,以及用于計算端口的參數(shù)“209,228”,第06行中端口53732就是依據(jù)參數(shù)“209,228”計算得到的,具體計算方法是這樣的:209×256+228=53732。01:FileTransferProtocol(FTP)02: PORT172,16,25,1,209,228\r\n03: Requestcommand:PORT04: Requestarg:172,16,25,1,209,22805: ActiveIPaddress:06: Activeport:537321).主動方式序號是12的port命令有些奇怪,顯示的并不是“port53732”,將該包展開:服務(wù)器收到客戶發(fā)來的port53732命令,便用端口20主動與客戶端口53732建立TCP數(shù)據(jù)連接,然后用這條數(shù)據(jù)連接向客戶傳輸數(shù)據(jù)。01:FileTransferProtocol(FTP)02: PORT172,16,25,1,209,228\r\n03: Requestcommand:PORT04: Requestarg:172,16,25,1,209,22805: ActiveIPaddress:06: Activeport:53732FTP的主動工作方式:服務(wù)器主動建立數(shù)據(jù)連接和主動關(guān)閉數(shù)據(jù)連接序號16、18和20的包,是服務(wù)器主動用端口20與客戶端口53732三次握手建立TCP數(shù)據(jù)連接的過程。序號22的包是服務(wù)器向客戶傳輸?shù)臄?shù)據(jù)信息。序號24-29是關(guān)閉TCP數(shù)據(jù)連接的過程。當(dāng)客戶需要繼續(xù)向服務(wù)器請求傳輸數(shù)據(jù)時,客戶需要重新向服務(wù)器發(fā)送port命令,例如“port53887”命令。2).被動方式客戶用臨時端口N(N>1023)與服務(wù)器端口21建立控制連接之后,向服務(wù)器發(fā)送“PASV”命令,服務(wù)器收到該命令之后,便監(jiān)聽端口P(P>1023)并向客戶發(fā)送“PORTP”命令,隨后,客戶便用另一個臨時端口M主動與服務(wù)器端口P建立數(shù)據(jù)連接,這種服務(wù)器被動等待客戶與之建立數(shù)據(jù)連接的工作方式稱為被動方式??梢?,在FTP的被動工作方式中,服務(wù)器并不是用20端口來傳輸數(shù)據(jù)。被動工作的一個實例:FTP的被動工作方式:客戶發(fā)送PASV命令2).被動方式客戶與服務(wù)器建立控制連接、用戶認(rèn)證過程與主動工作中的實例類似,客戶用端口61322與服務(wù)器端口21建立了控制連接。序號是18的包是客戶向服務(wù)器發(fā)送的PASV命令,而序號19的是服務(wù)器向客戶發(fā)送的命令“passiveport”,告知客戶服務(wù)器用來建立數(shù)據(jù)連接的臨時端口41697,序號19的包展開如下:01:FileTransferProtocol(FTP)02:227EnteringPassiveMode(172,16,25,134,162,225)03Responsecode:EnteringPassiveMode(227)04:Responsecode:EnteringPassiveMode(172,16,25,134,162,225)05PassiveIPaddress:3406:Passiveport:416972).被動方式服務(wù)器的被動端口41697也是這樣計算得到的:162×256+225=41697??蛻粲枚丝?1416與服務(wù)器端口41697主動建立數(shù)據(jù)連接的過程(注意,是客戶主動向服務(wù)器請求建立數(shù)據(jù)連接)。數(shù)據(jù)傳輸完成和關(guān)閉數(shù)據(jù)連接的過程。FTP的被動工作方式:服務(wù)器被動建立數(shù)據(jù)連接2).被動方式不管是主動方式還是被動方式,當(dāng)客戶與服務(wù)器間的FTP會話結(jié)束,則需要關(guān)閉客戶與服務(wù)器間的控制連接。下圖給出了上述被動方式實例中關(guān)閉控制連接的過程。服務(wù)器主動關(guān)閉控制連接5.3.3FTP會話FTP客戶與服務(wù)器的控制信息,都是在控制連接上傳輸命令和響應(yīng),即客戶向服務(wù)器發(fā)送命令,服務(wù)器向客戶發(fā)送響應(yīng)。這些命令與響應(yīng)都是7比特的ASCII碼且采用明文傳輸,這些命令是由不超過4個字母組合而成,而且每個命令的最后需要加上回車與換行,例如一些常用的命令:(1)USERusername:客戶向服務(wù)器發(fā)送用戶名。(2)PASSpassword:客戶向服務(wù)器發(fā)送用戶密碼。(3)LIST:請求服務(wù)器列出當(dāng)前工作目下的文件列表,文件列表信息是由數(shù)據(jù)連接傳輸,故需要新建一個數(shù)據(jù)連接,信息傳輸完畢關(guān)閉數(shù)據(jù)連接。5.3.3FTP會話(4)CWD:directory:改變服務(wù)器當(dāng)前工作目錄。(5)RETR:filename:響應(yīng)客戶下載文件(即get文件名)的請求,需要新建一個數(shù)據(jù)連接,并經(jīng)該數(shù)據(jù)連接向客戶傳輸文件。(6)STOREfilename:響應(yīng)客戶上傳文件(即
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 保齡球館簡易裝修合同模板
- 預(yù)制性塑膠跑道施工方案
- 印染行業(yè)氨水配送協(xié)議
- 咖啡館設(shè)計合同樣本
- 旅游景區(qū)裝修安全合同范本
- 汽車維修中心裝修合同樣本
- 保健食品道路運輸合同樣本
- 專業(yè)錄音棚裝修合同模板
- 旅游業(yè)務(wù)居間合作協(xié)議模板
- 順義重防腐地坪施工方案
- 領(lǐng)導(dǎo)干部個人有關(guān)事項報告表(模板)
- 危險化學(xué)品目錄2023
- TSXDZ 052-2020 煤礦礦圖管理辦法
- GB/T 7631.18-2017潤滑劑、工業(yè)用油和有關(guān)產(chǎn)品(L類)的分類第18部分:Y組(其他應(yīng)用)
- 2022年第六屆【普譯獎】全國大學(xué)生英語翻譯大賽
- GB/T 14258-2003信息技術(shù)自動識別與數(shù)據(jù)采集技術(shù)條碼符號印制質(zhì)量的檢驗
- 政府資金項目(榮譽)申報獎勵辦法
- 最新如何進(jìn)行隔代教育專業(yè)知識講座課件
- 當(dāng)前警察職務(wù)犯罪的特征、原因及防范,司法制度論文
- 奧特萊斯專題報告(經(jīng)典)-課件
- 《新制度經(jīng)濟(jì)學(xué)》配套教學(xué)課件
評論
0/150
提交評論