http與socket是網(wǎng)絡(luò)編程中最為重要的概念砂代,不管是客戶(hù)端還是服務(wù)端,都是最為重要的部分,以下簡(jiǎn)述兩者的關(guān)系和區(qū)別(個(gè)人見(jiàn)解)。
Http
定義
基于應(yīng)用層的超文本傳輸協(xié)議绍撞。通常承載于TCP/IP協(xié)議之上,有時(shí)也承載于TLS或SSL協(xié)議層之上得院,即https傻铣。
特點(diǎn)
- 必須是客戶(hù)端請(qǐng)求,服務(wù)端才能響應(yīng)祥绞,無(wú)法由服務(wù)端自主發(fā)起非洲。
- 網(wǎng)絡(luò)連接為短連接,在請(qǐng)求結(jié)束后蜕径,就會(huì)自動(dòng)釋放本次連接两踏。
優(yōu)點(diǎn)
- 基于應(yīng)用層的接口,簡(jiǎn)單易用兜喻,非常容易上手梦染,對(duì)開(kāi)發(fā)者要求較低
缺點(diǎn)
- 傳輸速度有限,數(shù)據(jù)量較大
- 對(duì)服務(wù)器性能要求較高
- 數(shù)據(jù)傳輸過(guò)程中安全性有限
適用范圍
- 需要快速開(kāi)發(fā)的應(yīng)用
- 對(duì)數(shù)據(jù)實(shí)時(shí)交互性要求不太高的應(yīng)用
- 對(duì)數(shù)據(jù)安全性不是太高要求的應(yīng)用
- 對(duì)服務(wù)器性能較差的應(yīng)用
Socket
定義
基于TCP/IP的網(wǎng)絡(luò)API虹统,處于傳輸層弓坞,用于提供給程序員操作TCP/IP網(wǎng)絡(luò)傳輸?shù)膽?yīng)用程序接口隧甚。通常稱(chēng)作"套接字"车荔,實(shí)現(xiàn)服務(wù)器和客戶(hù)端之間的物理連接,并進(jìn)行數(shù)據(jù)傳輸戚扳。是應(yīng)用層和傳輸層之間的橋梁忧便。
特點(diǎn)
- 建立socket連接至少需要一對(duì)套接字(socket),一個(gè)運(yùn)行在客戶(hù)端,一個(gè)運(yùn)行在服務(wù)端
- 通常Socket連接是基于TCP連接的珠增,因此屬于長(zhǎng)連接
- Socket一旦建立連接超歌,通信雙方即可持續(xù)相互發(fā)送數(shù)據(jù)內(nèi)容,直到雙方連接斷開(kāi)
優(yōu)點(diǎn)
- 傳輸數(shù)據(jù)可自定義蒂教,數(shù)據(jù)量很小
- 數(shù)據(jù)傳輸時(shí)間段巍举,性能高
- 多用于客戶(hù)端與服務(wù)端之間的數(shù)據(jù)實(shí)時(shí)交互
- 可以使用加密手段,數(shù)據(jù)安全性很高
缺點(diǎn)
- 相對(duì)于http協(xié)議傳輸凝垛,開(kāi)發(fā)量較大
- 對(duì)開(kāi)發(fā)人員的開(kāi)發(fā)水平要求較高懊悯,增加開(kāi)發(fā)量
適用范圍
- 適用于對(duì)傳輸速度要求高的應(yīng)用,如網(wǎng)絡(luò)游戲
- 適用于對(duì)數(shù)據(jù)安全性要求較高的應(yīng)用中梦皮,如銀行內(nèi)部數(shù)據(jù)交互
- 對(duì)產(chǎn)生流量巨大的應(yīng)用