免费爱碰视频在线观看,九九精品国产屋,欧美亚洲尤物久久精品,1024在线观看视频亚洲

      一文梳理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ī)范等;

      第三層:會話層,管理用戶的會話,控制用戶間邏輯連接的建立和中斷;

      第四層:傳輸層,管理著網(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連接

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

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

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

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

      三、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)是客戶端發(fā)送的每次請求都需要服務(wù)器回送響應(yīng),在請求結(jié)束后,會主動釋放連接。從建立連接到關(guān)閉連接的過程稱為“一次連接”。

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

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

      四、SOCKET連接與HTTP連接

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

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

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

      相關(guān)視頻推薦

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

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

      學(xué)習(xí)地址:C/C++Linux服務(wù)器開發(fā)/后臺架構(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連接時,可以指定使用的傳輸層協(xié)議,Socket可以支持不同的傳輸層協(xié)議(TCP或UDP),當(dāng)使用TCP協(xié)議進(jìn)行連接時,該Socket連接就是一個TCP連接。

      socket則是對TCP/IP協(xié)議的封裝和應(yīng)用(程序員層面上)。也可以說,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ù)時,可以只使用(傳輸層)TCP/IP協(xié)議,但是那樣的話,如果沒有應(yīng)用層,便無法識別數(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ò)上。

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

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

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

      實(shí)際上,傳輸層TCP是基于網(wǎng)絡(luò)層IP協(xié)議的,而應(yīng)用層HTTP協(xié)議又是基于傳輸層TCP協(xié)議的,而Socket本身不算是協(xié)議,就像上面所說,它只是提供了一個針對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)行連接時,該Socket連接就是一個TCP連接,Socket是發(fā)動機(jī),提供了網(wǎng)絡(luò)通信的能力

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

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

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

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

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

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

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

      總結(jié):

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

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

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

      HTML5 Web Sockets以最小的開銷高效地提供了Web連接。相較于經(jīng)常需要使用推送實(shí)時數(shù)據(jù)到客戶端甚至通過維護(hù)兩個HTTP連接來模擬全雙工連接的舊的輪詢或長輪詢(Comet)來說,這就極大的減少了不必要的網(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ù)先并不知道這個連接。

      聯(lián)系:

      • WebSocket在建立握手時,數(shù)據(jù)是通過HTTP傳輸?shù)摹5墙⒅?,在真正傳輸時候是不需要HTTP協(xié)議的。

      WebSocket連接的過程:

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

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

      相關(guān)推薦

      • 比利時計劃再次延長2G和3G網(wǎng)絡(luò)運(yùn)營至明年

        據(jù)telecompaper網(wǎng)站7月13日報道,比利時電信監(jiān)管機(jī)構(gòu)Bipt提議將現(xiàn)有的2G和3G頻譜許可證再延長六個月,這意味著這些網(wǎng)絡(luò)將繼續(xù)在該國運(yùn)營到明年。如果獲得批準(zhǔn),該國主要…

        2022年7月14日
      • 余杭道路健康智能AI巡檢系統(tǒng)上線 道路管養(yǎng)有“數(shù)”賦“智”

        【來源:余杭晨報】 大家都知道,交通道路的病害監(jiān)測、違規(guī)占道、異常物堆積、橫幅等障礙物的勘測手段,以人工驅(qū)車巡檢方式為主,人工巡邏、拍照記錄工作量大、效率低下,同時受天氣、道路條件…

        2022年6月18日
      • 電影之夜紅毯生圖:劉亦菲高定裙顯胖,李冰冰狀態(tài)佳,王一博帥氣

        微博電影之夜來啦! 這次微博電影之夜有些特別,之前主辦方只有一個,現(xiàn)在多了個電影頻道,星光更勝,超50位明星以及業(yè)內(nèi)到場出席——既有當(dāng)紅85花還有人氣流量,更有多位影后、影帝以及大…

        2022年8月15日
      • 星環(huán)科技IPO:未彌補(bǔ)虧損超4億 創(chuàng)始人上市前離任

          出品:新浪財經(jīng)上市公司研究院   作者:壹零   大數(shù)據(jù)風(fēng)口之下,備受資本青睞、業(yè)務(wù)覆蓋眾多行業(yè)場景的星環(huán)科技,想要“流血”上市。   近日,根據(jù)上交所科創(chuàng)板披露,星環(huán)信息科技…

        2022年6月16日
      • 男生學(xué)什么專業(yè)好?

        學(xué)什么專業(yè)完全是根據(jù)自己的興趣愛好決定的。和性別沒有關(guān)系。只要自己真心喜歡,不論學(xué)什么專業(yè)都是可以的。不要把專業(yè)和性別強(qiáng)行聯(lián)系起來。不過我可以分享一下男生比較多的專業(yè)。 計算機(jī)專業(yè)…

        2022年4月19日
      • 暴跌還在繼續(xù),如果比特幣跌破2萬!以太跌到900

        No.1 比特幣,以太坊都雪崩了! 時事未然,如果兩個月之前,我說比特幣跌破2萬以下,以太跌到900,可能很多人會說我標(biāo)題黨,空狗,如今再一看,好像離的也不遠(yuǎn)了。 之前我的觀點(diǎn)是比…

        2022年6月18日
      • 架構(gòu)師 知乎 被濫用的“架構(gòu)師”

        在很多程序員的大腦中,都會有這樣一個打怪升級的路徑: 曾經(jīng),我對這個路徑深信不疑,現(xiàn)在想想,也許是因為初出茅廬的我所看到的江湖太小。慢慢地,在江湖中久了、視野開了,就發(fā)現(xiàn)自己想得太…

        2022年6月28日
      • 小程序的外包開發(fā)

        最近,總會在后臺收到私信“開發(fā)一個小程序多難?”或者“需要什么工作分工才能完成一個小程序開發(fā)呢?”所以,今天從開發(fā)角度出發(fā)講講小程序的開發(fā)。北京木奇移動技術(shù)有限公司,專業(yè)的軟件外包…

        2022年7月11日
      • 紅魔電競顯示器參數(shù)規(guī)格:最高4K 160Hz+mini LED背光

        今日上午,紅魔游戲手機(jī)官方宣布,紅魔電競顯示器將于 10 月 10 日開啟預(yù)售。此前,紅魔電競顯示器于今年 7 月發(fā)布,官方稱其為“首款 27 英寸 4K 160Hz mini L…

        2022年10月8日
      • 華為od一面面試算法

        華為od一面面試算法 在看題目之前,談?wù)剬τ诿嬖嚂r手?jǐn)]算法的看法,如果在面試之前刷了幾百+的leetcode,那么只要好好總結(jié)一下,我覺得面試的算法是完全可以做出來的;但是如果沒有…

        2022年6月13日

      聯(lián)系我們

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