互聯網協議套組(英語:Internet Protocol Suite,縮寫IPS)[1],是一種網絡通訊模型,以及用於網絡傳輸的協定集合,為網際網絡的基礎通訊架構,被應用於各種網絡通訊中。

它常通稱為TCP/IP協定套組(英語:TCP/IP Protocol Suite,或TCP/IP Protocols),簡稱TCP/IP[2]。因為該協定家族的兩個核心協定:TCP(傳輸控制協定IP(網際網絡協定,為該家族中最早通過的標準[3]。由於在網絡通訊協定普遍採用分層的結構,當多個層次的協定共同工作時,類似電腦科學中的堆疊,因此又稱為TCP/IP協定疊(英語:TCP/IP Protocol Stack[4][5]。這些協定最早發源於美國國防部(縮寫為DoD)的ARPA網專案,因此也稱作DoD模型(DoD Model)[6]。這個協定套組由互聯網工程任務組負責維護。

TCP/IP提供了點對點連結的機制,將資料應該如何封裝、定址、傳輸、路由以及在目的地如何接收,都加以標準化。它將軟件通訊過程抽象化為四個抽象層,採取協定堆疊的方式,分別實作出不同通訊協定。協定套組下的各種協定,依其功能不同,分別歸屬到這四個階層之中[7][8],常視為是簡化的七層OSI模型

歷史

研發初期

1983年1月1日,在互聯網的前身(ARPA網)中通訊方式換成新的定義,TCP/IP取代舊的網絡控制協定(NCP,Network Control Protocol),從而成為今天的互聯網的基石。最早的TCP/IP由文頓·瑟夫羅伯特·卡恩兩位開發,慢慢地通過競爭戰勝其他一些網絡協定的方案,比如國際標準化組織ISOOSI模型。TCP/IP的蓬勃發展發生在1990年代中期。當時一些重要而可靠的工具的出世,例如頁面描述語言HTML和瀏覽器Mosaic,促成了互聯網應用的飛速發展。 隨着互聯網的發展,目前流行的IPv4協定(網際網絡協定版本四)已經接近它的功能上限。IPv4最致命的兩個缺陷在於:

  • 地址只有32位元,IP位址空間有限;
  • 不支援服務品質(Quality of Service,QoS),無法管理頻寬和優先級,故而不能很好的支援現今越來越多及時的語音和視像應用。因此IPv6(網際網絡協定版本六)浮出水面,用以取代IPv4。

TCP/IP成功的另一個因素在於對為數眾多的低層協定的支援。這些低層協定對應OSI模型中的第一層(實體層)和第二層(資料鏈結層)。每層的所有協定幾乎都有一半數量支援TCP/IP,例如:乙太網路(Ethernet)、權杖環(Token Ring)、光纖數據分佈介面(FDDI)、對等協定(PPP)、X.25影格中繼(Frame Relay)、ATMSonetSDH等通訊方法中都可以應用。

標準化

研製背景

最初想到讓不同電腦之間實現連接的,是美國加州大學洛杉磯分校網絡工作小組的斯蒂芬·克羅克(Stephen D. Crocker)。1970年,克羅克及其小組着手制定最初的主機對主機通訊協定,它稱為網絡控制協定(Network Control Protocol,縮寫NCP)。該協定用於阿帕網,並在局部網絡條件下執行穩定,但隨着阿帕網的用戶增多,NCP逐漸暴露出兩大缺陷:

  1. NCP只是一台主機對另一台主機的通訊協定,並未給網絡中的每台電腦設置唯一的地址,導致電腦在越來越龐大的網絡中難以準確定位需要傳輸數據的對象。
  2. NCP缺乏糾錯功能,數據在傳輸過程中一旦出現錯誤,網絡就可能停止執行,而隨着出錯的電腦增多,網絡執行效率也將大打折扣。

開發過程

在構建阿帕網先驅之後,DARPA開始其他數據傳輸技術的研究。NCP誕生後兩年,1972年,羅伯特·卡恩(Robert E. Kahn)受僱於DARPA的資訊科技處理辦公室,在那裏他研究衛星封包網絡和地面無線封包網絡,並且意識到能夠在它們之間溝通的價值。

在1973年春天,已有的ARPANET網絡控制程式(NCP)協定的開發者文頓·瑟夫(Vinton Cerf)加入到卡恩為ARPANET設計下一代協定而開發開放互連模型的工作中。到了1973年夏天,卡恩和瑟夫很快開發出基本的改進形式,其中的網絡協定之間的差異通過使用公用互聯網協定而隱藏起來,且可靠性由主機保證而不是ARPANET那樣由網絡保證。瑟夫稱讚了Hubert ZimmermanLouis PouzinCYCLADES網絡的設計者)在這個設計上發揮重要影響。

由於網絡的作用減少到最小的程度,更有可能將任何網絡連接到一起,而不用管它們不同的特點,這樣能解決卡恩最初的問題。流行的說法提到瑟夫和卡恩工作的最終產品TCP/IP將在執行「兩個罐子和一根弦」上,實際上它已經用在信鴿上。一個稱為閘道(後來改為路由器以免與閘道混淆)的電腦為每個網絡提供一個介面並且在它們之間來回傳輸封包。這個設計思想更細的形式由瑟夫在斯坦福的網絡研究組的1973年–1974年期間開發出來。處於同一時期誕生PARC通用包協定組的施樂PARC早期網絡研究工作也有着重要的技術影響;人們在兩者之間搖擺不定。DARPA於是與BBN、斯坦福和倫敦大學簽署協定開發不同硬件平台上協定的執行版本。有四個版本開發出來——TCPv1、TCPv2、在1978年春天分成TCPv3和IPv3的版本,後來就是穩定的TCP/IPv4——目前互聯網仍然使用的標準協定。

1975年,兩個網絡之間的TCP/IP通訊在斯坦福和倫敦大學(UCL)之間進行測試。1977年11月,三個網絡之間的TCP/IP測試在美國、英國和挪威之間進行。在1978年到1983年間,其他一些TCP/IP原型在多個研究中心之間開發出來。ARPANET完全轉換到TCP/IP在1983年1月1日發生[9]。1984年,美國國防部將TCP/IP作為所有電腦網絡的標準。1985年,互聯網架構理事會舉行爲期三天有250家廠商代表參加的關於計算產業使用TCP/IP的工作會議,幫助協定的推廣並且引領它日漸增長的商業應用。

2005年9月9日卡恩和瑟夫由於對美國文化的卓越貢獻獲總統自由勳章[10]

TCP/IP協定棧組成

整個通訊網絡的任務,可以劃分成不同的功能區塊,即所謂的層級(layer[11]。用於互聯網的協定可以比照TCP/IP參考模型進行分類。TCP/IP協定棧起始於第三層協定IP(網際協定)。所有這些協定都在相應的RFC文件中討論及標準化。重要的協定在相應的RFC文件中均標記狀態:「必須」(required),「推薦」(recommended),「可選」(selective)。其他的協定還可能有「試驗」(experimental)或「歷史」(historic)的狀態。」

必須協定

所有的TCP/IP應用都必須實現IP和ICMP。對於一個路由器(router)而言,有這兩個協定就可以運作,雖然從應用的角度來看,這樣一個路由器意義不大。實際的路由器一般還需要執行許多「推薦」使用的協定,以及一些其他的協定。 幾乎所有連接到互聯網上的電腦上都存在的IPv4協定出生在1981年,今天的版本和最早的版本並沒有多少改變。升級版IPv6的工作始於1995年,目的在於取代IPv4。ICMP協定主要用於收集有關網絡的資訊尋找錯誤等工作。

TCP/IP參考模型

Thumb
兩個互聯網主機通過兩個路由器和對應的層連接。各主機上的應用通過一些數據通道相互執行讀取操作。
Thumb
RFC 1122中描述的沿着不同的層應用數據的封裝遞減

TCP/IP參考模型是一個抽象的分層模型,這個模型中,所有的TCP/IP系列網絡協定都歸類到4個抽象的「層」中。每一抽象層建立在低一層提供的服務上,並且為高一層提供服務。

完成一些特定的任務需要眾多的協定協同工作,這些協定分佈在參考模型的不同層中的,因此有時稱它們為一個協定疊。TCP/IP參考模型為TCP/IP協定疊訂身製作。其中IP協定只關心如何使得數據能夠跨越本地網絡邊界的問題,而不關心如何利用傳輸媒體,數據如何傳輸。整個TCP/IP協定疊則負責解決數據如何通過許許多多個對等通路(一個對等通路,也稱為一「跳」,1 hop)順利傳輸,由此不同的網絡成員能夠在許多「跳」的基礎上建立相互的數據通路。如想分析更普遍的網絡通訊問題,ISO的OSI模型也能起更好的幫助作用。

互聯網協定套組是一組實現支援互聯網和大多數商業網絡執行的協定疊網絡傳輸協定。它有時也稱為TCP/IP協定組,這個名稱來源於其中兩個最重要的協定:傳輸控制協定TCP)和互聯網協定IP),它們也是最先定義的兩個協定。同許多其他協定一樣網絡傳輸協定也可以看作一個多層組合,每層解決數據傳輸中的一組問題並且向使用這些低層服務的高層提供定義好的服務。高層邏輯上與用戶更為接近,所處理數據更為抽象,它們依賴於低層將數據轉換成最終能夠進行實體控制的形式。網絡傳輸協定能夠大致匹配到一些廠商喜歡使用的固定7層的OSI模型。然而這些層並非都能夠很好地與基於IP的網絡對應(根據應用的設計和支援網絡的不同它們確實是涉及到不同的層)並且一些人認為試圖將互聯網協定組對應到OSI會帶來混淆而不是有所幫助。

互聯網協定疊中的層

人們已經進行一些討論關於如何將TCP/IP參考模型對映到OSI模型。由於TCP/IPOSI模型組不能精確地匹配,還沒有一個完全正確的答案。

另外,OSI模型下層還不具備能夠真正佔據真正層的位置的能力;在傳輸層和網路層之間還需要另外一個層(網絡互連層)。特定網絡類型專用的一些協定應該執行在網路層上,但是卻執行在基本的硬件影格交換上。類似協定的例子有ARPSTP(用來保持冗餘網橋的空閒狀態直到真正需要它們)。

然而,它們是本地協定並且在網絡互連功能下面執行。不可否認,將兩個組(更不用說它們只是執行在如ICMP等不同的互連網絡協定上的邏輯上的網路層的一部分)整個放在同一層會引起混淆,但是OSI模型還沒有複雜到能夠做更好的工作。

下面的圖表試圖顯示不同的TCP/IP和其他的協定在最初OSI模型中的位置:

7 應用層
application layer
例如HTTPSMTPSNMPFTPTelnetSIPSSHNFSRTSPXMPPWhoisENRP英語Endpoint_Handlespace_Redundancy_ProtocolTLS
6 表現層
presentation layer
例如XDRASN.1NCPTLSASCII
5 會議層
session layer
例如ASAP英語Aggregate_Server_Access_Protocol、ISO 8327 / CCITT X.225、RPCNetBIOSWinsockBSD socketsSOCKSPAP
4 傳輸層
transport layer
例如TCPUDPRTPSCTPSPXATPIL
3 網路層
network layer
例如IPICMPIPXBGPOSPFRIPIGRPEIGRPARPRARPX.25
2 資料鏈結層
data link layer
例如乙太網路權杖環HDLC影格中繼ISDNATMIEEE 802.11FDDIPPP
1 實體層
physical layer
例如數據機無線電光纖

通常人們認為OSI模型的最上面三層(應用層、表現層和會議層)在TCP/IP組中是一個應用層。由於TCP/IP有一個相對較弱的會議層,由TCP和RTP下的打開和關閉連接組成,並且在TCP和UDP下的各種應用提供不同的埠號,這些功能能夠由單個的應用程式(或者那些應用程式所使用的庫)增加。

與此相似的是,IP是按照將它下面的網絡當作一個黑盒子的思想設計的,這樣在討論TCP/IP的時候就可以把它當作一個獨立的層。

4 應用層
application layer
例如HTTPFTPDNS
(如BGPRIP這樣的路由協定,儘管由於各種各樣的原因它們分別執行在TCP和UDP上,仍然可以將它們看作網路層的一部分)
3 傳輸層
transport layer
例如TCPUDPRTPSCTP
(如OSPF這樣的路由協定,儘管執行在IP上也可以看作是網路層的一部分)
2 網絡互連層
internet layer
對於TCP/IP來說這是互聯網協定(IP)
(如ICMPIGMP這樣的必須協定儘管執行在IP上,也仍然可以看作是網絡互連層的一部分;ARP不執行在IP上)
1 網絡存取(連結)層
Network Access (link) layer
例如乙太網路Wi-FiMPLS等。

應用層

該層包括所有和應用程式協同工作,利用基礎網絡交換應用程式專用的數據的協定。 應用層是大多數普通與網絡相關的程式為了通過網絡與其他程式通訊所使用的層。這個層的處理過程是應用特有的;數據從網絡相關的程式以這種應用內部使用的格式進行傳送,然後編碼成標準協定的格式。

一些特定的程式視爲在此層運行。它們提供服務直接支援用戶應用。這些程式和它們對應的協定包括HTTP(萬維網服務)、FTP(檔案傳輸)、SMTP(電子郵件)、SSH(安全遠端登入)、DNS(名稱⇔IP位址尋找)以及許多其他協定。

一旦從應用程式來的數據編碼成一個標準的應用層協定,它將傳送到IP棧的下一層。

在傳輸層,應用程式最常用的是TCP或者UDP,並且伺服器應用程式經常與一個公開的埠號相聯絡。伺服器應用程式的埠由互聯網號碼分配局(IANA)正式地分配,但是現今一些新協定的開發者經常選擇它們自己的埠號。由於在同一個系統上很少超過少數幾個的伺服器應用,埠衝突引起的問題很少。應用軟件通常也允許用戶強制性地指定埠號作為執行參數

連結外部的客戶端程式通常使用系統分配的一個隨機埠號。監聽一個埠並且通過伺服器將那個埠傳送到應用的另外一個副本以建立對等連結(如IRC上的dcc檔案傳輸)的應用也可以使用一個隨機埠,但是應用程式通常允許定義一個特定的埠範圍的規範以允許埠能夠通過實現網絡地址轉換(NAT)的路由器對映到內部。

每一個應用層(TCP/IP參考模型的最高層)協定一般都會使用到兩個傳輸層協定之一: 面向連接的TCP傳輸控制協定和無連接的包傳輸的UDP用戶資料報協定。 常用的應用層協定有:

執行在TCP協定上的協定:
  • HTTP(Hypertext Transfer Protocol,超文字傳輸協定),主要用於普通瀏覽。
  • HTTPS(Hypertext Transfer Protocol over Secure Socket Layer,or HTTP over SSL,安全超文字傳輸協定),HTTP協定的安全版本。
  • FTP(File Transfer Protocol,檔案傳輸協定),由名知義,用於檔案傳輸。
  • POP3(Post Office Protocol,version 3,郵局協定),收郵件用。
  • SMTP(Simple Mail Transfer Protocol,簡單郵件傳輸協定),用來傳送電子郵件。
  • TELNET(Teletype over the Network,網絡電傳),通過一個終端(terminal)登陸到網絡。
  • SSH(Secure Shell,用於替代安全性差的TELNET),用於加密安全登陸用。
執行在UDP協定上的協定:
  • BOOTP(Boot Protocol,啟動協定),應用於無盤裝置。
  • NTP(Network Time Protocol,網絡時間協定),用於網絡同步。
  • DHCP(Dynamic Host Configuration Protocol,動態主機組態協定),動態組態IP位址。
其他:
  • DNS(Domain Name Service,域名服務),用於完成地址尋找,郵件轉發等工作(執行在TCPUDP協定上)。
  • ECHO英語Echo_Protocol(Echo Protocol,迴繞協定),用於查錯及測量應答時間(執行在TCPUDP協定上)。
  • SNMP(Simple Network Management Protocol,簡單網絡管理協定),用於網絡資訊的收集和網絡管理。
  • ARP(Address Resolution Protocol,地址解析協定),用於動態解析乙太網路硬件的地址。

傳輸層

傳輸層(transport layer)的協定,能夠解決諸如端到端可靠性(「數據是否已經到達目的地?」)和保證數據按照正確的順序到達這樣的問題。在TCP/IP協定組中,傳輸協定也包括所給數據應該送給哪個應用程式。 在TCP/IP協定組中技術上位於這個層的動態路由協定通常認為是網路層的一部分;一個例子就是OSPF(IP協定89)。 TCP(IP協定6)是一個「可靠的」、面向連結的傳輸機制,它提供一種可靠的位元組流保證數據完整、無失真並且按順序到達。TCP儘量連續不斷地測試網絡的負載並且控制傳送數據的速度以避免網絡過載。另外,TCP試圖將數據按照規定的順序傳送。這是它與UDP不同之處,這在及時數據流或者路由高網路層遺失率應用的時候可能成為一個缺陷。 較新的SCTP也是一個「可靠的」、面向連結的傳輸機制。它是面向記錄而不是面向位元組的,它在一個單獨的連結上提供通過多路復用提供的多個子流。它也提供多路自定址支援,其中連結終端能夠以多個IP位址表示(代表多個實體介面),這樣的話即使其中一個連接失敗了也不中斷。它最初是為電話應用開發的(在IP上載輸SS7),但是也可以用於其他的應用。 UDP(IP協定號17)是一個無連結的數據報協定。它是一個「盡力傳遞」(best effort)或者說「不可靠」協定——不是因為它特別不可靠,而是因為它不檢查封包是否已經到達目的地,並且不保證它們按順序到達。如果一個應用程式需要這些特性,那它必須自行檢測和判斷,或者使用TCP協定。 UDP的典型性應用是如串流媒體(音訊和視像等)這樣按時到達比可靠性更重要的應用,或者如DNS尋找這樣的簡單查詢/響應應用,如果建立可靠的連結所作的額外工作將是不成比例地大。 DCCP目前正由IETF開發。它提供TCP流動控制語意,但對於用戶來說保留UDP的數據報服務模型。 TCP和UDP都用來支援一些高層的應用。任何給定網絡地址的應用通過它們的TCP或者UDP埠號區分。根據慣例使一些大眾所知的埠與特定的應用相聯絡。 RTP是為如音訊和視像流這樣的及時數據設計的數據報協定。RTP是使用UDP包格式作為基礎的會議層,然而據說它位於互聯網協定疊的傳輸層。

網絡互連層

TCP/IP協定套組中的網絡互連層(internet layer)在OSI模型中叫做網路層(network layer)。

正如最初所定義的,網路層解決在一個單一網絡上載輸封包的問題。類似的協定有X.25ARPANETHost/IMP Protocol。 隨着互聯網思想的出現,在這個層上添加附加的功能,也就是將數據從源網絡傳輸到目的網絡。這就牽涉到在網絡組成的網上選擇路徑將封包傳輸,也就是互聯網。 在互聯網協定組中,IP完成數據從源傳送到目的的基本任務。IP能夠承載多種不同的高層協定的數據;這些協定使用一個唯一的IP協定號進行標識。ICMP和IGMP分別是1和2。 一些IP承載的協定,如ICMP(用來傳送關於IP傳送的診斷資訊)和IGMP(用來管理多播數據),它們位於IP層之上但是完成網路層的功能,這表明互聯網和OSI模型之間的不相容性。所有的路由協定,如BGPOSPF、和RIP實際上也是網路層的一部分,儘管它們似乎應該屬於更高的協定疊。

網絡存取(連結)層

網絡存取(連結)層實際上並不是互聯網協定組中的一部分,但是它是封包從一個裝置的網路層傳輸到另外一個裝置的網路層的方法。這個過程能夠在網卡軟件驅動程式中控制,也可以在韌體或者專用晶片中控制。這將完成如添加報頭準備傳送、通過實體媒介實際傳送這樣一些數據鏈路功能。另一端,鏈路層將完成數據幀接收、去除報頭並且將接收到的包傳到網路層。 然而,鏈路層並不經常這樣簡單。它也可能是一個虛擬專有網絡(VPN)或者隧道,在這裏從網路層來的包使用隧道協定和其他(或者同樣的)協定組傳送而不是傳送到實體的介面上。VPN和通道通常預先建好,並且它們有一些直接傳送到實體介面所沒有的特殊特點(例如,它可以加密經過它的數據)。由於現在鏈路「層」是一個完整的網絡,這種協定組的遞歸使用可能引起混淆。但是它是一個實現常見複雜功能的一個優秀方法。(儘管需要注意預防一個已經封裝並且經隧道傳送下去的封包進行再次地封裝和傳送)。

IP網絡如何併吞競爭的網絡

在長期的發展過程中,IP逐漸取代其他網絡。這裏是簡單的解釋。IP傳輸通用數據。數據能夠用於任何目的,並且能夠很輕易地取代以前由專有數據網絡傳輸的數據。下面是普通的過程:

  1. 一個用於特定目的所開發出來的網絡。如果它順利工作,用戶將能使用它。
  2. 為了提供便利的IP服務,經常用於訪問電子郵件或者聊天,通常以某種方式通過專有網絡隧道實現。隧道方式最初可能非常沒有效率,因為電子郵件和聊天只需要很低的頻寬。
  3. 通過一點點的投資IP基礎設施逐漸在專有數據網絡周邊出現。
  4. 用IP取代專有服務的需求出現,經常是一個用戶要求。
  5. IP替代品過程遍佈整個互聯網,這使IP替代品比最初的專有網絡更加有價值(由於網絡效應)。
  6. 專有網絡受到壓制。許多用戶開始維護使用IP替代品的複製品。
  7. IP包的間接開銷很小,少於1%,這樣在成本上非常有競爭性。人們開發能夠將IP帶到專有網絡上的大部分用戶的不昂貴的傳輸媒介。
  8. 大多數用戶為削減開銷而取消專有網絡。

實現

如今,大多數商業作業系統包括TCP/IP棧並且預設安裝它們,對於大多數用戶來說,沒有必要去探求它們如何實現。TCP/IP包含在所有的商業Unix和Linux發佈包中,同樣也包含在Mac OS X、Windows系統和Windows Server中。

參見

參考文獻

外部連結

Wikiwand in your browser!

Seamless Wikipedia browsing. On steroids.

Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.

Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.