1. 程式人生 > >說說TCP,UDP和socket,Http之間聯絡和區別

說說TCP,UDP和socket,Http之間聯絡和區別

整理的這些區別和聯絡都是非常重要的。

TCP協議
TCP(Transmission Control Protocol 傳輸控制協議)是一種面向連線的、可靠的、基於位元組流的傳輸層通訊協議,由IETF的RFC 793定義。在簡化的計算機網路OSI模型中,它完成第四層傳輸層所指定的功能,使用者資料報協議(UDP)是同一層內另一個重要的傳輸協議。

在因特網協議族(Internet protocol suite)中,TCP層是位於IP層之上,應用層之下的中間層。不同主機的應用層之間經常需要可靠的、像管道一樣的連線,但是IP層不提供這樣的流機制,而是提供不可靠的包交換。資料封裝過程
TCP的優點
可靠,穩定
TCP的可靠體現在TCP在傳遞資料之前,會有三次握手來建立連線,而且在資料傳遞時,有確認、視窗、重傳、擁塞控制機制,在資料傳完後,還會斷開連線用來節約系統資源。

TCP的缺點
慢,效率低,佔用系統資源高,易被攻擊
TCP在傳遞資料之前,要先建連線,這會消耗時間,而且在資料傳遞時,確認機制、重傳機制、擁塞控制機制等都會消耗大量的時間,而且要在每臺裝置上維護所有的傳輸連線,事實上,每個連線都會佔用系統的CPU、記憶體等硬體資源。

由於TCP存在確認機制和三次握手機制,這些是導致TCP容易被人利用,實現DOS、DDOS、CC等攻擊。

TCP應用場景
當對網路通訊質量有要求的時候,比如:整個資料要準確無誤的傳遞給對方,這往往用於一些要求可靠的應用,比如HTTP、HTTPS、FTP等傳輸檔案的協議,POP、SMTP等郵件傳輸的協議。

在日常生活中,常見使用TCP協議的應用比如:瀏覽器使用HTTP,Outlook使用POP、SMTP,QQ檔案傳輸等。

UDP協議
UDP 是User Datagram Protocol的簡稱, 中文名是使用者資料報協議,是OSI(Open System Interconnection,開放式系統互聯) 參考模型中一種無連線的傳輸層協議,提供面向事務的簡單不可靠資訊傳送服務,IETF RFC 768是UDP的正式規範。UDP在IP報文的協議號是17。

UDP的優點
快,比TCP稍安全
UDP沒有TCP的握手、確認、視窗、重傳、擁塞控制等機制,UDP是一個無狀態的傳輸協議,所以它在傳遞資料時非常快。沒有TCP的這些機制,UDP較TCP被攻擊者利用的漏洞就要少一些。但UDP也是無法避免攻擊的,比如:UDP Flood攻擊……

UDP的缺點
不可靠,不穩定
因為UDP沒有TCP那些可靠的機制,在資料傳遞時,如果網路質量不好,就會很容易丟包。

UDP應用場景
當對網路通訊質量要求不高的時候,要求網路通訊速度能儘量的快,這時就可以使用UDP。在日常生活中,常見使用UDP協議的應用比如:QQ語音、QQ視訊、TFTP等。

TCP和UDP使用IP協議從一個網路傳送資料包到另一個網路。把IP想像成一種高速公路,它允許其它協議在上面行駛並找到到其它電腦的出口。TCP和UDP是高速公路上的“卡車”,它們攜帶的貨物就是像HTTP,檔案傳輸協議FTP這樣的協議等。
這裡寫圖片描述
TCP/IP是個協議組,可分為三個層次:網路層、傳輸層和應用層。

在網路層有:IP協議、ICMP協議、ARP協議、RARP協議和BOOTP協議。

在傳輸層中有:TCP協議與UDP協議。

在應用層有:FTP、HTTP、TELNET、SMTP、DNS等協議。

因此,HTTP本身就是一個協議,是從Web伺服器傳輸超文字到本地瀏覽器的傳送協議。

TCP和UDP是FTP,HTTP和SMTP之類使用的傳輸層協議。雖然TCP和UDP都是用來傳輸其他協議的,它們卻有一個顯著的不同:TCP提供有保證的資料傳輸,而UDP不提供。這意味著TCP有一個特殊的機制來確保資料安全的不出錯的從一個端點傳到另一個端點,而UDP不提供任何這樣的保證。
這裡寫圖片描述
HTTP協議
HTTP(超文字傳輸協議)是利用TCP在兩臺電腦(通常是Web伺服器和客戶端)之間傳輸資訊的協議。客戶端使用Web瀏覽器發起HTTP請求給Web伺服器,Web伺服器傳送被請求的資訊給客戶端。這裡寫圖片描述
HTTP是短連線:客戶端傳送請求都需要伺服器端回送響應.請求結束後,主動釋放連結,因此為短連線。通常的做法是,不需要任何資料,也要保持每隔一段時間向伺服器傳送”保持連線”的請求。這樣可以保證客戶端在伺服器端是”上線”狀態。

HTTP連線使用的是”請求-響應”方式,不僅在請求時建立連線,而且客戶端向伺服器端請求後,伺服器才返回資料。

Socket協議
網路上的兩個程式通過一個雙向的通訊連線實現資料的交換,這個連線的一端稱為一個socket。
這裡寫圖片描述
建立網路通訊連線至少要一對埠號(socket)。socket本質是程式設計介面(API),對TCP/IP的封裝,TCP/IP也要提供可供程式設計師做網路開發所用的介面,這就是Socket程式設計介面;HTTP是轎車,提供了封裝或者顯示資料的具體形式;Socket是發動機,提供了網路通訊的能力。