天天看點

http與socket差別

TCP/IP是傳輸層協定,主要解決資料在網絡中的傳輸.Http是應用層的協定,用于如何封裝資料.傳輸資料的時候,隻使用TCP/IP協定(傳輸層).如果沒有應用層來識别資料内容,傳輸後的協定都是無用的.

       應用層協定很多,FTP,HTTP,TELNET等,可以自己定義應用層協定.WEB使用HTTP作傳輸層協定.以封裝HTTP文本資訊,然後使用TCP/IP做傳輸層協定,将資料發送到網絡上.

       Socket是對TCP/IP協定的封裝,Socket隻是個接口,不是協定,通過Socket,我們才能使用TCP/IP協定.

當然,除了TCP,也可以使用UDP協定來傳遞資料.

三 HTTP和Socket連接配接差別

1 TCP連接配接

       要想明白Socket,必須要了解TCP連接配接.

        建立TCP連接配接的"三次握手":

        第一次:用戶端向伺服器發送SYN包(syn=j),同時自己處于SYN_SEND狀态.

        第二次:伺服器端收到SYN包後,必須确認客戶的SYN(syn=j+1),同時也發送一個SYN包(syn=k),即SYN+ACK包,此時伺服器進入SYN_RECV狀态.

        第三次:用戶端收到伺服器發來的SYN+ACK包,就向伺服器發送SYN(syn=k+1),發送完畢後,伺服器和用戶端都進入ESTABLISHED狀态.完成三次握手.

握手過程中,并不傳輸資料.在握手後,伺服器與用戶端才開始傳輸資料,理想狀态下,TCP連接配接一旦建立,在通訊雙方中的任何一方主動斷開連接配接之前,TCP連接配接會一直保持下去.

2 HTTP連接配接

       HTTP最顯著的特點:用戶端發送請求都需要伺服器端回送響應.請求結束後,主動釋放連結.HTTP是一種短連接配接.通常的做法是,不需要任何資料,也要保持每隔一段時間向伺服器發送"保持連接配接"的請求.這樣可以保證用戶端在伺服器端是"上線"狀态.

3 socket原理

       Socket連接配接,至少需要一對套接字,分為clientSocket,serverSocket.連接配接分為3個步驟:

伺服器監聽:伺服器并不定位具體用戶端的套接字,而是時刻處于監聽狀态.

用戶端請求:用戶端的套接字要描述它要連接配接的伺服器的套接字.提供位址和端口号,然後向伺服器套接字提出連接配接請求.

連接配接确認:當伺服器套接字收到用戶端套接字發來的請求後,就響應用戶端套接字的請求,并建立一個新的線程,把伺服器端的套接字的描述發給用戶端,一旦用戶端确認了此描述,就正式建立連接配接.而伺服器套接字繼續處于監聽狀态,繼續接收其他用戶端套接字的連接配接請求.

4 Socket連接配接與TCP連接配接

       建立Socket連接配接的時候,可以指定傳輸層協定.可以是TCP或者UDP,當用TCP連接配接,該Socket就是個TCP連接配接.

5 Socket連接配接與HTTP連接配接

       通常情況下Socket連接配接就是TCP連接配接,是以Socket連接配接一旦建立,通訊雙方開始互發資料内容,直到雙方斷開連接配接.在實際應用中,由于網絡節點過多,在傳輸過程中,會被節點斷開連接配接.是以要通過輪詢高速網絡,該節點處于活躍狀态.

HTTP連接配接使用的是"請求-響應"方式,不僅在請求時建立連接配接,而且用戶端向伺服器端請求後,伺服器才傳回資料.

      很多情況下,都是需要伺服器端向用戶端主動推送資料,保持用戶端與服務端的實時同步.若雙方是Socket連接配接,可以由伺服器直接向用戶端發送資料.若雙方是HTTP連接配接,則伺服器需要等用戶端發送請求後,才能将資料回傳給用戶端.是以,用戶端定時向伺服器端發送請求,不僅可以保持線上,同時也詢問伺服器是否有新資料,如果有就将資料傳給用戶端.

http是短連接配接,類似于平常網頁中請求資訊的點選,安全性較高,socket是長連接配接,連接配接之後,隻要雙方不主動關閉連接配接,連接配接一直存在,安全性較低。 每個使用者無需頻繁操作情況下需用短連接配接好

Socket适用場景:網絡遊戲,銀行互動,支付。 http适用場景:公司OA服務,網際網路服務。

繼續閱讀