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服務,網際網路服務。