HTTP vs TCP/IP
TCP (Transmission Control Protocol)和UDP(User Datagram Protocol)協(xié)議屬于傳輸層協(xié)議。其中TCP提供IP環(huán)境下的數(shù)據(jù)可靠傳輸,它提供的服務(wù)包括數(shù)據(jù)流傳送、可靠性、有效流控、全雙工操作和多路復(fù)用。通過面向連接、端到端和可靠的數(shù)據(jù)包發(fā)送。通俗說,它是事前為所發(fā)送的數(shù)據(jù)開辟出連接好的通道,然后再進(jìn)行數(shù)據(jù)發(fā)送;而UDP則不為IP提供可靠性、流控或過失恢復(fù)功能。1般來講,TCP對(duì)應(yīng)的是可靠性要求高的利用,而UDP對(duì)應(yīng)的則是可靠性要求低、傳輸經(jīng)濟(jì)的利用。TCP支持的利用協(xié)議主要有:Telnet、FTP、SMTP等;UDP支持的利用層協(xié)議主要有:NFS(網(wǎng)絡(luò)文件系統(tǒng))、SNMP(簡單網(wǎng)絡(luò)管理協(xié)議)、DNS(主域名稱系統(tǒng))、TFTP(通用文件傳輸協(xié)議)等。
TPC/IP協(xié)議是傳輸層協(xié)議,主要解決數(shù)據(jù)如何在網(wǎng)絡(luò)中傳輸,而HTTP是利用層協(xié)議,主要解決如何包裝數(shù)據(jù)。關(guān)于TCP/IP和HTTP協(xié)議的關(guān)系,網(wǎng)絡(luò)有1段比較容易理解的介紹:“我們?cè)趥鬏敂?shù)據(jù)時(shí),可以只使用(傳輸層)TCP/IP協(xié)議,但是那樣的話,如果沒有利用層,便沒法辨認(rèn)數(shù)據(jù)內(nèi)容,如果想要使傳輸?shù)臄?shù)據(jù)成心義,則必須使用到利用層協(xié)議,利用層協(xié)議有很多,比如HTTP、FTP、TELNET等,也能夠自己定義利用層協(xié)議。WEB使用HTTP協(xié)議作利用層協(xié)議,以封裝HTTP
文本信息,然后使用TCP/IP做傳輸層協(xié)議將它發(fā)到網(wǎng)絡(luò)上。”
HTTP vs Socket
HTTP:超文本傳輸協(xié)議,首先它是1個(gè)協(xié)議,并且是基于TCP/IP協(xié)議基礎(chǔ)之上的利用層協(xié)議。TCP/IP協(xié)議是傳輸層協(xié)議,主要解決數(shù)據(jù)如何在網(wǎng)絡(luò)中傳輸,HTTP是利用層協(xié)議,主要解決如何包裝數(shù)據(jù)。HTTP協(xié)議詳細(xì)規(guī)定了閱讀器與服務(wù)器之間相互通訊的規(guī)則,是萬維網(wǎng)交換信息的基礎(chǔ)。HTTP是基于要求-響應(yīng)情勢并且是短連接,并且是無狀態(tài)的協(xié)議。針對(duì)其無狀態(tài)特性,在實(shí)際利用中又需要有狀態(tài)的情勢,因此1般會(huì)通過session/cookie技術(shù)來解決此問題。
Socket:Socket不屬于協(xié)議范疇,而是1個(gè)調(diào)用接口(API),Socket是對(duì)TCP/IP協(xié)議的封裝,通過調(diào)用Socket,才能使用TCP/IP協(xié)議。Socket連接是長連接,理論上客戶端和服務(wù)器端1旦建立連接將不會(huì)主動(dòng)斷開此連接。Socket連接屬于要求-響應(yīng)情勢,服務(wù)端可主動(dòng)將消息推送給客戶端。