HTTP的三次握手



如圖,這三次是完整的三次握手的過程,第一次握手可以看到發送了一個SYN標示位,為了簡單演示,說SYN=1,其實,就是SYN占據了第一個標識位,用圖片只是為了更形象的展示這三個過程,返回的時候是一個SYN,再加上一個ACK。最后客戶端再發送一個ACK給服務端,作為第一個標識位,這樣一個過程就完成了一個三次握手
轉載 : https://www.cnblogs.com/wzndkj/p/10018387.html
二,websocket
1,WebSocket就很好的解決被動性問題,只需要完成一次握手,兩者之間就直接可以創建持久性的連接,並進行雙向數據傳輸。不用再次發起網絡請求,服務端有消息就會自己發過來.它允許服務端主動向客戶端推送數據。比如在app上websocket獲取並展示客戶的時時消費情況.
2,WebSocket同HTTP一樣也是應用層的協議. 都是基於TCP的,可靠性的傳輸協議。但是它是一種雙向通信協議,是建立在TCP之上的,並且Websocket是一個持久化的協議,而HTTP是非持久化的協議。WebSocket protocol 是HTML5一種新的協議,但Websocket是基於HTTP協議的,或者說借用了HTTP的協議來完成一部分握手。一開始的握手需要借助HTTP請求完成。
3,WebSocket在建立握手時,通過 HTTP/1.1 協議的101狀態碼進行握手。但是建立之后,在真正傳輸時候是不需要HTTP協議的,而是使用TCP協議.
4,Websocket使用ws或wss的統一資源標志符,類似於HTTPS,其中wss表示在TLS之上的Websocket
5,Websocket使用和 HTTP 相同的 TCP 端口,可以繞過大多數防火牆的限制。默認情況下,Websocket協議使用80端口;運行在TLS之上時,默認使用443端口。
6,優點:
實時性更強,很好的控制開銷(協議的頭部較小),保持連接.
三,socket
1,概念:Socket其實並不是一個協議,而是為了方便使用TCP或UDP而抽象出來的一層,是位於應用層和傳輸控制層之間的一組接口.
1.1,在程序內部提供了與外界通信的端口,也就是端口通信.它通過建立socket連接,可以為通信雙方的數據傳輸提供一個通道
1.2,它是應用層與TCP/IP協議族通信的中間軟件抽象層,是一組接口。在設計模式中,Socket其實就是一個門面模式,它把復雜的TCP/IP協議族隱藏在Socket接口后面,對用戶來說,一組簡單的接口就是全部,讓Socket去組織數據,以符合指定的協議。
2,當兩台主機通信時,必須通過Socket連接,Socket則利用TCP/IP協議建立TCP連接。TCP連接則更依靠於底層的IP協議,IP協議的連接則依賴於鏈路層等更低層次。
3,和機頂盒通信可以采用socket(自己決定采用udp的scoket還是tcp的socket,一般采用的是tcp的socket)
4, Socket的分類
4.1, 根據不同的的底層協議,Socket的實現是多樣化的.這里只介紹TCP/IP協議族的內容.
4.2,在這個協議族當中主要的Socket類型為流套接字(streamsocket)和數據報套接字(datagramsocket)。
4.3,流套接字將TCP作為其端對端協議,提供了一個可信賴的字節流服務。
4.4,數據報套接字使用UDP協議,提供數據打包發送服務。 下面,
5,tcp的scoket和udp的socket的區別
使用UDP方式android端和服務器端接收可以看出,其實android端和服務器端的發送和接收大庭相徑,只要端口號正確了,相互通信就沒有問題,
TCP使用的是流的方式發送,UDP是以包的形式發送。
感謝:
基於android的Socket通信
四,總計:
1,傳輸層的TCP是基於網絡層的IP協議的,
2,而應用層的HTTP協議又是基於傳輸層的TCP協議的,
3,而Socket本身不算是協議,就像上面所說,它只是提供了一個針對TCP或者UDP編程的接口.
(二)websocket 和socket區別
1,websocket是應用層的協議,而socket是傳輸控制層的協議.
(三)websocket 和http區別
相同點:
1,都是應用層的協議
2,都是基於tcp,並且都是可靠的協議
不同點:
1,websocket是持久連接的協議,而http是非持久連接的協議.
2,websocket是雙向通信協議,模擬socket協議,可以雙向發送消息,而http是單向的.
3,websocket的服務端可以主動向客服端發送信息,而http的服務端只有在客戶端發起請求時才能發送數據,無法主動向客戶端發送信息.
(四)HTTPS和HTTP的區別主要為以下四點:
1、https協議需要到ca申請證書,一般免費證書很少,需要交費。
2、http是超文本傳輸協議,信息是明文傳輸,https 則是具有安全性的ssl加密傳輸協議。
3、http和https使用的是完全不同的連接方式,用的端口也不一樣,前者是80,后者是443。
4、http的連接很簡單,是無狀態的;HTTPS協議是由SSL+HTTP協議構建的可進行加密傳輸、身份認證的網絡協議,比http協議安全。
五,長連接和短連接
1,短連接:在HTTP1.0中,客戶端發送請求,服務器接收請求,雙方建立連接,服務器響應資源,請求結束。
2,長連接:在HTTP 1.1,客戶端發出請求,服務端接收請求,雙方建立連接,在服務端沒有返回之前保持連接,當客戶端再發送請求時,它會使用同一個連接。這一直繼續到客戶端或服務器端認為會話已經結束,其中一方中斷連接。
優勢:減少了連接請求,降低TCP阻塞,減少了延遲,實時性較好。
劣勢:可能會影響性能,因為它在文件被請求之后還保持了不必要的連接很長時間。
原文鏈接:https://blog.csdn.net/qq_38859786/article/details/80523642
