socket協議 http協議的區別,長短連線,tcp/udp協議區別
socket http協議的區別
簡單來說,我們平常瀏覽的網頁如果已http://開頭的都是http協議傳輸到我們的瀏覽器的,而http是基於socket之上的,就是說http攜帶資料,socket提供傳輸的動力。socket不是一個協議,只是一個介面或者說是api,socket只是幫助使用者更簡單的建立tcp,udp連結而已。
1. 關於協議
HTTP協議:對應於應用層 ,主要解決如何包裝資料,
TCP協議: 對應於傳輸層
ip協議: 對應傳輸層,主要解決資料如何在網路中傳輸;
Socket:是對TCP/IP協議的封裝,Socket本身並不是協議,而是一個呼叫介面(API),通過Socket,我們才能使用TCP/IP協議。
2.關於長連線,短連線
http連線:http連線就是所謂的短連線,即客戶端向服務端傳送一次請求,服務端響應後立即斷開連線。
socket連線:socket連線就是所謂的長連線,理論上客戶端跟服務端一旦建立連線就不會主動斷掉;但是由於各種原因可能會斷開,比如:客戶端或者服務端網路斷掉了,網路故障,或者兩者之間長時間沒有訊息互通,系統防火牆可能會中斷連線,釋放網路資源。所以當socket連線中沒有資料傳輸的時候,我們可以自定義傳送特定的訊息,用來維持連線。
3. 總的來說
- Socket是一個針對TCP和UDP程式設計的介面,你可以藉助它建立TCP連線等等。而TCP和UDP協議屬於傳輸層 。 http是個應用層的協議,它實際上也建立在TCP協議之上。
(HTTP是轎車,提供了封裝或者顯示資料的具體形式;Socket是發動機,提供了網路通訊的能力。) - Socket是對TCP/IP協議的封裝,Socket本身並不是協議,而是一個呼叫介面(API),通過Socket,我們才能使用TCP/IP協議。Socket的出現只是使得程式設計師更方便地使用TCP/IP協議棧而已,是對TCP/IP協議的抽象,從而形成了我們知道的一些最基本的函式介面。
4.udp/tcp的區別
1.tcp是一對一面向連線,udp可以一對一也可以一對多連線。
2.tcp穩定可靠不丟包,udp不穩定不可靠會丟包。
3.tcp佔用時間長,佔用資源多,udp佔用時間少,佔用資源少。
4.tcp可以保證資料傳輸的前後順序,udp不能保證。
4.1關於tcp的三次握手
第一次握手:客戶端傳送syn包(syn=j)到伺服器,並進入SYN_SEND狀態,等待伺服器確認;第二次握手:伺服器收到syn包,必須確認客戶的SYN(ack=j+1),同時自己也傳送一個SYN包(syn=k),即SYN+ACK包,此時伺服器進入SYN_RECV狀態;
第三次握手:客戶端收到伺服器的SYN+ACK包,向伺服器傳送確認包ACK(ack=k+1),此包傳送完畢,客戶端和伺服器進入ESTABLISHED狀態,完成三次握手。
握手過程中傳送的包裡不包含資料,三次握手完畢後,客戶端與伺服器才正式開始傳送資料。
理想狀態下,TCP連線一旦建立,在通訊雙方中的任何一方主動關閉連線之前,TCP 連線都將被一直保持下去(也就是長連線)。斷開連線時伺服器和客戶端均可以主動發起斷開TCP連線的請求,斷開過程需要經過“四次握手”(過程就不細寫了,就是伺服器和客戶端互動,最終確定斷開)