HTTP、UDP、TCP區別
大家過年好啊!我在這裡祝大家 新的一年豬事大吉。現在更新文章,由於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 特點
- 基於TCP的可靠通信
- 基於客戶端與服務端的通信
- 無狀態:是指協議對於事務處理沒有記憶能力。缺少狀態意味著如果後續處理需要前面的信息,則它必須重傳,這樣可能導致每次連接傳送的數據量增大。另一方面,在伺服器不需要先前信息時它的應答就較快。
- 無連接:其含義是限制每次連接只處理一個請求。伺服器處理完客戶的請求,並收到客戶的應答後,即斷開連接。採用這種方式可以節省傳輸時間。
現在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 協議的區別主要體現在:
- 緩存處理
- 帶寬優化及網路連接的使用
- 錯誤通知的管理
- 消息在網路中的發送
- 互聯網地址的維護
- 安全性及完整性
四、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區別
- TCP面向連接(如打電話要先撥號建立連接);UDP是無連接的,即發送數據之前不需要建立連接
- TCP提供可靠的服務。也就是說,通過TCP連接傳送的數據,無差錯,不丟失,不重複,且按序到達;UDP盡最大努力交付,即不保證可靠交付
- TCP面向位元組流,實際上是TCP把數據看成一連串無結構的位元組流;UDP是面向報文的。UDP沒有擁塞控制,因此網路出現擁塞不會使源主機的發送速率降低(對實時應用很有用,如IP電話,實時視頻會議等)
- 每一條TCP連接只能是點到點的;UDP支持一對一,一對多,多對一和多對多的交互通信
- TCP首部開銷20位元組;UDP的首部開銷小,只有8個位元組
- TCP的邏輯通信信道是全雙工的可靠信道,UDP則是不可靠信道
參考網站:
本文章八成內容來自百度百科。
TCP和UDP的優缺點及區別 - 小螞蟻zoe - 博客園
Http協議與TCP協議簡單理解 - 皎陽 - 博客園
推薦閱讀: