TCP/IP协议族

開發過程

在構建阿帕網先驅之後，DARPA開始其他資料傳輸技術的研究。NCP誕生後兩年，1972年，羅伯特·卡恩（Robert E. Kahn）被DARPA的資訊科技處理辦公室僱傭，在那裡他研究衛星封包網路和地面無線封包網路，並且意識到能夠在它們之間溝通的價值。在1973年春天，已有的ARPANET網路控制程式（NCP）協定的開發者文頓·瑟夫（Vinton Cerf）加入到卡恩為ARPANET設計下一代協定而開發開放互連模型的工作中。到了1973年夏天，卡恩和瑟夫很快開發出一個基本的改進形式，其中的網路協定之間的差異通過使用一個公用網際網路協定而隱藏起來，且可靠性由主機保證而不是ARPANET那樣由網路保證。瑟夫稱讚了Hubert Zimmerman和Louis Pouzin（CYCLADES網路的設計者）在這個設計上發揮重要影響。
由於網路的作用減少到最小的程度，更有可能將任何網路連接到一起，而不用管它們不同的特點，這樣能解決卡恩最初的問題。一個流行的說法提到瑟夫和卡恩工作的最終產品TCP/IP將在執行「兩個罐子和一根弦」上，實際上它已經用在信鴿上。一個稱為閘道（後來改為路由器以免與閘道混淆）的電腦為每個網路提供一個介面並且在它們之間來回傳輸封包。這個設計思想更細的形式由瑟夫在斯坦福的網路研究組的1973年–1974年期間開發出來。處於同一時期誕生PARC通用包協定組的全錄PARC早期網路研究工作也有著重要的技術影響；人們在兩者之間搖擺不定。DARPA於是與BBN、斯坦福和倫敦大學簽署協定開發不同硬體平台上協定的執行版本。有四個版本被開發出來——TCP v1、TCP v2、在1978年春天分成TCP v3和IP v3的版本，後來就是穩定的TCP/IP v4——目前網際網路仍然使用的標準協定。
1975年，兩個網路之間的TCP/IP通訊在斯坦福和倫敦大學（UCL）之間進行測試。1977年11月，三個網路之間的TCP/IP測試在美國、英國和挪威之間進行。在1978年到1983年間，其他一些TCP/IP原型在多個研究中心之間開發出來。ARPANET完全轉換到TCP/IP在1983年1月1日發生。1984年，美國國防部將TCP/IP作為所有電腦網路的標準。1985年，網際網路架構理事會舉行一個三天有250家廠商代表參加的關於計算產業使用TCP/IP的工作會議，幫助協定的推廣並且引領它日漸增長的商業應用。
2005年9月9日卡恩和瑟夫由於他們對於美國文化做出的卓越貢獻被授予總統自由勳章。

TCP/IP協定棧組成

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

必須協定

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

傳輸層

傳輸層（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目前正由IEFT開發。它提供TCP流動控制語意，但對於用戶來說保留UDP的資料報服務模型。
TCP和UDP都用來支援一些高層的應用。任何給定網路位址的應用通過它們的TCP或者UDP埠號區分。根據慣例使一些大眾所知的埠與特定的應用相聯絡。
RTP是為如音訊和視訊流這樣的及時資料設計的資料報協定。RTP是使用UDP包格式作為基礎的會議層，然而據說它位於網際網路協定疊的傳輸層。

網路互連層

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

網路存取(連結)層

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