HTTP和HTTPS有什么區別?
端口號:HTTP默認是80端口,HTTPS默認是443。
URL前綴:HTTPHTTP 的 URL 前綴是?http://
,HTTPS 的 URL 前綴是?https://
。
安全性和資源消耗:HTTP協議運行在TCP上,都是明文傳輸,客戶端和服務端都無法驗證對方的身份。HTTPS協議是運行在SSL/TLS上的HTTP協議,SSL/TLS運行在TCP上,所有傳輸內容都經過加密,加密采用對稱加密,但是對稱加密的密鑰用服務器方的證書采用非對稱加密。所以HTTP協議沒有HTTPS協議安全,但是HTTPS協議比HTTP協議耗費更多資源。
SEO(搜索引擎優化):?搜索引擎會更加青睞使用HTTPS協議的網站,因為HTTPS能夠提供更高的安全保護。使用HTTPS協議的網站在搜索結果在可能會被優先顯示,從而對SEO產生影響。
WebSocket
什么是WebSocket?
WebSocket是一種基于TCP連接的全雙工通信協議,即客戶端和服務端可以同時發送和接收信息。
WebSocket 協議本質上是應用層的協議,用于彌補 HTTP 協議在持久通信能力上的不足。客戶端和服務器僅需一次握手,兩者之間就直接可以創建持久性的連接,并進行雙向數據傳輸。
?WebSocket和HTTP有什么區別?
WebSocket和HTTP都是基于TCP的應用層協議,都可以在網絡中傳輸數據。
兩者區別:
- WebSocket 是一種雙向實時通信協議,而 HTTP 是一種單向通信協議。并且,HTTP 協議下的通信只能由客戶端發起,服務器無法主動通知客戶端。
- WebSocket 使用 ws:// 或 wss://(使用 SSL/TLS 加密后的協議,類似于 HTTP 和 HTTPS 的關系) 作為協議前綴,HTTP 使用 http:// 或 https:// 作為協議前綴。
- WebSocket 可以支持擴展,用戶可以擴展協議,實現部分自定義的子協議,如支持壓縮、加密等。
- WebSocket 通信數據格式比較輕量,用于協議控制的數據包頭部相對較小,網絡開銷小,而 HTTP 通信每次都要攜帶完整的頭部,網絡開銷較大(HTTP/2.0 使用二進制幀進行數據傳輸,還支持頭部壓縮,減少了網絡開銷)。
WebSocket工作過程
- 客戶端向服務器發送一個 HTTP 請求,請求頭中包含
Upgrade: websocket
和Sec-WebSocket-Key
等字段,表示要求升級協議為 WebSocket; - 服務器收到這個請求后,會進行升級協議的操作,如果支持 WebSocket,它將回復一個 HTTP 101 狀態碼,響應頭中包含 ,
Connection: Upgrade
和Sec-WebSocket-Accept: xxx
等字段、表示成功升級到 WebSocket 協議。 - 客戶端和服務器之間建立了一個 WebSocket 連接,可以進行雙向的數據傳輸。數據以幀(frames)的形式進行傳送,WebSocket 的每條消息可能會被切分成多個數據幀(最小單位)。發送端會將消息切割成多個幀發送給接收端,接收端接收消息幀,并將關聯的幀重新組裝成完整的消息。
- 客戶端或服務器可以主動發送一個關閉幀,表示要斷開連接。另一方收到后,也會回復一個關閉幀,然后雙方關閉 TCP 連接。
另外,建立 WebSocket 連接之后,通過心跳機制來保持 WebSocket 連接的穩定性和活躍性。
TCP與UDP
TCP與UDP的區別
1.是否面向連接:UDP傳輸數據不需要建立連接。TCP傳輸數據前要先建立連接,并且傳輸數據結束后要斷開連接。
2.是否是可靠傳輸:主機在收到UDP報文后,不需要任何確定,并且不保證數據不丟失,不保證數據是否順序到達。TCP提供可靠的傳輸服務,TCP在傳輸數據前,會通過三次握手來確認連接,并且通過TCP傳輸的數據無差錯、不丟失、不重復、按時到達。
3.是否有狀態:TCP傳輸是有狀態的,當TCP傳輸數據之后,TCP會去記錄自己的狀態,比如消息是否被發送了,是否被成功接收到了,為此TCP需要維護復雜的狀態記錄表。而UDP在消息發出之后就不管了。
4.傳輸效率:由于TCP傳輸數據之前要先建立連接,同時又要保證數據的可靠傳輸,因此TCP傳輸效率低于UDP。
怎么選擇TCP和UDP?
UDP一般用于即時通信:比如視頻、直播,即使消息丟失一些,也不會有什么影響。這些場景對于信息傳輸準確性要求不高。
TCP對于傳輸準確要求高的場景:比如發送郵件、文件傳輸等等。