TCP/UDP區(qū)別:
TCP
(傳輸控制協(xié)議洒闸,Transmission Control Protocol):(類似打電話)
面向連接驳癌、傳輸可靠(保證數(shù)據(jù)正確性)、有序(保證數(shù)據(jù)順序)宪潮、傳輸大量數(shù)據(jù)(流模式)、速度慢钳宪、對系統(tǒng)資源的要求多靠柑,程序結(jié)構(gòu)較復(fù)雜,
每一條TCP連接只能是點到點的圃庭,
TCP首部開銷20字節(jié)锄奢。
UDP
(用戶數(shù)據(jù)報協(xié)議失晴,User Data Protocol):(類似發(fā)短信)
面向非連接 、傳輸不可靠(可能丟包)拘央、無序涂屁、傳輸少量數(shù)據(jù)(數(shù)據(jù)報模式)、速度快灰伟,對系統(tǒng)資源的要求少拆又,程序結(jié)構(gòu)較簡單 ,
UDP支持一對一栏账,一對多帖族,多對一和多對多的交互通信,
UDP的首部開銷小挡爵,只有8個字節(jié)竖般。
tcp三次握手建立連接:
第一次握手:客戶端發(fā)送syn包(seq=x)到服務(wù)器,并進(jìn)入SYN_SEND狀態(tài)茶鹃,等待服務(wù)器確認(rèn)涣雕;
第二次握手:服務(wù)器收到syn包,必須確認(rèn)客戶的SYN(ack=x+1)闭翩,同時自己也發(fā)送一個SYN包(seq=y)挣郭,即SYN+ACK包,此時服務(wù)器進(jìn)入SYN_RECV狀態(tài)疗韵;
第三次握手:客戶端收到服務(wù)器的SYN+ACK包兑障,向服務(wù)器發(fā)送確認(rèn)包ACK(ack=y+1),此包發(fā)送完畢蕉汪,客戶端和服務(wù)器進(jìn)入ESTABLISHED狀態(tài)旺垒,完成三次握手。
握手過程中傳送的包里不包含數(shù)據(jù)肤无,三次握手完畢后先蒋,客戶端與服務(wù)器才正式開始傳送數(shù)據(jù)。理想狀態(tài)下宛渐,TCP連接一旦建立竞漾,在通信雙方中的任何一方主動關(guān)閉連接之前,TCP 連接都將被一直保持下去窥翩。
主機A向主機B發(fā)出連接請求數(shù)據(jù)包:“我想給你發(fā)數(shù)據(jù)业岁,可以嗎?”寇蚊,這是第一次對話笔时;
主機B向主機A發(fā)送同意連接和要求同步(同步就是兩臺主機一個在發(fā)送,一個在接收仗岸,協(xié)調(diào)工作)的數(shù)據(jù)包:“可以允耿,你什么時候發(fā)借笙?”,這是第二次對話较锡;
主機A再發(fā)出一個數(shù)據(jù)包確認(rèn)主機B的要求同步:“我現(xiàn)在就發(fā)业稼,你接著吧!”蚂蕴,這是第三次對話低散。
三次“對話”的目的是使數(shù)據(jù)包的發(fā)送和接收同步,經(jīng)過三次“對話”之后骡楼,主機A才向主機B正式發(fā)送數(shù)據(jù)熔号。
Websocket
Websocket協(xié)議解決了服務(wù)器與客戶端全雙工通信的問題。
注:什么是單工鸟整、半雙工引镊、全工通信?
信息只能單向傳送為單工吃嘿;
信息能雙向傳送但不能同時雙向傳送稱為半雙工祠乃;
信息能夠同時雙向傳送則稱為全雙工梦重。
websocket協(xié)議解析
wensocket協(xié)議包含兩部分:一部分是“握手”兑燥,一部分是“數(shù)據(jù)傳輸”。
WebSocket和Socket區(qū)別
可以把WebSocket想象成HTTP(應(yīng)用層)琴拧,HTTP和Socket什么關(guān)系降瞳,WebSocket和Socket就是什么關(guān)系。
HTTP 協(xié)議有一個缺陷:通信只能由客戶端發(fā)起蚓胸,做不到服務(wù)器主動向客戶端推送信息挣饥。
WebSocket 協(xié)議在2008年誕生,2011年成為國際標(biāo)準(zhǔn)沛膳。所有瀏覽器都已經(jīng)支持了扔枫。
它的最大特點就是,服務(wù)器可以主動向客戶端推送信息锹安,客戶端也可以主動向服務(wù)器發(fā)送信息短荐,是真正的雙向平等對話,屬于服務(wù)器推送技術(shù)的一種叹哭。
