HTTP 和 Socket 的區別

2021-08-25 08:03:17 字數 1535 閱讀 6927

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

如圖1http 協議:超文字傳輸協議,對應於應用層,用於如何封裝資料.

tcp/udp 協議:傳輸控制協議,對應於傳輸層,主要解決資料在網路中的傳輸。

ip 協議:對應於網路層,同樣解決資料在網路中的傳輸。

傳輸資料的時候只使用 tcp/ip 協議(傳輸層),如果沒有應用層來識別資料內容,傳輸後的協議都是無用的。

應用層協議很多 ftp,http,telnet等,可以自己定義應用層協議。

web 使用 http 作傳輸層協議,以封裝 http 文字資訊,然後使用 tcp/ip 做傳輸層協議,將資料傳送到網路上。

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 和 Socket 的區別

要弄明白 http 和 socket 首先要熟悉網路七層 物 數 網 傳 會 表 應,如圖1 如圖1http 協議 超文字傳輸協議,對應於應用層,用於如何封裝資料.tcp udp 協議 傳輸控制協議,對應於傳輸層,主要解決資料在網路中的傳輸。ip 協議 對應於網路層,同樣解決資料在網路中的傳輸。傳輸...

HTTP 和 Socket 的區別

要弄明白 http 和 socket 首先要熟悉網路七層 物 數 網 傳 會 表 應,如圖1 如圖1http 協議 超文字傳輸協議,對應於應用層,用於如何封裝資料.tcp udp 協議 傳輸控制協議,對應於傳輸層,主要解決資料在網路中的傳輸。ip 協議 對應於網路層,同樣解決資料在網路中的傳輸。傳輸...

HTTP和Socket的區別

1 http協議即超文字傳送協議 hypertext transfer protocol 是web聯網的基礎,也是手機聯網常用的協議之一,http協議是建立在tcp協議之上的一種應用。http連線最顯著的特點是客戶端傳送的每次請求都需要伺服器回送響應,在請求結束後,會主動釋放連線。從建立連線到關閉連...