日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

字節(jié)一面:HTTP長(zhǎng)連接和TCP長(zhǎng)連接有區(qū)別?

小林coding ? 來(lái)源:小林coding ? 作者:小林coding ? 2022-12-02 14:00 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

大家好,我是小林。

之前有位讀者私信我,他在字節(jié)面試時(shí),被問(wèn)到這兩個(gè)問(wèn)題:

第一個(gè)問(wèn)題:MySQL 的 NULL 值是怎么存放的?

第二個(gè)問(wèn)題:HTTP 長(zhǎng)連接和 TCP 長(zhǎng)連接有什么區(qū)別?

第一個(gè)問(wèn)題,主要是考核你是否清楚 MySQL 一條記錄是怎么存儲(chǔ)的,我在前幾天已經(jīng)寫(xiě)了一篇文章講解了,還沒(méi)看過(guò)的同學(xué),可以去看這篇:字節(jié)一面:MySQL 的 NULL 值是怎么存放的?

第二問(wèn)題,其實(shí)是在問(wèn) HTTP 的 Keep-Alive 和 TCP 的 Keepalive 有什么區(qū)別?

這是個(gè)好問(wèn)題,應(yīng)該有不少人都會(huì)搞混,因?yàn)檫@兩個(gè)東西看上去太像了,很容易誤以為是同一個(gè)東西。

如果認(rèn)真讀過(guò)我網(wǎng)站上圖解網(wǎng)絡(luò)系列文章的同學(xué),應(yīng)該這個(gè)問(wèn)題你們都會(huì),因?yàn)槲抑熬蛯?xiě)過(guò)。

不過(guò),應(yīng)該也有不少同學(xué),看過(guò)后忘記了,這次就帶大家重新復(fù)習(xí)一波。

事實(shí)上,這兩個(gè)完全是兩樣不同東西,實(shí)現(xiàn)的層面也不同:

HTTP 的 Keep-Alive,是由應(yīng)用層(用戶(hù)態(tài))實(shí)現(xiàn)的,稱(chēng)為 HTTP 長(zhǎng)連接;

TCP 的 Keepalive,是由TCP 層(內(nèi)核態(tài))實(shí)現(xiàn)的,稱(chēng)為 TCP ?;顧C(jī)制;

接下來(lái),分別說(shuō)說(shuō)它們。

HTTP 的 Keep-Alive

HTTP 協(xié)議采用的是「請(qǐng)求-應(yīng)答」的模式,也就是客戶(hù)端發(fā)起了請(qǐng)求,服務(wù)端才會(huì)返回響應(yīng),一來(lái)一回這樣子。

3e26a8d2-7205-11ed-8abf-dac502259ad0.png

請(qǐng)求-應(yīng)答

由于 HTTP 是基于 TCP 傳輸協(xié)議實(shí)現(xiàn)的,客戶(hù)端與服務(wù)端要進(jìn)行 HTTP 通信前,需要先建立 TCP 連接,然后客戶(hù)端發(fā)送 HTTP 請(qǐng)求,服務(wù)端收到后就返回響應(yīng),至此「請(qǐng)求-應(yīng)答」的模式就完成了,隨后就會(huì)釋放 TCP 連接。

3e32a4fc-7205-11ed-8abf-dac502259ad0.png

一個(gè) HTTP 請(qǐng)求

如果每次請(qǐng)求都要經(jīng)歷這樣的過(guò)程:建立 TCP -> 請(qǐng)求資源 -> 響應(yīng)資源 -> 釋放連接,那么此方式就是HTTP 短連接,如下圖:

3e48c390-7205-11ed-8abf-dac502259ad0.png

HTTP 短連接

這樣實(shí)在太累人了,一次連接只能請(qǐng)求一次資源。

能不能在第一個(gè) HTTP 請(qǐng)求完后,先不斷開(kāi) TCP 連接,讓后續(xù)的 HTTP 請(qǐng)求繼續(xù)使用此連接?

當(dāng)然可以,HTTP 的 Keep-Alive 就是實(shí)現(xiàn)了這個(gè)功能,可以使用同一個(gè) TCP 連接來(lái)發(fā)送和接收多個(gè) HTTP 請(qǐng)求/應(yīng)答,避免了連接建立和釋放的開(kāi)銷(xiāo),這個(gè)方法稱(chēng)為HTTP 長(zhǎng)連接。

3e70a324-7205-11ed-8abf-dac502259ad0.png

HTTP 長(zhǎng)連接

HTTP 長(zhǎng)連接的特點(diǎn)是,只要任意一端沒(méi)有明確提出斷開(kāi)連接,則保持 TCP 連接狀態(tài)。

怎么才能使用 HTTP 的 Keep-Alive 功能?

在 HTTP 1.0 中默認(rèn)是關(guān)閉的,如果瀏覽器要開(kāi)啟 Keep-Alive,它必須在請(qǐng)求的包頭中添加:

Connection:Keep-Alive

然后當(dāng)服務(wù)器收到請(qǐng)求,作出回應(yīng)的時(shí)候,它也添加一個(gè)頭在響應(yīng)中:

Connection:Keep-Alive

這樣做,連接就不會(huì)中斷,而是保持連接。當(dāng)客戶(hù)端發(fā)送另一個(gè)請(qǐng)求時(shí),它會(huì)使用同一個(gè)連接。這一直繼續(xù)到客戶(hù)端或服務(wù)器端提出斷開(kāi)連接。

從 HTTP 1.1 開(kāi)始, 就默認(rèn)是開(kāi)啟了 Keep-Alive,如果要關(guān)閉 Keep-Alive,需要在 HTTP 請(qǐng)求的包頭里添加:

Connection:close

現(xiàn)在大多數(shù)瀏覽器都默認(rèn)是使用 HTTP/1.1,所以 Keep-Alive 都是默認(rèn)打開(kāi)的。一旦客戶(hù)端和服務(wù)端達(dá)成協(xié)議,那么長(zhǎng)連接就建立好了。

HTTP 長(zhǎng)連接不僅僅減少了 TCP 連接資源的開(kāi)銷(xiāo),而且這給HTTP 流水線技術(shù)提供了可實(shí)現(xiàn)的基礎(chǔ)。

所謂的 HTTP 流水線,是客戶(hù)端可以先一次性發(fā)送多個(gè)請(qǐng)求,而在發(fā)送過(guò)程中不需先等待服務(wù)器的回應(yīng),可以減少整體的響應(yīng)時(shí)間。

舉例來(lái)說(shuō),客戶(hù)端需要請(qǐng)求兩個(gè)資源。以前的做法是,在同一個(gè) TCP 連接里面,先發(fā)送 A 請(qǐng)求,然后等待服務(wù)器做出回應(yīng),收到后再發(fā)出 B 請(qǐng)求。HTTP 流水線機(jī)制則允許客戶(hù)端同時(shí)發(fā)出 A 請(qǐng)求和 B 請(qǐng)求。

3e8df00a-7205-11ed-8abf-dac502259ad0.png

右邊為 HTTP 流水線機(jī)制

但是服務(wù)器還是按照順序響應(yīng),先回應(yīng) A 請(qǐng)求,完成后再回應(yīng) B 請(qǐng)求。

而且要等服務(wù)器響應(yīng)完客戶(hù)端第一批發(fā)送的請(qǐng)求后,客戶(hù)端才能發(fā)出下一批的請(qǐng)求,也就說(shuō)如果服務(wù)器響應(yīng)的過(guò)程發(fā)生了阻塞,那么客戶(hù)端就無(wú)法發(fā)出下一批的請(qǐng)求,此時(shí)就造成了「隊(duì)頭阻塞」的問(wèn)題。

可能有的同學(xué)會(huì)問(wèn),如果使用了 HTTP 長(zhǎng)連接,如果客戶(hù)端完成一個(gè) HTTP 請(qǐng)求后,就不再發(fā)起新的請(qǐng)求,此時(shí)這個(gè) TCP 連接一直占用著不是挺浪費(fèi)資源的嗎?

對(duì)沒(méi)錯(cuò),所以為了避免資源浪費(fèi)的情況,web 服務(wù)軟件一般都會(huì)提供 keepalive_timeout 參數(shù),用來(lái)指定 HTTP 長(zhǎng)連接的超時(shí)時(shí)間。

比如設(shè)置了 HTTP 長(zhǎng)連接的超時(shí)時(shí)間是 60 秒,web 服務(wù)軟件就會(huì)啟動(dòng)一個(gè)定時(shí)器,如果客戶(hù)端在完后一個(gè) HTTP 請(qǐng)求后,在 60 秒內(nèi)都沒(méi)有再發(fā)起新的請(qǐng)求,定時(shí)器的時(shí)間一到,就會(huì)觸發(fā)回調(diào)函數(shù)來(lái)釋放該連接。

3eb55dac-7205-11ed-8abf-dac502259ad0.png

HTTP 長(zhǎng)連接超時(shí)

TCP 的 Keepalive

TCP 的 Keepalive 這東西其實(shí)就是TCP 的?;顧C(jī)制,它的工作原理我之前的文章寫(xiě)過(guò),這里就直接貼下以前的內(nèi)容。

如果兩端的 TCP 連接一直沒(méi)有數(shù)據(jù)交互,達(dá)到了觸發(fā) TCP ?;顧C(jī)制的條件,那么內(nèi)核里的 TCP 協(xié)議棧就會(huì)發(fā)送探測(cè)報(bào)文。

如果對(duì)端程序是正常工作的。當(dāng) TCP ?;畹奶綔y(cè)報(bào)文發(fā)送給對(duì)端, 對(duì)端會(huì)正常響應(yīng),這樣TCP ?;顣r(shí)間會(huì)被重置,等待下一個(gè) TCP ?;顣r(shí)間的到來(lái)。

如果對(duì)端主機(jī)崩潰,或?qū)Χ擞捎谄渌驅(qū)е聢?bào)文不可達(dá)。當(dāng) TCP 保活的探測(cè)報(bào)文發(fā)送給對(duì)端后,石沉大海,沒(méi)有響應(yīng),連續(xù)幾次,達(dá)到保活探測(cè)次數(shù)后,TCP 會(huì)報(bào)告該 TCP 連接已經(jīng)死亡。

所以,TCP 保活機(jī)制可以在雙方?jīng)]有數(shù)據(jù)交互的情況,通過(guò)探測(cè)報(bào)文,來(lái)確定對(duì)方的 TCP 連接是否存活,這個(gè)工作是在內(nèi)核完成的。

3ed5f9d6-7205-11ed-8abf-dac502259ad0.png

TCP 保活機(jī)制

注意,應(yīng)用程序若想使用 TCP ?;顧C(jī)制需要通過(guò) socket 接口設(shè)置 SO_KEEPALIVE 選項(xiàng)才能夠生效,如果沒(méi)有設(shè)置,那么就無(wú)法使用 TCP ?;顧C(jī)制。

總結(jié)

HTTP 的 Keep-Alive 也叫 HTTP 長(zhǎng)連接,該功能是由「應(yīng)用程序」實(shí)現(xiàn)的,可以使得用同一個(gè) TCP 連接來(lái)發(fā)送和接收多個(gè) HTTP 請(qǐng)求/應(yīng)答,減少了 HTTP 短連接帶來(lái)的多次 TCP 連接建立和釋放的開(kāi)銷(xiāo)。

TCP 的 Keepalive 也叫 TCP ?;顧C(jī)制,該功能是由「內(nèi)核」實(shí)現(xiàn)的,當(dāng)客戶(hù)端和服務(wù)端長(zhǎng)達(dá)一定時(shí)間沒(méi)有進(jìn)行數(shù)據(jù)交互時(shí),內(nèi)核為了確保該連接是否還有效,就會(huì)發(fā)送探測(cè)報(bào)文,來(lái)檢測(cè)對(duì)方是否還在線,然后來(lái)決定是否要關(guān)閉該連接。

歷史好文:

字節(jié)一面:TCP 三次握手,問(wèn)的好細(xì)!

美團(tuán)二面:TCP 四次揮手,可以變成三次嗎?

字節(jié)一面:服務(wù)端掛了,客戶(hù)端的 TCP 連接還在嗎?

字節(jié)一面:HTTPS 一定安全可靠嗎?

審核編輯 :李倩

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • HTTP
    +關(guān)注

    關(guān)注

    0

    文章

    538

    瀏覽量

    35570
  • TCP
    TCP
    +關(guān)注

    關(guān)注

    8

    文章

    1434

    瀏覽量

    83782
  • MySQL
    +關(guān)注

    關(guān)注

    1

    文章

    931

    瀏覽量

    29775
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    長(zhǎng)晶科技董事長(zhǎng)楊國(guó)江發(fā)表2026年新春賀詞

    歲啟新章,駿程納福。在這辭舊迎新的美好時(shí)刻,我謹(jǐn)代表長(zhǎng)晶科技經(jīng)營(yíng)管理團(tuán)隊(duì),向勤勞奮斗的長(zhǎng)晶家人,向全球風(fēng)雨同行的合作伙伴,以及所有關(guān)注、支持長(zhǎng)晶的各界朋友們,致以最誠(chéng)摯的新年問(wèn)候和美好祝福
    的頭像 發(fā)表于 02-26 15:11 ?658次閱讀

    niobeu4 esp32 開(kāi)發(fā)板無(wú)法連接有密碼的wifi

    密碼的熱點(diǎn),無(wú)法連接有密碼的熱點(diǎn)。 (3)使用 esp-idf 原生的 api 開(kāi)發(fā) wifi(系統(tǒng)環(huán)境是 openharmony,只更換 api),結(jié)果也是只能連接沒(méi)有密碼的熱點(diǎn),無(wú)法連接帶密碼的熱點(diǎn)。 問(wèn)題復(fù)現(xiàn): 使用例程中
    發(fā)表于 01-23 10:36

    長(zhǎng)晶科技重啟IPO

    據(jù)證監(jiān)會(huì)官網(wǎng)的信息顯示,江蘇長(zhǎng)晶科技股份有限公司于2026年1月15日正式啟動(dòng)上市輔導(dǎo),華泰聯(lián)合證券有限責(zé)任公司擔(dān)任輔導(dǎo)機(jī)構(gòu)。這意味著長(zhǎng)晶科技重啟IPO,此前在2022年9月份,長(zhǎng)晶科技就啟動(dòng)過(guò)創(chuàng)業(yè)板IPO;但是在2023年9月
    的頭像 發(fā)表于 01-16 11:13 ?674次閱讀

    請(qǐng)問(wèn)CW32仿真器連接有什么特殊要求嗎?

    CW32仿真器連接有什么特殊要求嗎?
    發(fā)表于 01-12 07:56

    長(zhǎng)時(shí)儲(chǔ)能為何不長(zhǎng)時(shí)?

    150-200GW的電力,這相當(dāng)于整個(gè)法國(guó)電力消耗量的2倍左右。長(zhǎng)時(shí)儲(chǔ)能正是解決缺電問(wèn)題的重要技術(shù)方案,尤其針對(duì)AIDC的高能耗、高波動(dòng)、高綠電需求特性,長(zhǎng)時(shí)儲(chǔ)能更是目前的最佳解決方案。但目前長(zhǎng)時(shí)儲(chǔ)能技術(shù)仍需等待成熟,核心痛點(diǎn)之
    的頭像 發(fā)表于 12-29 08:41 ?1w次閱讀

    TCP和UDP的區(qū)別

    首先概括下基本的區(qū)別: TCP個(gè)面向連接的、可靠的、基于字節(jié)流的傳輸層協(xié)議。 而UDP
    發(fā)表于 12-09 07:24

    為什么會(huì)有TCP/IP協(xié)議?

    ,計(jì)算機(jī)只是單兵作戰(zhàn)并不會(huì)發(fā)揮太大的作用。 只有把它們聯(lián)合起來(lái),電腦才會(huì)發(fā)揮出它最大的潛力。于是人們就想方設(shè)法的用電線把電腦連接到了起。 但是簡(jiǎn)單的連到起是遠(yuǎn)遠(yuǎn)不夠的,就好像語(yǔ)言不同的兩個(gè)人互相見(jiàn)了
    發(fā)表于 12-03 06:28

    全流程場(chǎng)景落地 在線測(cè)長(zhǎng)儀多方位部署 滿足各種檢測(cè)需求

    在鋼廠,不同的位置都有長(zhǎng)度的檢測(cè)需求,如剪切位置、鋼坯位置、成品位置等,在不同的位置部署在線測(cè)長(zhǎng)儀,保證測(cè)量精度,提升產(chǎn)品品質(zhì)。 全流程場(chǎng)景落地:這些環(huán)節(jié)“吃勁”,管控效果明顯 在線測(cè)長(zhǎng)儀在鋼鐵生產(chǎn)
    發(fā)表于 11-04 14:23

    什邡離線掃描設(shè)備如何測(cè)量長(zhǎng)材直線度

    、每米等多種直線度誤差和外徑。 1、基本原理 兩組測(cè)頭可組成個(gè)坐標(biāo)系,通過(guò)每個(gè)測(cè)頭測(cè)量的被測(cè)物中心位置可計(jì)算出被測(cè)物中心在坐標(biāo)系中的坐標(biāo)位置 離線掃描式直線度測(cè)量?jī)x是種專(zhuān)為長(zhǎng)材(如管材、棒材、線材等
    發(fā)表于 09-05 14:05

    「案例分享」飛創(chuàng)長(zhǎng)行程直線模組的高效與精準(zhǔn)應(yīng)用

    工業(yè)自動(dòng)化進(jìn)程的核心力量。飛創(chuàng)長(zhǎng)行程直線模組案例飛創(chuàng)超高速?長(zhǎng)行程直線電機(jī)模組展現(xiàn)出卓越的性能與精巧的設(shè)計(jì)。該模組總長(zhǎng)9500mm,有效行程可達(dá)9m,在緊湊的結(jié)構(gòu)中(寬
    的頭像 發(fā)表于 08-26 11:37 ?619次閱讀
    「案例分享」飛創(chuàng)<b class='flag-5'>長(zhǎng)</b>行程直線模組的高效與精準(zhǔn)應(yīng)用

    中國(guó)半導(dǎo)體行業(yè)協(xié)會(huì)蒞臨長(zhǎng)晶科技參觀考察

    近日,中國(guó)半導(dǎo)體行業(yè)協(xié)會(huì)(CSIA)徐冬梅副秘書(shū)長(zhǎng)、分立器件分會(huì)趙小寧秘書(shū)長(zhǎng)行赴公司參觀調(diào)研,楊國(guó)江董事長(zhǎng)接待協(xié)會(huì)領(lǐng)導(dǎo)來(lái)訪。
    的頭像 發(fā)表于 08-06 18:09 ?1643次閱讀

    Modbus TCP連接多個(gè)客戶(hù)端解決方法-深圳市振鑫通信科技

    ZP-MBS008多主站模塊是實(shí)現(xiàn)Modbus-TCP連接多個(gè)客戶(hù)端或者服務(wù)器通訊設(shè)備
    的頭像 發(fā)表于 06-25 11:07 ?2067次閱讀
    Modbus <b class='flag-5'>TCP</b><b class='flag-5'>連接</b>多個(gè)客戶(hù)端解決方法-深圳市振鑫通信科技

    開(kāi)疆智能Profient轉(zhuǎn)ModbusTCP網(wǎng)關(guān)連接ABB機(jī)器人MODBUS TCP通訊案例

    使用網(wǎng)線即可,但是網(wǎng)線連接的是機(jī)器人控制器的“X5”網(wǎng)口中。 案例: 1. ABB機(jī)器人現(xiàn)在要讀取調(diào)試工具中的保持寄存器的值,從第6字節(jié)開(kāi)始讀取
    的頭像 發(fā)表于 05-22 16:51 ?1038次閱讀
    開(kāi)疆智能Profient轉(zhuǎn)ModbusTCP網(wǎng)關(guān)<b class='flag-5'>連接</b>ABB機(jī)器人MODBUS <b class='flag-5'>TCP</b>通訊案例

    長(zhǎng)電科技宿遷基地光伏電站成功并網(wǎng)

    近日,長(zhǎng)電科技第四座分布式太陽(yáng)能光伏電站在宿遷基地成功并網(wǎng)發(fā)電!這座裝機(jī)容量12.85MWp光伏“綠色燈塔”,點(diǎn)亮了長(zhǎng)電科技綠色制造版圖的新坐標(biāo),為公司“零碳工廠”目標(biāo)的實(shí)現(xiàn)增添濃墨重彩的筆。
    的頭像 發(fā)表于 05-15 15:23 ?1317次閱讀

    網(wǎng)絡(luò)光纖線可以接長(zhǎng)嗎?

    網(wǎng)絡(luò)光纖線可以接長(zhǎng),但接長(zhǎng)過(guò)程需要專(zhuān)業(yè)的設(shè)備、技術(shù)和操作規(guī)范,且接長(zhǎng)后可能會(huì)對(duì)光纖傳輸性能產(chǎn)生定影響。以下是關(guān)于網(wǎng)絡(luò)光纖線接長(zhǎng)的詳細(xì)說(shuō)明: 接長(zhǎng)方法 光纖熔接 原理:使用光纖熔接機(jī),
    的頭像 發(fā)表于 05-07 10:42 ?2047次閱讀
    张家界市| 呼玛县| 睢宁县| 左贡县| 邯郸县| 扶余县| 乐都县| 景德镇市| 兴隆县| 舟山市| 汨罗市| 屯留县| 扶风县| 平陆县| 林芝县| 石楼县| 民县| 盈江县| 乐清市| 泰兴市| 宜春市| 嘉定区| 逊克县| 博湖县| 梅州市| 清水河县| 金坛市| 拉萨市| 运城市| 周宁县| 宣恩县| 从化市| 崇礼县| 五河县| 迁安市| 洪雅县| 宁安市| 微山县| 个旧市| 丹棱县| 建水县|