scoket是基於tcp/ip的封裝使用,所以我們先簡單了解一下tcp/ip。
ip協議提供了主機到主機之間的通訊,為了完成不同主機之間的通訊,我們需要給每個主機提供乙個唯一的身份標識,這個標識就是ip位址,有了位址,ip協議就可以把資料傳送給對應的主機。
tcp協議是在ip協議的基礎上,通過埠號來區別主機上的程序,實現了程序到程序間的通訊。
特點:面向連線、面向位元組流、全雙工通訊、可靠面向連線:使用tcp傳輸資料,就必須要先建立tcp連線,資料傳送完成後要結束tcp連線。
面向位元組流:傳輸的資料流過大的話,tcp報文長度有限,需要分成幾塊傳送,接收方要按順序接收並且重組資料流。
雙全工通訊:建立tcp連線之後,通訊雙方都可以隨時傳送資料。
可靠:通過tcp連線傳送的資料,不會丟失,保持傳送的順序。
埠號規定為16位,即允許ip主機擁有65535個不同的埠號。
其中:
在socket使用時,可以用1024~65535的埠號
基於瀏覽器端的web技術,那麼它的通訊肯定少不了http,websocket本身雖然也是一種新的應用層協議,但是它也不能夠脫離http而單獨存在。具體來講,我們在客戶端構建乙個websocket例項,並且為它繫結乙個需要連線到的伺服器位址,當客戶端連線服務端的時候,會向服務端傳送乙個類似下面的http報文,注意該報文中有乙個upgrade首部,它的作用是告訴服務端需要將通訊協議切換到websocket,如果服務端支援websocket協議,那麼它就會將自己的通訊協議切換到websocket,同時發給客戶端類似於以下的乙個響應報文頭,返回的狀態碼為101,表示同意客戶端協議轉換請求,並將它轉換為websocket協議。
以上過程都是利用http通訊完成的,稱之為websocket協議握手(websocket protocol handshake),進過這握手之後,客戶端和服務端就建立了websocket連線,以後的通訊走的都是websocket協議了。所以總結為websocket握手需要借助於http協議,建立連線後通訊過程使用websocket協議。同時需要了解的是,該websocket連線還是基於我們剛才發起http連線的那個tcp連線。一旦建立連線之後,我們就可以進行資料傳輸了,websocket提供兩種資料傳輸:文字資料和二進位制資料。
基於以上分析,我們可以看到,websocket能夠提供低延遲,高效能的客戶端與服務端的雙向資料通訊。它顛覆了之前web開發的請求處理響應模式,並且提供了一種真正意義上的客戶端請求,伺服器推送資料的模式,特別適合實時資料互動應用開發。
scoket和瀏覽器的連線限制
1,乙個socket由兩個埠唯一確定 socket連線由雙方的端點來決定 下面作者寫了解釋,大致就是說 乙個socket是由一對計算機ip 在socket連線開啟前還要區分網絡卡mac位址 加埠號來區分的,因此只要埠不同,那麼在兩台計算機間就可以存在多個socket連線。它的原理是 每個socket...
HTTP的長連線和短連線
http的長連線和短連線本質上是tcp長連線和短連線。http屬於應用層協議.短連線 瀏覽器和伺服器每進行一次http操作,就建立一次連線,但任務結束就中斷連線。長連線 當乙個網頁開啟完成後,客戶端和伺服器之間用於傳輸http資料的 tcp連線不會關閉,如果客戶端再次訪問這個伺服器上的網頁,會繼續使...
TCP的長連線和短連線
tcp ip是個協議組,可分為三個層次 網路層 傳輸層和應用層。在網路層有ip協議 icmp協議 arp協議 rarp協議和bootp協議。在傳輸層中有tcp協議與udp協議。在應用層有ftp http telnet smtp dns等協議。通常的短連線操作步驟是 連線 資料傳輸 關閉連線 而長連線...