日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

HTTP 和 Socket 的区别

發(fā)布時(shí)間:2025/3/20 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 HTTP 和 Socket 的区别 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

要弄明白?http 和 socket?首先要熟悉網(wǎng)絡(luò)七層:物 數(shù) 網(wǎng) 傳 會(huì) 表 應(yīng),如圖1

如圖1

HTTP 協(xié)議:超文本傳輸協(xié)議,對(duì)應(yīng)于應(yīng)用層,用于如何封裝數(shù)據(jù).

TCP/UDP?協(xié)議:傳輸控制協(xié)議,對(duì)應(yīng)于傳輸層,主要解決數(shù)據(jù)在網(wǎng)絡(luò)中的傳輸。

IP 協(xié)議:對(duì)應(yīng)于網(wǎng)絡(luò)層,同樣解決數(shù)據(jù)在網(wǎng)絡(luò)中的傳輸。

傳輸數(shù)據(jù)的時(shí)候只使用 TCP/IP 協(xié)議(傳輸層),如果沒有應(yīng)用層來識(shí)別數(shù)據(jù)內(nèi)容,傳輸后的協(xié)議都是無用的。

應(yīng)用層協(xié)議很多 FTP,HTTP,TELNET等,可以自己定義應(yīng)用層協(xié)議。

web 使用 HTTP 作傳輸層協(xié)議,以封裝 HTTP 文本信息,然后使用 TCP/IP 做傳輸層協(xié)議,將數(shù)據(jù)發(fā)送到網(wǎng)絡(luò)上。

?

一、HTTP 協(xié)議

http 為短連接:客戶端發(fā)送請(qǐng)求都需要服務(wù)器端回送響應(yīng).請(qǐng)求結(jié)束后,主動(dòng)釋放鏈接,因此為短連接。通常的做法是,不需要任何數(shù)據(jù),也要保持每隔一段時(shí)間向服務(wù)器發(fā)送"保持連接"的請(qǐng)求。這樣可以保證客戶端在服務(wù)器端是"上線"狀態(tài)。

HTTP連接使用的是"請(qǐng)求-響應(yīng)"方式,不僅在請(qǐng)求時(shí)建立連接,而且客戶端向服務(wù)器端請(qǐng)求后,服務(wù)器才返回?cái)?shù)據(jù)。

?

二、Socket?連接

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

TCP 三次握手:握手過程中并不傳輸數(shù)據(jù),在握手后服務(wù)器與客戶端才開始傳輸數(shù)據(jù),理想狀態(tài)下,TCP 連接一旦建立,在通訊雙方中的任何一方主動(dòng)斷開連接之前 TCP 連接會(huì)一直保持下去。

Socket?是對(duì) TCP/IP 協(xié)議的封裝,Socket 只是個(gè)接口不是協(xié)議,通過 Socket 我們才能使用 TCP/IP 協(xié)議,除了 TCP,也可以使用 UDP 協(xié)議來傳遞數(shù)據(jù)。

創(chuàng)建 Socket?連接的時(shí)候,可以指定傳輸層協(xié)議,可以是 TCP 或者 UDP,當(dāng)用 TCP 連接,該Socket就是個(gè)TCP連接,反之。

Socket?原理

Socket?連接,至少需要一對(duì)套接字,分為 clientSocket,serverSocket 連接分為3個(gè)步驟:

(1) 服務(wù)器監(jiān)聽:服務(wù)器并不定位具體客戶端的套接字,而是時(shí)刻處于監(jiān)聽狀態(tài);

(2) 客戶端請(qǐng)求:客戶端的套接字要描述它要連接的服務(wù)器的套接字,提供地址和端口號(hào),然后向服務(wù)器套接字提出連接請(qǐng)求;

(3) 連接確認(rèn):當(dāng)服務(wù)器套接字收到客戶端套接字發(fā)來的請(qǐng)求后,就響應(yīng)客戶端套接字的請(qǐng)求,并建立一個(gè)新的線程,把服務(wù)器端的套接字的描述發(fā)給客戶端。一旦客戶端確認(rèn)了此描述,就正式建立連接。而服務(wù)器套接字繼續(xù)處于監(jiān)聽狀態(tài),繼續(xù)接收其他客戶端套接字的連接請(qǐng)求.

Socket為長(zhǎng)連接:通常情況下Socket 連接就是 TCP 連接,因此 Socket 連接一旦建立,通訊雙方開始互發(fā)數(shù)據(jù)內(nèi)容,直到雙方斷開連接。在實(shí)際應(yīng)用中,由于網(wǎng)絡(luò)節(jié)點(diǎn)過多,在傳輸過程中,會(huì)被節(jié)點(diǎn)斷開連接,因此要通過輪詢高速網(wǎng)絡(luò),該節(jié)點(diǎn)處于活躍狀態(tài)。

?

很多情況下,都是需要服務(wù)器端向客戶端主動(dòng)推送數(shù)據(jù),保持客戶端與服務(wù)端的實(shí)時(shí)同步。

若雙方是 Socket 連接,可以由服務(wù)器直接向客戶端發(fā)送數(shù)據(jù)。

若雙方是 HTTP 連接,則服務(wù)器需要等客戶端發(fā)送請(qǐng)求后,才能將數(shù)據(jù)回傳給客戶端。

因此,客戶端定時(shí)向服務(wù)器端發(fā)送請(qǐng)求,不僅可以保持在線,同時(shí)也詢問服務(wù)器是否有新數(shù)據(jù),如果有就將數(shù)據(jù)傳給客戶端。

?

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

?

總結(jié)

以上是生活随笔為你收集整理的HTTP 和 Socket 的区别的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。