一、TCP概述
1、TCP的由來
傳輸控制協(xié)議(TCP,Transmission Control Protocol)是互聯(lián)網(wǎng)(Internet)上的第一個可靠的傳輸協(xié)議。我們知道,互聯(lián)網(wǎng)(Internet)最早源自于美國國防部(稱之為DARPA INTERNET)。在互聯(lián)網(wǎng)(Internet)民用后,互聯(lián)網(wǎng)工程任務(wù)組 (IETF)在其相關(guān)國防部標準的TCP等標準的基礎(chǔ)上編制了傳輸控制協(xié)議(TCP),即1980年1月發(fā)布的RFC 761。后在1981年9月進行了第一次更新,被發(fā)布為RFC 793,并代替了RFC 761。RFC 793描述傳輸控制協(xié)議要執(zhí)行的功能、實現(xiàn)該協(xié)議的程序、以及它與需要其服務(wù)的程序或用戶之間的接口。
欲更多了解IETF及RFC文檔情況介紹的請進入。
2、TCP簡述
TCP協(xié)議是一個端對端、面向連接的協(xié)議,旨在支持多網(wǎng)絡(luò)的協(xié)議分層層次結(jié)構(gòu)的應(yīng)用;其目的是在分組交換計算機通信網(wǎng)絡(luò)中,特別是在這種網(wǎng)絡(luò)的互聯(lián)系統(tǒng)中,作為主機之間高度可靠的主機對主機協(xié)議使用。使得在“盡力而為”的互聯(lián)網(wǎng)上實現(xiàn)可靠的數(shù)據(jù)傳輸,包括信令信息。
TCP符合一個分層的協(xié)議架構(gòu),就在一個基本的互聯(lián)網(wǎng)協(xié)議(IP)之上,如下圖1-2所示。IP為TCP提供了一種方式來發(fā)送和接收包含在互聯(lián)網(wǎng)數(shù)據(jù)報“信封”中的可變長度的信息段。TCP提供了一種在不同網(wǎng)絡(luò)中因特網(wǎng)數(shù)據(jù)報的源和目標的尋址方法。IP協(xié)議還處理通過多個網(wǎng)絡(luò)和互連網(wǎng)關(guān)實現(xiàn)傳輸和交付所需的TCP段的任何碎片或重組。IP協(xié)議還攜帶有關(guān)TCP段的優(yōu)先級、安全分類和劃分的信息,因此這些信息可以跨多個網(wǎng)絡(luò)進行端到端通信。
圖 1-2:互聯(lián)網(wǎng)的協(xié)議分層
然而,TCP該協(xié)議彌補了IP協(xié)議(RFC 760)的某些不足之處,這是因為:
首先,IP只解決了不同網(wǎng)絡(luò)主機的通信問題,但該協(xié)議不能檢測IP數(shù)據(jù)報的丟失。而TCP能夠保證在IP數(shù)據(jù)報丟失時進行重發(fā),能夠刪去重復(fù)收到的IP數(shù)據(jù)報,還能保證精確地按原發(fā)送端的發(fā)送順序重新組裝數(shù)據(jù)。
其次,IP只負責(zé)按目的IP地址傳送數(shù)據(jù)報,但不能區(qū)別屬于同一應(yīng)用報文的一組IP數(shù)據(jù)報以及所傳送的應(yīng)用報文的性質(zhì)。而TCP能區(qū)別屬于同一應(yīng)用報文的一組IP數(shù)據(jù)報,并能鑒別應(yīng)用報文的性質(zhì)。以使某些具有4層協(xié)議功能的高端路由器可以對IP數(shù)據(jù)報進行流量、優(yōu)先級、安全管理、負荷分配、復(fù)用等智能控制。
二、TCP的相關(guān)功能
1、TCP保證傳輸可靠性的功能
TCP是面向連接的。所謂連接,是指在進行通信之前,通信雙方必須建立連接才能進行通信,而在通信結(jié)束后,終止其連接。還有一種無連接的,指雙方在進行通信之前,不需要建立好連接。IP是面向無連接的協(xié)議,而TCP面向連接,故TCP的特點是具有高可靠性。
TCP面向連接主要體現(xiàn)在:發(fā)起連接的源主機內(nèi)有一個程序發(fā)出連接請求;在目的主機內(nèi),有一個程序接受該連接請求,于是建立了源主機與目的主機的連接。建立連接后,兩臺主機即可互相發(fā)送數(shù)據(jù)。最后,有一方發(fā)出終止通信的請求,待對方確認后,雙方結(jié)束通信。
當目的主機接收到由源主機向目的主機發(fā)送的IP數(shù)據(jù)報后,目的主機需要向源主機回送一個確認消息。這是依靠目的主機的TCP完成的。TCP中還有一個重傳記時器(RTO),當源主機發(fā)送IP數(shù)據(jù)報時就開始記時,如在超時之前收到確認信號,則記時器回零。如果記時器超時,則說明該IP數(shù)據(jù)報已丟失,源主機進行重傳。對重傳記時器,確定合適的記時時長是十分重要的,它由往返時間來決定。TCP能根據(jù)不同情況自動調(diào)節(jié)記時時長。
需要說明的是,TCP所建立的連接是端到端的連接,即源主機與目的主機間的連接Internet中的轉(zhuǎn)接節(jié)點(路由器)對TCP段透明傳輸。
TCP的主要功能是保證端到端可靠地傳輸數(shù)據(jù)信息,為保證端到端傳輸?shù)目煽啃裕?/span>TCP主要采取了如下表2-1所列的5項技術(shù)與措施。
表 2-1:TCP保證可靠性連接所具有的技術(shù)與措施
總之,IP不提供差錯報告和差錯糾正機制,而TCP向應(yīng)用層提供了面向連接的服務(wù),確保了網(wǎng)絡(luò)上所傳送的數(shù)據(jù)報完整、正確、可靠的接收。一旦數(shù)據(jù)有損傷或丟失,則由TCP負責(zé)重傳,而應(yīng)用層不參與解決。
2、TCP提供部分應(yīng)用層信息的功能
IP只解決了單個數(shù)據(jù)報的傳輸問題,而在某些情況下,需要在傳輸過程中對應(yīng)用報文數(shù)據(jù)流進行控制。TCP攜帶了部分應(yīng)用層信息,能夠區(qū)別同一報文數(shù)據(jù)流的一組IP數(shù)據(jù)報及其性質(zhì)。
TCP之上是應(yīng)用層協(xié)議,如FTP、SMTP、Telnet等,最終是依靠它們實現(xiàn)主機間的通信的。TCP對這些應(yīng)用層協(xié)議規(guī)定了整數(shù)標志符,稱為端口號,TCP端口號對應(yīng)的應(yīng)用協(xié)議這里搜集了9種詳見下表2-2。這些規(guī)定的端口號成為保留端口,其值在0~1023范圍內(nèi),從0~255都是預(yù)先定義的(不能由網(wǎng)絡(luò)管理員定義),而任何大于255的端口號可以由網(wǎng)絡(luò)管理員來定義。此外還有自由端口號,供個人程序使用,或用它來區(qū)分兩主機間相同應(yīng)用層協(xié)議的多個通信,即兩臺主機間復(fù)用多個用戶會話連接。
表 2-2:常用的TCP端口號
插口號由主機的IP地址和端口號組成,正在進行通信的每臺主機的每個用戶會話連接,都有一個插口號。插口號對整個Internet是唯一的,一對插口號唯一地標志了每個端口的連接,其中:
發(fā)端插口號 = 源主機IP地址+源端口號;
收端插口號 = 目的主機IP地址+目的端口號;
利用插口號可在目的主機中區(qū)分不同源主機對同一目的主機的相同端口號的多個用戶會話連接。在TCP段的頭部各域中具有“碼位”一項。其中SYN碼位為應(yīng)用數(shù)據(jù)流的開始位,SYN置“1”表示該IP數(shù)據(jù)報為某一應(yīng)用報文的第一份數(shù)據(jù)報。而碼位中的FIN碼位為應(yīng)用數(shù)據(jù)流的結(jié)束位。FIN置“1”表示此時數(shù)據(jù)報為上述應(yīng)用報文的最后一份數(shù)據(jù)報。故可利用SYN/FIN兩個碼位來確定某一應(yīng)用報文(或某一應(yīng)用數(shù)據(jù)流)的開始與結(jié)束。
綜上所述,我們可利用端口號和SYN/FIN碼位來區(qū)分應(yīng)用數(shù)據(jù)流,并判斷其性質(zhì),從而使具有四層功能的高端路由器具有某些對應(yīng)用數(shù)據(jù)流的控制功能。
三、TCP段格式
TCP傳輸數(shù)據(jù)的基本單位是段,每段又可分為段頭部與數(shù)據(jù)區(qū)兩大部分,TCP段格式如下圖3所示;段格式中的有關(guān)各部分的含義詳見下表3-1。其中“碼位”一項有6種控制,在置“1”時的含義詳見下表3-2。
圖 3:TCP段格式
表 3-1:TCP段格式中的有關(guān)各部分的含義
表 3-2:TCP段格式中“碼位”的具體內(nèi)容及含義
四、總述
上述僅對傳輸控制協(xié)議(TCP)給出了一些簡要的介紹,若要詳細了解該協(xié)議具體內(nèi)容的請查閱下附件。
附件:RFC 793(09/1981)《Transmission Control Protocol》
綜上,TCP的主要目的是提供可靠的數(shù)據(jù)進程對之間的安全邏輯電路或連接服務(wù)。在不太可靠的互聯(lián)網(wǎng)通訊系統(tǒng)上提供這項服務(wù),TCP需要提供如下表4所述的關(guān)鍵操作。
表 4:TCP需要提供的關(guān)鍵操作
然而,隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展,越來越多的應(yīng)用發(fā)現(xiàn)TCP限制太大。 因此,需要開發(fā)一種新的互聯(lián)網(wǎng)傳輸協(xié)議來繞過這些限制,于是,IETF就又推出了流量控制傳輸協(xié)議(SCTP,Stream Control Transmission Protocol),特別適用于在IP網(wǎng)中傳送公用交換電話網(wǎng)(PSTN)的信令消息和IP網(wǎng)內(nèi)的信令消息。
欲進一步了解流量控制傳輸協(xié)議(SCTP)介紹的請進入。