日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

看完讓你徹底搞懂Websocket原理,websocket和http的區(qū)別( 二 )


websocket協(xié)議實現(xiàn)獨占一條tcp通道 , 它負責從tcp流確定消息邊界 , 解析出每個獨立的消息包 ??蛇M行全雙工的雙向通信 。題主所謂的WebSocket可以實現(xiàn)持久連接 , 只是的一個服務(wù)端WebSocket會話和對應(yīng)的客戶端WebSocket會話在使用一個固定的保持連接的TCP通信而已 。一般需要將服務(wù)端WebSocket會話和某位用戶關(guān)聯(lián)起來(客戶單連接后 , 可以再單獨發(fā)送憑證驗證) , 實現(xiàn)給某個用戶推送消息 , 只需根據(jù)關(guān)聯(lián)找到對應(yīng)的WebSocket會話調(diào)用發(fā)送API即可 。
應(yīng)用使用單獨實現(xiàn)websocket協(xié)議的服務(wù)\客戶端組件 , 可以更加輕松地實現(xiàn)自定義協(xié)議:在websocket的二進制或者文本消息體內(nèi)或者直接使用websocket的自協(xié)議定義機制封裝自己定義的協(xié)議 。推薦大家如果有些需要自建IM服務(wù)器 , 推送服務(wù)器的場合嘗試先用WebSocket來實現(xiàn) 。負載高(協(xié)議頭消耗?。?nbsp;, 協(xié)議簡潔 , 幾乎所有客戶端(減少了大量的工作)都有對應(yīng)的開源項目可用 , 同時還是唯一可以在瀏覽器上用的雙向通信協(xié)議(flash和silverlight等插件方式除外) 。
如果你要用websocket實現(xiàn)請求應(yīng)答式的子協(xié)議 , 要點是你要設(shè)計唯一的請求標志 , 響應(yīng)也將請求標志帶回來 , 然后你就可以從客戶端的請求隊列中查找響應(yīng)對應(yīng)的請求將響應(yīng)交給上層處理!特別注意:關(guān)于webcket持久連接 , 本質(zhì)上是下層tcp連接的保持 , 核心問題同樣是如何?;?。需要考慮Nat失效(基站最突出 , 一般有效期只有3分鐘)或者其它網(wǎng)絡(luò)原因?qū)е麓罅堪脒B接存在 。
解決方案就是合理的心跳時間 , 一般我設(shè)置為2分50秒的樣子 。其它不論是否從事網(wǎng)絡(luò)編程 , 都應(yīng)該花時間學(xué)習下TCP/IP協(xié)議簇方面的知識 , 著重理解分層原理 , 各層的功能和為上層提供了哪些功能 。就像這個問題 , 如果不對TCP有所了解 , 回答的內(nèi)容就沒多大意義了 。閱讀一個你比較熟悉的語言的的一種協(xié)議(比如http)實現(xiàn)項目的源碼 , 幫助應(yīng)該很大 。
和網(wǎng)絡(luò)IO密切相關(guān)的就是線程 , 要設(shè)計高可用的TCP服務(wù)器 , 必須要熟悉多線程 。網(wǎng)絡(luò)IO和多線程是我認為最重要的兩個核心知識點 。關(guān)于協(xié)議的設(shè)計 , 你可以多學(xué)習其他優(yōu)秀的基于TCP實現(xiàn)的應(yīng)用層協(xié)議 , 簡單的就有Redis的通信協(xié)議 , 里面有阻塞式的消費者隊列 , 那個就需要一條單獨的tcp通道 。協(xié)議設(shè)計是很有意思的一件事情 , 就是mysql和mongodb的通信協(xié)議我也不會放過 , 去看看 , 會給自己設(shè)計協(xié)議帶來不少的參考價值 。
如果時間允許 , 有標準的協(xié)議最好看看RFC文檔 , 現(xiàn)在Chrome的翻譯已經(jīng)很好了 , 如果英文不太好 , 問題也不大 。關(guān)于TCP/IP相關(guān)的書籍《計算機網(wǎng)絡(luò):自頂向下方法》和謝希仁的《計算機網(wǎng)絡(luò)》都是不錯的入門書籍 ?!禩CP/IP詳解》是經(jīng)典 , 雖然出版已久 , 內(nèi)容是沒過時的 。網(wǎng)絡(luò)應(yīng)用脫離不了操作系統(tǒng) , 所以可以再看看操作系統(tǒng)關(guān)于網(wǎng)絡(luò)IO這一塊的設(shè)計 。
如果是先建立TCP , 再進行的HTTP通信 , 那為何會說TCP是在HTTP報文外面包了一層TCP的信息?

看完讓你徹底搞懂Websocket原理,websocket和http的區(qū)別


這得從網(wǎng)絡(luò)的OSI七層協(xié)議說起 。TCP協(xié)議屬于傳輸層 , 工作在第4層 。而HTTP協(xié)議屬于應(yīng)用層 , 工作在第7層 。所有網(wǎng)絡(luò)傳輸最后都必須有第1層物理層來完成 , 也就是0101的物理電信號 。上層數(shù)據(jù)都是被層層封裝 , 最后再轉(zhuǎn)化為物理信號傳輸?shù)?。1、OSI七層網(wǎng)絡(luò)模型的來源早在互聯(lián)網(wǎng)起源的時代 , 網(wǎng)絡(luò)通訊并不是統(tǒng)一標準的 , 而是各家有各家的通訊方法 。

推薦閱讀