天天看點

IP、TCP、UDP、HTTP、WebSocket、SOCKET之間的關系和差別

轉自  http://www.netpc.com.cn/2889.html

IP、TCP、UDP、HTTP、WebSocket、SOCKET之間的關系和差別

發表于2018 年 11 月 21 日由ken

學通訊先搞清楚各種協定和通信層、套接字等。

看看标準的七層模型,亦稱OSI(Open System Interconnection)參考模型

7 應用層 例如HTTP、SMTP、SNMP、FTP、Telnet、SIP、SSH、NFS、RTSP、XMPP、Whois、ENRP
6 表示層 例如XDR、ASN.1、SMB、AFP、NCP
5 會話層 例如ASAP、TLS、SSH、ISO 8327 / CCITT X.225、RPC、NetBIOS、ASP、Winsock、BSD sockets
4 傳輸層 例如TCP、UDP、RTP、SCTP、SPX、ATP、IL
3 網絡層 例如IP、ICMP、IGMP、IPX、BGP、OSPF、RIP、IGRP、EIGRP、ARP、RARP、 X.25
2 資料鍊路層 例如以太網、令牌環、HDLC、幀中繼、ISDN、ATM、IEEE 802.11、FDDI、PPP
1 實體層 例如線路、無線電、光纖、信鴿

簡化的TCP/IP四層模型主要分為:應用層、傳輸層、網絡層、資料鍊路層。

大家對照着協定和層自己看看。上一層都是建立在下一層的基礎上。

IP:網絡層協定;(高速公路)

TCP和UDP:傳輸層協定;(卡車)

HTTP:應用層協定;(貨物)。HTTP(超文本傳輸協定)是建立在TCP協定之上的一種應用。HTTP連接配接最顯著的特點是用戶端發送的每次請求都需要伺服器回送響應,在請求結束後,會主動釋放連接配接。從建立連接配接到關閉連接配接的過程稱為“一次連接配接”。

SOCKET:套接字,TCP/IP網絡的API。(港口碼頭/車站)Socket是應用層與TCP/IP協定族通信的中間軟體抽象層,它是一組接口。socket是在應用層和傳輸層之間的一個抽象層,它把TCP/IP層複雜的操作抽象為幾個簡單的接口供應用層調用已實作程序在網絡中通信。

Websocket:同HTTP一樣也是應用層的協定,但是它是一種雙向通信協定,是建立在TCP之上的,解決了伺服器與用戶端全雙工通信的問題,包含兩部分:一部分是“握手”,一部分是“資料傳輸”。握手成功後,資料就直接從 TCP 通道傳輸,與 HTTP 無關了。

注:什麼是單工、半雙工、全工通信?

資料隻能單向傳送為單工;

資料能雙向傳送但不能同時雙向傳送稱為半雙工;

資料能夠同時雙向傳送則稱為全雙工。

TCP/UDP差別:

TCP(傳輸控制協定,Transmission Control Protocol):(類似打電話)

面向連接配接、傳輸可靠(保證資料正确性)、有序(保證資料順序)、傳輸大量資料(流模式)、速度慢、對系統資源的要求多,程式結構較複雜,

每一條TCP連接配接隻能是點到點的,

TCP首部開銷20位元組。

UDP(使用者資料報協定,User Data Protocol):(類似發短信)

面向非連接配接 、傳輸不可靠(可能丢包)、無序、傳輸少量資料(資料報模式)、速度快,對系統資源的要求少,程式結構較簡單 ,

UDP支援一對一,一對多,多對一和多對多的互動通信,

UDP的首部開銷小,隻有8個位元組。

Socket和WebSocket差別

Socket 其實并不是一個協定。它工作在 OSI 模型會話層(第5層),是為了友善大家直接使用更底層協定(一般是 TCP 或 UDP )而存在的一個抽象層。

而 WebSocket 則不同,它是一個完整的應用層協定,包含一套标準的 API 。

WebSocket 更易用,而 Socket 更靈活。

WebSocket與HTTP的差別

相同點:

1. 都是一樣基于TCP的,都是可靠性傳輸協定。

2. 都是應用層協定。

不同點:

1. WebSocket是雙向通信協定,模拟Socket協定,可以雙向發送或接受資訊。HTTP是單向的。

2. WebSocket是需要握手進行建立連接配接的。

WebSocket在建立握手時,資料是通過HTTP傳輸的。但是建立之後,在真正傳輸時候是不需要HTTP協定的。