網路協議的型別、優缺點、作用
一、網路協議的定義
● 網路協議是一種特殊的軟體,是計算機網路實現其功能的基本機制
● 網路協議的本質是規則,即各種硬體和軟體必須遵循的共同規則
● 網路協議並不是一套單獨的軟體,他融合於其他所有軟體系統中,協議在網路中無所
不在
二、常用的網路協議
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框架,在很多網際網路公司和企業應用中廣泛使用