http與socket的區別




1、淺層理解:

    socket就是所謂的長連接,理論上,連接一但創立,就不會主動斷開。但是由於各種環境因素可能會是連接斷開,比如說:服務器端或客戶端主機down了,網絡故障,或者兩者之間長時間沒有數據傳輸,網絡防火牆可能會斷開該連接以釋放網絡資源。

    http就是所謂的短連接,即客戶端向服務器發出一次請求,服務器給出響應后,服務器跟客戶端的連接就會斷開。

2、區別

    http是簡單的對象訪問協議,對應於應用層,是基於TCP協議之上的。

        tcp 對應於傳輸層

        ip對應於網絡層

    TCP/IP是傳輸過程的協議,主要解決數據如何在網絡中傳輸,而http是對應於應用層,主要解決的是對傳輸數據的包裝

 

 

 

    socket是對TCP/IP的封裝,本身並不是協議,而是一個調用接口api,是一組可以調用的接口,通過這些接口,才可以調用TCP/IP協議。除了TCP還可以使用UDP協議。

    創建Socket的時候,可以指定使用傳輸層的協議:TCP或者UDP。

    socket原理:

        至少需要一對套接字,分別是clientSocket,severSocket連接分為3部分

  1.  服務器監聽:服務器並不定位具體的客戶端的套接字,而是時刻處於監聽狀態

  2.  客戶端發送請求:客戶端要描述它要連接的服務器的套接字,提供地址和端口號,然后向服務器套接字提出連接請求。

  3. 連接確認:當服務器套接字街道客戶端套接字發來的請求后,就響應客戶端套接字的請求,並建立一個新的線程,把服務器端的套接字的描述發給客戶端。一旦客戶端確定了此描述,就真正的建立連接。而服務器套接字繼續監聽,繼續接收其他客戶端的套接字請求。

很多情況下,都需要服務器向客戶端主動發送數據,實現數據的實時同步。

若雙方是socket連接,可以由服務器想客戶端發送數據

若雙方是http連接,則服務器需要等客戶端發送請求后,才能將數據回傳給客戶端。這時候就要用到輪訓了。

 

    

 

 

        


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM