TCP HTTP UDP三者的關(guān)系:
TCP/IP:是個(gè)協(xié)議組,可分為四個(gè)層次:網(wǎng)絡(luò)接口層、網(wǎng)絡(luò)層、傳輸層和應(yīng)用層。
- 在網(wǎng)絡(luò)層有IP協(xié)議、ICMP協(xié)議、ARP協(xié)議、RARP協(xié)議和BOOTP協(xié)議。
- 在傳輸層中有TCP協(xié)議與UDP協(xié)議。
- 在應(yīng)用層有FTP、HTTP、TELNET、SMTP、DNS等協(xié)議。
TCP/UDP協(xié)議:是傳輸層協(xié)議,主要解決數(shù)據(jù)如何在網(wǎng)絡(luò)中傳輸。
HTTP:超文本傳輸協(xié)議,它是一個(gè)協(xié)議,并且是基于TCP/IP協(xié)議基礎(chǔ)之上的應(yīng)用層協(xié)議,主要解決如何包裝數(shù)據(jù)。HTTP協(xié)議詳細(xì)規(guī)定了瀏覽器與服務(wù)器之間相互通信的規(guī)則,是萬(wàn)維網(wǎng)交換信息的基礎(chǔ)。(HTTP是基于請(qǐng)求-響應(yīng)形式并且是短連接,并且是無(wú)狀態(tài)的協(xié)議。)
共同點(diǎn):
都是通信協(xié)議,也就是通信時(shí)所遵守的規(guī)則,只有雙方按照這個(gè)規(guī)則“說(shuō)話”,對(duì)方才能理解或?yàn)橹?wù)。
Socket:
- Socket不屬于協(xié)議范疇,而是一個(gè)調(diào)用接口(API),Socket是對(duì)TCP/IP協(xié)議的封裝,通過(guò)調(diào)用Socket,才能使用TCP/IP協(xié)議。如,http就是基于tcp的,用socket可以創(chuàng)建tcp連接,也可以創(chuàng)建udp連接,這意味著,用socket可以創(chuàng)建任何協(xié)議的連接,因?yàn)槠渌鼌f(xié)議都是基于此的。
- Socket是為了實(shí)現(xiàn)以上的通信過(guò)程而建立成來(lái)的通信管道,其真實(shí)的代表是客戶端和服務(wù)器端的一個(gè)通信進(jìn)程,雙方進(jìn)程通過(guò)socket進(jìn)行通信,而通信的規(guī)則采用指定的協(xié)議。
- Socket連接是長(zhǎng)連接,理論上客戶端和服務(wù)器端一旦建立連接將不會(huì)主動(dòng)斷開(kāi)此連接。Socket連接屬于請(qǐng)求-響應(yīng)形式,服務(wù)端可主動(dòng)將消息推送給客戶端。
一個(gè)形象的比喻:TCP/IP是由SOCKET修建公路,HTTP是公路上跑的車(chē),XML或JSON是車(chē)裝載的貨物。
補(bǔ)充:WebSocket
- 命名方面,Socket是一個(gè)深入人心的概念,WebSocket借用了這一概念;
- 使用方面,完全兩個(gè)東西;
- WebSocket 和 HTTP 一樣,是應(yīng)用層的協(xié)議,WebSocket協(xié)議彌補(bǔ)了 HTTP協(xié)議的不足。想一想HTTP和Socket什么關(guān)系,WebSocket和Socket就是什么關(guān)系。