大家過年好啊!我在這裡祝大家 新的一年豬事大吉。現在更新文章,由於http協議、udp協議、tcp協議內容很多,我這只是大體介紹一下其區別。

一、定義:

HTTP 協議:Hyper Text Transfer Protocol(超文本傳輸協議)的縮寫,是用於從萬維網(WWW:World Wide Web )伺服器傳輸超文本到本地瀏覽器的傳送協議。[摘自菜鳥教程]

UDP 是User Datagram Protocol的簡稱, 中文名是用戶數據報協議,是OSI(Open System Interconnection,開放式系統互聯) 參考模型中一種無連接的傳輸層協議,提供面向事務的簡單不可靠信息傳送服務,IETF RFC 768是UDP的正式規範。UDP在IP報文的協議號是17。[摘自百度百科]

TCP(Transmission Control Protocol 傳輸控制協議)是一種面向連接的、可靠的、基於位元組流的傳輸層通信協議,由IETF的RFC 793定義。[摘自百度百科]

二、層次(OSI模型、TCP/IP協議模型)

UDP、TCP處於 OSI 傳輸層。

http協議是在tcp/ip協議模型上應用層的一種傳輸協議。

所以,從本質上來說,http跟udp、tcp沒有可比性。

三、http 特點

  1. 基於TCP的可靠通信
  2. 基於客戶端與服務端的通信
  3. 無狀態:是指協議對於事務處理沒有記憶能力。缺少狀態意味著如果後續處理需要前面的信息,則它必須重傳,這樣可能導致每次連接傳送的數據量增大。另一方面,在伺服器不需要先前信息時它的應答就較快。
  4. 無連接:其含義是限制每次連接只處理一個請求。伺服器處理完客戶的請求,並收到客戶的應答後,即斷開連接。採用這種方式可以節省傳輸時間。

現在HTTP有兩個版本,分別是Http1.0和Http1.1

HTTP 1.0 初衷主要是解決WEB文檔在網路中的傳輸問題,因為傳輸文件是一個低頻的請求,沒必要進行長時間連接,所以HTPP 1.0 被設計成短連接,每進行一次HTPP通信後就會斷開TCP連接。

HTTP 1.1版本隨著互聯網的發展,HTTP 不再只是傳送簡單的文件信息,多樣化的文本信息開始廣泛應用,像html 這樣的網頁訪問的同時會同時附帶非常多的圖片之類的信息,如果每個請求都要進行TCP連接和斷開(三次握手和四次揮手),這樣勢必會造成很多額外的通信開銷。

所以為瞭解決此問題 HTTP 協議2.0版本會在請求的時候,只要任意一端沒有明確的提出斷開連接則保持TCP連接狀態

HTTP/1.1相較於 HTTP/1.0 協議的區別主要體現在:

  1. 緩存處理
  2. 帶寬優化及網路連接的使用
  3. 錯誤通知的管理
  4. 消息在網路中的發送
  5. 互聯網地址的維護
  6. 安全性及完整性

四、socket

網路上的兩個程序通過一個雙向的通信連接實現數據的交換,這個連接的一端稱為一個socket。

  • SYN表示建立連接,
  • FIN表示關閉連接,
  • ACK表示響應,
  • PSH表示有 DATA數據傳輸,
  • RST表示連接重置。

udp、tcp建立連接中的socket三次握手

大致流程如下:

  • 客戶端向伺服器發送一個SYN J
  • 伺服器向客戶端響應一個SYN K,並對SYN J進行確認ACK J+1
  • 客戶端再想伺服器發一個確認ACK K+1

udp、tcp釋放連接中的socket四次握手

大致流程如下:

  • 某個應用進程首先調用close主動關閉連接,這時TCP發送一個FIN M;
  • 另一端接收到FIN M之後,執行被動關閉,對這個FIN進行確認。它的接收也作為文件結束符傳遞給應用進程,因為FIN的接收意味著應用進程在相應的連接上再也接收不到額外數據;
  • 一段時間之後,接收到文件結束符的應用進程調用close關閉它的socket。這導致它的TCP也發送一個FIN N;
  • 接收到這個FIN的源發送端TCP對它進行確認。

為什麼tcp、udp需要進行三次握手、四次分手?

因為 tcp 、udp 是全雙工。

什麼是雙工?

數據通信中,數據在線路上的傳送方式可以分為單工通信、半雙工通信和全雙工通信三種。

單工通信信道是單向信道,發送端和接收端的身份是固定的,發送端只能發送信息,不能接收信息;接收端只能接收信息,不能發送信息,數據信號僅從一端傳送到另一端,即信息流是單方向的。

半雙工通信,即Half-duplex Communication。這種通信方式可以實現雙向的通信,但不能在兩個方向上同時進行,必須輪流交替地進行。也就是說,通信信道的每一段都可以是發送端,也可以是接收端。但同一時刻裏,信息只能有一個傳輸方向。如日常生活中的例子有步話機通信,對講機等。

全雙工(Full Duplex)是 在微處理器與外圍設備之間採用發送線和接受線各自獨立的方法,可以使數據在兩個方向上同時進行傳送操作。指在發送數據的同時也能夠接收數據,兩者同步進行,這好像我們平時打電話一樣,說話的同時也能夠聽到對方的聲音。

5、tcp跟udp區別

  1. TCP面向連接(如打電話要先撥號建立連接);UDP是無連接的,即發送數據之前不需要建立連接
  2. TCP提供可靠的服務。也就是說,通過TCP連接傳送的數據,無差錯,不丟失,不重複,且按序到達;UDP盡最大努力交付,即不保證可靠交付
  3. TCP面向位元組流,實際上是TCP把數據看成一連串無結構的位元組流;UDP是面向報文的。UDP沒有擁塞控制,因此網路出現擁塞不會使源主機的發送速率降低(對實時應用很有用,如IP電話,實時視頻會議等)
  4. 每一條TCP連接只能是點到點的;UDP支持一對一,一對多,多對一和多對多的交互通信
  5. TCP首部開銷20位元組;UDP的首部開銷小,只有8個位元組
  6. TCP的邏輯通信信道是全雙工的可靠信道,UDP則是不可靠信道

參考網站:

本文章八成內容來自百度百科。

TCP和UDP的優缺點及區別 - 小螞蟻zoe - 博客園

Http協議與TCP協議簡單理解 - 皎陽 - 博客園

推薦閱讀:

相關文章