一,HTTP 1,概念:http是目前應用最廣泛的一個網(wǎng)絡傳輸協(xié)議,是屬于網(wǎng)絡應用層的面向?qū)ο蟮膮f(xié)議. 1.1,HTTP1.1解決TCP3次握手4次揮手耗性能問題: 如果有大量的連接,每次在連接,關(guān)閉時都要經(jīng)歷3次握手,4次揮手,這很顯然會造成性能低下.因此,HTTP1.1開始,默認采用持久連接,使用了一種叫做keepalive connections 的機制,它可以在傳輸數(shù)據(jù)后仍然保持連接,當客戶端再次獲取數(shù)據(jù)時,直接使用剛剛空閑下來的連接,而無需再次握手.低線路負載,,提高傳輸速度. Keep-Alive不會永久保持連接,,它有一個保持時間,可以在不同的服務器軟件(如Apache)中設(shè)定這個時間,。實現(xiàn)長連接需要客戶端和服務端都支持長連接,。 1.2,HTTP協(xié)議的長連接和短連接,實質(zhì)上是TCP協(xié)議的長連接和短連接,。 1.3,TCP長連接:client向server發(fā)起連接,,server接受client連接,雙方建立連接,,client與server完成一次請求后,,它們之間的連接并不會主動關(guān)閉,后續(xù)的讀寫操作會繼續(xù)使用這個連接,。 2,請求方式: 一共有8種請求方式,常用的請求方法有OPTIONS,、GET、HEAD,、POST,、PUT、DELETE,、TRACE 3,返回碼: 每次請求,都會有狀態(tài)碼返回,常見的狀態(tài)碼有: 200,請求成功 206,請求內(nèi)容局部成功 403,,拒絕或者禁止訪問 404,客戶端請求語法錯誤,一般是連接地址不對. 500,服務器出現(xiàn)異常.宕機. 4.,Http是客服端發(fā)起請求,服務端才響應,發(fā)一次,響應一下,ajax的輪詢,也是讓瀏覽器隔個幾秒就發(fā)送一次請求,,詢問服務器是否有新信息,。這樣就很被動,服務端不能主動聯(lián)系客戶端,,只能由客戶端發(fā)起。得不停的發(fā)起. 二,websocket 1,WebSocket就很好的解決被動性問題,只需要完成一次握手,,兩者之間就直接可以創(chuàng)建持久性的連接,,并進行雙向數(shù)據(jù)傳輸。不用再次發(fā)起網(wǎng)絡請求,服務端有消息就會自己發(fā)過來.它允許服務端主動向客戶端推送數(shù)據(jù),。比如在app上websocket獲取并展示客戶的時時消費情況. 2,WebSocket同HTTP一樣也是應用層的協(xié)議. 都是基于TCP的,,可靠性的傳輸協(xié)議。但是它是一種雙向通信協(xié)議,,是建立在TCP之上的,并且Websocket是一個持久化的協(xié)議,,而HTTP是非持久化的協(xié)議。WebSocket protocol 是HTML5一種新的協(xié)議,但Websocket是基于HTTP協(xié)議的,,或者說借用了HTTP的協(xié)議來完成一部分握手,。一開始的握手需要借助HTTP請求完成。 3,WebSocket在建立握手時,,通過 HTTP/1.1 協(xié)議的101狀態(tài)碼進行握手,。但是建立之后,在真正傳輸時候是不需要HTTP協(xié)議的,而是使用TCP協(xié)議. 4,Websocket使用ws或wss的統(tǒng)一資源標志符,,類似于HTTPS,,其中wss表示在TLS之上的Websocket 5,Websocket使用和 HTTP 相同的 TCP 端口,可以繞過大多數(shù)防火墻的限制,。默認情況下,,Websocket協(xié)議使用80端口;運行在TLS之上時,,默認使用443端口,。 6,優(yōu)點: 實時性更強,很好的控制開銷(協(xié)議的頭部較小),保持連接. 三,socket 1,概念:Socket其實并不是一個協(xié)議,而是為了方便使用TCP或UDP而抽象出來的一層,,是位于應用層和傳輸控制層之間的一組接口. 1.1,在程序內(nèi)部提供了與外界通信的端口,也就是端口通信.它通過建立socket連接,可以為通信雙方的數(shù)據(jù)傳輸提供一個通道 1.2,它是應用層與TCP/IP協(xié)議族通信的中間軟件抽象層,,是一組接口。在設(shè)計模式中,,Socket其實就是一個門面模式,,它把復雜的TCP/IP協(xié)議族隱藏在Socket接口后面,對用戶來說,,一組簡單的接口就是全部,,讓Socket去組織數(shù)據(jù),以符合指定的協(xié)議,。 2,當兩臺主機通信時,,必須通過Socket連接,Socket則利用TCP/IP協(xié)議建立TCP連接,。TCP連接則更依靠于底層的IP協(xié)議,,IP協(xié)議的連接則依賴于鏈路層等更低層次,。 3,和機頂盒通信可以采用socket(自己決定采用udp的scoket還是tcp的socket,一般采用的是tcp的socket) 4, Socket的分類 4.2,在這個協(xié)議族當中主要的Socket類型為流套接字(streamsocket)和數(shù)據(jù)報套接字(datagramsocket),。 4.3,流套接字將TCP作為其端對端協(xié)議,,提供了一個可信賴的字節(jié)流服務。 4.4,數(shù)據(jù)報套接字使用UDP協(xié)議,,提供數(shù)據(jù)打包發(fā)送服務,。 下面, 5,tcp的scoket和udp的socket的區(qū)別 使用UDP方式android端和服務器端接收可以看出,,其實android端和服務器端的發(fā)送和接收大庭相徑,,只要端口號正確了,相互通信就沒有問題,, TCP使用的是流的方式發(fā)送,UDP是以包的形式發(fā)送,。
感謝: 四,總計: 1,傳輸層的TCP是基于網(wǎng)絡層的IP協(xié)議的,, (二)websocket 和socket區(qū)別 1,websocket是應用層的協(xié)議,而socket是傳輸控制層的協(xié)議. (三)websocket 和http區(qū)別 相同點: 1,都是應用層的協(xié)議 2,都是基于tcp,并且都是可靠的協(xié)議 不同點: 1,websocket是持久連接的協(xié)議,而http是非持久連接的協(xié)議. 2,websocket是雙向通信協(xié)議,模擬socket協(xié)議,可以雙向發(fā)送消息,而http是單向的. 3,websocket的服務端可以主動向客服端發(fā)送信息,而http的服務端只有在客戶端發(fā)起請求時才能發(fā)送數(shù)據(jù),無法主動向客戶端發(fā)送信息. (四)HTTPS和HTTP的區(qū)別主要為以下四點: 五,長連接和短連接 1,短連接:在HTTP1.0中,,客戶端發(fā)送請求,,服務器接收請求,,雙方建立連接,服務器響應資源,,請求結(jié)束,。 2,長連接:在HTTP 1.1,客戶端發(fā)出請求,,服務端接收請求,,雙方建立連接,在服務端沒有返回之前保持連接,,當客戶端再發(fā)送請求時,,它會使用同一個連接。這一直繼續(xù)到客戶端或服務器端認為會話已經(jīng)結(jié)束,,其中一方中斷連接,。 優(yōu)勢:減少了連接請求,降低TCP阻塞,,減少了延遲,,實時性較好。 劣勢:可能會影響性能,,因為它在文件被請求之后還保持了不必要的連接很長時間,。 借鑒: WebSocket介紹,與Socket的區(qū)別 https://blog.csdn.net/wwd0501/article/details/54582912 看完讓你徹底搞懂Websocket原理 https://blog.csdn.net/frank_good/article/details/50856585 WebSocket介紹,,與Socket的區(qū)別 https://blog.csdn.net/wwd0501/article/details/54582912 長連接,、短連接、長輪詢和WebSocket |
|
來自: 和合德 > 《計算機技術(shù)》