一、webSocket和Socket的概念介紹
1、socket翻譯為套接字,socket是在應(yīng)用層和傳輸層之間的一個(gè)抽象層,它把TCP/IP層復(fù)雜的操作抽象為幾個(gè)簡(jiǎn)單的接口供應(yīng)用層調(diào)用以實(shí)現(xiàn)進(jìn)程在網(wǎng)絡(luò)中通信。
2、WebSocket協(xié)議是基于TCP的一種新的網(wǎng)絡(luò)協(xié)議,和http協(xié)議一樣屬于應(yīng)用層協(xié)議,是一種讓客戶端和服務(wù)器之間能進(jìn)行雙向?qū)崟r(shí)通信的技術(shù)。
二、webSocket和Socket的區(qū)別
1、原理上的區(qū)別:
Socket是傳輸控制層協(xié)議,WebSocket是應(yīng)用層協(xié)議。
Socket是應(yīng)用層與TCP/IP協(xié)議族通信的中間軟件抽象層,它是一組接口(不是協(xié)議,為了方便使用TCP或UDP而抽象出來的一層,是位于應(yīng)用層和傳輸控制層之間的一組接口)。
在設(shè)計(jì)模式中,Socket其實(shí)就是一個(gè)門面模式,它把復(fù)雜的TCP/IP協(xié)議族隱藏在Socket接口后面。利用TCP/IP協(xié)議建立TCP連接。(TCP連接則更依靠于底層的IP協(xié)議,IP協(xié)議的連接則依賴于鏈路層等更低層次。)
WebSocket則是一個(gè)典型的應(yīng)用層協(xié)議。
2、靈活運(yùn)用的程度不同:
WebSocket 更易用,而 Socket 更靈活。Socket是應(yīng)用層與TCP/IP協(xié)議族通信的中間軟件抽象層,它是一組接口。
在設(shè)計(jì)模式中,Socket其實(shí)就是一個(gè)門面模式,它把復(fù)雜的TCP/IP協(xié)議族隱藏在Socket接口后面,對(duì)用戶來說,一組簡(jiǎn)單的接口就是全部,讓Socket去組織數(shù)據(jù),以符合指定的協(xié)議。
主機(jī) A 的應(yīng)用程序要能和主機(jī) B 的應(yīng)用程序通信,必須通過 Socket 建立連接,而建立 Socket 連接必須需要底層 TCP/IP 協(xié)議來建立 TCP 連接。建立 TCP 連接需要底層 IP 協(xié)議來尋址網(wǎng)絡(luò)中的主機(jī)。
網(wǎng)絡(luò)層使用的 IP 協(xié)議可以幫助我們根據(jù) IP 地址來找到目標(biāo)主機(jī),但是一臺(tái)主機(jī)上可能運(yùn)行著多個(gè)應(yīng)用程序,如何才能與指定的應(yīng)用程序通信就要通過 TCP 或 UPD 的地址也就是端口號(hào)來指定。這樣就可以通過一個(gè) Socket 實(shí)例唯一代表一個(gè)主機(jī)上的一個(gè)應(yīng)用程序的通信鏈路了。
而 WebSocket 則不同,它是一個(gè)完整的 應(yīng)用層協(xié)議,包含一套標(biāo)準(zhǔn)的 API 。
3、傳輸層次不同:
Socket 是傳輸控制層的接口。用戶可以通過 Socket 來操作底層 TCP/IP 協(xié)議族通信。
網(wǎng)絡(luò)中的 Socket 并不是什么協(xié)議,而是為了使用 TCP,UDP 而抽象出來的一層 API,它是位于應(yīng)用層和傳輸層之間的一個(gè)抽象層。Socket 是對(duì) TCP/IP 的封裝;HTTP 是轎車,提供了封裝或者顯示數(shù)據(jù)的具體形式;Socket 是發(fā)動(dòng)機(jī),提供了網(wǎng)絡(luò)通信的能力。
在 Unix 一切皆文件哲學(xué)的思想下,Socket 是一種'打開—讀/寫—關(guān)閉'模式的實(shí)現(xiàn),服務(wù)器和客戶端各自維護(hù)一個(gè)'文件',在建立連接打開后,可以向自己文件寫入內(nèi)容供對(duì)方讀取或者讀取對(duì)方內(nèi)容,通訊結(jié)束時(shí)關(guān)閉文件。
WebSocket 是一種在單個(gè) TCP 連接上進(jìn)行全雙工通信的協(xié)議。WebSocket 使得客戶端和服務(wù)器之間的數(shù)據(jù)交換變得更加簡(jiǎn)單,允許服務(wù)端主動(dòng)向客戶端推送數(shù)據(jù)。
在 WebSocket API 中,瀏覽器和服務(wù)器只需要完成一次 HTTP 握手,兩者之間就直接可以創(chuàng)建持久性的連接,并進(jìn)行雙向數(shù)據(jù)傳輸。
三、OSI七層協(xié)議
OSI是一個(gè)開放性的通信系統(tǒng)互連參考模型,他是一個(gè)定義得非常好的協(xié)議規(guī)范。OSI模型有7層結(jié)構(gòu),從上到下分別是 7 應(yīng)用層 6 表示層 5 會(huì)話層 4 傳輸層 3 網(wǎng)絡(luò)層 2 數(shù)據(jù)鏈路層 1 物理層。
七層協(xié)議 | 舉例 |
---|---|
應(yīng)用層 | 例如HTTP、SMTP、SNMP、FTP、Telnet、SIP、SSH、NFS、RTSP、XMPP、Whois、ENRP |
表示層 | 例如XDR、ASN.1、SMB、AFP、NCP |
會(huì)話層 | 例如ASAP、TLS、SSH、ISO 8327 / CCITT X.225、RPC、NetBIOS、ASP、Winsock、BSD sockets |
傳輸層 | 例如TCP、UDP、RTP、SCTP、SPX、ATP、IL |
網(wǎng)絡(luò)層 | 例如IP、ICMP、IGMP、IPX、BGP、OSPF、RIP、IGRP、EIGRP、ARP、RARP、 X.25 |
數(shù)據(jù)鏈路層 | 例如以太網(wǎng)、令牌環(huán)、HDLC、幀中繼、ISDN、ATM、IEEE 802.11、FDDI、PPP |
物理層 | 例如線路、無線電、光纖、信鴿 |
聯(lián)系客服