国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊

C++基礎(chǔ)語法梳理:計(jì)算機(jī)網(wǎng)絡(luò)丨傳輸管理(TCP)

2021-10-20 17:01 作者:C語言編程__Plus  | 我要投稿

TCP 傳輸連接管理

因?yàn)?TCP 三次握手建立連接、四次揮手釋放連接很重要,所以附上《計(jì)算機(jī)網(wǎng)絡(luò)(第 7 版)-謝希仁》書中對此章的詳細(xì)描述:https://gitee.com/huihut/interview/raw/master/images/TCP-transport-connection-management.png

TCP 三次握手建立連接


【TCP 建立連接全過程解釋】

客戶端發(fā)送 SYN 給服務(wù)器,說明客戶端請求建立連接;

服務(wù)端收到客戶端發(fā)的 SYN,并回復(fù) SYN+ACK 給客戶端(同意建立連接);

客戶端收到服務(wù)端的 SYN+ACK 后,回復(fù) ACK 給服務(wù)端(表示客戶端收到了服務(wù)端發(fā)的同意報(bào)文);

服務(wù)端收到客戶端的 ACK,連接已建立,可以數(shù)據(jù)傳輸。

TCP 為什么要進(jìn)行三次握手?

【答案一】因?yàn)樾诺啦豢煽?,?TCP 想在不可靠信道上建立可靠地傳輸,那么三次通信是理論上的最小值。(而 UDP 則不需建立可靠傳輸,因此 UDP 不需要三次握手。)

【答案二】因?yàn)殡p方都需要確認(rèn)對方收到了自己發(fā)送的序列號(hào),確認(rèn)過程最少要進(jìn)行三次通信。

【答案三】為了防止已失效的連接請求報(bào)文段突然又傳送到了服務(wù)端,因而產(chǎn)生錯(cuò)誤。

TCP 四次揮手釋放連接


【TCP 釋放連接全過程解釋】

客戶端發(fā)送 FIN 給服務(wù)器,說明客戶端不必發(fā)送數(shù)據(jù)給服務(wù)器了(請求釋放從客戶端到服務(wù)器的連接);

服務(wù)器接收到客戶端發(fā)的 FIN,并回復(fù) ACK 給客戶端(同意釋放從客戶端到服務(wù)器的連接);

客戶端收到服務(wù)端回復(fù)的 ACK,此時(shí)從客戶端到服務(wù)器的連接已釋放(但服務(wù)端到客戶端的連接還未釋放,并且客戶端還可以接收數(shù)據(jù));

服務(wù)端繼續(xù)發(fā)送之前沒發(fā)完的數(shù)據(jù)給客戶端;

服務(wù)端發(fā)送 FIN+ACK 給客戶端,說明服務(wù)端發(fā)送完了數(shù)據(jù)(請求釋放從服務(wù)端到客戶端的連接,就算沒收到客戶端的回復(fù),過段時(shí)間也會(huì)自動(dòng)釋放);

客戶端收到服務(wù)端的 FIN+ACK,并回復(fù) ACK 給客戶端(同意釋放從服務(wù)端到客戶端的連接);

服務(wù)端收到客戶端的 ACK 后,釋放從服務(wù)端到客戶端的連接。

TCP 為什么要進(jìn)行四次揮手?

【問題一】TCP 為什么要進(jìn)行四次揮手? / 為什么 TCP 建立連接需要三次,而釋放連接則需要四次?

【答案一】因?yàn)?TCP 是全雙工模式,客戶端請求關(guān)閉連接后,客戶端向服務(wù)端的連接關(guān)閉(一二次揮手),服務(wù)端繼續(xù)傳輸之前沒傳完的數(shù)據(jù)給客戶端(數(shù)據(jù)傳輸),服務(wù)端向客戶端的連接關(guān)閉(三四次揮手)。所以 TCP 釋放連接時(shí)服務(wù)器的 ACK 和 FIN 是分開發(fā)送的(中間隔著數(shù)據(jù)傳輸),而 TCP 建立連接時(shí)服務(wù)器的 ACK 和 SYN 是一起發(fā)送的(第二次握手),所以 TCP 建立連接需要三次,而釋放連接則需要四次。

【問題二】為什么 TCP 連接時(shí)可以 ACK 和 SYN 一起發(fā)送,而釋放時(shí)則 ACK 和 FIN 分開發(fā)送呢?(ACK 和 FIN 分開是指第二次和第三次揮手)

【答案二】因?yàn)榭蛻舳苏埱筢尫艜r(shí),服務(wù)器可能還有數(shù)據(jù)需要傳輸給客戶端,因此服務(wù)端要先響應(yīng)客戶端 FIN 請求(服務(wù)端發(fā)送 ACK),然后數(shù)據(jù)傳輸,傳輸完成后,服務(wù)端再提出 FIN 請求(服務(wù)端發(fā)送 FIN);而連接時(shí)則沒有中間的數(shù)據(jù)傳輸,因此連接時(shí)可以 ACK 和 SYN 一起發(fā)送。

【問題三】為什么客戶端釋放最后需要 TIME-WAIT 等待 2MSL 呢?

【答案三】

(1)為了保證客戶端發(fā)送的最后一個(gè) ACK 報(bào)文能夠到達(dá)服務(wù)端。若未成功到達(dá),則服務(wù)端超時(shí)重傳 FIN+ACK 報(bào)文段,客戶端再重傳 ACK,并重新計(jì)時(shí)。

(2)防止已失效的連接請求報(bào)文段出現(xiàn)在本連接中。TIME-WAIT 持續(xù) 2MSL 可使本連接持續(xù)的時(shí)間內(nèi)所產(chǎn)生的所有報(bào)文段都從網(wǎng)絡(luò)中消失,這樣可使下次連接中不會(huì)出現(xiàn)舊的連接報(bào)文段。

TCP 有限狀態(tài)機(jī)

TCP 有限狀態(tài)機(jī)圖片


今天的分享就到這里了,大家要好好學(xué)C++喲~

寫在最后:對于準(zhǔn)備學(xué)習(xí)C/C++編程的小伙伴,如果你想更好的提升你的編程核心能力(內(nèi)功)不妨從現(xiàn)在開始!

微信公眾號(hào):C語言編程學(xué)習(xí)基地

C語言零基礎(chǔ)入門教程(83集全)

整理分享(多年學(xué)習(xí)的源碼、項(xiàng)目實(shí)戰(zhàn)視頻、項(xiàng)目筆記,基礎(chǔ)入門教程)

歡迎轉(zhuǎn)行和學(xué)習(xí)編程的伙伴,利用更多的資料學(xué)習(xí)成長比自己琢磨更快哦!



C++基礎(chǔ)語法梳理:計(jì)算機(jī)網(wǎng)絡(luò)丨傳輸管理(TCP)的評論 (共 條)

分享到微博請遵守國家法律
崇信县| 阳朔县| 大埔县| 大宁县| 温泉县| 万荣县| 蚌埠市| 托里县| 积石山| 晋城| 合川市| 万年县| 长泰县| 绩溪县| 于都县| 珲春市| 饶河县| 峨眉山市| 中江县| 博罗县| 白沙| 阿合奇县| 乐至县| 宜阳县| 伽师县| 万盛区| 临沭县| 黔东| 吉首市| 富锦市| 巴楚县| 运城市| 山阳县| 临朐县| 房产| 光山县| 大化| 淮阳县| 枣阳市| 西和县| 铜山县|