TCP Termination Connection Point 終端連接點(diǎn)
TCP Transfer Control Protocol 傳送控制協(xié)議
TCP Transmission Control Protocol 傳輸控制協(xié)議
TCP Transmit Channel Processing 發(fā)送信道處理
英文原義:Transmission Control Protocol
中文釋義:(RFC-793)傳輸控制協(xié)議
注解:該協(xié)議主要用于在主機(jī)間建立一個虛擬連接,以實現(xiàn)高可靠性的數(shù)據(jù)包交換。IP協(xié)議可以進(jìn)行IP數(shù)據(jù)包的分割和組裝,但是通過IP協(xié)議并不能清楚地了解到數(shù)據(jù)包是否順利地發(fā)送給目標(biāo)計算機(jī)。而使用TCP協(xié)議就不同了,在該協(xié)議傳輸模式中在將數(shù)據(jù)包成功發(fā)送給目標(biāo)計算機(jī)后,TCP會要求發(fā)送一個確認(rèn);如果在某個時限內(nèi)沒有收到確認(rèn),那么TCP將重新發(fā)送數(shù)據(jù)包。另外,在傳輸?shù)倪^程中,如果接收到無序、丟失以及被破壞的數(shù)據(jù)包,TCP還可以負(fù)責(zé)恢復(fù)。
傳輸控制協(xié)議(Transmission Control Protocol,TCP)是一種面向連接的、可靠的、基于字節(jié)流的運(yùn)輸層通信協(xié)議,通常由IETF的RFC 793說明。在簡化的計算機(jī)網(wǎng)絡(luò)OSI模型中,它完成運(yùn)輸層所指定的功能。
什么是TCP/IP?
TCP/IP(Transmission Control Protocol/Internet Protocol) 即傳輸控制協(xié)議/網(wǎng)間協(xié)議,是一個工業(yè)標(biāo)準(zhǔn)的協(xié)議集,它是為廣域網(wǎng)(WANs)設(shè)計的。它是由ARPANET網(wǎng)的研究機(jī)構(gòu)發(fā)展起來的。
有時我們將TCP/IP描述為互聯(lián)網(wǎng)協(xié)議集"Internet Protocol Suite",TCP和IP是其中的兩個協(xié)議(后面將會介紹)。由于TCP和IP是大家熟悉的協(xié)議,以至于用TCP/IP或IP/TCP這個詞代替了整個協(xié)議集。這盡管有點(diǎn)奇怪,但沒有必要去爭論這個習(xí)慣。例如,有時我們討論NFS 是基于TCP/IP時,盡管它根本沒用到TCP(只用到IP,和另一種交互式 協(xié)議UDP而不是TCP)。
Internet是網(wǎng)絡(luò)的集合,包括ARPANET、NSFNET、分布在各地的局域網(wǎng)、以及其它類型的網(wǎng)絡(luò),如(DDN,Defense Data Network美國國防數(shù)據(jù)網(wǎng)絡(luò)),這些統(tǒng)稱為Internet。所有這些大大小小的網(wǎng)絡(luò)互聯(lián)在一起。(因為大多數(shù)網(wǎng)絡(luò)基本協(xié)議是由DDN組織開發(fā)的,所以以前有時DDN與Internet在某種意義上具有相同的含義)。網(wǎng)絡(luò)上的用戶可以互相傳送信息,除一些有授權(quán)限制和安全考慮外。一般的講,互聯(lián)網(wǎng)協(xié)議文檔案是Internet委員會自己采納的基本標(biāo)準(zhǔn)。 TCP/IP標(biāo)準(zhǔn)與其說由委員會指定,倒不如說由"輿論"來開發(fā)的。 任何人都可以提供一個文檔,以RFC(Request for Comment需求注釋) 方式公布。
TCP/IP的標(biāo)準(zhǔn)在一系列稱為RFC的文檔中公布。文檔由技術(shù)專家、特別工作組、或RFC編輯修訂。公布一個文檔時,該文檔被賦予一個RFC量,如RFC959說明FTP、RFC793說明TCP、RFC791說明IP等。 最初的RFC一直保留而從來不會被更新,如果修改了該文檔,則該文檔又以一個新號碼公布。因此,重要的是要確認(rèn)你擁有了關(guān)于某個專題的最新RFC文檔。文后會列出主要的RFC文檔號。
不管怎樣,TCP/IP是一個協(xié)議集。為應(yīng)用提供一些"低級"功能,這些包括IP、TCP、UDP。其它是執(zhí)行特定任務(wù)的應(yīng)用協(xié)議,如計算機(jī)間傳送文件、發(fā)送電子郵件、或找出誰注冊到另外一臺計算機(jī)。因此, 最重要的"商業(yè)"TCP/IP服務(wù)有:
* 文件傳送File Transfer。
文件傳送協(xié)議FTP(File Transfer Protocol)允許用戶從一臺計算機(jī)到另一臺取得文件,或發(fā)送文件到另外一臺計算機(jī)。從安全性方面考慮,需要用戶指定一個使用其它計算機(jī)的用戶名和口令。它不同與NFS(Network File System)和Netbios協(xié)議。一旦你要訪問另一臺 系統(tǒng)中的文件,任何時刻都要運(yùn)行FTP。而且你只能拷貝文件到自己的機(jī)器中去來使用它。(RFC 959中關(guān)于FTP的說明)
* 遠(yuǎn)程登錄Remote login
網(wǎng)絡(luò)終端協(xié)議TELNET允許用戶登錄到網(wǎng)絡(luò)上任一計算機(jī)上。你可啟動一個遠(yuǎn)程進(jìn)程連接到指定的計算機(jī),直到進(jìn)程結(jié)束,期間你所鍵入的內(nèi)容被送到所指定的計算機(jī)。值得注意的是,這時你實際上是與你的計算機(jī)進(jìn)行對話。TELENET程序使得你的計算機(jī)在整個過程中不見了,所敲的每一個字符直接送到所登錄的計算機(jī)系統(tǒng)。一般的說,這種遠(yuǎn)程連接是通過類式撥號連接的,也就是,撥通后,遠(yuǎn)程系統(tǒng)提示你輸入注冊名和口令,退出遠(yuǎn)程系統(tǒng),TELNET程序也就退出,你又與自己的計算機(jī)對話了。微電腦中的TELNET工具一般含有一個終端仿真程序。
* 計算機(jī)郵件Mail
允許你發(fā)送消息給其它計算機(jī)的用戶。通常,人們趨向于使用指定的一臺或兩臺計算機(jī)。計算機(jī)郵件系統(tǒng)只需你簡單地往另一用戶的郵件文件中添加信息,但隨之產(chǎn)生問題,使用的微電腦的環(huán)境不同,還有重要的是宏(MICRO)不適合于接受計算機(jī)郵件。為了發(fā)送電子郵件,郵件軟件希望連接到目的計算機(jī),如果是微電腦,也許它已關(guān)機(jī),或者正在運(yùn)行另一個應(yīng)用程序呢?出于這種原因,通常由一個較大的系統(tǒng)來處理這些郵件,也就是一個一直運(yùn)行著的郵件服務(wù)器。郵件軟件成為用戶從郵件服務(wù)器取回郵件的一個界面。
任何一個的TCP/IP工具提供上述這些服務(wù)。這些傳統(tǒng)的應(yīng)用功能在基于TCP/IP的網(wǎng)絡(luò)中一直扮演非常重要的角色。目前情況有點(diǎn)變化,這些功能使用也發(fā)生變化,如老系統(tǒng)的改造,計算機(jī)的發(fā)展等,出現(xiàn)了各種安裝版本,如:微電腦、工作站、小型機(jī)、和巨型機(jī)等。這些計算機(jī)好像在一起完成指定的任務(wù),盡管有時看來像是只用到某個指定 的計算機(jī),但它是通過網(wǎng)絡(luò)得到其它計算機(jī)系統(tǒng)的服務(wù)。服務(wù)器Server是為網(wǎng)絡(luò)上其它提供指定服務(wù)的系統(tǒng),客戶Client是得到這種服務(wù)的另外計算機(jī)系統(tǒng)。(值得注意的是,服務(wù)/客戶機(jī)不一定是不同的計算機(jī),有可能是同一計算機(jī)中的不同運(yùn)行程序)。以下是幾種目前計算機(jī)上典型的一些服務(wù),這些服務(wù)可在TCP/IP網(wǎng)絡(luò)上調(diào)用。
* 網(wǎng)絡(luò)文件系統(tǒng)(NFS)
這種訪問另一計算機(jī)的文件的方法非常接近于流行的FTP。網(wǎng)絡(luò)文件系統(tǒng)提供磁盤或設(shè)備服務(wù),而無需特定的網(wǎng)絡(luò)實用程序來訪問另一系統(tǒng)的文件?梢院唵蔚卣J(rèn)為它是一個外加的磁盤驅(qū)動器。這種額外"虛擬"磁盤驅(qū)動器就是其它計算機(jī)系統(tǒng)的磁盤。這非常有用。你只需加大幾臺計算機(jī)的磁盤容量,就可使網(wǎng)絡(luò)上其他用戶訪問它,且不說所帶來的經(jīng)濟(jì)效益,它還能夠讓幾臺工作的計算機(jī)共享相同的文件。它也使得系統(tǒng)維護(hù)和備份易如反掌,因為再不必為大量的不同機(jī)器上 的文件的升級和備份而擔(dān)心。
* 遠(yuǎn)程打印(Remote printing)
允許你使用其它計算機(jī)上的打印機(jī),好像這些打印機(jī)直接連到你的計算機(jī)上。
* 遠(yuǎn)程執(zhí)行(Remote execution)
允許你請求運(yùn)行在不同計算機(jī)上的特殊程序。當(dāng)你在一個很小的計算機(jī)上運(yùn)行一個需要大機(jī)系統(tǒng)資源的程序時,這時候遠(yuǎn)程執(zhí)行非常有用。
* 名字服務(wù)器(Name servers)
在一個大的系統(tǒng)安裝過程中,需要用到大量的各種名字,包括用戶名、口令,姓名、網(wǎng)絡(luò)地址、帳號等,管理這些是非常令人乏味的。因此將這些數(shù)據(jù)形成數(shù)據(jù)庫,放到一個小系統(tǒng)中去,其它系統(tǒng)通過網(wǎng)絡(luò)來訪問這些數(shù)據(jù)。
* 終端服務(wù)器(Terminal servers)
很多的終端連接安裝不再直接將終端連到計算機(jī),取而代之的是,將他們連接到終端服務(wù)器上。終端服務(wù)器是一個小的計算機(jī),它只需知道怎樣運(yùn)行TELNET(或其它一些完成遠(yuǎn)程登錄的協(xié)議)。如果你的終端想連上去,只用鍵入要連的計算機(jī)名就可。通常有可能同時有幾個這種連接,這時終端服務(wù)器采用快速開關(guān)技術(shù)來切換。
上述所描述的一些協(xié)議是由Berkeley, Sun,或其它組織定義的。因此,它們不是互聯(lián)網(wǎng)協(xié)議集(Internet Protocol Suite)的一部分, 只是使用到TCP/IP的工具,如同一般的TCP/IP 應(yīng)用協(xié)議。因為協(xié)議的定義不一致,并且商業(yè)支持的TCP/IP工具廣泛應(yīng)用,也許會把這些協(xié)議作為互聯(lián)協(xié)議集中的一部分。上述列出的只是基于TCP/IP部分服務(wù)的一些簡單例子,但包含了一些"主要"的應(yīng)用。
TCP的服務(wù)
盡管TCP和UDP都使用相同的網(wǎng)絡(luò)層(IP),TCP卻向應(yīng)用層提供與UDP完全不同的服務(wù)。
TCP提供一種面向連接的、可靠的字節(jié)流服務(wù)。
面向連接意味著兩個使用TCP的應(yīng)用(通常是一個客戶和一個服務(wù)器)在彼此交換數(shù)據(jù)之前必須先建立一個TCP連接。這一過程與打電話很相似,先撥號振鈴,等待對方摘機(jī)說“喂”,然后才說明是誰。在第18章我們將看到一個TCP連接是如何建立的,以及當(dāng)一方通信結(jié)束后如何斷開連接。
在一個TCP連接中,僅有兩方進(jìn)行彼此通信。廣播和多播不能用于TCP。
TCP通過下列方式來提供可靠性:
•應(yīng)用數(shù)據(jù)被分割成TCP認(rèn)為最適合發(fā)送的數(shù)據(jù)塊。這和UDP完全不同,應(yīng)用程序產(chǎn)生的數(shù)據(jù)報長度將保持不變。由TCP傳遞給IP的信息單位稱為報文段或段(segment)TCP如何確定報文段的長度。
•當(dāng)TCP發(fā)出一個段后,它啟動一個定時器,等待目的端確認(rèn)收到這個報文段。如果不能及時收到一個確認(rèn),將重發(fā)這個報文段。在第21章我們將了解TCP協(xié)議中自適應(yīng)的超時及重傳策略。
•當(dāng)TCP收到發(fā)自TCP連接另一端的數(shù)據(jù),它將發(fā)送一個確認(rèn)。這個確認(rèn)不是立即發(fā)送,通常將推遲幾分之一秒
•TCP將保持它首部和數(shù)據(jù)的檢驗和。這是一個端到端的檢驗和,目的是檢測數(shù)據(jù)在傳輸過程中的任何變化。如果收到段的檢驗和有差錯,TCP將丟棄這個報文段和不確認(rèn)收到此報文段(希望發(fā)端超時并重發(fā))。
•既然TCP報文段作為IP數(shù)據(jù)報來傳輸,而IP數(shù)據(jù)報的到達(dá)可能會失序,因此TCP報文段的到達(dá)也可能會失序。如果必要,TCP將對收到的數(shù)據(jù)進(jìn)行重新排序,將收到的數(shù)據(jù)以正確的順序交給應(yīng)用層。
•既然IP數(shù)據(jù)報會發(fā)生重復(fù),TCP的接收端必須丟棄重復(fù)的數(shù)據(jù)。
•TCP還能提供流量控制。TCP連接的每一方都有固定大小的緩沖空間。TCP的接收端只允許另一端發(fā)送接收端緩沖區(qū)所能接納的數(shù)據(jù)。這將防止較快主機(jī)致使較慢主機(jī)的緩沖區(qū)溢出。
兩個應(yīng)用程序通過TCP連接交換8bit字節(jié)構(gòu)成的字節(jié)流。TCP不在字節(jié)流中插入記錄標(biāo)識符。我們將這稱為字節(jié)流服務(wù)(bytestreamservice)。如果一方的應(yīng)用程序先傳10字節(jié),又傳20字節(jié),再傳50字節(jié),連接的另一方將無法了解發(fā)方每次發(fā)送了多少字節(jié)。收方可以分4次接收這80個字節(jié),每次接收20字節(jié)。一端將字節(jié)流放到TCP連接上,同樣的字節(jié)流將出現(xiàn)在TCP連接的另一端。
另外,TCP對字節(jié)流的內(nèi)容不作任何解釋。TCP不知道傳輸?shù)臄?shù)據(jù)字節(jié)流是二進(jìn)制數(shù)據(jù),還是ASCII字符、EBCDIC字符或者其他類型數(shù)據(jù)。對字節(jié)流的解釋由TCP連接雙方的應(yīng)用層解釋。
這種對字節(jié)流的處理方式與Unix操作系統(tǒng)對文件的處理方式很相似。Unix的內(nèi)核對一個應(yīng)用讀或?qū)懙膬?nèi)容不作任何解釋,而是交給應(yīng)用程序處理。對Unix的內(nèi)核來說,它無法區(qū)分一個二進(jìn)制文件與一個文本文件。
TCP是因特網(wǎng)中的傳輸層協(xié)議,使用三次握手協(xié)議建立連接。當(dāng)主動方發(fā)出SYN連接請求后,等待對方回答SYN,ACK。這種建立連接的方法可以防止產(chǎn)生錯誤的連接,TCP使用的流量控制協(xié)議是可變大小的滑動窗口協(xié)議。第一次握手:建立連接時,客戶端發(fā)送SYN包(SEQ=x)到服務(wù)器,并進(jìn)入SYN_SEND狀態(tài),等待服務(wù)器確認(rèn)。第二次握手:服務(wù)器收到SYN包,必須確認(rèn)客戶的SYN(ACK=x+1),同時自己也送一個SYN包(SEQ=y),即SYN+ACK包,此時服務(wù)器進(jìn)入SYN_RECV狀態(tài)。第三次握手:客戶端收到服務(wù)器的SYN+ACK包,向服務(wù)器發(fā)送確認(rèn)包ACK(ACK=y+1),此包發(fā)送完畢,客戶端和服務(wù)器時入Established狀態(tài),完成三次握手。
Transmission Control Protocol ,傳輸控制協(xié)議。 TCP/IP 中的協(xié)議,用于將數(shù)據(jù)信息分解成信息包,使之經(jīng)過 IP 協(xié)議發(fā) 送;并對利用 IP 協(xié)議接收來的信息包進(jìn)行校驗并將其重新裝配成完 整 的信息。TCP 是面向連接的可靠協(xié)議,能夠確保信息的無誤發(fā) 送,它 與 ISO/OSI 基準(zhǔn)模型中的傳輸層相對應(yīng)。