TCP通過下列方式來提供可靠性
(1)應(yīng)用數(shù)據(jù)被分割成TCP認(rèn)為最合適的發(fā)送數(shù)據(jù)塊。這和UDP完全不同,應(yīng)用程序產(chǎn)生的數(shù)據(jù)報(bào)長度將保持不變。由TCP傳遞給IP的信息單位稱為報(bào)文段或段(segement)
(2)當(dāng)TCP發(fā)出一個(gè)段后,他啟動(dòng)一個(gè)定時(shí)器。等待目的端確認(rèn)收到這個(gè)報(bào)文段,如果不能及時(shí)收到這個(gè)確認(rèn),將重發(fā)這個(gè)報(bào)文段。
(3)當(dāng)TCP收到發(fā)至TCP鏈接的另一端的數(shù)據(jù)。他將發(fā)送一個(gè)確認(rèn)。這個(gè)確認(rèn)不是立即發(fā)送,通常會(huì)延長幾分之妙
(4)TCP將保持他首部和數(shù)據(jù)的檢驗(yàn)和。這是端到端的檢驗(yàn)和,目的是檢測(cè)數(shù)據(jù)在傳輸?shù)倪^程中任何變化。如果收到的檢測(cè)和有差錯(cuò),TCP將丟棄這個(gè)報(bào)文段和不確認(rèn)收到此報(bào)文段(希望發(fā)端超時(shí)并重發(fā))
(5)既然TCP報(bào)文段作為IP數(shù)據(jù)報(bào)來傳輸?shù)?,而IP數(shù)據(jù)報(bào)的到達(dá)可能會(huì)失序,因此TCP報(bào)文段的到達(dá)也可能會(huì)失序。如果必要TCP將對(duì)收到的數(shù)據(jù)進(jìn)行重新排序,將收到的數(shù)據(jù)以正確的順序交給應(yīng)用層
(6)既然IP數(shù)據(jù)報(bào)會(huì)發(fā)生重復(fù),TCP的接收端必須丟棄重復(fù)的數(shù)據(jù)。
(7)TCP還提供了流量控制。TCP鏈接的每一個(gè)都有固定大小緩存空間。TCP的接收端只允許另一端發(fā)送接收端緩存區(qū)所能接納的數(shù)據(jù)。這是防止較快主機(jī)是較慢的主機(jī)的緩沖區(qū)溢出。
兩個(gè)應(yīng)用程序通過TCP連接交換8bit字節(jié)構(gòu)成的字節(jié)流。TCP不在字節(jié)流中插入記錄標(biāo)識(shí)符。我們將這稱為字節(jié)流服務(wù)(byte stream service)。如果一方的應(yīng)用程序先傳10字節(jié),又傳20字節(jié),再傳50字節(jié),連接的另一方將無法了解發(fā)方每次發(fā)送了多少字節(jié)。收方可以分4次接收這80個(gè)字節(jié),每次接收20字節(jié)。一端將字節(jié)流放到TCP連接上,同樣的字節(jié)流將出現(xiàn)在TCP連接的另一端。
另外,TCP對(duì)字節(jié)流的內(nèi)容不作任何解釋。TCP不知道傳輸?shù)臄?shù)據(jù)字節(jié)流是二進(jìn)制數(shù)據(jù),還是ASCII字符、EBCDIC字符或者其他類型數(shù)據(jù)。對(duì)字節(jié)流的解釋由TCP連接雙方的應(yīng)用層解釋。

TCP為應(yīng)用層提供全雙工服務(wù)。這意味數(shù)據(jù)能在兩個(gè)方向上獨(dú)立地進(jìn)行傳輸。因此,連接的每一端必須保持每個(gè)方向上的傳輸數(shù)據(jù)序號(hào)。
TCP提供了一種可靠的面向連接的字節(jié)流運(yùn)輸層服務(wù)。我們簡單地介紹了TCP首部中的各個(gè)字段,并在隨后的幾章里詳細(xì)討論它們。
TCP將用戶數(shù)據(jù)打包構(gòu)成報(bào)文段;它發(fā)送數(shù)據(jù)后啟動(dòng)一個(gè)定時(shí)器;另一端對(duì)收到的數(shù)據(jù)進(jìn)行確認(rèn),對(duì)失序的數(shù)據(jù)重新排序,丟棄重復(fù)數(shù)據(jù);TCP提供端到端的流量控制,并計(jì)算和驗(yàn)證一個(gè)強(qiáng)制性的端到端檢驗(yàn)和。
許多流行的應(yīng)用程序如Telnet、Rlogin、FTP和SMTP都使用TCP。