HTTP,TCP\IP,Websocket,Socket聯(lián)系和區(qū)別

TCP\IP,HTTP ,Websocket 是協(xié)議,socket不是協(xié)議,是為了方便使用更底層協(xié)議而存在的抽象層。

首先要清楚什么是協(xié)議:

網(wǎng)絡(luò)中的計(jì)算機(jī)與終端間要想正確的傳送信息和數(shù)據(jù),必須在數(shù)據(jù)傳輸?shù)捻樞?、?shù)據(jù)的格式及內(nèi)容等方面有一個(gè)約定或規(guī)則,這種約定或規(guī)則稱做協(xié)議。

一、TCP/IP協(xié)議

TCP/IP是一個(gè)協(xié)議族,是因?yàn)門CP/IP協(xié)議包括TCP、IP、UDP、ICMP、RIP、TELNETFTP、SMTP、ARP、TFTP等許多協(xié)議,這些協(xié)議一起稱為TCP/IP協(xié)議。

從協(xié)議分層模型方面來講,TCP/IP由四個(gè)層次組成:網(wǎng)絡(luò)接口層、網(wǎng)間網(wǎng)層、傳輸層、應(yīng)用層。

????????TCP(Transport Control Protocol)? ?傳輸控制協(xié)議
????????IP(Internetworking Protocol)? ? 網(wǎng)間網(wǎng)協(xié)議
????????UDP(User Datagram Protocol) 用戶數(shù)據(jù)報(bào)協(xié)議
????????ICMP(Internet Control Message Protocol) 互聯(lián)網(wǎng)控制信息協(xié)議
????????SMTP(Simple Mail Transfer Protocol) 簡單郵件傳輸協(xié)議
????????SNMP(Simple Network manage Protocol) 簡單網(wǎng)絡(luò)管理協(xié)議
????????FTP(File Transfer Protocol) 文件傳輸協(xié)議
????????ARP(Address Resolation Protocol) 地址解析協(xié)議

二、HTTP協(xié)議

HTTP協(xié)議:HyperText Thransfer Protocol ,超文本傳輸協(xié)議,是 Web 聯(lián)網(wǎng)的基礎(chǔ)。

HTTP 連接最顯著的特點(diǎn)是客戶端發(fā)送的每次請求都需要服務(wù)器回送響應(yīng),在請求結(jié)束后,會(huì)主動(dòng)釋放連接。從建立連接到關(guān)閉連接的過程稱為 “一次連接”。

1)在 HTTP 1.0 中,客戶端的每次請求都要求建立一次單獨(dú)的連接,在處理完本次請求后,就自動(dòng)釋放連接。
2)在 HTTP 1.1 中則可以在一次連接中處理多個(gè)請求,并且多個(gè)請求可以重疊進(jìn)行,不需要等待一個(gè)請求結(jié)束后再發(fā)送下一個(gè)請求。

由于 HTTP 在每次請求結(jié)束后都會(huì)主動(dòng)釋放連接,因此 HTTP 連接是一種 “短連接”,要保持客戶端程序的在線狀態(tài),需要不斷地向服務(wù)器發(fā)起連接請求。

HTTP協(xié)議是基于TCP/IP協(xié)議的

三、WebSocket協(xié)議

WebSocket 是為了滿足基于 Web 的日益增長的實(shí)時(shí)通信需求而產(chǎn)生的。在傳統(tǒng)的 Web 中,要實(shí)現(xiàn)實(shí)時(shí)通信,通用的方式是采用 HTTP 協(xié)議不斷發(fā)送請求。但這種方式即浪費(fèi)帶寬(HTTP HEAD 是比較大的),又消耗服務(wù)器 CPU 占用(沒有信息也要接受請求)。

WebSocket和HTTP的關(guān)系

相同點(diǎn)
1)都是一樣基于 TCP 的,都是可靠性傳輸協(xié)議。
2)都是應(yīng)用層協(xié)議。

不同點(diǎn)
1)WebSocket 是雙向通信協(xié)議,模擬 Socket 協(xié)議,可以雙向發(fā)送或接受信息。HTTP 是單向的。2)WebSocket 是需要握手進(jìn)行建立連接的(需要借助HTTP)。

聯(lián)系
WebSocket 在建立握手時(shí),數(shù)據(jù)是通過 HTTP 傳輸?shù)?。但是建立之后,在真正傳輸時(shí)候是不需要 HTTP 協(xié)議的。

四、Socket

Socket和TCP/IP的關(guān)系
Socket 是應(yīng)用層與 TCP/IP 協(xié)議族通信的中間軟件抽象層,它是一組接口,提供一套調(diào)用 TCP/IP 或UDP協(xié)議的 API。

在設(shè)計(jì)模式中,Socket 其實(shí)就是一個(gè)門面模式,它把復(fù)雜的 TCP/IP 協(xié)議族隱藏在 Socket 接口后面,對用戶來說,一組簡單的接口就是全部,讓 Socket 去組織數(shù)據(jù),以符合指定的協(xié)議。

WebSocket 與 Socket 的關(guān)系
WebSocket是一個(gè)應(yīng)用層的協(xié)議,而Socket是介于應(yīng)用層和傳輸層的一個(gè)接口。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容