计算机原理---什么叫协议?主流协议族TCP/IP协议与HTTP协议的联系及区别
文章目錄
- 一. 背景
- 1. 名詞定義
- 2. 協(xié)議選擇
- 3. 常用協(xié)議
- 二. 協(xié)議協(xié)議,究竟什么是協(xié)議?
- 1.舉個(gè)例子
- 2.計(jì)算機(jī)網(wǎng)絡(luò)一般分為5層
- 應(yīng)用層
- 傳輸層
- 網(wǎng)絡(luò)層
- 數(shù)據(jù)鏈路層
- 物理層
- 三.總結(jié)
- 四. TCP/IP協(xié)議簡(jiǎn)介
- 1.TCP/IP協(xié)議族體系結(jié)構(gòu)以及主要協(xié)議
- 1.1 數(shù)據(jù)鏈路層
- 1.2 網(wǎng)絡(luò)層
- 1.3 傳輸層
- 1.4 應(yīng)用層
- 五. HTTP協(xié)議簡(jiǎn)介
- 1. HTTP協(xié)議特點(diǎn)
- 2. 幾個(gè)重要概念
- 3. 運(yùn)作方式
- 六. TCP/IP 和 HTTP 的區(qū)別和聯(lián)系
- 1. 故事一
- 2. 故事二
- 七. 網(wǎng)絡(luò)七層
一. 背景
網(wǎng)絡(luò)通信一般指網(wǎng)絡(luò)協(xié)議
網(wǎng)絡(luò)是用物理鏈路將各個(gè)孤立的工作站或主機(jī)相連在一起,組成數(shù)據(jù)鏈路,從而達(dá)到資源共享和通信的目的。通信是人與人之間通過(guò)某種媒體進(jìn)行的信息交流與傳遞。網(wǎng)絡(luò)通信是通過(guò)網(wǎng)絡(luò)將各個(gè)孤立的設(shè)備進(jìn)行連接,通過(guò)信息交換實(shí)現(xiàn)人與人,人與計(jì)算機(jī),計(jì)算機(jī)與計(jì)算機(jī)之間的通信。
網(wǎng)絡(luò)通信中最重要的就是網(wǎng)絡(luò)通信協(xié)議。當(dāng)今網(wǎng)絡(luò)協(xié)議有很多,局域網(wǎng)中最常用的有三個(gè)網(wǎng)絡(luò)協(xié)議:MICROSOFT的NETBEUI、NOVELL的IPX/SPX和TCP/IP協(xié)議。應(yīng)根據(jù)需要來(lái)選擇合適的網(wǎng)絡(luò)協(xié)議。
1. 名詞定義
專業(yè)的定義,網(wǎng)絡(luò)協(xié)議是計(jì)算機(jī)在網(wǎng)絡(luò)中實(shí)現(xiàn)通信時(shí)必須遵守的約定,也就是通信協(xié)議。主要是對(duì)信息傳輸?shù)乃俾省鬏敶a、代碼結(jié)構(gòu)、傳輸控制步驟、出錯(cuò)控制等作出規(guī)定并制定出標(biāo)準(zhǔn)。
而通俗的說(shuō),網(wǎng)絡(luò)協(xié)議就是網(wǎng)絡(luò)之間溝通、交流的橋梁,只有相同網(wǎng)絡(luò)協(xié)議的計(jì)算機(jī)才能進(jìn)行信息的溝通與交流。這就好比人與人之間交流所使用的各種語(yǔ)言一樣,只有使用相同語(yǔ)言才能正常、順利地進(jìn)行交流。
2. 協(xié)議選擇
網(wǎng)絡(luò)協(xié)議有很多種,但每一種都有側(cè)重點(diǎn),都有其合適的用途。
NetBEUI(NetBIOS Enhanced UserInterface)網(wǎng)絡(luò)基本輸入輸出系統(tǒng)擴(kuò)展用戶接口
NetBEUI協(xié)議是IBM于1985年提出。NetBEUI主要為20到200個(gè)工作站的小型局域網(wǎng)設(shè)計(jì)的,用于NetBEUI、LanMan網(wǎng)、Windows For WorkgroUPS及Windows NT網(wǎng)。它是一個(gè)緊湊、快速的協(xié)議,但由于NetBEUI沒(méi)有路由能力,即不能從一個(gè)局域網(wǎng)經(jīng)路由器到另一個(gè)局域網(wǎng),已不能適應(yīng)較大的網(wǎng)絡(luò)。如果需要路由到其他局域網(wǎng),則必須安裝TCP/IP或IPX/SPX協(xié)議。
IPX/SPX(Internetwork Packet Exchange/Sequential PacketExchange)互連網(wǎng)包交換/順序包交換
它是由Novell提出的用于客戶/服務(wù)器相連的網(wǎng)絡(luò)協(xié)議。使用IPX/SPX協(xié)議能運(yùn)行通常需要NetBEUI支持的程序,通過(guò)IPX/SPX協(xié)議可以跨過(guò)路由器訪問(wèn)其他網(wǎng)絡(luò)。
HDLC(High-Level Data Link Control)高層數(shù)據(jù)鏈路協(xié)議
它是一組用于在網(wǎng)絡(luò)結(jié)點(diǎn)間傳送數(shù)據(jù)的協(xié)議。在HDLC中,數(shù)據(jù)被組成一個(gè)個(gè)的單元(稱為幀)通過(guò)網(wǎng)絡(luò)發(fā)送,并由接收方確認(rèn)收到。HDLC協(xié)議也管理數(shù)據(jù)流和數(shù)據(jù)發(fā)送的間隔時(shí)間。HDLC是在數(shù)據(jù)鏈路層中最廣泛最使用的協(xié)議之一。作為ISO的標(biāo)準(zhǔn),HDLC是基于IBM的SDLC協(xié)議的,SDLC被廣泛用于IBM的大型機(jī)環(huán)境之中。在HDLC中,屬于SDLC的被稱為通響應(yīng)模式(NRM)。在通常響應(yīng)模式中,基站(通常是大型機(jī))發(fā)送數(shù)據(jù)給本地或遠(yuǎn)程的二級(jí)站。不同類(lèi)型的HDLC被用于使用X.25協(xié)議的網(wǎng)絡(luò)和幀中繼網(wǎng)絡(luò),這種協(xié)議可以在局域網(wǎng)或廣域網(wǎng)中使用,無(wú)論此網(wǎng)是公共的還是私人的。
HTTP1.1(Hypertext Transfer Protocol Vertion 1.1)超文本傳輸協(xié)議-版本1.1
它是用來(lái)在Internet上傳送超文本的傳送協(xié)議。它是運(yùn)行在TCP/IP協(xié)議族之上的HTTP應(yīng)用協(xié)議,它可以使瀏覽器更加高效,使網(wǎng)絡(luò)傳輸減少。任何服務(wù)器除了包括HTML文件以外,還有一個(gè)HTTP駐留程序,用于響應(yīng)用戶請(qǐng)求。您的瀏覽器是HTTP客戶,向服務(wù)器發(fā)送請(qǐng)求,當(dāng)瀏覽器中輸入了一個(gè)開(kāi)始文件或點(diǎn)擊了一個(gè)超級(jí)鏈接時(shí),瀏覽器就向服務(wù)器發(fā)送了HTTP請(qǐng)求,此請(qǐng)求被送往由IP地址指定的URL。駐留程序接收到請(qǐng)求,在進(jìn)行必要的操作后回送所要求的文件。
HTTPS(Secure Hypertext Transfer Protocol)安全超文本傳輸協(xié)議
它是由Netscape開(kāi)發(fā)并內(nèi)置于其瀏覽器中,用于對(duì)數(shù)據(jù)進(jìn)行壓縮和解壓操作,并返回網(wǎng)絡(luò)上傳送回的結(jié)果。HTTPS實(shí)際上應(yīng)用了Netscape的完全套接字層(SSL)作為HTTP應(yīng)用層的子層。(HTTPS使用端口443,而不是象HTTP那樣使用端口80來(lái)和TCP/IP進(jìn)行通信。)SSL使用40 位關(guān)鍵字作為RC4流加密算法,這對(duì)于商業(yè)信息的加密是合適的。HTTPS和SSL支持使用X.509數(shù)字認(rèn)證,如果需要的話用戶可以確認(rèn)發(fā)送者是誰(shuí)。
ICMP(Internet Control Message Protocol)Internet控制信息協(xié)議
它是一個(gè)在主機(jī)和網(wǎng)關(guān)之間消息控制和差錯(cuò)報(bào)告協(xié)議。ICMP使用IP數(shù)據(jù)報(bào),但消息由TCP/IP軟件處理,對(duì)于應(yīng)用程序使用者是不可見(jiàn)的。在被稱為Catenet的系統(tǒng)中,IP協(xié)議被用作主機(jī)到主機(jī)的數(shù)據(jù)報(bào)服務(wù)。網(wǎng)絡(luò)連接設(shè)備稱為網(wǎng)關(guān)。這些網(wǎng)關(guān)通過(guò)網(wǎng)關(guān)到網(wǎng)關(guān)協(xié)議(GGP)相互交換用于控制的信息。通常,贍養(yǎng)或目的主機(jī)將和源主機(jī)通信,例如,為報(bào)告在數(shù)據(jù)報(bào)過(guò)程中的錯(cuò)誤。為了這個(gè)目的才使用了ICMP,它使用IP做于底層支持,好像它是一個(gè)高層協(xié)議,而實(shí)際上它是IP的一部分,必須由其它IP模塊實(shí)現(xiàn)。ICMP消息在以下幾種情況下發(fā)送:當(dāng)數(shù)據(jù)報(bào)不能到達(dá)目的地時(shí),當(dāng)網(wǎng)關(guān)的已經(jīng)失去緩存功能,當(dāng)網(wǎng)關(guān)能夠引導(dǎo)主機(jī)在更短路由上發(fā)送。IP并非設(shè)計(jì)為設(shè)計(jì)為絕對(duì)可靠,這個(gè)協(xié)議的目的是為了當(dāng)網(wǎng)絡(luò)出現(xiàn)問(wèn)題的時(shí)候返回控制信息,而不是使IP協(xié)議變得絕對(duì)可靠,并不保證數(shù)據(jù)報(bào)或控制信息能夠返回。一些數(shù)據(jù)報(bào)仍將在沒(méi)有任何報(bào)告的情況下丟失。
3. 常用協(xié)議
網(wǎng)絡(luò)中不同的工作站,服務(wù)器之間能傳輸數(shù)據(jù),源于協(xié)議的存在。隨著網(wǎng)絡(luò)的發(fā)展,不同的開(kāi)發(fā)商開(kāi)發(fā)了不同的通信方式。為了使通信成功可靠,網(wǎng)絡(luò)中的所有主機(jī)都必須使用同一語(yǔ)言,不能帶有方言。因而必須開(kāi)發(fā)嚴(yán)格的標(biāo)準(zhǔn)定義主機(jī)之間的每個(gè)包中每個(gè)字中的每一位。這些標(biāo)準(zhǔn)來(lái)自于多個(gè)組織的努力,約定好通用的通信方式,即協(xié)議。這些都使通信更容易。已經(jīng)開(kāi)發(fā)了許多協(xié)議,但是只有少數(shù)被保留了下來(lái)。那些協(xié)議的淘汰有多中原因—設(shè)計(jì)不好、實(shí)現(xiàn)不好或缺乏支持。而那些保留下來(lái)的協(xié)議經(jīng)歷了時(shí)間的考驗(yàn)并成為有效的通信方法。
一:NETBEUI
NETBEUI是為IBM開(kāi)發(fā)的非路由協(xié)議,用于攜帶NETBIOS通信。NETBEUI缺乏路由和網(wǎng)絡(luò)層尋址功能,既是其最大的優(yōu)點(diǎn),也是其最大的缺點(diǎn)。因?yàn)樗恍枰郊拥木W(wǎng)絡(luò)地址和網(wǎng)絡(luò)層頭尾,所以很快并很有效且適用于只有單個(gè)網(wǎng)絡(luò)或整個(gè)環(huán)境都橋接起來(lái)的小工作組環(huán)境。
因?yàn)椴恢С致酚?#xff0c;所以NETBEUI永遠(yuǎn)不會(huì)成為企業(yè)網(wǎng)絡(luò)的主要協(xié)議。NETBEUI幀中唯一的地址是數(shù)據(jù)鏈路層媒體訪問(wèn)控制(MAC)地址,該地址標(biāo)識(shí)了網(wǎng)卡但沒(méi)有標(biāo)識(shí)網(wǎng)絡(luò)。路由器靠網(wǎng)絡(luò)地址將幀轉(zhuǎn)發(fā)到最終目的地,而NETBEUI幀完全缺乏該信息。網(wǎng)橋負(fù)責(zé)按照數(shù)據(jù)鏈路層地址在網(wǎng)絡(luò)之間轉(zhuǎn)發(fā)通信,但是有很多缺點(diǎn)。因?yàn)樗械膹V播通信都必須轉(zhuǎn)發(fā)到每個(gè)網(wǎng)絡(luò)中,所以網(wǎng)橋的擴(kuò)展性不好。NETBEUI特別包括了廣播通信的記數(shù)并依賴它解決命名沖突。一般而言,橋接NETBEUI網(wǎng)絡(luò)很少超過(guò)100臺(tái)主機(jī)。依賴于第二層交換器的網(wǎng)絡(luò)變得更為普遍。完全的轉(zhuǎn)換環(huán)境降低了網(wǎng)絡(luò)的利用率,盡管廣播仍然轉(zhuǎn)發(fā)到網(wǎng)絡(luò)中的每臺(tái)主機(jī)。事實(shí)上,聯(lián)合使用100-BASE-T Ethernet,允許轉(zhuǎn)換NetBIOS網(wǎng)絡(luò)擴(kuò)展到350臺(tái)主機(jī),才能避免廣播通信成為嚴(yán)重的問(wèn)題。
二:IPX/SPX
IPX是NOVELL用于NETWARE客戶端/服務(wù)器的協(xié)議群組,避免了NETBEUI的弱點(diǎn)。但是,帶來(lái)了新的不同弱點(diǎn)。
IPX具有完全的路由能力,可用于大型企業(yè)網(wǎng)。它包括32位網(wǎng)絡(luò)地址,在單個(gè)環(huán)境中允許有許多路由網(wǎng)絡(luò)。
IPX的可擴(kuò)展性受到其高層廣播通信和高開(kāi)銷(xiāo)的限制。服務(wù)廣告協(xié)議(Service Advertising Protocol,SAP)將路由網(wǎng)絡(luò)中的主機(jī)數(shù)限制為幾千。盡管SAP的局限性已經(jīng)被智能路由器和服務(wù)器配置所克服,但是,大規(guī)模IPX網(wǎng)絡(luò)的管理員仍是非常困難的工作。
三:TCP/IP
每種網(wǎng)絡(luò)協(xié)議都有自己的優(yōu)點(diǎn),但是只有TCP/IP允許與Internet完全的連接。TCP/IP是在60年代由麻省理工學(xué)院和一些商業(yè)組織為美國(guó)國(guó)防部開(kāi)發(fā)的,即便遭到核攻擊而破壞了大部分網(wǎng)絡(luò),TCP/IP仍然能夠維持有效的通信。ARPANET就是由基于協(xié)議開(kāi)發(fā)的,并發(fā)展成為作為科學(xué)家和工程師交流媒體的Internet。
TCP/IP同時(shí)具備了可擴(kuò)展性和可靠性的需求。不幸的是犧牲了速度和效率(可是:TCP/IP的開(kāi)發(fā)受到了政府的資助)。
Internet公用化以后,人們開(kāi)始發(fā)現(xiàn)全球網(wǎng)的強(qiáng)大功能。Internet的普遍性是TCP/IP至今仍然使用的原因。常常在沒(méi)有意識(shí)到的情況下,用戶就在自己的PC上安裝了TCP/IP棧,從而使該網(wǎng)絡(luò)協(xié)議在全球應(yīng)用最廣。
TCP/IP的32位尋址功能方案不足以支持即將加入Internet的主機(jī)和網(wǎng)絡(luò)數(shù)。因而可能代替當(dāng)前實(shí)現(xiàn)的標(biāo)準(zhǔn)是IPv6。
四:RS-232-C
RS-232-C是OSI基本參考模型物理層部分的規(guī)格,它決定了連接器形狀等物理特性、以0和1表示的電氣特性及表示信號(hào)意義的邏輯特性。 RS-232-C是EIA發(fā)表的,是RS-232-B的修改版。本來(lái)是為連接模擬通信線路中的調(diào)制解調(diào)器等DCE及電傳打印機(jī)等DTE拉接口而標(biāo)準(zhǔn)化的。很多個(gè)人計(jì)算機(jī)也用RS-232-C作為輸入輸出接口,用RS-232-C作為接口的個(gè)人計(jì)算機(jī)也很普及。 RS-232-C的如下特點(diǎn):采用直通方式,雙向通信,基本頻帶,電流環(huán)方式,串行傳輸方式,DCE-DTE間使用的信號(hào)形態(tài),交接方式,全雙工通信。RS-232-C在ITU建議的V.24和V.28規(guī)定的25引腳連接器在功能上具有互換性。 RS-232-C所使用的連接器為25引腳插入式連接器,一般稱為25引腳D-SUB。DTE端的電纜頂端接公插頭,DCE端接母插座。 RS-232-C所用電纜的形狀并不固定,但大多使用帶屏蔽的24芯電纜。電纜的最大長(zhǎng)度為15m。使用RS-232-C在200K位/秒以下的任何速率都能進(jìn)行數(shù)據(jù)傳輸。
五:RS-449
RS-449是1977年由EIA發(fā)表的標(biāo)準(zhǔn),它規(guī)定了DTE和DCE之間的機(jī)械特性和電氣特性。RS-449是想取代RS-232-C而開(kāi)發(fā)的標(biāo)準(zhǔn),但是幾乎所有的數(shù)據(jù)通信設(shè)備廠家仍然采用原來(lái)的標(biāo)準(zhǔn),所以RS-232-C仍然是最受歡迎的接口而被廣泛采用。 RS-449的連接器使用ISO規(guī)格的37引腳及9引腳的連接器,2次通道(返回字通道)電路以外的所有相互連接的電路都使用37引腳的連接器,而2次通道電路則采用9引腳連接器。 RS-449的電特性,對(duì)平衡電路來(lái)說(shuō)由RS-422-A規(guī)定,大體與V.11具有相同規(guī)格,而RS-423-A大體與V.10具有相同規(guī)格。V.35V.35是通用終端接口的規(guī)定,其實(shí)V.35是對(duì)60-108kHz群帶寬線路進(jìn)行48Kbps同步數(shù)據(jù)傳輸?shù)恼{(diào)制解調(diào)器的規(guī)定,其中一部分內(nèi)容記述了終端接口的規(guī)定。 V.35對(duì)機(jī)械特性即對(duì)連接器的形狀并未規(guī)定。但由于48Dbps-64Kbps的美國(guó)Bell規(guī)格調(diào)制解調(diào)器的普及,34引腳的ISO2593被廣泛采用。模擬傳輸用的音頻調(diào)制解調(diào)器的電氣條件使用V.28(不平衡電流環(huán)互連電路),而寬頻帶調(diào)制解調(diào)器則使用平衡電流環(huán)電路。X.21X.21是對(duì)公用數(shù)據(jù)網(wǎng)中的同步式終端(DTE)與線路終端(DCE)間接口的規(guī)定。主要是對(duì)兩個(gè)功能進(jìn)行了規(guī)定:其一是與其他接口一樣,對(duì)電氣特性、連接器形狀、相互連接電路的功能特性等的物理層進(jìn)行了規(guī)定;其二是為控制網(wǎng)絡(luò)交換功能的網(wǎng)控制步驟,定義了網(wǎng)絡(luò)層的功能。在專用線連接時(shí)只使用物理層功能,而在線路交換數(shù)據(jù)網(wǎng)中,則使用物理層和網(wǎng)絡(luò)層的兩個(gè)功能。X.21接口用的連接器引腳也只用15引腳電氣特性分別參照V系列接口電氣條件的V.10和V.11。數(shù)字網(wǎng)的同步都是從屬于網(wǎng)絡(luò)主時(shí)鐘的從屬同步。
六:HDLC(高級(jí)數(shù)據(jù)鏈路控制規(guī)程)
HDLC是可靠性高,高速傳輸?shù)目刂埔?guī)程。其特點(diǎn)如下:可進(jìn)行任意位組合的傳輸;可不等待接收端的應(yīng)答,連續(xù)傳輸數(shù)據(jù);錯(cuò)誤控制嚴(yán)密;適合于計(jì)算機(jī)間的通信。HDLC相當(dāng)于OSI基本參照模型的數(shù)據(jù)鏈路層部分的標(biāo)準(zhǔn)方式的一種。HDLC的適用領(lǐng)域很廣,近代協(xié)議的數(shù)據(jù)鏈路層大部分都是基于HDLC的。
七:SDLC(同步數(shù)據(jù)鏈路控制)
是IBM公司制定的協(xié)議,并成為SNA的數(shù)據(jù)鏈路控制層協(xié)議。實(shí)際上也包含于HDLC中。
八:FDDI(光纖分布式數(shù)據(jù)接口)
FDDI的傳輸速度為100Mbps,傳輸媒體為光纖,是令牌控制的LAN。FDDI的物理傳輸時(shí)鐘速度是125MHz,但實(shí)際速度只有100Mbps。可實(shí)際連接的工作站數(shù)最多有500個(gè),但推薦使用100個(gè)以下。FDDI的連接形態(tài)基本上有兩種:一種是用一次環(huán)路和二次環(huán)路的兩個(gè)環(huán)構(gòu)成的環(huán)形結(jié)構(gòu);另一種是以集線器為中心構(gòu)成樹(shù)狀結(jié)構(gòu)。工作站間的距離用光纖為2KM,用雙絞線則為100M。但對(duì)單模光纖制定了節(jié)點(diǎn)間的距離可以延長(zhǎng)到超過(guò)2KM以上的標(biāo)準(zhǔn)。 FDDI有三種接口:DAS(雙配件站);SAS(單配件站);集線器(Concentrater)。通常僅使用一次環(huán)路,二次環(huán)路作為預(yù)備用系統(tǒng)處于備用狀態(tài)。
九:SNMP(簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議)
TCP/IP協(xié)議集中的網(wǎng)絡(luò)管理協(xié)議。已被普遍采用。使用SNMP的管理模型,對(duì)INTERNET進(jìn)行管理的協(xié)議,是在TCP/IP的應(yīng)用層進(jìn)行工作的。其優(yōu)點(diǎn)是,不依賴于網(wǎng)絡(luò)物理層的屬性即可規(guī)定協(xié)議,對(duì)全部網(wǎng)絡(luò)和管理可以采用共同的協(xié)議,管理者和被管理者之間可采用客戶/服務(wù)器的方式,可稱為代理(工具);如果管理者作為客戶機(jī)工作,可稱為管理器或管理站。代理的功能應(yīng)該包括對(duì)操作系統(tǒng)和網(wǎng)絡(luò)管理層的管理,取得有關(guān)對(duì)象的七層信息,并利用SNMP網(wǎng)絡(luò)管理協(xié)議把該信息通知管理者。管理者本身應(yīng)要求對(duì)有關(guān)對(duì)象的信息存儲(chǔ)在代理中所含的MIB(管理信息庫(kù))的虛擬數(shù)據(jù)庫(kù)中。對(duì)SNMP而言,要求能夠取得或設(shè)置由管理到代理網(wǎng)管對(duì)象本身的對(duì)象等內(nèi)容。代理應(yīng)完成管理器要求回答的內(nèi)容。同時(shí),代理本身還應(yīng)把因代理發(fā)生的事件通知管理器。
十、點(diǎn)到點(diǎn)協(xié)議PPP(poin to point protocol)
作為RFC1171/1172而制定的PPP,是在點(diǎn)對(duì)點(diǎn)線路上對(duì)包括IP在內(nèi)的LAN協(xié)議進(jìn)行中繼的Internet標(biāo)準(zhǔn)協(xié)議。PPP從作成當(dāng)初開(kāi)始就對(duì)應(yīng)于多協(xié)議,設(shè)計(jì)成具有不依存于網(wǎng)絡(luò)層協(xié)議的數(shù)據(jù)鏈路。在用PPP對(duì)各個(gè)網(wǎng)絡(luò)層協(xié)議進(jìn)行中繼時(shí),每個(gè)網(wǎng)絡(luò)層協(xié)議必須有某個(gè)對(duì)應(yīng)于PPP的規(guī)格,這些規(guī)格有一些已經(jīng)存在。PPP的實(shí)際安裝已經(jīng)開(kāi)始,特別是必須適應(yīng)多協(xié)議的路由器廠家積極采用PPP。 PPP是由兩種協(xié)議構(gòu)成的:一種是為了確保不依存于協(xié)議的數(shù)據(jù)鏈路而采用的LCP(數(shù)據(jù)鏈路控制協(xié)議);另一種為了實(shí)現(xiàn)在PPP環(huán)境中利用網(wǎng)絡(luò)層協(xié)議控制功有的NCP(網(wǎng)絡(luò)控制協(xié)議)。NCP從其目的出發(fā)需要在每個(gè)網(wǎng)絡(luò)層協(xié)議都要作規(guī)定。NCP的具體名稱在對(duì)應(yīng)的網(wǎng)絡(luò)層協(xié)議中有所不同。更準(zhǔn)確地說(shuō),PPP所規(guī)定協(xié)議只是LCP,至于將NCP及網(wǎng)絡(luò)層協(xié)議如何放入PPP幀中,要由開(kāi)發(fā)各種網(wǎng)絡(luò)層協(xié)議的廠家進(jìn)行。PPP幀具有傳輸LCP、NCP及網(wǎng)絡(luò)層協(xié)議的功能。對(duì)利用LCP的物理層規(guī)格沒(méi)有特殊限制??梢岳肦S-232-C、RS-422/423、V.35等通用的物理連接器。傳輸速度的應(yīng)用領(lǐng)域也沒(méi)有特別規(guī)定,可以利用物理層規(guī)格所容許的傳輸速度。而要采用全雙工方式的通信線路。
二. 協(xié)議協(xié)議,究竟什么是協(xié)議?
其實(shí),協(xié)議就是規(guī)定!就是一系列約定俗稱的規(guī)則,使彼此之間的溝通(通信)更加快捷!(閉門(mén)造車(chē),車(chē)門(mén)合轍~)
1.舉個(gè)例子
假如你現(xiàn)在開(kāi)發(fā)一個(gè)計(jì)算服務(wù)器和一個(gè)計(jì)算器。計(jì)算器程序每次會(huì)把運(yùn)算符和操作數(shù)放到一個(gè)數(shù)據(jù)包里發(fā)送給計(jì)算服務(wù)器進(jìn)行計(jì)算請(qǐng)求。然后服務(wù)器返回結(jié)果響應(yīng)。
我們?cè)谏鲜鐾ㄐ胚^(guò)程中,遵循的協(xié)議大概如下圖所示:(其實(shí)就是通信規(guī)則嘛)
如果沒(méi)有上述協(xié)議的規(guī)范化,我們自然就沒(méi)有辦法統(tǒng)一 數(shù)據(jù)包的格式,也沒(méi)有辦法統(tǒng)一 響應(yīng)狀態(tài)碼的值。
這種情況下,就相當(dāng)于兩個(gè)語(yǔ)言不通的人講話,自然無(wú)法交流。
只有當(dāng)我們統(tǒng)一了交流語(yǔ)言,也就是統(tǒng)一了 協(xié)議 之后,通信才能正常進(jìn)行,彼此才能知道對(duì)方的狀態(tài)。
2.計(jì)算機(jī)網(wǎng)絡(luò)一般分為5層
每一層都有自己的協(xié)議,我們一層一層來(lái)介紹,為什么要有這樣的協(xié)議。
應(yīng)用層
最常見(jiàn)的應(yīng)用層協(xié)議就是訪問(wèn)網(wǎng)站用的HTTP協(xié)議了。
試想,如果沒(méi)有統(tǒng)一的HTTP協(xié)議,那么我們?cè)L問(wèn)不同的網(wǎng)站服務(wù)器,將是以下情形:
如果用戶A(瀏覽器)用Apache的格式去訪問(wèn)Tomcat服務(wù)器,毫無(wú)疑問(wèn),TomCat無(wú)法理解你請(qǐng)求的內(nèi)容。
也就是說(shuō),瀏覽器得根據(jù)不同的服務(wù)器類(lèi)型,發(fā)送不同格式的協(xié)議數(shù)據(jù)包。這簡(jiǎn)直是太麻煩了!
既然都是訪問(wèn)網(wǎng)站,為什么不統(tǒng)一一種數(shù)據(jù)格式呢?我們每次訪問(wèn)網(wǎng)站就按照這種格式傳遞數(shù)據(jù)不就好了嘛?
因此,國(guó)際標(biāo)準(zhǔn)化組織提出統(tǒng)一的HTTP協(xié)議。
所有的瀏覽器公司,都要按照HTTP協(xié)議的設(shè)定,來(lái)設(shè)計(jì)自己的程序。
同樣的,所有的服務(wù)器公司,也要按照HTTP協(xié)議的設(shè)定,設(shè)計(jì)自己的服務(wù)器程序。
如此一來(lái),Google瀏覽器可以用相同的數(shù)據(jù)格式訪問(wèn)各種服務(wù)器,不僅如此,IE, 360都是如此,大家相處和睦,通信不會(huì)有問(wèn)題。
傳輸層
傳輸層的代表協(xié)議是TCP和UDP。傳輸層的主要作用就是控制數(shù)據(jù)傳輸過(guò)程的可靠性。(UDP除外)
一般來(lái)講,傳輸層的功能都是由操作系統(tǒng)實(shí)現(xiàn)了。
試想,如果Windows和Linux實(shí)現(xiàn)不同的傳輸層協(xié)議,那么由于數(shù)據(jù)格式的差異,彼此之間無(wú)法通信。
因此,傳輸層協(xié)議的統(tǒng)一性也是必要的。 它使不同操作系統(tǒng)之間也能進(jìn)行可靠傳輸
國(guó)際標(biāo)準(zhǔn)化組織就提出了TCP和UDP這兩個(gè)統(tǒng)一標(biāo)準(zhǔn)。
網(wǎng)絡(luò)層
網(wǎng)絡(luò)層同理。它要完成尋址的功能,必然要有同種格式的地址才行。那么IP協(xié)議應(yīng)運(yùn)而生,通過(guò)規(guī)定IP地址,在網(wǎng)絡(luò)中唯一標(biāo)識(shí)一臺(tái)計(jì)算機(jī)。如果地址格式都不同,那如何尋址?
此外,統(tǒng)一網(wǎng)絡(luò)層協(xié)議,可以讓數(shù)據(jù)包經(jīng)過(guò)不同廠商生產(chǎn)的路由器進(jìn)行傳播。甭管你是華為路由器還是TPLink路由器,只要都服從IP協(xié)議,那就可以傳輸數(shù)據(jù)包。
數(shù)據(jù)鏈路層
數(shù)據(jù)鏈路層主要負(fù)責(zé)一個(gè)鏈路之間信息的傳遞。
只要你是以太網(wǎng)網(wǎng)卡,那么不管你是哪個(gè)公司生產(chǎn)的,都要求是根據(jù)以太網(wǎng)協(xié)議設(shè)計(jì)而來(lái),都能識(shí)別以太網(wǎng)的首部。因此規(guī)定了以太網(wǎng)協(xié)議。
物理層
我們都知道,計(jì)算機(jī)里面都是1010
那么物理傳輸中,可以用高低電平、光、無(wú)線信號(hào)等手段模擬二進(jìn)制來(lái)傳播。
如果通信雙方使用的物理協(xié)議都不一致,那么對(duì)信息的理解必然會(huì)出錯(cuò):
三.總結(jié)
為什么網(wǎng)絡(luò)中要有協(xié)議這個(gè)概念?
為什么要將相同功能的協(xié)議進(jìn)行統(tǒng)一化?
為什么通信雙方要用相同的協(xié)議?
為了快捷有效的通信!!!
四. TCP/IP協(xié)議簡(jiǎn)介
現(xiàn)在Internet(因特網(wǎng))使用的主流協(xié)議族是TCP/IP協(xié)議族,它是一個(gè)分層、多協(xié)議的通信體系。簡(jiǎn)單說(shuō)一下TCP/IP協(xié)議族體系結(jié)構(gòu)以及主要協(xié)議
1.TCP/IP協(xié)議族體系結(jié)構(gòu)以及主要協(xié)議
TCP/IP協(xié)議族是一個(gè)四層協(xié)議系統(tǒng),自底而上分別是數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層、傳輸層和應(yīng)用層。每一層完成不同的功能,且通過(guò)若干協(xié)議來(lái)實(shí)現(xiàn),上層協(xié)議使用下層協(xié)議提供的服務(wù),如下圖所示。
1.1 數(shù)據(jù)鏈路層
數(shù)據(jù)鏈路層實(shí)現(xiàn)了網(wǎng)卡接口的網(wǎng)絡(luò)驅(qū)動(dòng)程序,以處理數(shù)據(jù)在物理媒介(比如以太網(wǎng)、令牌環(huán)等)上的傳輸。不同的物理網(wǎng)絡(luò)具有不同的電氣特性,網(wǎng)絡(luò)驅(qū)動(dòng)程序隱藏了這些細(xì)節(jié),為上層協(xié)議提供一個(gè)統(tǒng)一的接口。
數(shù)據(jù)鏈路層兩個(gè)常用的協(xié)議是ARP協(xié)議(Address Resolve Protocol,地址解析協(xié)議)和RARP協(xié)議(Reverse Address Resolve Protocol,逆地址解析協(xié)議)。它們實(shí)現(xiàn)了IP地址和機(jī)器物理地址(通常是MAC地址,以太網(wǎng)、令牌環(huán)和802.11無(wú)線網(wǎng)絡(luò)都使用MAC地址)之間的相互轉(zhuǎn)換。
網(wǎng)絡(luò)層使用IP地址尋址一臺(tái)機(jī)器,而數(shù)據(jù)鏈路層使用物理地址尋址一臺(tái)機(jī)器,因此網(wǎng)絡(luò)層必須先將目標(biāo)機(jī)器的IP地址轉(zhuǎn)化成其物理地址,才能使用數(shù)據(jù)鏈路層提供的服務(wù),這就是ARP協(xié)議的用途。RARP協(xié)議僅用于網(wǎng)絡(luò)上的某些無(wú)盤(pán)工作站。因?yàn)槿狈Υ鎯?chǔ)設(shè)備,無(wú)盤(pán)工作站無(wú)法記住自己的IP地址,但它們可以利用網(wǎng)卡上的物理地址來(lái)向網(wǎng)絡(luò)管理者(服務(wù)器或網(wǎng)絡(luò)管理軟件)查詢自身的IP地址。運(yùn)行RARP服務(wù)的網(wǎng)絡(luò)管理者通常存有該網(wǎng)絡(luò)上所有機(jī)器的物理地址到IP地址的映射。
1.2 網(wǎng)絡(luò)層
網(wǎng)絡(luò)層實(shí)現(xiàn)數(shù)據(jù)包的選路和轉(zhuǎn)發(fā)。WAN(Wide Area Network,廣域網(wǎng))通常使用眾多分級(jí)的路由器來(lái)連接分散的主機(jī)或LAN(Local Area Network,局域網(wǎng)),因此,通信的兩臺(tái)主機(jī)一般不是直接相連的,而是通過(guò)多個(gè)中間節(jié)點(diǎn)(路由器)連接的。網(wǎng)絡(luò)層的任務(wù)就是選擇這些中間節(jié)點(diǎn),以確定兩臺(tái)主機(jī)之間的通信路徑。同時(shí),網(wǎng)絡(luò)層對(duì)上層協(xié)議隱藏了網(wǎng)絡(luò)拓?fù)溥B接的細(xì)節(jié),使得在傳輸層和網(wǎng)絡(luò)應(yīng)用程序看來(lái),通信的雙方是直接相連的。
網(wǎng)絡(luò)層最核心的協(xié)議是IP協(xié)議(Internet Protocol,因特網(wǎng)協(xié)議)。IP協(xié)議根據(jù)數(shù)據(jù)包的目的IP地址來(lái)決定如何投遞它。如果數(shù)據(jù)包不能直接發(fā)送給目標(biāo)主機(jī),那么IP協(xié)議就為它尋找一個(gè)合適的下一跳(next hop)路由器,并將數(shù)據(jù)包交付給該路由器來(lái)轉(zhuǎn)發(fā)。多次重復(fù)這一過(guò)程,數(shù)據(jù)包最終到達(dá)目標(biāo)主機(jī),或者由于發(fā)送失敗而被丟棄??梢?jiàn),IP協(xié)議使用逐跳(hop by hop)的方式確定通信路徑。
網(wǎng)絡(luò)層另外一個(gè)重要的協(xié)議是ICMP協(xié)議(Internet Control Message Protocol,因特網(wǎng)控制報(bào)文協(xié)議)。它是IP協(xié)議的重要補(bǔ)充,主要用于檢測(cè)網(wǎng)絡(luò)連接。ICMP協(xié)議使用的報(bào)文格式如下圖所示。
上圖中,8位類(lèi)型字段用于區(qū)分報(bào)文類(lèi)型。它將ICMP報(bào)文分為兩大類(lèi):一類(lèi)是差錯(cuò)報(bào)文,這類(lèi)報(bào)文主要用來(lái)回應(yīng)網(wǎng)絡(luò)錯(cuò)誤,比如目標(biāo)不可到達(dá)(類(lèi)型值為3)和重定向(類(lèi)型值為5);另一類(lèi)是查詢報(bào)文,這類(lèi)報(bào)文用來(lái)查詢網(wǎng)絡(luò)信息,比如ping程序就是使用ICMP報(bào)文查看目標(biāo)是否可到達(dá)(類(lèi)型值為8)的。有的ICMP報(bào)文還使用8位代碼字段來(lái)進(jìn)一步細(xì)分不同的條件。比如重定向報(bào)文使用代碼值0表示對(duì)網(wǎng)絡(luò)重定向,代碼值1表示對(duì)主機(jī)重定向。ICMP報(bào)文使用16位校驗(yàn)和字段對(duì)整個(gè)報(bào)文(包括頭部和內(nèi)容部分)進(jìn)行循環(huán)冗余校驗(yàn)(Cyclic Redundancy Check,CRC),以檢驗(yàn)報(bào)文在傳輸過(guò)程中是否損壞。不同的ICMP報(bào)文類(lèi)型具有不同的正文內(nèi)容。ICMP報(bào)文格式可以參考ICMP協(xié)議的標(biāo)準(zhǔn)文檔RFC 792。
需要指出的是,ICMP協(xié)議并非嚴(yán)格意義上的網(wǎng)絡(luò)層協(xié)議,因?yàn)樗褂锰幱谕粚拥腎P協(xié)議提供的服務(wù)(一般來(lái)說(shuō),上層協(xié)議使用下層協(xié)議提供的服務(wù))。
1.3 傳輸層
傳輸層為兩臺(tái)主機(jī)上的應(yīng)用程序提供端到端(end to end)的通信。與網(wǎng)絡(luò)層使用的逐跳通信方式不同,傳輸層只關(guān)心通信的起始端和目的端,而不在乎數(shù)據(jù)包的中轉(zhuǎn)過(guò)程。下圖展示了傳輸層和網(wǎng)絡(luò)層的這種區(qū)別。
上圖中,垂直的實(shí)線箭頭表示TCP/IP協(xié)議族各層之間的實(shí)體通信(數(shù)據(jù)包確實(shí)是沿著這些線路傳遞的),而水平的虛線箭頭表示邏輯通信線路。該圖中還附帶描述了不同物理網(wǎng)絡(luò)的連接方法??梢?jiàn),數(shù)據(jù)鏈路層(驅(qū)動(dòng)程序)封裝了物理網(wǎng)絡(luò)的電氣細(xì)節(jié);網(wǎng)絡(luò)層封裝了網(wǎng)絡(luò)連接的細(xì)節(jié);傳輸層則為應(yīng)用程序封裝了一條端到端的邏輯通信鏈路,它負(fù)責(zé)數(shù)據(jù)的收發(fā)、鏈路的超時(shí)重連等。
傳輸層協(xié)議主要有三個(gè):TCP協(xié)議、UDP協(xié)議和SCTP協(xié)議。
TCP協(xié)議(Transmission Control Protocol,傳輸控制協(xié)議)為應(yīng)用層提供可靠的、面向連接的和基于流(stream)的服務(wù)。TCP協(xié)議使用超時(shí)重傳、數(shù)據(jù)確認(rèn)等方式來(lái)確保數(shù)據(jù)包被正確地發(fā)送至目的端,因此TCP服務(wù)是可靠的。使用TCP協(xié)議通信的雙方必須先建立TCP連接,并在內(nèi)核中為該連接維持一些必要的數(shù)據(jù)結(jié)構(gòu),比如連接的狀態(tài)、讀寫(xiě)緩沖區(qū),以及諸多定時(shí)器等。當(dāng)通信結(jié)束時(shí),雙方必須關(guān)閉連接以釋放這些內(nèi)核數(shù)據(jù)。TCP服務(wù)是基于流的?;诹鞯臄?shù)據(jù)沒(méi)有邊界(長(zhǎng)度)限制,它源源不斷地從通信的一端流入另一端。發(fā)送端可以逐個(gè)字節(jié)地向數(shù)據(jù)流中寫(xiě)入數(shù)據(jù),接收端也可以逐個(gè)字節(jié)地將它們讀出。
UDP協(xié)議(User Datagram Protocol,用戶數(shù)據(jù)報(bào)協(xié)議)則與TCP協(xié)議完全相反,它為應(yīng)用層提供不可靠、無(wú)連接和基于數(shù)據(jù)報(bào)的服務(wù)?!安豢煽俊币馕吨鳸DP協(xié)議無(wú)法保證數(shù)據(jù)從發(fā)送端正確地傳送到目的端。如果數(shù)據(jù)在中途丟失,或者目的端通過(guò)數(shù)據(jù)校驗(yàn)發(fā)現(xiàn)數(shù)據(jù)錯(cuò)誤而將其丟棄,則UDP協(xié)議只是簡(jiǎn)單地通知應(yīng)用程序發(fā)送失敗。因此,使用UDP協(xié)議的應(yīng)用程序通常要自己處理數(shù)據(jù)確認(rèn)、超時(shí)重傳等邏輯。UDP協(xié)議是無(wú)連接的,即通信雙方不保持一個(gè)長(zhǎng)久的聯(lián)系,因此應(yīng)用程序每次發(fā)送數(shù)據(jù)都要明確指定接收端的地址(IP地址等信息)?;跀?shù)據(jù)報(bào)的服務(wù),是相對(duì)基于流的服務(wù)而言的。每個(gè)UDP數(shù)據(jù)報(bào)都有一個(gè)長(zhǎng)度,接收端必須以該長(zhǎng)度為最小單位將其所有內(nèi)容一次性讀出,否則數(shù)據(jù)將被截?cái)唷?br /> SCTP協(xié)議(Stream Control Transmission Protocol,流控制傳輸協(xié)議)是一種相對(duì)較新的傳輸層協(xié)議,它是為了在因特網(wǎng)上傳輸電話信號(hào)而設(shè)計(jì)的。SCTP協(xié)議的具體內(nèi)容可參考其標(biāo)準(zhǔn)文檔RFC 2960。
1.4 應(yīng)用層
應(yīng)用層負(fù)責(zé)處理應(yīng)用程序的邏輯。數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層和傳輸層負(fù)責(zé)處理網(wǎng)絡(luò)通信細(xì)節(jié),這部分必須既穩(wěn)定又高效,因此它們都在內(nèi)核空間中實(shí)現(xiàn),如圖1所示。而應(yīng)用層則在用戶空間實(shí)現(xiàn),因?yàn)樗?fù)責(zé)處理眾多邏輯,比如文件傳輸、名稱示。而應(yīng)用層則在用戶空間實(shí)現(xiàn),因?yàn)樗?fù)責(zé)處理眾多邏輯,比如文件傳輸、名稱查詢和網(wǎng)絡(luò)管理等。如果應(yīng)用層也在內(nèi)核中實(shí)現(xiàn),則會(huì)使內(nèi)核變得非常龐大。當(dāng)然,也有少數(shù)服務(wù)器程序是在內(nèi)核中實(shí)現(xiàn)的,這樣代碼就無(wú)須在用戶空間和內(nèi)核空間來(lái)回切換(主要是數(shù)據(jù)的復(fù)制),極大地提高了工作效率。不過(guò)這種代碼實(shí)現(xiàn)起來(lái)較復(fù)雜,不夠靈活,且不便于移植。本書(shū)只討論用戶空間的網(wǎng)絡(luò)編程。
應(yīng)用層協(xié)議很多,圖1僅列舉了其中的幾個(gè):
ping是應(yīng)用程序,而不是協(xié)議,前面說(shuō)過(guò)它利用ICMP報(bào)文檢測(cè)網(wǎng)絡(luò)連接,是調(diào)試網(wǎng)絡(luò)環(huán)境的必備工具。
telnet協(xié)議是一種遠(yuǎn)程登錄協(xié)議,它使我們能在本地完成遠(yuǎn)程任務(wù),本書(shū)后續(xù)章節(jié)將會(huì)多次使用telnet客戶端登錄到其他服務(wù)上。
OSPF(Open Shortest Path First,開(kāi)放最短路徑優(yōu)先)協(xié)議是一種動(dòng)態(tài)路由更新協(xié)議,用于路由器之間的通信,以告知對(duì)方各自的路由信息。
DNS(Domain Name Service,域名服務(wù))協(xié)議提供機(jī)器域名到IP地址的轉(zhuǎn)換,我們將在后面簡(jiǎn)要介紹DNS協(xié)議。
應(yīng)用層協(xié)議(或程序)可能跳過(guò)傳輸層直接使用網(wǎng)絡(luò)層提供的服務(wù),比如ping程序和OSPF協(xié)議。應(yīng)用層協(xié)議(或程序)通常既可以使用TCP服務(wù),又可以使用UDP服務(wù),比如DNS協(xié)議。我們可以通過(guò)/etc/services文件查看所有知名的應(yīng)用層協(xié)議,以及它們都能使用哪些傳輸層服務(wù)。
五. HTTP協(xié)議簡(jiǎn)介
HTTP協(xié)議—WWW的核心
眾所周知,Internet的基本協(xié)議是TCP/IP協(xié)議,目前廣泛采用的FTP、Archie Gopher等是建立在TCP/IP協(xié)議之上的應(yīng)用層協(xié)議,不同的協(xié)議對(duì)應(yīng)著不同的應(yīng)用。WWW服務(wù)器使用的主要協(xié)議是HTTP協(xié)議,即超文體傳輸協(xié)議。由于HTTP協(xié)議支持的服務(wù)不限于WWW,還可以是其它服務(wù),因而HTTP協(xié)議允許用戶在統(tǒng)一的界面下,采用不同的協(xié)議訪問(wèn)不同的服務(wù),如FTP、Archie、SMTP、NNTP等。另外,HTTP協(xié)議還可用于名字服務(wù)器和分布式對(duì)象管理。
1. HTTP協(xié)議特點(diǎn)
HTTP是一個(gè)屬于應(yīng)用層的面向?qū)ο蟮膮f(xié)議,由于其簡(jiǎn)捷、快速的方式,適用于分布式超媒體信息系統(tǒng)。它于1990年提出,經(jīng)過(guò)幾年的使用與發(fā)展,得到不斷地完善和擴(kuò)展。目前在WWW中使用的是HTTP/1.0的第六版,HTTP/1.1的規(guī)范化工作正在進(jìn)行之中,而且HTTP-NG(Next Generation of HTTP)的建議已經(jīng)提出。
HTTP協(xié)議的主要特點(diǎn)可概括如下:
1.支持客戶/服務(wù)器模式。
2.簡(jiǎn)單快速:客戶向服務(wù)器請(qǐng)求服務(wù)時(shí),只需傳送請(qǐng)求方法和路徑。請(qǐng)求方法常用的有GET、HEAD、POST。每種方法規(guī)定了客戶與服務(wù)器聯(lián)系的類(lèi)型不同。
由于HTTP協(xié)議簡(jiǎn)單,使得HTTP服務(wù)器的程序規(guī)模小,因而通信速度很快。
3.靈活:HTTP允許傳輸任意類(lèi)型的數(shù)據(jù)對(duì)象。正在傳輸?shù)念?lèi)型由Content-Type加以標(biāo)記。
4.無(wú)連接:無(wú)連接的含義是限制每次連接只處理一個(gè)請(qǐng)求。服務(wù)器處理完客戶的請(qǐng)求,并收到客戶的應(yīng)答后,即斷開(kāi)連接。采用這種方式可以節(jié)省傳輸時(shí)間。
5.無(wú)狀態(tài):HTTP協(xié)議是無(wú)狀態(tài)協(xié)議。無(wú)狀態(tài)是指協(xié)議對(duì)于事務(wù)處理沒(méi)有記憶能力。缺少狀態(tài)意味著如果后續(xù)處理需要前面的信息,則它必須重傳,這樣可能導(dǎo)致每次連接傳送的數(shù)據(jù)量增大。另一方面,在服務(wù)器不需要先前信息時(shí)它的應(yīng)答就較快。
2. 幾個(gè)重要概念
1.連接(Connection):一個(gè)傳輸層的實(shí)際環(huán)流,它是建立在兩個(gè)相互通訊的應(yīng)用程序之間。
2.消息(Message):HTTP通訊的基本單位,包括一個(gè)結(jié)構(gòu)化的八元組序列并通過(guò)連接傳輸。
3.請(qǐng)求(Request):一個(gè)從客戶端到服務(wù)器的請(qǐng)求信息包括應(yīng)用于資源的方法、資源的標(biāo)識(shí)符和協(xié)議的版本號(hào)
4.響應(yīng)(Response):一個(gè)從服務(wù)器返回的信息包括HTTP協(xié)議的版本號(hào)、請(qǐng)求的狀態(tài)(例如“成功”或“沒(méi)找到”)和文檔的MIME類(lèi)型。
5.資源(Resource):由URI標(biāo)識(shí)的網(wǎng)絡(luò)數(shù)據(jù)對(duì)象或服務(wù)。
6.實(shí)體(Entity):數(shù)據(jù)資源或來(lái)自服務(wù)資源的回映的一種特殊表示方法,它可能被包圍在一個(gè)請(qǐng)求或響應(yīng)信息中。一個(gè)實(shí)體包括實(shí)體頭信息和實(shí)體的本身內(nèi)容。
7.客戶機(jī)(Client):一個(gè)為發(fā)送請(qǐng)求目的而建立連接的應(yīng)用程序。
8.用戶代理(User agent):初始化一個(gè)請(qǐng)求的客戶機(jī)。它們是瀏覽器、編輯器或其它用戶工具。
9.服務(wù)器(Server):一個(gè)接受連接并對(duì)請(qǐng)求返回信息的應(yīng)用程序。
10.源服務(wù)器(Origin server):是一個(gè)給定資源可以在其上駐留或被創(chuàng)建的服務(wù)器。
11.代理(Proxy):一個(gè)中間程序,它可以充當(dāng)一個(gè)服務(wù)器,也可以充當(dāng)一個(gè)客戶機(jī),為其它客戶機(jī)建立請(qǐng)求。請(qǐng)求是通過(guò)可能的翻譯在內(nèi)部或經(jīng)過(guò)傳遞到其它的服務(wù)器中。一個(gè)代理在發(fā)送請(qǐng)求信息之前,必須解釋并且如果可能重寫(xiě)它。
代理經(jīng)常作為通過(guò)防火墻的客戶機(jī)端的門(mén)戶,代理還可以作為一個(gè)幫助應(yīng)用來(lái)通過(guò)協(xié)議處理沒(méi)有被用戶代理完成的請(qǐng)求。
12.網(wǎng)關(guān)(Gateway):一個(gè)作為其它服務(wù)器中間媒介的服務(wù)器。與代理不同的是,網(wǎng)關(guān)接受請(qǐng)求就好象對(duì)被請(qǐng)求的資源來(lái)說(shuō)它就是源服務(wù)器;發(fā)出請(qǐng)求的客戶機(jī)并沒(méi)有意識(shí)到它在同網(wǎng)關(guān)打交道。
網(wǎng)關(guān)經(jīng)常作為通過(guò)防火墻的服務(wù)器端的門(mén)戶,網(wǎng)關(guān)還可以作為一個(gè)協(xié)議翻譯器以便存取那些存儲(chǔ)在非HTTP系統(tǒng)中的資源。
13.通道(Tunnel):是作為兩個(gè)連接中繼的中介程序。一旦激活,通道便被認(rèn)為不屬于HTTP通訊,盡管通道可能是被一個(gè)HTTP請(qǐng)求初始化的。當(dāng)被中繼的連接兩端關(guān)閉時(shí),通道便消失。當(dāng)一個(gè)門(mén)戶(Portal)必須存在或中介(Intermediary)不能解釋中繼的通訊時(shí)通道被經(jīng)常使用。
14.緩存(Cache):反應(yīng)信息的局域存儲(chǔ)。
3. 運(yùn)作方式
HTTP協(xié)議是基于請(qǐng)求/響應(yīng)范式的。一個(gè)客戶機(jī)與服務(wù)器建立連接后,發(fā)送一個(gè)請(qǐng)求給服務(wù)器,請(qǐng)求方式的格式為,統(tǒng)一資源標(biāo)識(shí)符、協(xié)議版本號(hào),后邊是MIME信息包括請(qǐng)求修飾符、客戶機(jī)信息和可能的內(nèi)容。服務(wù)器接到請(qǐng)求后,給予相應(yīng)的響應(yīng)信息,其格式為一個(gè)狀態(tài)行包括信息的協(xié)議版本號(hào)、一個(gè)成功或錯(cuò)誤的代碼,后邊是MIME信息包括服務(wù)器信息、實(shí)體信息和可能的內(nèi)容。
許多HTTP通訊是由一個(gè)用戶代理初始化的并且包括一個(gè)申請(qǐng)?jiān)谠捶?wù)器上資源的請(qǐng)求。最簡(jiǎn)單的情況可能是在用戶代理(UA)和源服務(wù)器(O)之間通過(guò)一個(gè)單獨(dú)的連接來(lái)完成
當(dāng)一個(gè)或多個(gè)中介出現(xiàn)在請(qǐng)求/響應(yīng)鏈中時(shí),情況就變得復(fù)雜一些。中介由三種:代理(Proxy)、網(wǎng)關(guān)(Gateway)和通道(Tunnel)。一個(gè)代理根據(jù)URI的絕對(duì)格式來(lái)接受請(qǐng)求,重寫(xiě)全部或部分消息,通過(guò)URI的標(biāo)識(shí)把已格式化過(guò)的請(qǐng)求發(fā)送到服務(wù)器。網(wǎng)關(guān)是一個(gè)接收代理,作為一些其它服務(wù)器的上層,并且如果必須的話,可以把請(qǐng)求翻譯給下層的服務(wù)器協(xié)議。一個(gè)通道作為不改變消息的兩個(gè)連接之間的中繼點(diǎn)。當(dāng)通訊需要通過(guò)一個(gè)中介(例如:防火墻等)或者是中介不能識(shí)別消息的內(nèi)容時(shí),通道經(jīng)常被使用。
在用戶代理(UA)和源服務(wù)器(O)之間有三個(gè)中介(A,B和C)。一個(gè)通過(guò)整個(gè)鏈的請(qǐng)求或響應(yīng)消息必須經(jīng)過(guò)四個(gè)連接段。這個(gè)區(qū)別是重要的,因?yàn)橐恍〩TTP通訊選擇可能應(yīng)用于最近的連接、沒(méi)有通道的鄰居,應(yīng)用于鏈的終點(diǎn)或應(yīng)用于沿鏈的所有連接。每個(gè)參與者都可能從事多重的、并發(fā)的通訊。例如,B可能從許多客戶機(jī)接收請(qǐng)求而不通過(guò)A,并且/或者不通過(guò)C把請(qǐng)求送到A,在同時(shí)它還可能處理A的請(qǐng)求。
任何針對(duì)不作為通道的匯聚可能為處理請(qǐng)求啟用一個(gè)內(nèi)部緩存。緩存的效果是請(qǐng)求/響應(yīng)鏈被縮短,條件是沿鏈的參與者之一具有一個(gè)緩存的響應(yīng)作用于那個(gè)請(qǐng)求。下圖說(shuō)明結(jié)果鏈,其條件是針對(duì)一個(gè)未被UA或A加緩存的請(qǐng)求,B有一個(gè)經(jīng)過(guò)C來(lái)自O(shè)的一個(gè)前期響應(yīng)的緩存拷貝。
在Internet上,HTTP通訊通常發(fā)生在TCP/IP連接之上。缺省端口是TCP 80,但其它的端口也是可用的。但這并不預(yù)示著HTTP協(xié)議在Internet或其它網(wǎng)絡(luò)的其它協(xié)議之上才能完成。HTTP只預(yù)示著一個(gè)可靠的傳輸。
以上簡(jiǎn)要介紹了HTTP協(xié)議的宏觀運(yùn)作方式,下面介紹一下HTTP協(xié)議的內(nèi)部操作過(guò)程。
首先,簡(jiǎn)單介紹基于HTTP協(xié)議的客戶/服務(wù)器模式的信息交換過(guò)程,如圖2-4所示,它分四個(gè)過(guò)程,建立連接、發(fā)送請(qǐng)求信息、發(fā)送響應(yīng)信息、關(guān)閉連接。
在WWW中,“客戶”與“服務(wù)器”是一個(gè)相對(duì)的概念,只存在于一個(gè)特定的連接期間,即在某個(gè)連接中的客戶在另一個(gè)連接中可能作為服務(wù)器。WWW服務(wù)器運(yùn)行時(shí),一直在TCP80端口(WWW的缺省端口)監(jiān)聽(tīng),等待連接的出現(xiàn)。
下面,討論HTTP協(xié)議下客戶/服務(wù)器模式中信息交換的實(shí)現(xiàn)。
1.建立連接 連接的建立是通過(guò)申請(qǐng)?zhí)捉幼?Socket)實(shí)現(xiàn)的??蛻舸蜷_(kāi)一個(gè)套接字并把它約束在一個(gè)端口上,如果成功,就相當(dāng)于建立了一個(gè)虛擬文件。以后就可以在該虛擬文件上寫(xiě)數(shù)據(jù)并通過(guò)網(wǎng)絡(luò)向外傳送。
2.發(fā)送請(qǐng)求
打開(kāi)一個(gè)連接后,客戶機(jī)把請(qǐng)求消息送到服務(wù)器的停留端口上,完成提出請(qǐng)求動(dòng)作。
HTTP/1.0 請(qǐng)求消息的格式為:
請(qǐng)求消息=請(qǐng)求行(通用信息|請(qǐng)求頭|實(shí)體頭) CRLF[實(shí)體內(nèi)容]
請(qǐng)求 行=方法 請(qǐng)求URL HTTP版本號(hào) CRLF
方 法=GET|HEAD|POST|擴(kuò)展方法
U R L=協(xié)議名稱+宿主名+目錄與文件名
請(qǐng)求行中的方法描述指定資源中應(yīng)該執(zhí)行的動(dòng)作,常用的方法有GET、HEAD和POST。不同的請(qǐng)求對(duì)象對(duì)應(yīng)GET的結(jié)果是不同的,對(duì)應(yīng)關(guān)系如下:
對(duì)象 GET的結(jié)果
文件 文件的內(nèi)容
程序 該程序的執(zhí)行結(jié)果
數(shù)據(jù)庫(kù)查詢 查詢結(jié)果
HEAD——要求服務(wù)器查找某對(duì)象的元信息,而不是對(duì)象本身。
POST——從客戶機(jī)向服務(wù)器傳送數(shù)據(jù),在要求服務(wù)器和CGI做進(jìn)一步處理時(shí)會(huì)用到POST方法。POST主要用于發(fā)送HTML文本中FORM的內(nèi)容,讓CGI程序處理。
一個(gè)請(qǐng)求的例子為:
GET http://networking.zju.edu.cn/zju/index.htm HTTP/1.0
頭信息又稱為元信息,即信息的信息,利用元信息可以實(shí)現(xiàn)有條件的請(qǐng)求或應(yīng)答 。
請(qǐng)求頭——告訴服務(wù)器怎樣解釋本次請(qǐng)求,主要包括用戶可以接受的數(shù)據(jù)類(lèi)型、壓縮方法和語(yǔ)言等。
實(shí)體頭——實(shí)體信息類(lèi)型、長(zhǎng)度、壓縮方法、最后一次修改時(shí)間、數(shù)據(jù)有效期等。
實(shí)體——請(qǐng)求或應(yīng)答對(duì)象本身。
3.發(fā)送響應(yīng)
服務(wù)器在處理完客戶的請(qǐng)求之后,要向客戶機(jī)發(fā)送響應(yīng)消息。
HTTP/1.0的響應(yīng)消息格式如下:
響應(yīng)消息=狀態(tài)行(通用信息頭|響應(yīng)頭|實(shí)體頭) CRLF 〔實(shí)體內(nèi)容〕
狀 態(tài) 行=HTTP版本號(hào) 狀態(tài)碼 原因敘述
狀態(tài)碼表示響應(yīng)類(lèi)型
1×× 保留
2×× 表示請(qǐng)求成功地接收
3×× 為完成請(qǐng)求客戶需進(jìn)一步細(xì)化請(qǐng)求
4×× 客戶錯(cuò)誤
5×× 服務(wù)器錯(cuò)誤
響應(yīng)頭的信息包括:服務(wù)程序名,通知客戶請(qǐng)求的URL需要認(rèn)證,請(qǐng)求的資源何時(shí)能使用。
4.關(guān)閉連接
客戶和服務(wù)器雙方都可以通過(guò)關(guān)閉套接字來(lái)結(jié)束TCP/IP對(duì)話
六. TCP/IP 和 HTTP 的區(qū)別和聯(lián)系
1. 故事一
下個(gè)月你就要結(jié)婚了,打個(gè)電話給老王。
你先打開(kāi)電話本,查找“老王”的電話號(hào)碼:老王 -> 13987654321(DNS解析)。
然后你用手機(jī)撥打了13987654321(IP)。
你的手機(jī)連接到了聯(lián)通的基站(路由器),聯(lián)通(你自己的網(wǎng)關(guān))發(fā)現(xiàn)這是個(gè)移動(dòng)的手機(jī)號(hào),通過(guò)移動(dòng)的幫助,找到了老王的手機(jī)(MAC),老王的手機(jī)開(kāi)始響鈴。
“嘟……”(TCP握手)
-“喂?老綠啊!”
-“哈哈,是我啊,老王!(連接建立)下個(gè)月我結(jié)婚,你有空嗎?”(開(kāi)始傳輸數(shù)據(jù),先說(shuō)事)
-“噢,有啊!”
“那你記一下地址啊(再說(shuō)時(shí)間地點(diǎn))!北京市東長(zhǎng)安街16號(hào)午門(mén)太和殿。”
“誒,你慢點(diǎn)說(shuō)(流量控制),我記一下?!?/p>
-“北京市”(縮小了滑動(dòng)窗口)
“嗯,然后呢?”(ACK)
“東長(zhǎng)安街16號(hào)”
“東……16號(hào)”(ACK)-“午門(mén)太和殿”
“午門(mén)(ACK“午門(mén)”)什么殿?你再說(shuō)一遍,我沒(méi)聽(tīng)清!”(“太和殿”傳輸失敗,數(shù)據(jù)包丟失)
-“太和殿”(重傳)
“好!記下了”(傳輸成功)-
“那回見(jiàn)啊!”(準(zhǔn)備斷開(kāi)連接)
“好嘞!”【通話已結(jié)束】(連接斷開(kāi))
剛才的例子實(shí)際上傳遞了一段信息:我下個(gè)月結(jié)婚。HTTP只是信息的載體,剛才說(shuō)的“漢語(yǔ)”就是HTTP。你也可以用其他協(xié)議傳遞,比如“I’m getting married next month”,只要對(duì)方能理解協(xié)議,那就是同一個(gè)意思。電話線路相當(dāng)于一個(gè)TCP連接。TCP提供了流量控制、數(shù)據(jù)重傳等機(jī)制保證了數(shù)據(jù)可靠順序傳輸。當(dāng)然這個(gè)例子中,可靠傳輸是靠人來(lái)保證的。
HTTP和TCP的聯(lián)系,是HTTP(要結(jié)婚的消息)使用TCP(電話)提供的“傳輸能力”。除此之外,沒(méi)了。
網(wǎng)絡(luò)協(xié)議就是一個(gè)棧,提供對(duì)等通信。這里解釋下對(duì)等。老王和老綠只與電話發(fā)生交互,他們不理解聲音如何轉(zhuǎn)換成電信號(hào),也不理解電磁波如何傳播。他們只知道,我對(duì)著電話說(shuō)漢語(yǔ),對(duì)方就能聽(tīng)到漢語(yǔ)。老王和老綠就是一個(gè)對(duì)等的協(xié)議層。兩部電話也是對(duì)等的協(xié)議層,它們給上面的老王和老綠提供傳輸語(yǔ)音的服務(wù)。而電話提供的服務(wù),底層又依賴電磁波傳遞無(wú)線信號(hào)。最后形成了一個(gè)個(gè)服務(wù)層,完成了打電話這個(gè)事情。再舉個(gè)栗子,兩個(gè)老板要約時(shí)間談生意,他們會(huì)跟自己的秘書(shū)下達(dá)指令,讓秘書(shū)搞定約會(huì)這個(gè)事。雙方的秘書(shū)會(huì)互相聯(lián)系,約好時(shí)間地點(diǎn)和司機(jī),最后搞定這個(gè)問(wèn)題。老板們不會(huì)跟對(duì)方的秘書(shū)聯(lián)系(除非是小老板對(duì)馬老板,那他們實(shí)際上就是不對(duì)等的),因?yàn)樗麄儾皇且粋€(gè)層次的。
把上文層次的概念,放到計(jì)算機(jī)網(wǎng)絡(luò)中,就是協(xié)議棧。協(xié)議棧的每一層,都專注于自己層的事情:HTTP專注于要傳輸?shù)男畔?#xff08;HTTP是信息的載體,所以在協(xié)議里面會(huì)標(biāo)注信息長(zhǎng)度,信息類(lèi)型等),TCP專注于傳輸?shù)目煽?#xff08;為了可靠傳輸,TCP會(huì)給自己層的包標(biāo)注大小和順序,并且有確認(rèn)機(jī)制),IP負(fù)責(zé)因特網(wǎng)傳輸(IP也有自己的格式,自己查吧),再下面的層負(fù)責(zé)與局域網(wǎng)和硬件打交道。
簡(jiǎn)單來(lái)說(shuō),網(wǎng)絡(luò)協(xié)議棧里面,每層都解決了計(jì)算機(jī)通信流程的某一環(huán)節(jié)的問(wèn)題。它們使用下層提供的能力跟對(duì)方機(jī)器的相應(yīng)協(xié)議層通信,給上層提供自己的服務(wù)。
最后,TCP的下層是IP?!拔蚁聜€(gè)月結(jié)婚”這幾個(gè)字,你也可以通過(guò)短信(UDP)或微信(其他傳輸協(xié)議)來(lái)發(fā)送。雖然傳輸層協(xié)議不一樣(電話 vs 短信),底層還是依賴IP協(xié)議(發(fā)短信仍然需要知道對(duì)方的電話號(hào)碼)。
2. 故事二
寫(xiě)信時(shí)把成文字寫(xiě)到信紙上,信紙就是http
把這個(gè)信紙塞進(jìn)信封里,這個(gè)信封就是tcp
把這個(gè)信封寫(xiě)上地址交給郵局,地址就是IP
一層套一層,環(huán)環(huán)相扣,就是協(xié)議的聯(lián)系,每層每步都是協(xié)議。
七. 網(wǎng)絡(luò)七層
總結(jié)
以上是生活随笔為你收集整理的计算机原理---什么叫协议?主流协议族TCP/IP协议与HTTP协议的联系及区别的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: A/D转换器(ADC)
- 下一篇: ElementUI图片上传 回显