1. 程式人生 > >網路協議的型別、優缺點、作用

網路協議的型別、優缺點、作用

一、網路協議的定義

     ● 網路協議是一種特殊的軟體,是計算機網路實現其功能的基本機制

     ● 網路協議的本質是規則,即各種硬體和軟體必須遵循的共同規則

     ● 網路協議並不是一套單獨的軟體,他融合於其他所有軟體系統中,協議在網路中無所

        不在

二、常用的網路協議

       TCP  UDP    HTTP   HTTPS    FTP  DNS  Telnet    TCP/IP    SSL/TLS   websocket

1、TCP協議,(transmission control protocol),傳輸控制協議。

      定義:TCP協議是一種面向連線的、可靠的、傳輸速度慢、基於位元組流

傳輸層通訊協議

               在簡化的計算機網路OSI模型中完成第四層傳輸層所指定的功能。

提供可靠的端到端的通訊,可以保證接收方收到的資料與傳送方傳送的資料完全一致,能夠保證資料不丟失、無差錯,同時還有流量控制和擁塞控制的功能,所以TCP協議比較複雜,能夠為要求可靠性的應用層協議提供服務,如檔案傳輸、郵件收發、網頁瀏覽、遠端登入等等

      作用:主要用於在主機間建立一個虛擬連線,以實現高可靠性的資料包交換

     IP協議的作用:可以進行IP資料包的分割和組裝

     IP協議的缺點:但是通過IP協議並不能清楚的瞭解到資料包是否順利的傳送給目標計算機

     TCP的特點

(1)面向連線的

(2)提供可靠的資料傳輸服務

(3)提供流量控制。TCP能夠控制程序傳送資料的速率,保證另一端不被大量的資料“淹沒”而出現溢位。

(4)提供擁塞控制。當網路出現擁塞的時候,TCP能夠減小向網路注入資料的速率和數量,緩解擁塞。

(5)提供全雙工通訊。TCP提供雙向的資料傳輸服務。TCP允許通訊雙方的應用程序在任何時候傳送資料。TCP連線的兩端都設有傳送快取和接收快取,用來臨時存放雙向通訊的資料。

(6)TCP是面向位元組流的。TCP中的“流”是指流入到程序或從程序流出的位元組

2、UDP協議

使用者資料包協議(User Datagram Protocol)

UDP協議不能保證資料不丟失、無差錯,也不能保證接收方收到資料的順序和傳送方傳送資料的順序一樣。UDP協議比較簡單,但效率比較高,能為對可靠性要求不高,對實時性要求比較高的應用提供服務,如傳輸音訊和視訊。

定義:UDP協議是OSI(Open System Interconnection,開放式系統互聯)模型中的一種

無連線的、簡單不可靠的、傳輸速度快、面向事務的傳輸層通訊協議。

UDP協議的特點

(1)無連線的。

(2)UDP是一種盡力而為的服務方式,不提供可靠的資料傳輸服務(比如資料的丟失、重複和無序)。

(3)UDP是高效的傳輸協議。

(4)UDP沒有擁塞控制和流量控制。

TCP和UDP協議的區別

A、TCP面向連線(打電話要先撥號建立連線);

      UDP是無連線的(傳送資料之前不需要建立連線)。

B、TCP提供可靠的服務(通過TCP連線傳送的資料,無差錯、不丟失、不重複、按序到達);

      UDP盡最大努力交付,不保證可靠交付。

C、TCP基於位元組流(實際上是TCP把資料看成一連串無結構的位元組流)。

      UDP是基於報文的,UDP沒有擁塞控制,因此網路出現擁塞不會使源主機的傳送速率降低

     (對實時應用很有用,IP電話,實時視訊電話)。

D、TCP保證資料正確性;

      UDP可能丟包。

E、TCP保證資料順序;

      UDP不保證。

F、每一條TCP連線只能是點到點的;

     UDP支援一對一、一對多、多對一、多對多的互動通訊

G、TCP的邏輯通訊通道是全雙工的可靠通道

      UDP則是不可靠通道

H、TCP的首部開銷20位元組

       UDP的首部開銷8位元組

I、TCP要求系統資源較多,UDP較少

3、TCP/IP協議

     實質: TCP/IP其實就是TCP和IP等協議的組合,即傳輸控制協議/網際網路協議。

    應用場景:主要用於在安裝了不同硬體和不同作業系統的計算機之間,實現可靠的網路通

                     信。TCP協議可以保證資料包傳輸的可靠性;IP協議可以保證資料包被傳輸到

                    目標計算機上。

4、FTP協議

     檔案傳輸協議(File Transfer Protocol)。

     用途:主要用於在兩臺計算機之間實現檔案的上傳與下載,其中一臺計算機作為FTP的客

                戶端,另一臺作為FTP的服務端。通過FTP協議可以上傳、下載幾乎所有的檔案類

                型,比如txt  exe  doc  pdf   mp3  zip rar等

5、Telnet協議

      定義:遠端登入協議,是Internet上普遍採用的模擬網路協議,同時Telnet也是從遠端

                位置登入常用的程式。

      作用:通過Telnet程式登入遠端Telnet計算機。一般採用授權的使用者名稱和密碼登入。登入

                之後就如同使用本地計算機一樣,使用遠端計算機的的硬碟、執行應用程式等。

6、DNS協議

DNS(Domain Name System,域名系統),因特網上作為域名和IP地址相互對映的一個分散式資料庫,能夠使使用者更方便的訪問網際網路,而不用去記住能夠被機器直接讀取的IP數串。通過主機名,最終得到該主機名對應的IP地址的過程叫做域名解析(或主機名解析)。

作用

● 該協議主要負責將域名轉換成網路可以識別的IP地址(www.cce.com.cn轉換成221.122.32.15),域名和IP地址是一一對應的。

● 因為訪問網站的時候,最終都是轉換成IP地址進行訪問的

● 直接設定DNS伺服器。可以提高網路的訪問速度,保證訪問的正確性

DNS的兩種查詢方式:遞迴查詢和迭代查詢

a)遞迴解析
當局部DNS伺服器自己不能回答客戶機的DNS查詢時,它就需要向其他DNS伺服器進行查詢。此時有兩種方式,如圖所示的是遞迴方式。區域性DNS伺服器自己負責向其他DNS伺服器進行查詢,一般是先向該域名的根域伺服器查詢,再由根域名伺服器一級級向下查詢。最後得到的查詢結果返回給區域性DNS伺服器,再由區域性DNS伺服器返回給客戶端。

b)迭代解析

當局部DNS伺服器自己不能回答客戶機的DNS查詢時,也可以通過迭代查詢的方式進行解析,如圖所示。區域性DNS伺服器不是自己向其他DNS伺服器進行查詢,而是把能解析該域名的其他DNS伺服器的IP地址返回給客戶端DNS程式,客戶端DNS程式再繼續向這些DNS伺服器進行查詢,直到得到查詢結果為止。也就是說,迭代解析只是幫你找到相關的伺服器而已,而不會幫你去查。比如說:baidu.com的伺服器ip地址在192.168.4.5這裡,你自己去查吧,本人比較忙,只能幫你到這裡了。

7、HTTP協議

     超文字傳輸協議( Hyper Text Transfer Protocol )

    定義:● 是用於從全球資訊網(www)伺服器傳輸超文字到本地瀏覽器的傳送協議

              ● 是 基於TCP/IP通訊協議來傳遞資料(HTML、圖片、查詢結果等)的協議

              ● 是一個屬於應用層的、面向物件的協議

              ● 由於其簡捷、快速的適用於分散式超媒體資訊系統

    工作原理:HTTP協議工作在客戶端-服務端架構上。

                    瀏覽器作為HTTP客戶端通過URL向HTTP服務端(即WEB伺服器)傳送請求,

                    WEB伺服器根據接收到的請求後,向客戶端傳送響應資訊。

    HTTP請求/響應的步驟:

               A、客戶端連線到web伺服器:一個HTTP客戶端通常是瀏覽器,與web伺服器的

                    HTTP埠(預設為80)建立一個TCP套接字連線

               B、傳送HTTP請求:通過TCP套接字,客戶端向web伺服器傳送一個文字的請求

                    報文,一個請求報文由請求行、請求頭部、空行和請求資料組成

               C、伺服器接收請求並返回HTTP響應:WEB伺服器解析請求,定位請求資源。服

                     務器將資源副本寫到TCP套接字,由客戶端讀取。一個響應由狀態行、響應頭

                     部、空行、響應資料組成

               D、釋放TCP連線:若connection模式為close,則伺服器主動關閉TCP連線,客戶

                     端被動關閉連線,釋放TCP連線;若connection模式為keepalive,則該連線

                     會保持一段時間,在該時間內可以接著接收請求

                E、客戶端(瀏覽器)解析HTML內容:客戶端首先解析狀態行,查看錶明請求是

                     否成功的狀態程式碼  ;然後解析每一個響應頭,嚮應頭告知以下為若干位元組的

                      HTML文件和文件的字符集。客戶端讀取響應資料HTML,根據HTML的語法

                      對其進行格式化,並在瀏覽器視窗中顯示

     特點:● 無連線:其含義是限制每次連線只處理一個請求。伺服器處理完客戶的請求,並收

                   到客戶的應答後,斷開連線,可以節省傳輸時間

               ● 無狀態:HTTP協議是無狀態協議。無狀態是指協議對於事務處理沒有記憶能力。

                               缺少狀態意味著如果後續處理需要前面的資訊,則必須重傳。這可能導致

                               每次連線傳送的資料量增大。但是在伺服器不需要先前資訊時,他的應答

                               就較快

                ● 簡單快速:客戶向伺服器傳送請求時,只需傳送請求方法和路徑。

                                   請求方法常用POST  GET  HEAD,每種方法規定了客戶與伺服器聯絡的

                                   型別不同。

                                   HTTP協議簡單,似的HTTP伺服器的程式規模小,因而通訊速度快

                 ● 靈活:HTTP允許傳輸任意型別的資料物件。正在傳輸的型別由Content-Type

                              標記

                 ● 支援B/S   C/S模式

    HTTP請求方法:HTTP1.0定義三種方法,即POST   GET   HEAD

                              HTTP1.1新增5種方法,OPTIONS   PUT  DELETE  TRACE  CONNECT

                 ● GET:請求指定頁面資訊,並返回實體主體

                 ● POST:向指定資源提交資料進行處理請求(例如提交表單、上傳檔案)

                 ● HEAD:類似GET請求,只不過返回的響應中沒有具體的內容,用於獲取報頭

                 ● PUT:從客戶端向伺服器傳送的資料取代指定的文件的內容

                 ●  DELETE:請求伺服器刪除指定的頁面

                 ●  CONNECT:HTTP/1.1協議中預留給能夠將連線改為管道式的代理伺服器

                 ●  OPTIONS:允許客戶端檢視伺服器的效能

                 ● TRACE:回顯伺服器收到的請求,主要用於測試或診斷

    POST和GET的區別

                 ● GET提交的資料會顯示在位址列中(即資料放在URL之後,以?分割URL和傳輸的

                    資料,引數之間以&相連);

                   POST提交的資料放在HTTP包的body中,因此位址列不會顯示提交的資料

                 ● GET提交的資料大小有限制(因為瀏覽器對URL的長度有限制);

                    POST提交的資料沒有限制

                 ● GET方式提交資料會帶來安全問題,比如登入頁面,通過GET方式提交資料時,

                    使用者名稱和密碼會出現在位址列上,如果頁面可以被快取或者其他人可以訪問這臺

                    機器,就可以從歷史記錄獲得該使用者的使用者名稱和密碼。

                     POST不存在安全問題

                ● GET方式需要使用Request.QueryString來取得變數的值

                    POST通過Request.Form來取得變數的值

8、SSL/TLS協議

     ● SSL(Secure Sockets Layer),安全套接層。上世紀90年代由網景公司設計。原先互

         聯網使用的HTTP協議是明文的,存在很多缺點(傳輸內容會被偷窺(嗅探)和篡改)。

         SSL就是為了解決這些問題

      ● 到了1999年,SSL因為廣泛應用,已經成為網際網路上的事實標準。IETF就在那一年把

          SSL標準化,標準化名稱改為TLS(Transport  Layer  Security),傳輸層安全協議

       ● SSL和TLS是同一個東西的不同階段

9、HTTPS協議

     定義:HTTPS協議是HTTP協議和SSL/TLS協議的組合

   為什麼要設計HTTPS成這樣:

          ● 相容性:基於TCP傳輸;單獨使用新的協議將HTTP,把HTTP協議包裹起來

          ● 可擴充套件性

          ● 保密性(防洩密)

          ●  完整性(防篡改)

          ● 真實性(防假冒)

          ● 效能

   加密和解密的定義:

         “加密”的過程,就是把“明文”變成“密文”的過程。“解密”的過程就是將“密文”

          變成“明文”的過程。在這兩個過程中,都需喲啊“金鑰”。

   對稱加密:“加密”和“解密”使用“相同金鑰”

   非對稱加密:加密”和“解密”使用“不同金鑰”

   對稱加密和非對稱加密的優缺點

         ● ”非對稱加密“的功能比”對稱加密“的功能要多

         ● ”非對稱加密“涉及複雜的數學問題,所以其效能相對”對稱加密“要差

10、websocket協議

1)WebSocket 是Web應用程式的傳輸協議,是一個Html5協議,它提供了雙向的,按序到達的資料流

2)WebSocket的連線是持久的,他通過在客戶端和伺服器之間保持雙工連線,伺服器的更新可以被及時推送給客戶端,而不需要客戶端以一定時間間隔去輪詢 

3)WebSocket 連線允許客戶端和伺服器之間進行全雙工通訊,以便任一方都可以通過建立的連線將資料推送到另一端。

4)WebSocket 只需要建立一次連線,就可以一直保持連線狀態,這相比於輪詢方式的不停建立連線顯然效率要大大提高

11、RPC( Remote Procedure Call,遠端過程呼叫 )協議與HTTP協議的區別

遠端過程呼叫直觀說法就是A通過網路呼叫B的過程方法

首先了解OSI網路七層模型

  • 第一層:應用層。定義了用於在網路中進行通訊和傳輸資料的介面;
  • 第二層:表示層。定義不同的系統中資料的傳輸格式,編碼和解碼規範等;
  • 第三層:會話層。管理使用者的會話,控制使用者間邏輯連線的建立和中斷;
  • 第四層:傳輸層。管理著網路中的端到端的資料傳輸;
  • 第五層:網路層。定義網路裝置間如何傳輸資料;
  • 第六層:鏈路層。將上面的網路層的資料包封裝成資料幀,便於物理層傳輸;
  • 第七層:物理層。這一層主要就是傳輸這些二進位制資料

五層協議結構裡面是沒有表示層和會話層的。應該說它們和應用層合併。

1)最本質的區別,就是RPC主要是基於TCP/IP協議的,而HTTP主要是基於HTTP協議的,HTTP協議是在傳輸層協議TCP之上的應用層,效率上,RPC當然是要更勝一籌

2)一般來說,RPC服務主要是針對大型企業的,而HTTP服務主要是針對小企業的,因為RPC效率更高,而HTTP服務開發迭代會更快

RPC服務

從三個角度來介紹RPC服務:RPC架構,同步非同步呼叫、流行的RPC框架

1)RPC架構

包含了四個核心的元件,分別是Client ,Server,Client Stub以及Server Stub,這個Stub大家可以理解為存根。分別說說這幾個元件:

  • 客戶端(Client),服務的呼叫方。
  • 服務端(Server),真正的服務提供者。
  • 客戶端存根,存放服務端的地址訊息,再將客戶端的請求引數打包成網路訊息,然後通過網路遠端傳送給服務方。
  • 服務端存根,接收客戶端傳送過來的訊息,將訊息解包,並呼叫本地的方法

2)流行的RPC框架

(1)gRPC是Google最近公佈的開源軟體,基於最新的HTTP2.0協議,並支援常見的眾多程式語言

(2)Thrift是Facebook的一個開源專案,主要是一個跨語言的服務開發框架

(3)Dubbo是阿里集團開源的一個極為出名的RPC框架,在很多網際網路公司和企業應用中廣泛使用