htpp、websocket、tcp、udp、ip幾個協議的理解

前奏:

在開始前可能我想先簡單介紹一下tcp/ip模型
在這裏插入圖片描述
有四層,而且我們都知道高層的協議是基於低層協議的,所以當有人問我tcp和ip或者tcp和http有什麼區別,其實看到上面這張圖我們就非常清楚,他們分別處於不同的抽象層,所以應該想想他們之間有什麼聯繫。

1、HTTP協議

  HTTP是基於TCP協議的應用,請求時需建立TCP連接,而且請求包中需要包含請求方法,URI,協議版本等信息,請求結束後斷開連接,完成一次請求/響應操作。故稱爲短連接。
  而HTTyP/1.1中的keep-alive所保持的長連接則是爲了優化每次HTTP請求中TCP連接三次握手的麻煩和資源開銷,只建立一次TCP連接,多次的在這個通道上完成請求/響應操作。服務器無法主動給客戶端推送消息,所以響應是在請求之後生返回。

2、WebSocket

  也是一種協議,並且也是基於TCP協議的,經常被用在在在線聊天的im系統上。具體流程是WebSocket通過HTTP先發送一個標記了Upgrade 的請求,服務端解析後開始建立TCP連接,省去了HTTP長連接每次請求都要上傳請求頭信息,可以理解爲WebSocket是HTTP的補充,使得應用層的程序也能進行長連接的操作。

3、TCP協議

  是在傳輸層的網絡通信協議,兩個進程在進行通信之前需要進行三次握手,同時又有數據檢測機制,用來保證數據傳輸的安全性,有序性和可靠性(防止數據丟失)。但是同時也因爲程序較爲複雜,所以效率相比UDP會低一些。(對應的套接字類型是流格式套接字(SOCK_STREAM))

4、UDP協議

  也是在傳輸層的網絡通信協議,它不需要像TCP協議那樣進行三次握手,也沒有很好的數據檢測機制,因此它傳輸數據時無序的同時也存在數據丟失的情況(當然,概率不是很高),但是因爲程序較爲簡單,所以傳輸效率也比較高,通常會在進行在線語音或者在線視頻等方面使用(對應的套接字類型爲數據報格式套接字(SOCK_DGRAM))

5、IP協議

其實我們在平時經常會接觸到ip這個名詞,也知道他是用來訪問某個網站或者某臺計算機的。那麼他怎麼做到的呢?其實他是通過socket來實現的,也就是我們說的套接字接口,它就是通過ip+端口來標識的(後期我們會在其他文章詳細解釋這一過程)。所以說,進程之間要想進行遠程通信,必須基於ip指向才能夠實現,因此,他們都是基於ip協議實現的。

注意:經常有人問我socket和websocket的區別,通過以上我們不然發現,其實兩者表示的東西完全不一樣,所以沒有什麼可比性,如果非要有什麼關係的話,可以說以上的這些協議都是基於socket才能夠實現的

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章