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