TCP協(xié)議是一種基于字節(jié)流的面向連接、可靠的傳輸層通信協(xié)議。TCP協(xié)議是專門為在不可靠的互聯(lián)網(wǎng)上提供可靠的端到端字節(jié)流而設(shè)計的傳輸協(xié)議。當(dāng)應(yīng)用層向TCP層發(fā)送一個用于網(wǎng)間傳輸?shù)?位數(shù)據(jù)流時,TCP將數(shù)據(jù)流分成適當(dāng)長度的段。最大傳輸段大小(MSS)通常受計算機所連接的網(wǎng)絡(luò)的數(shù)據(jù)鏈路層的最大傳輸單位(MTU)限制。之后,TCP將數(shù)據(jù)包傳輸?shù)絀P層,IP層通過網(wǎng)絡(luò)將數(shù)據(jù)包傳輸?shù)浇邮諏嶓w的TCP層。
一、TCP協(xié)議在什么情況下會丟包?
1.TCP協(xié)議定義是一種面向連接、可靠、基于字節(jié)流的傳輸層通信協(xié)議。
2.TCP是基于不可靠的網(wǎng)絡(luò)來實現(xiàn)可靠傳輸?shù)模隙〞?a href="http://www.qzkangyuan.com/help/server/25842.html">丟包的問題。
3.如果在通信過程中發(fā)現(xiàn)數(shù)據(jù)丟失或丟包,最大的可能就是程序在發(fā)送或接收過程中出現(xiàn)了問題。
例:我有2臺服務(wù)器,A和b,當(dāng)A服務(wù)器向b服務(wù)器發(fā)送數(shù)據(jù)的頻率過高時,b服務(wù)器沒有時間處理,香港服務(wù)器,導(dǎo)致數(shù)據(jù)丟包。(原因可能是程序邏輯、多線程同步、緩沖區(qū)溢出)。如果A服務(wù)器不控制發(fā)送頻率或重傳數(shù)據(jù),那么B服務(wù)器收到的數(shù)據(jù)會更少。會造成數(shù)據(jù)丟失。
二、如何解決TCP協(xié)議丟包后的丟包問題。
為了滿足TCP協(xié)議而不丟失數(shù)據(jù)包。TCP協(xié)議有以下規(guī)定:
1.到達確認:接收端收到分片數(shù)據(jù)時,根據(jù)分片數(shù)據(jù)的序列號向發(fā)送端發(fā)送確認。
2.重復(fù)處理:作為IP數(shù)據(jù)報傳輸?shù)腡CP片段將被復(fù)制,TCP的接收端必須丟棄復(fù)制的數(shù)據(jù)。
3.數(shù)據(jù)分片:發(fā)送端對數(shù)據(jù)進行分片,接收端對數(shù)據(jù)進行重組。TCP決定了片段的大小,控制了片段的分裂和重組。
4.超時重傳:發(fā)送方在發(fā)送分片時設(shè)置超時定時器,VPS,定時器到期后如果沒有收到相應(yīng)的確認,則重傳分片數(shù)據(jù)。
5.數(shù)據(jù)校驗:TCP將保留其報頭和數(shù)據(jù)的校驗和,這是一個端到端的校驗和,用于檢測傳輸過程中數(shù)據(jù)的任何變化。如果收到的片段檢查有錯誤,TCP會丟棄該片段,并且不確認收到該報文段會導(dǎo)致對端超時重傳。
6.亂序處理:作為IP數(shù)據(jù)報傳輸?shù)腡CP片段在到達時可能會亂序。TCP將對接收到的數(shù)據(jù)重新排序,并以正確的順序?qū)⑵湟平唤o應(yīng)用層。
7.滑動窗口:TCP連接每一側(cè)的接收緩沖區(qū)空間是固定的,接收端只允許另一端發(fā)送接收端緩沖區(qū)可以接受的數(shù)據(jù)。TCP在滑動窗口的基礎(chǔ)上提供流量控制,防止較慢主機的緩沖區(qū)溢出。百度云加速買一送一(優(yōu)惠來源mfisp.com),租用或托管服務(wù)器可咨詢夢飛云idc了解。