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