本文帶你從一個(gè)新的角度去理解TCP的三次握手和四次揮手。
1 三次握手的職場經(jīng)驗(yàn)
事情是這樣的肾扰,那是一個(gè)美好的周末晚上。而小李還要在家加班蛋逾,正好忙到緊要關(guān)頭集晚,才發(fā)現(xiàn)甲方同事給的接口文檔存在錯(cuò)誤,于是只好硬著頭皮去打攪人家了区匣。
結(jié)果等了半天偷拔,對方一直都沒有回復(fù)。
小李根本就沒法確認(rèn)甲方同事到底是沒有看到消息亏钩,還是看到消息了不想回莲绰。
對于上面的情況,如果使用TCP三次握手姑丑,就很好解決了蛤签。
首先你一上來就給甲方同事發(fā)個(gè)紅包(syn)。
如果對方收了紅包栅哀,那就肯定是看到你的消息了震肮。
如果對方很久都沒有收紅包,那99.999%的概率留拾, 對方是真的沒看到消息戳晌。
果然沒過多久,對方就有響應(yīng)了——甲方同事條件反射般立馬就領(lǐng)了紅包痴柔,并對你的舉動(dòng)感到疑惑(ack+syn)沦偎。
緊接著,你就可以光明正大地把你準(zhǔn)備好的問題發(fā)給他以解除他的疑惑了(ack)。
到這里豪嚎,TCP三次握手就完成了搔驼,你們已經(jīng)建立了聯(lián)系,可以保持通話了疙渣。
2 三次握手動(dòng)圖
有了上面的職場經(jīng)驗(yàn)匙奴,再來看下面這張圖:
圖片來源 https://juejin.im/post/5b29d2c4e51d4558b80b1d8c
圖中的Server自然就是甲方同事了。
Client 向 Server 發(fā)送了syn(發(fā)紅包)妄荔,Server回復(fù)了ack+syn(收紅包+疑惑) 泼菌,
Client 向 Server 回復(fù)了syn(回復(fù)解惑)。
當(dāng)然上面的比喻還有很多不嚴(yán)謹(jǐn)?shù)牡胤嚼沧猓菍ξ覀兝斫釺CP三次握手還是有一定幫助的哗伯。
3 四次揮手的職場經(jīng)驗(yàn)
現(xiàn)在假設(shè)甲方同事很快地就把文檔改好。
他把文檔發(fā)給小李后篷角,在小李一點(diǎn)心理準(zhǔn)備都沒有的情況下就立馬就下線了......
如果使用四次揮手焊刹,情況就會(huì)好很多。
甲方同事把改好的文檔發(fā)給你后恳蹲,會(huì)等你查看文檔 (fin)虐块。
你會(huì)回復(fù)他收到文檔并查看(ack)。
當(dāng)你檢查文檔確認(rèn)無誤后嘉蕾,會(huì)告知甲方同事(fin)贺奠。這時(shí)候甲方同事才會(huì)下線休息(ack)。
到了這里错忱,你們的會(huì)話就結(jié)束了儡率,非常和諧。
4 四次揮手動(dòng)圖
根據(jù)上面的職場經(jīng)驗(yàn)以清,再來看下面這張圖:
圖片來源 https://juejin.im/post/5b29d2c4e51d4558b80b1d8c
圖中的Client就是甲方同事了儿普。
Client 向 Server 發(fā)送了fin(發(fā)送完成的文檔),Server回復(fù)了ack(回復(fù)收到) 掷倔,
一段時(shí)間后眉孩,Server 向 Client 發(fā)送了fin(確認(rèn)文檔無誤),Client回復(fù)了ack(道別下線)今魔。
5 結(jié)尾
本文到這里就結(jié)束了勺像,當(dāng)然TCP是非常復(fù)雜的東西,希望可以給到大家一點(diǎn)幫助错森。
更多精彩內(nèi)容, 請關(guān)注公眾號(hào)"字節(jié)武裝"