?區(qū)別
在網絡通訊中,TCP方式就類似于撥打電話,使用該種方式進行網絡通訊時,需要建立專門的虛擬連接,然后進行可靠的數據傳輸,如果數據發(fā)送失敗,則客戶端會自動重發(fā)該數據。而UDP方式就類似于發(fā)送短信,使用這種方式進行網絡通訊時,不需要建立專門的虛擬連接,傳輸也不是很可靠,如果發(fā)送失敗則客戶端無法獲得。
這兩種傳輸方式都是實際的網絡編程中進行使用,重要的數據一般使用TCP方式進行數據傳輸,而大量的非核心數據則都通過UDP方式進行傳遞,在一些程序中甚至結合使用這兩種方式進行數據的傳遞。
由于TCP需要建立專用的虛擬連接以及確認傳輸是否正確,所以使用TCP方式的速度稍微慢一些,而且傳輸時產生的數據量要比UDP稍微大一些。?
總結
?TCP傳輸數據安全,穩(wěn)定,效率相對較低。
?UDP傳輸數據不安全,效率較高。?
TCP協(xié)議
TCP(Transfer? Control? Protocol)是面向連接的,所謂面向連接,就是當計算機雙方通信時必需先建立連接,然后數據傳送,最后拆除連接三個過程。
TCP在建立連接時又分三步走:
第一步,是請求端(客戶端)發(fā)送一個包含SYN即同步(Synchronize)標志的TCP報文,SYN同步報文會指明客戶端使用的端口以及TCP連接的初始序號;
第二步,服務器在收到客戶端的SYN報文后,將返回一個SYN+ACK的報文,表示客戶端的請求被接受,同時TCP序號被加一,ACK即確認(Acknowledgement)。
第三步,客戶端也返回一個確認報文ACK給服務器端,同樣TCP序列號被加一,到此一個TCP連接完成。然后才開始通信的第二步:數據處理。
這就是所說的TCP的三次握手(Three-way Handshake)。根據三次握手的特點,有一種對服務器的攻擊叫做Syn Flood洪水攻擊。
UDP協(xié)議
Socket通信是一種基于TCP協(xié)議,建立穩(wěn)定連接的點對點的通信。這種通信方式實時、快速、安全性高、但是他很占用系統(tǒng)的資源。
在網絡傳輸方式上,還有另一種基于UDP協(xié)議的通信方式,稱為數據報通信方式。在這種方式中,每個數據發(fā)送單元被統(tǒng)一封裝成數據包的方式,發(fā)送方將數據包發(fā)送到網絡中,數據包在網絡中去尋找他的目的地。?
注意:UDP端口和TCP端口是相互獨立的。
「全棧Java筆記」是一部能幫大家從零到一成長為全棧Java工程師系列筆記。筆者江湖人稱 Mr. G,10年Java研發(fā)經驗,曾在神州數碼、航天院某所研發(fā)中心從事軟件設計及研發(fā)工作,從小白逐漸做到工程師、高級工程師、架構師。精通Java平臺軟件開發(fā),精通JAVAEE,熟悉各種流行開發(fā)框架。
?筆記包含從淺入深的六大部分:
?A-Java入門階段
?B-數據庫從入門到精通
?C-手刃移動前端和Web前端
?D-J2EE從了解到實戰(zhàn)
?E-Java高級框架精解
?F-Linux和Hadoop?