TCP簡(jiǎn)介

看了阮一峰老師的關(guān)于TCP協(xié)議的文章后,自己做了些總結(jié)
傳送門:http://www.ruanyifeng.com/blog/2017/06/tcp-protocol.html

以太網(wǎng)協(xié)議: 解決子網(wǎng)內(nèi)點(diǎn)對(duì)點(diǎn)通信
ip協(xié)議: 解決局域網(wǎng)之間通信,但是不能保證數(shù)據(jù)包的完整

TCP 協(xié)議的作用是,保證數(shù)據(jù)通信的完整性和可靠性,防止丟包。
TCP和UDP都是傳輸層的協(xié)議

TCP.png

簡(jiǎn)單來(lái)說(shuō),以太網(wǎng)數(shù)據(jù)包的負(fù)載是1500字節(jié),TCP 數(shù)據(jù)包的負(fù)載在1400字節(jié)左右,一次TCP通信可以包括多個(gè)HTTP通信,而且TCP通信是雙向的

<1>TCP為每個(gè)包編號(hào),編號(hào)規(guī)則:
當(dāng)前包編號(hào) + 當(dāng)前包負(fù)載 = 下個(gè)包的編號(hào)
這樣接收方收到數(shù)據(jù)包時(shí)候可以通過(guò)編號(hào)還原,就可以知道哪個(gè)包丟失了

<2>操作系統(tǒng)接受TCP數(shù)據(jù)包,把他們按順序組裝好,組裝好后通過(guò)端口把他們轉(zhuǎn)給應(yīng)用程序

<3>慢啟動(dòng)機(jī)制: 一開(kāi)始發(fā)送數(shù)據(jù)包會(huì)比較慢,而后根據(jù)丟包情況再調(diào)整順序

<4>接收方每收到兩個(gè) TCP 數(shù)據(jù)包,就要發(fā)送一個(gè)確認(rèn)消息。"確認(rèn)"的英語(yǔ)是 acknowledgement,所以這個(gè)確認(rèn)消息就簡(jiǎn)稱 ACK。

ACK.png

如果發(fā)送方發(fā)現(xiàn)收到三個(gè)連續(xù)的重復(fù) ACK,或者超時(shí)了還沒(méi)有收到任何 ACK,就會(huì)確認(rèn)丟包,即5號(hào)包遺失了,從而再次發(fā)送這個(gè)包。通過(guò)這種機(jī)制,TCP 保證了不會(huì)有數(shù)據(jù)包丟失。

TCP的三次握手,四次揮手
三次握手:客戶端向服務(wù)端發(fā)送連接請(qǐng)求,服務(wù)端發(fā)送ACK回復(fù)客戶端,客戶端再次向服務(wù)端發(fā)送ACK確認(rèn),然后倆端都進(jìn)入連接狀態(tài)

四次揮手: 客戶端向服務(wù)端發(fā)送斷開(kāi)請(qǐng)求,服務(wù)端回復(fù)接受斷開(kāi)的請(qǐng)求,準(zhǔn)備斷開(kāi)連接,然后準(zhǔn)備好斷開(kāi)連接之后向客戶端發(fā)送我準(zhǔn)備好了的響應(yīng),客戶端接收到響應(yīng)后發(fā)送ACK確認(rèn),最后倆端進(jìn)入斷開(kāi)狀態(tài)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容