TCP提供一種面向連接的倔喂、可靠的字節(jié)流服務(wù)舰讹。其中躬审,面向連接意味著兩個(gè)使用TCP的應(yīng)用(通常是一個(gè)客戶和一個(gè)服務(wù)器)在彼此交換數(shù)據(jù)之前必須先建立一個(gè)TCP連接予弧。在一個(gè)TCP連接中,僅有兩方進(jìn)行彼此通信槐秧;而字節(jié)流服務(wù)意味著兩個(gè)應(yīng)用程序通過TCP鏈接交換8bit字節(jié)構(gòu)成的字節(jié)流啄踊,TCP不在字節(jié)流中插入記錄標(biāo)識符。
對于可靠性刁标,TCP通過以下方式進(jìn)行保證:
- 數(shù)據(jù)包校驗(yàn):目的是檢測數(shù)據(jù)在傳輸過程中的任何變化颠通,若校驗(yàn)出包有錯(cuò),則丟棄報(bào)文段并且不給出響應(yīng)命雀,這時(shí)TCP發(fā)送數(shù)據(jù)端超時(shí)后會(huì)重發(fā)數(shù)據(jù)蒜哀;
- 對失序數(shù)據(jù)包重排序:既然TCP報(bào)文段作為IP數(shù)據(jù)報(bào)來傳輸,而IP數(shù)據(jù)報(bào)的到達(dá)可能會(huì)失序,因此TCP報(bào)文段的到達(dá)也可能會(huì)失序撵儿。TCP將對失序數(shù)據(jù)進(jìn)行重新排序乘客,然后才交給應(yīng)用層;
- 丟棄重復(fù)數(shù)據(jù):對于重復(fù)數(shù)據(jù)淀歇,能夠丟棄重復(fù)數(shù)據(jù)易核;
- 應(yīng)答機(jī)制:當(dāng)TCP收到發(fā)自TCP連接另一端的數(shù)據(jù),它將發(fā)送一個(gè)確認(rèn)浪默。這個(gè)確認(rèn)不是立即發(fā)送牡直,通常將推遲幾分之一秒;
- 超時(shí)重發(fā):當(dāng)TCP發(fā)出一個(gè)段后纳决,它啟動(dòng)一個(gè)定時(shí)器碰逸,等待目的端確認(rèn)收到這個(gè)報(bào)文段。如果不能及時(shí)收到一個(gè)確認(rèn)阔加,將重發(fā)這個(gè)報(bào)文段饵史;
- 流量控制:TCP連接的每一方都有固定大小的緩沖空間。TCP的接收端只允許另一端發(fā)送接收端緩沖區(qū)所能接納的數(shù)據(jù)胜榔,這可以防止較快主機(jī)致使較慢主機(jī)的緩沖區(qū)溢出胳喷,這就是流量控制。TCP使用的流量控制協(xié)議是可變大小的滑動(dòng)窗口協(xié)議夭织。