TCP/UDP http websocket ajax 的區(qū)別關(guān)系以及使用場(chǎng)景
TCP/IP協(xié)議棧主要分為四層:應(yīng)用層、傳輸層、網(wǎng)絡(luò)層、數(shù)據(jù)鏈路層

IP:
即 網(wǎng)絡(luò)層協(xié)議;(高速公路)
TCP:
即 傳輸層協(xié)議;(卡車(chē))
使用場(chǎng)景:
TCP一般用于文件傳輸(FTP HTTP 對(duì)數(shù)據(jù)準(zhǔn)確性要求高,速度可以相對(duì)慢),發(fā)送或接收郵件(POP IMAP SMTP 對(duì)數(shù)據(jù)準(zhǔn)確性要求高,非緊急應(yīng)用),遠(yuǎn)程登錄(TELNET SSH 對(duì)數(shù)據(jù)準(zhǔn)確性有一定要求,有連接的概念)等等;
UDP:
即 用戶數(shù)據(jù)報(bào)協(xié)議
使用場(chǎng)景:
UDP一般用于即時(shí)通信(QQ聊天 對(duì)數(shù)據(jù)準(zhǔn)確性和丟包要求比較低,但速度必須快),在線視頻(RTSP 速度一定要快,保證視頻連續(xù),但是偶爾花了一個(gè)圖像幀,人們還是能接受的),網(wǎng)絡(luò)語(yǔ)音電話(VoIP 語(yǔ)音數(shù)據(jù)包一般比較小,需要高速發(fā)送,偶爾斷音或串音也沒(méi)有問(wèn)題)等等。
HTTP:
即 應(yīng)用層協(xié)議;(貨物)。
HTTP(超文本傳輸協(xié)議)是利用TCP在兩臺(tái)電腦(通常是Web服務(wù)器和客戶端)之間傳輸信息的協(xié)議??蛻舳耸褂肳eb瀏覽器發(fā)起HTTP請(qǐng)求給Web服務(wù)器,Web服務(wù)器發(fā)送被請(qǐng)求的信息給客戶端。
使用場(chǎng)景:客戶端與服務(wù)端數(shù)據(jù)、資源請(qǐng)求
SOCKET:
socket只是一種連接模式,不是協(xié)議,socket是對(duì)TCP/IP協(xié)議的封裝,Socket本身并不是協(xié)議,而是一個(gè)調(diào)用接口(API),
通過(guò)Socket,我們才能使用TCP/IP協(xié)議
(港口碼頭/車(chē)站)Socket是應(yīng)用層與TCP/IP協(xié)議族通信的中間軟件抽象層,它是一組接口。
TCP/IP:
代表傳輸控制協(xié)議/網(wǎng)際協(xié)議,指的是一系列協(xié)議,TCP/IP 模型在 OSI 模型的基礎(chǔ)上進(jìn)行了簡(jiǎn)化,變成了四層,從下到上分別為:網(wǎng)絡(luò)接口層、網(wǎng)絡(luò)層、傳輸層、應(yīng)用層。與 OSI 體系結(jié)構(gòu)對(duì)比如下:

TCP/UDP區(qū)別:
兩種協(xié)議都是傳輸層協(xié)議,為應(yīng)用層提供信息載體。
- TCP面向連接(如打電話要先撥號(hào)建立連接);UDP是無(wú)連接的,即發(fā)送數(shù)據(jù)之前不需要建立連接
- TCP提供可靠的服務(wù)。也就是說(shuō),通過(guò)TCP連接傳送的數(shù)據(jù),無(wú)差錯(cuò),不丟失,不重復(fù),且按序到達(dá);UDP盡最大努力交付,即不保證可靠交付
- TCP面向字節(jié)流,實(shí)際上是TCP把數(shù)據(jù)看成一連串無(wú)結(jié)構(gòu)的字節(jié)流;UDP是面向報(bào)文的
UDP沒(méi)有擁塞控制,因此網(wǎng)絡(luò)出現(xiàn)擁塞不會(huì)使源主機(jī)的發(fā)送速率降低(對(duì)實(shí)時(shí)應(yīng)用很有用,如IP電話,實(shí)時(shí)視頻會(huì)議等) - 每一條TCP連接只能是點(diǎn)到點(diǎn)的;UDP支持一對(duì)一,一對(duì)多,多對(duì)一和多對(duì)多的交互通信
- TCP首部開(kāi)銷(xiāo)20字節(jié);UDP的首部開(kāi)銷(xiāo)小,只有8個(gè)字節(jié)
- TCP的邏輯通信信道是全雙工的可靠信道
tcp三次握手建立連接:
tcp-ip-handshark.png
Websocket
Websocket協(xié)議解決了服務(wù)器與客戶端全雙工通信的問(wèn)題。
注:什么是單工、半雙工、全工通信?
信息只能單向傳送為單工;
信息能雙向傳送但不能同時(shí)雙向傳送稱為半雙工;
信息能夠同時(shí)雙向傳送則稱為全雙工。
- 使用場(chǎng)景: 社交聊天、彈幕、多玩家游戲、協(xié)同編輯、股票基金實(shí)時(shí)報(bào)價(jià)、體育實(shí)況更新、視頻會(huì)議/聊天、基于位置的應(yīng)用、在線教育、智能家居等需要高實(shí)時(shí)的場(chǎng)景
Ajax(Asynchronous JavaScript and XML)
Js通過(guò)new XMLHttpRequest的實(shí)例向服務(wù)端發(fā)送的異步網(wǎng)絡(luò)請(qǐng)求。
- 與http請(qǐng)求的區(qū)別:
- Jquery Ajax請(qǐng)求頭中 多了一個(gè)'X-Requested-With'屬性,值為XMLHttpRequest
- 使用場(chǎng)景: 異步請(qǐng)求 頁(yè)面部分刷新
