TCP/IP協定

TCP/IP協定

TCP/IP協定(傳輸控制協定/網際網路協定)不是簡單的一個協定,而是一組特別的協定,包括:TCP,IP,UDP,ARP等,這些被稱為子協定。在這些協定中,最重要、最著名的就是TCP和IP。因此,大部分網路管理員稱整個協定族為“TCP/IP”。

基本介紹

  • 中文名:傳輸控制協定/網際網路互聯協定
  • 外文名:Transmission Control Protocol/Internet Protocol
  • 簡稱:TCP/IP協定
  • 開發者:美國國防部高級研究所
  • 層級結構:4層
  • 所屬領域:計算機技術
產生背景,分層,通信過程,核心協定,特點,缺陷,

產生背景

Internet網路的前身ARPANET當時使用的並不是傳輸控制協定/網際協定(Transmission Control Protocol/Internet Protocol,TCP/IP),而是一種叫網路控制協定(Network Control Protocol,NCP)的網路協定,但隨著網路的發展和用戶對網路的需求不斷提高,設計者們發現,NCP協定存在著很多的缺點以至於不能充分支持ARPANET網路,特別是NCP僅能用於同構環境中(所謂同構環境是網路上的所有計算機都運行相同的作業系統),設計者就認為“同構”這一限制不應被加到一個分布廣泛的網路上。1980年,用於“異構”網路環境中的TCP/IP協定研製成功,也就是說,TCP/IP協定可以在各種硬體和作業系統上實現互操作。1982年,ARPANET開始採用TCP/IP協定。
TCP/IP始於美國國防部,美國國防部於20世紀60年代末為高級研究計畫局網路(ARPAnet,Internet的前身)開發了TCP/IP。TCP/IP的迅速流行要歸功於它的低成本、可在不同的平台間進行通信的能力和它開放的特性。“開放”的意思是軟體開發人員可以自由地使用和修改TCP/IP的核心協定。TCP/IP是Internet實際採用的標準。UNIX和Linux一直都使用TCP/IP,Windows網路作業系統也以TCP/IP作為默認的協定。
TCP/IP協定的開發始於20世紀60年代後期,早於OSI參考模型,故不甚符合OSI參考標準。大致來說,TCP協定對應於OSI參考模型的傳輸層,IP協定對應於網路層。雖然OSI參考模型是計算機網路協定的標準,但由於其開銷太大,所以真正採用它的情況並不多。TCP/IP協定則不然,由於它的簡潔、實用,從而得到了廣泛的套用。可以說,TCP/IP協定已成為建立計算機區域網路、廣域網的首選協定,已成為事實上的工業標準和國際標準。

分層

計算機網路中,實際套用的網路協定是TCP/IP協定族,TCP/IP的套用層大體上對應著OSl/RM模型的套用層、表示層和會話層,TCP/IP的網路接口層對應著OSI/RM的數據鏈路層和物理層,而傳輸層和網路層在兩個模型中對應得很好。
1、鏈路層
鏈路層有時也稱作數據鏈路層或網路接口層,通常包括作業系統中的設備驅動程式和計算機中對應的網路接口卡。它們一起處理與電纜(或其他任何傳輸媒介)的物理接口細節。把鏈路層地址和網路層地址聯繫起來的協定有ARP(Address Resolution Protocol,地址解析協定)和RARP(Reverse Address Resolution Protocol,逆地址解析協定)。
2、網路層
網路層處理分組在網路中的活動,例如分組的選路。在TCP/IP協定族中,網路層協定包括IP協定(Internet Protocol,網際協定)、ICMP協定(Internet Control Message Protocol,網際控制報文協定)和IGMP協定(Internet Group Management Protocol,網際組管理協定)。
3、傳輸層
傳輸層主要為兩台主機上的應用程式提供端到端的通信。在TCP/IP協定族中,有兩個互不相同的傳輸協定:TCP(Transmission Control Protocol,傳輸控制協定)和UDP(User Datagram Protocol,用戶數據報協定)。
4、套用層
套用層負責處理特定的應用程式細節。幾乎各種不同的TCP/IP實現都會提供下面這些通用的應用程式:Telnet遠程登錄、SMTP(Simple Mail Transfer Protocol,簡單郵件傳輸協定)、FTP(File Transfer Protocol,檔案傳輸協定)、HTTP(Hyper Text Transfer Protocol,超文本傳輸協定)等。

通信過程

網路通信的過程中,將發出數據的主機稱為源主機,接收數據的主機稱為目的主機。當源主機發出數據時,數據在源主機中從上層向下層傳送。源主機中的套用進程先將數據交給套用層,套用層加上必要的控制信息就成了報文流,向下傳給傳輸層。傳輸層將收到的數據單元加上本層的控制信息,形成報文段、數據報,再交給網際層。網際層加上本層的控制信息,形成IP數據報,傳給網路接口層。網路接口層將網際層交下來的IP數據報組裝成幀,並以比特流的形式傳給網路硬體(即物理層),數據就離開源主機。
通過網路傳輸,數據到達目的主機後,按照與源主機相反的過程,在目的主機中從下層向上層進行拆包傳送。首先由網路接口層接收數據,依次剝離原來加上的控制信息,最後將源主機中的套用進程傳送的數據交給目的主機的套用進程。
TCP/IP協定的基本傳輸單位是數據報(Datagram),TCP協定負責把數據分成若干個數據報,並給每個數據報加上報頭,報頭上有編號,以保證目的主機能將數據還原為原來的格式。IP協定在每個報頭上再加上接收端主機IP位址,這樣數據能找到自己要去的地方。如果傳輸過程中出現數據失真、數據丟失等情況,TCP協定會自動請求重新傳輸數據,並重組數據報。可以說,IP協定保證數據的傳輸,TCP協定保證數據傳輸的質量。
TCP/IP協定數據在傳輸時每通過一層就要在數據上加個報頭,其中的數據供接收端同一層協定使用,而在接收端,每經過一層要把用過的報頭去掉,這樣可以保證傳輸數據的一致性。

核心協定

一、IP協定
網際協定IP是TCP/IP的心臟,也是網路層中最重要的協定。
IP層接收由更低層(網路接口層,例如乙太網設備驅動程式)發來的數據包,並把該數據包傳送到更高層——TCP或UDP層;相反,IP層也把從TCP或UDP層接收來的數據包傳送到更低層。IP數據包是不可靠的,因為IP並沒有做任何事情來確認數據包是按順序傳送的或者沒有被破壞。IP數據包中含有傳送它的主機的地址(源地址)和接收它的主機的地址(目的地址)。
高層的TCP和UDP服務在接收數據包時,通常假設包中的源地址是有效的。也可以這樣說,IP位址形成了許多服務的認證基礎,這些服務相信數據包是從一個有效的主機傳送來的。IP確認包含一個選項,叫作IPsource routing,可以用來指定一條源地址和目的地址之間的直接路徑。對於一些TCP和UDP的服務來說,使用了該選項的IP包好像是從路徑上的最後一個系統傳遞過來的,而不是來自於它的真實地點。這個選項是為了測試而存在的,說明了它可以被用來欺騙系統來進行平時是被禁止的連線。因此,許多依靠IP源地址做確認的服務將產生問題並且會被非法入侵。
二、TCP協定
如果IP數據包中有已經封好的TCP數據包,那么IP將把它們向“上”傳送到TCP層。
TCP將包排序並進行錯誤檢查,同時實現虛電路間的連線。TCP數據包中包括序號和確認,所以未按照順序收到的包可以被排序,而損壞的包可以被重傳。
TCP將它的信息送到更高層的應用程式,例如,Telnet的服務程式和客戶程式。應用程式輪流將信息送回TCP層,TCP層便將它們向下傳送到IP層,設備驅動程式和物理介質,最後到接收方。
面向連線的服務(例如Telnet、FTP、rlogin、XWindows和SMTP)需要高度的可靠性,所以它們使用了TCP。DNS在某些情況下使用TCP(傳送和接收域名資料庫),但使用UDP傳送有關單個主機的信息。
三、UDP協定
UDP與TCP位於同一層,但對於數據包的順序錯誤或重發。因此,UDP不被套用於那些使用虛電路的面向連線的服務,UDP主要用於那些面向查詢一應答的服務,例如NFS。相對於FTP或Telnet,這些服務需要交換的信息量較小。使用UDP的服務包括NTP(網路時間協定)和DNS(DNS也使用TCP)。
欺騙UDP包比欺騙TCP包更容易,因為UDP沒有建立初始化連線(也可以稱為握手)(因為在兩個系統間沒有虛電路),也就是說,與UDP相關的服務面臨著更大的危險。
四、ICMP協定
ICMP與IP位於同一層,它被用來傳送IP的控制信息。它主要是用來提供有關通向目的地址的路徑信息。ICMP的“Redirect”信息通知主機通向其他系統的更準確的路徑,而“Unreachable”信息則指出路徑有問題。另外,如果路徑不可用了,ICMP可以使TCP連線“體面地”終止。PING是最常用的基於ICMP的服務。

特點

TCP/IP協定能夠迅速發展起來並成為事實上的標準,是它恰好適應了世界範圍內數據通信的需要。它有以下特點:
(1)協定標準是完全開放的,可以供用戶免費使用,並且獨立於特定的計算機硬體作業系統
(2)獨立於網路硬體系統,可以運行在廣域網,更適合於網際網路
(3)網路地址統一分配,網路中每一設備和終端都具有一個唯一地址。
(4)高層協定標準化,可以提供多種多樣可靠網路服務。

缺陷

像OSl模型一樣,TCP/IP模型和協定也有自己的問題。
(1)該模型沒有明顯地區分服務、接口和協定的概念。好的軟體工程實踐要求概念規範,這一點OSl非常小心地進行了處理,而TCP/IP模型就做得不夠。因此,對於使用新技術來設計新網路,TCP/IP模型不是一個太好的模板。
(2)TCP/IP模型完全不是通用的,並且不適合描述除TCP/IP模型之外的任何協定棧。例如,試圖用TCP/IP模型描述IBM網路體系結構SNA幾乎是不可能的。
(3)網路接口層在分層協定中根本不是通常意義下的層。它是一個接口,處於互連層和數據鏈路層之間。接口和層間的區別是很關鍵的,不能粗心大意。
(4)TCP/IP模型不區分(甚至不提及)物理層和數據鏈路層。這兩層完全不同,物理層必須處理銅纜、光纖和無線通信的傳輸特點:而數據鏈路層的工作是區分幀頭和幀尾,並且以通信需要的可靠性把幀從一端傳送到另一端。好的模型應把它們作為分離的層,而TCP/IP模型並沒有這么做。
(5)雖然TCP和IP協定被仔細地設計並且很好地實現了,但還有許多其他協定未曾良好實現就被免費傳送並被大量套用,因此很難被替換,到現在出現了一些難堪的情況。例如,虛擬終端協定Telnet被設計用於10字元每秒的機械式電傳終端,但是25年以後,它們仍在廣泛使用。
OSI模型(去掉會話層和表示層)對於討論計算機網路特別有用,但是OSI協定並未流行:TCP/IP協定正好相反,模型實際上不存在,但協定被廣泛使用。

相關詞條

熱門詞條

聯絡我們