網際網路協議套件（，縮寫 IPS）RFC 1349，RFC 2502，是一種網路通訊模型，以及用於網路傳輸的協議集合，為網際網路的基礎通訊架構，被應用於各種網路通訊中。 它常通稱為 TCPIP 協議族（，或 TCPIP Protocols），簡稱 TCPIPRFC 1140，RFC 1160，RFC 1180。因為該協定家族的兩個核心協定：TCP（傳輸控制協議）和 IP（網際協議），為該家族中最早透過的標準 Craig Hunt 著《TCPIP 網路管理》第一章〈TCPIP 概論〉：「TCPIP 這名稱代表一整套資料通訊協定的組合，這套組合得名於其中兩項最重要的協定：傳輸控制協定（TCP）與網際協定（IP）。之所以強調這一點，是為了強調 TCPIP 其實還包含 TCP 和 IP 之外的其他成員，只不過這兩項是其中最具代表性的協定。因此，TCPIP 協定組也稱為網際網路協定套組（IPS），這兩個名稱是同義的。」。由於在網路通訊協議普遍採用分層的結構，當多個層次的協議共同工作時，類似計算機科學中的堆疊，因此又稱為 TCPIP 協議棧。這些協議最早發源於美國國防部（縮寫為 DoD）的 ARPA 網專案，因此也稱作 DoD 模型（DoD Model）The DoD Internet Architecture Model Vinton G Cerf and Edward Cain Computer Networks 7 1983 NorthHolland pp 307318。這個協定套組由網際網路工程任務組負責維護。 TCPIP 提供了點對點連結的機制，將資料應該如何封裝、定址、傳輸、路由以及在目的地如何接收，都加以標準化。它將軟體通訊過程抽象化為四個抽象層，採取協定堆疊的方式，分別實作出不同通訊協定。協定套組下的各種協定，依其功能不同，分別歸屬到這四個階層之中 RFC 1122 Requirements for Internet Hosts Communication Layers R Braden ed October 1989RFC 1123 Requirements for Internet Hosts Application and Support R Braden ed October 1989，常視為是簡化的七層 OSI 模型。 歷史 研發初期 1983 年 1 月 1 日，在因特網的前身（ARPA 網）中通訊方式換成新的定義，TCPIP 取代舊的網路控制協議（NCP，Network Control Protocol），從而成為今天的網際網路的基石。最早的 TCPIP 由文頓瑟夫和羅伯特卡恩兩位開發，慢慢地透過競爭戰勝其他一些網路協議的方案，比如國際標準化組織 ISO 的 OSI 模型。TCPIP 的蓬勃發展發生在 1990 年代中期。當時一些重要而可靠的工具的出世，例如頁面描述語言 HTML 和瀏覽器 Mosaic，促成了網際網路應用的飛速發展。 隨著網際網路的發展，目前流行的 IPv4 協議（網際協議版本四）已經接近它的功能上限。IPv4 最致命的兩個缺陷在於： 地址只有 32 位，IP 地址空間有限； 不支援服務質量（Quality of Service，QoS），無法管理頻寬和優先順序，故而不能很好的支援現今越來越多即時的語音和影片應用。因此 IPv6（網際協議版本六）浮出水面，用以取代 IPv4。 TCPIP 成功的另一個因素在於對為數眾多的低層協議的支援。這些低層協議對應 OSI 模型中的第一層（物理層）和第二層（資料鏈路層）。每層的所有協議幾乎都有一半數量支援 TCPIP，例如：乙太網（Ethernet）、令牌環（Token Ring）、光纖資料分佈介面（FDDI）、點對點協議（PPP）、X25、幀中繼（Frame Relay）、ATM、Sonet、SDH 等通訊方法中都可以應用。 標準化 研製背景 最初想到讓不同電腦之間實現連線的，是美國加州大學洛杉磯分校網路工作小組的斯蒂芬克羅克（Stephen D Crocker）。1970 年，克羅克及其小組著手製定最初的主機對主機通訊協議，它稱為網路控制協議（Network Control Protocol，縮寫 NCP）。該協議用於阿帕網，並在區域性網路條件下執行穩定，但隨著阿帕網的使用者增多，NCP 逐漸暴露出兩大缺陷： NCP 只是一臺主機對另一臺主機的通訊協議，並未給網路中的每臺電腦設定唯一的地址，導致電腦在越來越龐大的網路中難以準確定位需要傳輸資料的物件。 NCP 缺乏糾錯功能，資料在傳輸過程中一旦出現錯誤，網路就可能停止執行，而隨著出錯的電腦增多，網路執行效率也將大打折扣。 開發過程 在構建阿帕網先驅之後，DARPA 開始其他資料傳輸技術的研究。NCP 誕生後兩年，1972 年，羅伯特卡恩（Robert E Kahn）受僱於 DARPA 的資訊科技處理辦公室，在那裡他研究衛星資料包網路和地面無線資料包網路，並且意識到能夠在它們之間溝通的價值。 在 1973 年春天，已有的 ARPANET 網路控制程式（NCP）協議的開發者文頓瑟夫（Vinton Cerf）加入到卡恩為 ARPANET 設計下一代協議而開發開放互連模型的工作中。到了 1973 年夏天，卡恩和瑟夫很快開發出基本的改進形式，其中的網路協議之間的差異透過使用公用網際網路協議而隱藏起來，且可靠性由主機保證而不是 ARPANET 那樣由網路保證。瑟夫稱讚了 Hubert Zimmerman 和 Louis Pouzin（CYCLADES 網路的設計者）在這個設計上發揮重要影響。 由於網路的作用減少到最小的程度，更有可能將任何網路連線到一起，而不用管它們不同的特點，這樣能解決卡恩最初的問題。流行的說法提到瑟夫和卡恩工作的最終產品 TCPIP 將在執行 兩個罐子和一根弦 上，實際上它已經用在信鴿上。一個稱為閘道器（後來改為路由器以免與閘道器混淆）的計算機為每個網路提供一個介面並且在它們之間來回傳輸資料包。這個設計思想更細的形式由瑟夫在斯坦福的網路研究組的 1973 年1974 年期間開發出來。處於同一時期誕生 PARC 通用包協議組的施樂 PARC 早期網路研究工作也有著重要的技術影響；人們在兩者之間搖擺不定。DARPA 於是與 BBN、斯坦福和倫敦大學簽署協議開發不同硬體平臺上協議的執行版本。有四個版本開發出來 TCPv1、TCPv2、在 1978 年春天分成 TCPv3 和 IPv3 的版本，後來就是穩定的 TCPIPv4 目前因特網仍然使用的標準協議。 1975 年，兩個網路之間的 TCPIP 通訊在斯坦福和倫敦大學（UCL）之間進行測試。1977 年 11 月，三個網路之間的 TCPIP 測試在美國、英國和挪威之間進行。在 1978 年到 1983 年間，其他一些 TCPIP 原型在多個研究中心之間開發出來。ARPANET 完全轉換到 TCPIP 在 1983 年 1 月 1 日發生。1984 年，美國國防部將 TCPIP 作為所有計算機網路的標準。1985 年，因特網架構理事會舉行為期三天有 250 家廠商代表參加的關於計算產業使用 TCPIP 的工作會議，幫助協議的推廣並且引領它日漸增長的商業應用。 2005 年 9 月 9 日卡恩和瑟夫由於對美國文化的卓越貢獻獲總統自由勳章。 TCPIP 協議棧組成 整個通訊網路的任務，可以劃分成不同的功能區塊，即所謂的層級（layer）Architectural Principles of the Internet RFC 1958 B Carpenter June 1996。用於網際網路的協議可以比照 TCPIP 參考模型進行分類。TCPIP 協議棧起始於第三層協議 IP（網際協議）。所有這些協議都在相應的 RFC 文件中討論及標準化。重要的協議在相應的 RFC 文件中均標記狀態：必須（required），推薦（recommended），可選（selective）。其他的協議還可能有 試驗（experimental）或 歷史（historic）的狀態。 必須協議 所有的 TCPIP 應用都必須實現 IP 和 ICMP。對於一個路由器（router）而言，有這兩個協議就可以運作，雖然從應用的角度來看，這樣一個路由器意義不大。實際的路由器一般還需要執行許多「推薦」使用的協議，以及一些其他的協議。 幾乎所有連線到網際網路上的電腦上都存在的 IPv4 協議出生在 1981 年，今天的版本和最早的版本並沒有多少改變。升級版 IPv6 的工作始於 1995 年，目的在於取代 IPv4。ICMP 協議主要用於收集有關網路的資訊查詢錯誤等工作。 TCPIP 參考模型 TCPIP 參考模型是一個抽象的分層模型，這個模型中，所有的 TCPIP 系列網路協議都歸類到 4 個抽象的「層」中。每一抽象層建立在低一層提供的服務上，並且為高一層提供服務。 完成一些特定的任務需要眾多的協議協同工作，這些協議分佈在參考模型的不同層中的，因此有時稱它們為一個協議棧。TCPIP 參考模型為 TCPIP 協議棧訂身製作。其中 IP 協議只關心如何使得資料能夠跨越本地網路邊界的問題，而不關心如何利用傳輸媒體，資料如何傳輸。整個 TCPIP 協議棧則負責解決資料如何透過許許多多個點對點通路（一個點對點通路，也稱為一「跳」，1 hop）順利傳輸，由此不同的網路成員能夠在許多「跳」的基礎上建立相互的資料通路。如想分析更普遍的網路通訊問題，ISO 的 OSI 模型也能起更好的幫助作用。 因特網協議族是一組實現支援因特網和大多數商業網路執行的協議棧的網路傳輸協議。它有時也稱為 TCPIP 協議組，這個名稱來源於其中兩個最重要的協議：傳輸控制協議（TCP）和因特網協議（IP），它們也是最先定義的兩個協議。同許多其他協議一樣網路傳輸協議也可以看作一個多層組合，每層解決資料傳輸中的一組問題並且向使用這些低層服務的高層提供定義好的服務。高層邏輯上與使用者更為接近，所處理資料更為抽象，它們依賴於低層將資料轉換成最終能夠進行實體控制的形式。網路傳輸協議能夠大致匹配到一些廠商喜歡使用的固定 7 層的 OSI 模型。然而這些層並非都能夠很好地與基於 IP 的網路對應（根據應用的設計和支援網路的不同它們確實是涉及到不同的層）並且一些人認為試圖將因特網協議組對應到 OSI 會帶來混淆而不是有所幫助。 因特網協議棧中的層 人們已經進行一些討論關於如何將 TCPIP 參考模型對映到 OSI 模型。由於 TCPIP 和 OSI 模型組不能精確地匹配，還沒有一個完全正確的答案。 另外，OSI 模型下層還不具備能夠真正佔據真正層的位置的能力；在傳輸層和網路層之間還需要另外一個層（網路互連層）。特定網路型別專用的一些協議應該執行在網路層上，但是卻執行在基本的硬體幀交換上。類似協議的例子有 ARP 和 STP（用來保持冗餘網橋的空閒狀態直到真正需要它們）。 然而，它們是本地協議並且在網路互連功能下面執行。不可否認，將兩個組（更不用說它們只是執行在如 ICMP 等不同的互連網路協議上的邏輯上的網路層的一部分）整個放在同一層會引起混淆，但是 OSI 模型還沒有複雜到能夠做更好的工作。 下面的圖表試圖顯示不同的 TCPIP 和其他的協議在最初 OSI 模型中的位置： 7 應用層 application layer 例如 HTTP、SMTP、SNMP、FTP、Telnet、SIP、SSH、NFS、RTSP、XMPP、Whois、、TLS 6 表示層 presentation layer 例如 XDR、ASN1、NCP、TLS、ASCII 5 會話層 session layer 例如、ISO 8327 CCITT X225、RPC、NetBIOS、Winsock、BSD sockets、SOCKS、PAP 4 傳輸層 transport layer 例如 TCP、UDP、RTP、SCTP、SPX、ATP、IL 3 網路層 network layer 例如 IP、ICMP、IPX、BGP、OSPF、RIP、IGRP、EIGRP、ARP、RARP、X25 2 資料鏈路層 data link layer 例如乙太網、令牌環、HDLC、幀中繼、ISDN、ATM、IEEE 80211、FDDI、PPP 1 物理層 physical layer 例如資料機、無線電、光纖 通常人們認為 OSI 模型的最上面三層（應用層、表示層和會話層）在 TCPIP 組中是一個應用層。由於 TCPIP 有一個相對較弱的會話層，由 TCP 和 RTP 下的開啟和關閉連線組成，並且在 TCP 和 UDP 下的各種應用提供不同的埠號，這些功能能夠由單個的應用程式（或者那些應用程式所使用的庫）增加。 與此相似的是，IP 是按照將它下面的網路當作一個黑盒子的思想設計的，這樣在討論 TCPIP 的時候就可以把它當作一個獨立的層。 4 應用層 application layer 例如 HTTP、FTP、DNS （如 BGP 和 RIP 這樣的路由協議，儘管由於各種各樣的原因它們分別執行在 TCP 和 UDP 上，仍然可以將它們看作網路層的一部分） 3 傳輸層 transport layer 例如 TCP、UDP、RTP、SCTP （如 OSPF 這樣的路由協議，儘管執行在 IP 上也可以看作是網路層的一部分） 2 網路互連層 internet layer 對於 TCPIP 來說這是因特網協議（IP）（如 ICMP 和 IGMP 這樣的必須協議儘管執行在 IP 上，也仍然可以看作是網路互連層的一部分；ARP 不執行在 IP 上） 1 網路存取（連結）層 Network Access link layer 例如乙太網、WiFi、MPLS 等。 應用層 該層包括所有和應用程式協同工作，利用基礎網路交換應用程式專用的資料的協議。 應用層是大多數普通與網路相關的程式為了透過網路與其他程式通訊所使用的層。這個層的處理過程是應用特有的；資料從網路相關的程式以這種應用內部使用的格式進行傳送，然後編碼成標準協議的格式。 一些特定的程式視為在此層執行。它們提供服務直接支援使用者應用。這些程式和它們對應的協議包括 HTTP（全球資訊網服務）、FTP（檔案傳輸）、SMTP（電子郵件）、SSH（安全遠端登入）、DNS（名稱IP 地址尋找）以及許多其他協議。 一旦從應用程式來的資料編碼成一個標準的應用層協議，它將傳送到 IP 棧的下一層。 在傳輸層，應用程式最常用的是 TCP 或者 UDP，並且伺服器應用程式經常與一個公開的埠號相聯絡。伺服器應用程式的埠由網際網路號碼分配局（IANA）正式地分配，但是現今一些新協議的開發者經常選擇它們自己的埠號。由於在同一個系統上很少超過少數幾個的伺服器應用，埠衝突引起的問題很少。應用軟體通常也允許使用者強制性地指定埠號作為執行引數。 連結外部的客戶端程式通常使用系統分配的一個隨機埠號。監聽一個埠並且透過伺服器將那個埠傳送到應用的另外一個副本以建立對等連結（如 IRC 上的 dcc 檔案傳輸）的應用也可以使用一個隨機埠，但是應用程式通常允許定義一個特定的埠範圍的規範以允許埠能夠透過實現網路地址轉換（NAT）的路由器對映到內部。 每一個應用層（TCPIP 參考模型的最高層）協議一般都會使用到兩個傳輸層協議之一： 面向連線的 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，域名服務），用於完成地址查詢，郵件轉發等工作（執行在 TCP 和 UDP 協議上）。 （Echo Protocol，迴繞協議），用於查錯及測量應答時間（執行在 TCP 和 UDP 協議上）。 SNMP（Simple Network Management Protocol，簡單網路管理協議），用於網路資訊的收集和網路管理。 ARP（Address Resolution Protocol，地址解析協議），用於動態解析乙太網硬體的地址。 傳輸層 傳輸層（transport layer）的協議，能夠解決諸如端到端可靠性（資料是否已經到達目的地？）和保證資料按照正確的順序到達這樣的問題。在 TCPIP 協議組中，傳輸協議也包括所給資料應該送給哪個應用程式。 在 TCPIP 協議組中技術上位於這個層的動態路由協議通常認為是網路層的一部分；一個例子就是 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 包格式作為基礎的會話層，然而據說它位於因特網協議棧的傳輸層。 網路互連層 TCPIP 協議族中的網路互連層（internet layer）在 OSI 模型中叫做網路層（network layer）。 正如最初所定義的，網路層解決在一個單一網路上傳輸資料包的問題。類似的協議有 X25 和 ARPANET 的 HostIMP Protocol。 隨著因特網思想的出現，在這個層上新增附加的功能，也就是將資料從源網路傳輸到目的網路。這就牽涉到在網路組成的網上選擇路徑將資料包傳輸，也就是因特網。 在因特網協議組中，IP 完成資料從源傳送到目的的基本任務。IP 能夠承載多種不同的高層協議的資料；這些協議使用一個唯一的 IP 協議號進行標識。ICMP 和 IGMP 分別是 1 和 2。 一些 IP 承載的協議，如 ICMP（用來發送關於 IP 傳送的診斷資訊）和 IGMP（用來管理多播資料），它們位於 IP 層之上但是完成網路層的功能，這表明因特網和 OSI 模型之間的不相容性。所有的路由協議，如 BGP、OSPF、和 RIP 實際上也是網路層的一部分，儘管它們似乎應該屬於更高的協議棧。 網路存取（連結）層 網路存取（連結）層實際上並不是因特網協議組中的一部分，但是它是資料包從一個裝置的網路層傳輸到另外一個裝置的網路層的方法。這個過程能夠在網絡卡的軟體驅動程式中控制，也可以在韌體或者專用晶片中控制。這將完成如新增報頭準備傳送、透過實體媒介實際傳送這樣一些資料鏈路功能。另一端，鏈路層將完成資料幀接收、去除報頭並且將接收到的包傳到網路層。 然而，鏈路層並不經常這樣簡單。它也可能是一個虛擬專有網路（VPN）或者隧道，在這裡從網路層來的包使用隧道協議和其他（或者同樣的）協議組傳送而不是傳送到實體的介面上。VPN 和通道通常預先建好，並且它們有一些直接傳送到實體介面所沒有的特殊特點（例如，它可以加密經過它的資料）。由於現在鏈路 層 是一個完整的網路，這種協議組的遞迴使用可能引起混淆。但是它是一個實現常見覆雜功能的一個優秀方法。（儘管需要注意預防一個已經封裝並且經隧道傳送下去的資料包進行再次地封裝和傳送）。 IP 網路如何併吞競爭的網路 在長期的發展過程中，IP 逐漸取代其他網路。這裡是簡單的解釋。IP 傳輸通用資料。資料能夠用於任何目的，並且能夠很輕易地取代以前由專有資料網路傳輸的資料。下面是普通的過程： 一個用於特定目的所開發出來的網路。如果它順利工作，使用者將能使用它。 為了提供便利的 IP 服務，經常用於訪問電子郵件或者聊天，通常以某種方式透過專有網路隧道實現。隧道方式最初可能非常沒有效率，因為電子郵件和聊天只需要很低的頻寬。 透過一點點的投資 IP 基礎設施逐漸在專有資料網路周邊出現。 用 IP 取代專有服務的需求出現，經常是一個使用者要求。 IP 替代品過程遍佈整個因特網，這使 IP 替代品比最初的專有網路更加有價值（由於網路效應）。 專有網路受到壓制。許多使用者開始維護使用 IP 替代品的複製品。 IP 包的間接開銷很小，少於 1，這樣在成本上非常有競爭性。人們開發能夠將 IP 帶到專有網路上的大部分使用者的不昂貴的傳輸媒介。 大多數使用者為削減開銷而取消專有網路。 實現 KA9QPPJ lwIP 如今，大多數商業作業系統包括 TCPIP 棧並且預設安裝它們，對於大多數使用者來說，沒有必要去探求它們如何實現。TCPIP 包含在所有的商業 Unix 和 Linux 釋出包中，同樣也包含在 Mac OS X、Windows 系統和 Windows Server 中。 參見 IPv4 IPv6 NCP OSI 模型 MPLS DoD 模型 TCPUDP 埠列表 參考文獻 外部連結 RFC 1180 TCPIP 指南，因特網工程任務組，1991 年 1 月 TCPIP 常見問題解答 ARPANET TCPIP 摘要研究 TCPIP 流程圖 實踐中的因特網 TCPIP Definition TCPIP 協議集詳細資料 uIP 針對 816 位元微控制器之用的 TCPIP 協定堆疊程式 Internet History RFC 1122 因特網主機要求，通訊層 CategoryTCPIP