在线不卡日本ⅴ一区v二区_精品一区二区中文字幕_天堂v在线视频_亚洲五月天婷婷中文网站

  • <menu id="lky3g"></menu>
  • <style id="lky3g"></style>
    <pre id="lky3g"><tt id="lky3g"></tt></pre>

    一文梳理HTTP、TCP、Socket和WebSocket的區(qū)別和聯(lián)系

    一文梳理HTTP、TCP、Socket和WebSocket的區(qū)別和聯(lián)系

    一、OSI 網(wǎng)絡(luò)七層模型

    第一層:應(yīng)用層,定義了用于在網(wǎng)絡(luò)中進(jìn)行通信和傳輸數(shù)據(jù)接口;(Http協(xié)議位于該層)

    第二層:表示層,定義不同系統(tǒng)中數(shù)據(jù)的傳輸格式,編碼和解碼規(guī)范等;

    第三層:會(huì)話(huà)層,管理用戶(hù)的會(huì)話(huà),控制用戶(hù)間邏輯連接的建立和中斷;

    第四層:傳輸層,管理著網(wǎng)絡(luò)中端到端的數(shù)據(jù)傳輸;(Tcp協(xié)議位于該層)

    第五層:網(wǎng)絡(luò)層,定義網(wǎng)絡(luò)設(shè)備間如何傳輸數(shù)據(jù);(IP位于該層)

    第六層:鏈路層,將上面的網(wǎng)絡(luò)層的數(shù)據(jù)包封裝成數(shù)據(jù)幀,便于物理層傳輸;

    第七層:物理層,這一層主要就是傳輸這些二進(jìn)制數(shù)據(jù)。

    二、TCP連接

    建立起一個(gè)TCP連接需要經(jīng)過(guò)“三次握手”:

    • 第一次握手:客戶(hù)端發(fā)送syn包(syn=j)到服務(wù)器,并進(jìn)入SYN_SEND狀態(tài),等待服務(wù)器確認(rèn);
    • 第二次握手:服務(wù)器收到syn包,必須確認(rèn)客戶(hù)的SYN(ack=j+1),同時(shí)自己也發(fā)送一個(gè)SYN包(syn=k),即SYN+ACK包,此時(shí)服務(wù)器進(jìn)入SYN_RECV狀態(tài);
    • 第三次握手:客戶(hù)端收到服務(wù)器的SYN ACK包,向服務(wù)器發(fā)送確認(rèn)包ACK(ack=k+1),此包發(fā)送完畢,客戶(hù)端和服務(wù)器進(jìn)入ESTABLISHED狀態(tài),完成三次握手。

    握手過(guò)程中傳送的包里不包含數(shù)據(jù),三次握手完畢后,客戶(hù)端與服務(wù)器才正式開(kāi)始傳送數(shù)據(jù)。理想狀態(tài)下,TCP連接一旦建立,在通信雙方中的任何一方主動(dòng)關(guān)閉連接之前,TCP 連接都將被一直保持下去。斷開(kāi)連接時(shí)服務(wù)器和客戶(hù)端均可以主動(dòng)發(fā)起斷開(kāi)TCP連接的請(qǐng)求。

    SYN攻擊就是利用三次握手的第二次握手時(shí)進(jìn)行的,這時(shí)候服務(wù)器處于SYN_RECV狀態(tài),等待客戶(hù)端進(jìn)行確認(rèn)ACK,SYN會(huì)偽造不存在的源IP,就會(huì)有大量的鏈接處于等待或重試發(fā)送SYN+ACK包,導(dǎo)致該階段隊(duì)列持續(xù)增長(zhǎng),進(jìn)而導(dǎo)致后續(xù)正常請(qǐng)求被丟棄。

    三、HTTP連接

    HTTP協(xié)議即超文本傳送協(xié)議(Hypertext Transfer Protocol ),是Web聯(lián)網(wǎng)的基礎(chǔ),也是手機(jī)聯(lián)網(wǎng)常用的協(xié)議之一,HTTP協(xié)議是建立在TCP協(xié)議之上的一種應(yīng)用。

    HTTP連接最顯著的特點(diǎn)是客戶(hù)端發(fā)送的每次請(qǐng)求都需要服務(wù)器回送響應(yīng),在請(qǐng)求結(jié)束后,會(huì)主動(dòng)釋放連接。從建立連接到關(guān)閉連接的過(guò)程稱(chēng)為“一次連接”。

  • 在HTTP 1.0中,客戶(hù)端的每次請(qǐng)求都要求建立一次單獨(dú)的連接,在處理完本次請(qǐng)求后,就自動(dòng)釋放連接。
  • 在HTTP 1.1中,則可以在一次連接中處理多個(gè)請(qǐng)求,并且多個(gè)請(qǐng)求可以重疊進(jìn)行,不需要等待一個(gè)請(qǐng)求結(jié)束后再發(fā)送下一個(gè)請(qǐng)求。
  • 由于HTTP在每次請(qǐng)求結(jié)束后都會(huì)主動(dòng)釋放連接,因此HTTP連接是一種“短連接”。

    要保持客戶(hù)端程序的在線(xiàn)狀態(tài),需要不斷地向服務(wù)器發(fā)起連接請(qǐng)求,通常情況下即使不需要獲得任何數(shù)據(jù),客戶(hù)端也保持每隔一段固定的時(shí)間向服務(wù)器發(fā)送一次“保持連接”的請(qǐng)求,服務(wù)器在收到該請(qǐng)求后對(duì)客戶(hù)端進(jìn)行回復(fù),表明知道客戶(hù)端“在線(xiàn)”。若服務(wù)器長(zhǎng)時(shí)間無(wú)法收到客戶(hù)端的請(qǐng)求,則認(rèn)為客戶(hù)端“下線(xiàn)”,若客戶(hù)端長(zhǎng)時(shí)間無(wú)法收到服務(wù)器的回復(fù),則認(rèn)為網(wǎng)絡(luò)已經(jīng)斷開(kāi)。

    四、SOCKET連接與HTTP連接

    通常情況下Socket連接就是TCP連接,因此Socket連接一旦建立,通信雙方即可開(kāi)始相互發(fā)送數(shù)據(jù)內(nèi)容,直到雙方連接斷開(kāi)。但在實(shí)際網(wǎng)絡(luò)應(yīng)用中,客戶(hù)端到服務(wù)器之間的通信往往需要穿越多個(gè)中間節(jié)點(diǎn),例如路由器、網(wǎng)關(guān)、防火墻等,大部分防火墻默認(rèn)會(huì)關(guān)閉長(zhǎng)時(shí)間處于非活躍狀態(tài)的連接而導(dǎo)致 Socket 連接斷連,因此需要通過(guò)輪詢(xún)告訴網(wǎng)絡(luò),該連接處于活躍狀態(tài)。

    而HTTP連接使用的是“請(qǐng)求—響應(yīng)”的方式,不僅在請(qǐng)求時(shí)需要先建立連接,而且需要客戶(hù)端向服務(wù)器發(fā)出請(qǐng)求后,服務(wù)器端才能回復(fù)數(shù)據(jù)。

    很多情況下,需要服務(wù)器端主動(dòng)向客戶(hù)端推送數(shù)據(jù),保持客戶(hù)端與服務(wù)器數(shù)據(jù)的實(shí)時(shí)與同步。此時(shí)若雙方建立的是Socket連接,服務(wù)器就可以直接將數(shù)據(jù)傳送給客戶(hù)端;若雙方建立的是HTTP連接,則服務(wù)器需要等到客戶(hù)端發(fā)送一次請(qǐng)求后才能將數(shù)據(jù)傳回給客戶(hù)端,因此,客戶(hù)端定時(shí)向服務(wù)器端發(fā)送連接請(qǐng)求,不僅可以保持在線(xiàn),同時(shí)也是在“詢(xún)問(wèn)”服務(wù)器是否有新的數(shù)據(jù),如果有就將數(shù)據(jù)傳給客戶(hù)端。

    相關(guān)視頻推薦

    看完《tcp/ip詳解》不能coding的,一次課開(kāi)啟設(shè)計(jì)tcp/ip協(xié)議棧

    深入聊聊websocket協(xié)議,tcp分包與粘包解決方案

    學(xué)習(xí)地址:C/C++Linux服務(wù)器開(kāi)發(fā)/后臺(tái)架構(gòu)師【零聲教育】-學(xué)習(xí)視頻教程-騰訊課堂

    需要C/C++ Linux服務(wù)器架構(gòu)師學(xué)習(xí)資料加qun812855908獲?。ㄙY料包括C/C++,Linux,golang技術(shù),Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒體,CDN,P2P,K8S,Docker,TCP/IP,協(xié)程,DPDK,ffmpeg等),免費(fèi)分享

    五、SOCKET連接與TCP/IP連接

    創(chuàng)建Socket連接時(shí),可以指定使用的傳輸層協(xié)議,Socket可以支持不同的傳輸層協(xié)議(TCP或UDP),當(dāng)使用TCP協(xié)議進(jìn)行連接時(shí),該Socket連接就是一個(gè)TCP連接。

    socket則是對(duì)TCP/IP協(xié)議的封裝和應(yīng)用(程序員層面上)。也可以說(shuō),TPC/IP協(xié)議是傳輸層協(xié)議,主要解決數(shù)據(jù)如何在網(wǎng)絡(luò)中傳輸,而HTTP是應(yīng)用層協(xié)議,主要解決如何包裝數(shù)據(jù)。

    關(guān)于TCP/IP和HTTP協(xié)議的關(guān)系,網(wǎng)絡(luò)有一段比較容易理解的介紹:

    在傳輸數(shù)據(jù)時(shí),可以只使用(傳輸層)TCP/IP協(xié)議,但是那樣的話(huà),如果沒(méi)有應(yīng)用層,便無(wú)法識(shí)別數(shù)據(jù)內(nèi)容,如果想要使傳輸?shù)臄?shù)據(jù)有意義,則必須使用到應(yīng)用層協(xié)議,應(yīng)用層協(xié)議有很多,比如HTTP、FTP、TELNET等,也可以自己定義應(yīng)用層協(xié)議。WEB使用HTTP協(xié)議作應(yīng)用層協(xié)議,以封裝HTTP文本信息,然后使用TCP/IP做傳輸層協(xié)議將它發(fā)到網(wǎng)絡(luò)上。

    平時(shí)說(shuō)的最多的socket是什么呢,實(shí)際上socket是對(duì)TCP/IP協(xié)議的封裝,Socket本身并不是協(xié)議,而是一個(gè)調(diào)用接口(API),通過(guò)Socket,才能使用TCP/IP協(xié)議。

    實(shí)際上,Socket跟TCP/IP協(xié)議沒(méi)有必然的聯(lián)系。Socket編程接口在設(shè)計(jì)的時(shí)候,就希望也能適應(yīng)其他的網(wǎng)絡(luò)協(xié)議。所以說(shuō),Socket的出現(xiàn) 只是使得程序員更方便地使用TCP/IP協(xié)議棧而已,是對(duì)TCP/IP協(xié)議的抽象,從而形成了一些最基本的函數(shù)接口,比如create、 listen、connect、accept、send、read和write等等。

    TCP/IP只是一個(gè)協(xié)議棧,就像操作系統(tǒng)的運(yùn)行機(jī)制一樣,必須要具體實(shí)現(xiàn),同時(shí)還要提供對(duì)外的操作接口。這個(gè)就像操作系統(tǒng)會(huì)提供標(biāo)準(zhǔn)的編程接口,比如win32編程接口一樣,TCP/IP也要提供可供程序員做網(wǎng)絡(luò)開(kāi)發(fā)所用的接口,這就是Socket編程接口。

    實(shí)際上,傳輸層TCP是基于網(wǎng)絡(luò)層IP協(xié)議的,而應(yīng)用層HTTP協(xié)議又是基于傳輸層TCP協(xié)議的,而Socket本身不算是協(xié)議,就像上面所說(shuō),它只是提供了一個(gè)針對(duì)TCP或者UDP編程的接口。

    總結(jié):

    • HTTP是應(yīng)用層協(xié)議,定義的是傳輸數(shù)據(jù)的內(nèi)容以及格式的規(guī)范。
    • TCP是底層通訊協(xié)議,定義的是數(shù)據(jù)傳輸和連接方式的規(guī)范。
    • Socket可以支持不同的傳輸層協(xié)議(TCP/UDP),當(dāng)使用TCP協(xié)議進(jìn)行連接時(shí),該Socket連接就是一個(gè)TCP連接,Socket是發(fā)動(dòng)機(jī),提供了網(wǎng)絡(luò)通信的能力

    六、什么是單工、半雙工、全雙工通信?

    • 單工:信息只能單向傳送;
    • 半雙工:信息能雙向傳送但不能同時(shí)雙向傳送;
    • 全雙工:信息能夠同時(shí)雙向傳送。

    七、WebSocket與Socket的關(guān)系

    Socket其實(shí)并不是一個(gè)協(xié)議,而是為了方便使用TCP/UDP而抽象出來(lái)的一層,是位于應(yīng)用層和傳輸控制層之間的一組接口。

    Socket是應(yīng)用層與TCP/IP協(xié)議族通信的中間軟件抽象層,它是一組接口,提供一套調(diào)用TCP/IP協(xié)議的API。在設(shè)計(jì)模式中,Socket其實(shí)就是一個(gè)門(mén)面模式,它把復(fù)雜的TCP/IP協(xié)議族隱藏在Socket接口后面,對(duì)用戶(hù)來(lái)說(shuō),一組簡(jiǎn)單的接口就是全部,讓Socket去組織數(shù)據(jù),以符合指定的協(xié)議。

    當(dāng)兩臺(tái)主機(jī)通信時(shí),必須通過(guò)Socket連接,Socket則利用TCP/IP協(xié)議建立TCP連接。TCP連接則更依靠于底層的IP協(xié)議,IP協(xié)議的連接則依賴(lài)于鏈路層等更低層次。

    WebSocket就像HTTP一樣,是一個(gè)典型的應(yīng)用層協(xié)議。

    總結(jié):

    • Socket是傳輸控制層接口,WebSocket是應(yīng)用層協(xié)議。

    八、WebSocket與HTTP的關(guān)系

    WebSocket是HTML5規(guī)范提出的一種協(xié)議。HTML5 Web Sockets規(guī)范定義了Web Sockets API,支持頁(yè)面使用Web Socket協(xié)議與遠(yuǎn)程主機(jī)進(jìn)行全雙工的通信。它引入了WebSocket接口并且定義了一個(gè)全雙工的通信通道,通過(guò)一個(gè)單一的套接字在Web上進(jìn)行操作。

    HTML5 Web Sockets以最小的開(kāi)銷(xiāo)高效地提供了Web連接。相較于經(jīng)常需要使用推送實(shí)時(shí)數(shù)據(jù)到客戶(hù)端甚至通過(guò)維護(hù)兩個(gè)HTTP連接來(lái)模擬全雙工連接的舊的輪詢(xún)或長(zhǎng)輪詢(xún)(Comet)來(lái)說(shuō),這就極大的減少了不必要的網(wǎng)絡(luò)流量與延遲。

    相同點(diǎn):

    • 都是一樣基于TCP的,都是可靠性傳輸協(xié)議。
    • 都是應(yīng)用層協(xié)議。

    不同點(diǎn):

    • WebSocket是雙向通信協(xié)議,模擬Socket協(xié)議,可以雙向發(fā)送或接受信息。HTTP是單向的。
    • WebSocket是需要瀏覽器和服務(wù)器握手進(jìn)行建立連接的。而http是瀏覽器發(fā)起向服務(wù)器的連接,服務(wù)器預(yù)先并不知道這個(gè)連接。

    聯(lián)系:

    • WebSocket在建立握手時(shí),數(shù)據(jù)是通過(guò)HTTP傳輸?shù)?。但是建立之后,在真正傳輸時(shí)候是不需要HTTP協(xié)議的。

    WebSocket連接的過(guò)程:

  • 客戶(hù)端發(fā)起http請(qǐng)求,經(jīng)過(guò)3次握手后,建立起TCP連接;http請(qǐng)求里存放WebSocket支持的版本號(hào)等信息,如:Upgrade、Connection、WebSocket-Version等;
  • 服務(wù)器收到客戶(hù)端的握手請(qǐng)求后,同樣采用HTTP協(xié)議回饋數(shù)據(jù);
  • 客戶(hù)端收到連接成功的消息后,開(kāi)始借助于TCP傳輸信道進(jìn)行全雙工通信。
  • 總結(jié):

    • 在WebSocket中,只需要服務(wù)器和瀏覽器通過(guò)HTTP協(xié)議進(jìn)行一個(gè)握手的動(dòng)作,然后單獨(dú)建立一條TCP通信通道進(jìn)行數(shù)據(jù)傳送。
    鄭重聲明:本文內(nèi)容及圖片均整理自互聯(lián)網(wǎng),不代表本站立場(chǎng),版權(quán)歸原作者所有,如有侵權(quán)請(qǐng)聯(lián)系管理員(admin#wlmqw.com)刪除。
    用戶(hù)投稿
    上一篇 2022年7月19日 15:52
    下一篇 2022年7月19日 15:52

    相關(guān)推薦

    • 計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)論文(計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)論文七千字)

      今天小編給各位分享計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)論文的知識(shí),其中也會(huì)對(duì)計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)論文七千字進(jìn)行解釋?zhuān)绻芘銮山鉀Q你現(xiàn)在面臨的問(wèn)題,別忘了關(guān)注本站,現(xiàn)在開(kāi)始吧! 計(jì)算機(jī)網(wǎng)絡(luò)方面的論文3000字…

      2022年11月26日
    • 手機(jī)上怎么買(mǎi)世界杯彩票(手機(jī)上怎么買(mǎi)世界杯輸贏)

      現(xiàn)在手機(jī)已經(jīng)成為大家生活中非常重要的工具之一,只要一部手機(jī)就可以解決衣食住行,最近世界杯火熱進(jìn)行,一些小伙伴想要買(mǎi)彩票,那么,手機(jī)上可以買(mǎi)世界杯彩票嗎?世界杯買(mǎi)球軟件是真的嗎?手機(jī)…

      2022年11月25日
    • 什么是推廣cpa一篇文章帶你看懂CPA推廣渠道

      CPA渠道 CPA指的是按照指定的行為結(jié)算,可以是搜索,可以是注冊(cè),可以是激活,可以是搜索下載激活,可以是綁卡,實(shí)名認(rèn)證,可以是付費(fèi),可以是瀏覽等等。甲乙雙方可以根據(jù)自己的情況來(lái)定…

      2022年11月25日
    • 抖音直播帶貨有哪些方法技巧(抖音直播帶貨有哪些痛點(diǎn))

      如今抖音這個(gè)短視頻的變現(xiàn)能力越來(lái)越突顯了,尤其是在平臺(tái)上開(kāi)通直播,更具有超強(qiáng)的帶貨屬性,已經(jīng)有越來(lái)越多的普通人加入到其中了。不過(guò)直播帶貨雖然很火,但是也不是每個(gè)人都能做好的,那么在…

      2022年11月24日
    • 成都健康碼打不開(kāi)顯示接口請(qǐng)求未知異常怎么辦(成都健康碼打不開(kāi)顯示接口請(qǐng)求未知異常)

      成都這幾天的疫情也是備受關(guān)注,疫情期間各地出行都是需要查看健康碼的,不過(guò)今天卻有成都的小伙伴反饋健康碼無(wú)法打開(kāi)的情況。成都健康碼打不開(kāi)顯示接口請(qǐng)求未知異常怎么辦?由于健康碼無(wú)法打開(kāi)…

      2022年11月24日
    • 成都健康碼崩了是怎么回事(成都健康碼系統(tǒng)崩了)

      健康碼是大家出行必備的工具,有小伙伴反映自己健康碼崩了,上不了地鐵,那么成都健康碼崩了是怎么回事?成都健康碼怎么突然崩了?成都健康碼崩了是怎么辦?下面小編為大家?guī)?lái)成都健康碼崩了原…

      2022年11月24日
    • rnm退錢(qián)是什么意思網(wǎng)絡(luò)用語(yǔ)(rnm退錢(qián)是什么人)

      最近關(guān)于網(wǎng)絡(luò)用語(yǔ)使用還是有不少咨詢(xún)的,隨著卡塔爾世界杯的開(kāi)啟,網(wǎng)上也出現(xiàn)了不少新的網(wǎng)絡(luò)流行用語(yǔ),其中rnm退錢(qián)的梗也引發(fā)不少網(wǎng)友的好奇。rnm退錢(qián)是什么意思?很多網(wǎng)友對(duì)此好奇,rn…

      2022年11月24日
    • 關(guān)公繞后什么意思網(wǎng)絡(luò)用語(yǔ)(睜眼關(guān)公什么意思)

      關(guān)于一些網(wǎng)絡(luò)用語(yǔ)使用大家也都是比較關(guān)注的,最近關(guān)于關(guān)公繞后這個(gè)梗也是挺火的,不過(guò)還是有很多網(wǎng)友對(duì)關(guān)公繞后這個(gè)梗的含義不是很了解,關(guān)公繞后什么意思?這個(gè)梗說(shuō)的是什么呢?下面來(lái)看下網(wǎng)絡(luò)…

      2022年11月24日
    • 1千克等于多少磅

      克,此定義在1958年被美國(guó)以及其他英聯(lián)邦會(huì)員國(guó)承認(rèn)換算回來(lái),一千克等于262磅,一磅等于037千克英國(guó)在1963年開(kāi)始,依據(jù)度量衡法案的規(guī);1 磅=16 盎司=04536 千克 …

      2022年11月24日
    • 明查|美國(guó)新冠后遺癥患者中有16%癥狀嚴(yán)重以致無(wú)法工作?

      點(diǎn)擊進(jìn)入澎湃新聞全球事實(shí)核查平臺(tái) 速覽 – 網(wǎng)傳數(shù)據(jù)比例無(wú)權(quán)威信源佐證,該比例有可能是結(jié)合了美國(guó)疾病防控中心和布魯金斯學(xué)會(huì)的數(shù)據(jù)得出,但這兩個(gè)機(jī)構(gòu)的調(diào)研目的和樣本都不同…

      2022年11月24日

    聯(lián)系我們

    聯(lián)系郵箱:admin#wlmqw.com
    工作時(shí)間:周一至周五,10:30-18:30,節(jié)假日休息