1. 程式人生 > >TCP/IP,HTTP,Socket的區別與聯系

TCP/IP,HTTP,Socket的區別與聯系

ftp ima 不定 定時 狀態 在服務器 主動 發送 之前

要弄明白 http 和 socket 首先要熟悉網絡七層:物 數 網 傳 會 表 應,如圖1

技術分享

如圖1

HTTP 協議:超文本傳輸協議,對應於應用層,用於如何封裝數據.

TCP/UDP 協議:傳輸控制協議,對應於傳輸層,主要解決數據在網絡中的傳輸。

IP 協議:對應於網絡層,同樣解決數據在網絡中的傳輸。

傳輸數據的時候只使用 TCP/IP 協議(傳輸層),如果沒有應用層來識別數據內容,傳輸後的協議都是無用的。

應用層協議很多 FTP,HTTP,TELNET等,可以自己定義應用層協議。

web 使用 HTTP 作傳輸層協議,以封裝 HTTP 文本信息,然後使用 TCP/IP 做傳輸層協議,將數據發送到網絡上。

一、HTTP 協議

http 為短連接:客戶端發送請求都需要服務器端回送響應.請求結束後,主動釋放鏈接,因此為短連接。通常的做法是,不需要任何數據,也要保持每隔一段時間向服務器發送"保持連接"的請求。這樣可以保證客戶端在服務器端是"上線"狀態。

HTTP連接使用的是"請求-響應"方式,不僅在請求時建立連接,而且客戶端向服務器端請求後,服務器才返回數據。

二、Socket 連接

要想明白 Socket,必須要理解 TCP 連接。

TCP 三次握手:握手過程中並不傳輸數據,在握手後服務器與客戶端才開始傳輸數據,理想狀態下,TCP 連接一旦建立,在通訊雙方中的任何一方主動斷開連接之前 TCP 連接會一直保持下去。

Socket 是對 TCP/IP 協議的封裝,Socket 只是個接口不是協議,通過 Socket 我們才能使用 TCP/IP 協議,除了 TCP,也可以使用 UDP 協議來傳遞數據。

創建 Socket 連接的時候,可以指定傳輸層協議,可以是 TCP 或者 UDP,當用 TCP 連接,該Socket就是個TCP連接,反之。

Socket 原理

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

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

(2) 客戶端請求:客戶端的套接字要描述它要連接的服務器的套接字,提供地址和端口號,然後向服務器套接字提出連接請求;

(3) 連接確認:當服務器套接字收到客戶端套接字發來的請求後,就響應客戶端套接字的請求,並建立一個新的線程,把服務器端的套接字的描述發給客戶端。一旦客戶端確認了此描述,就正式建立連接。而服務器套接字繼續處於監聽狀態,繼續接收其他客戶端套接字的連接請求.

Socket為長連接:通常情況下Socket 連接就是 TCP 連接,因此 Socket 連接一旦建立,通訊雙方開始互發數據內容,直到雙方斷開連接。在實際應用中,由於網絡節點過多,在傳輸過程中,會被節點斷開連接,因此要通過輪詢高速網絡,該節點處於活躍狀態。

很多情況下,都是需要服務器端向客戶端主動推送數據,保持客戶端與服務端的實時同步。

若雙方是 Socket 連接,可以由服務器直接向客戶端發送數據。

若雙方是 HTTP 連接,則服務器需要等客戶端發送請求後,才能將數據回傳給客戶端。

因此,客戶端定時向服務器端發送請求,不僅可以保持在線,同時也詢問服務器是否有新數據,如果有就將數據傳給客戶端。

參考原文:http://www.cnblogs.com/xclidongbo/p/4032904.html?utm_source=tuicool&utm_medium=referral

轉自:http://www.cnblogs.com/meier1205/p/5971313.html

TCP/IP,HTTP,Socket的區別與聯系