TCP/IP協議族

網際網路協議套件。這個協定套組由網際網路工程任務組負責維護。TCP/IP提供了點對點連結的機制，將資料應該如何封裝、定址、傳輸、路由以及在目的地如何接收，都加以標準化。它將軟體通訊過程抽象化為四個抽象層，採取協定堆疊的方式，分別實作出不同通訊協定。協定套組下的各種協定，依其功能不同，分別歸屬到這四個階層之中，常視為是簡化的七層OSI模型。歷史.研發初期.1983年1月1日，在因特網的前身，從而成為今天的網際網路的基石。最早的TCP/IP由文頓·瑟夫和羅伯特·卡恩兩位開發，慢慢地透過競爭戰勝其他一些網路協議的方案，比如國際標準化組織ISO的OSI模型。TCP/IP的蓬勃發展發生在1990年代中期。當時一些重要而可靠的工具的出世，例如頁面描述語言HTML和瀏覽器Mosaic，促成了網際網路應用的飛速發展。隨著網際網路的發展，目前流行的IPv4協議已經接近它的功能上限。IPv4最致命的兩個缺陷在於：TCP/IP成功的另一個因素在於對為數眾多的低層協議的支援。這些低層協議對應OSI模型中的第一層、ATM、Sonet、SDH等通訊方法中都可以應用。研製背景.最初想到讓不同電腦之間實現連線的，是美國加州大學洛杉磯分校網路工作小組的斯蒂芬·克羅克。該協議用於阿帕網，並在區域性網路條件下執行穩定，但隨著阿帕網使用者的增多，NCP逐漸暴露出兩大缺陷：開發過程.在構建阿帕網先驅之後，DARPA開始其他資料傳輸技術的研究。NCP誕生後兩年，1972年，羅伯特·卡恩在這個設計上發揮重要影響。由於網路的作用減少到最小的程度，更有可能將任何網路連線到一起，而不用管它們不同的特點，這樣能解決卡恩最初的問題。流行的說法提到瑟夫和卡恩工作的最終產品TCP/IP將在執行“兩個罐子和一根弦”上，實際上它已經用在信鴿上。一個稱為閘道器的計算機為每個網路提供一個介面並且在它們之間來回傳輸資料包。這個設計思想更細的形式由瑟夫在斯坦福的網路研究組的1973年–1974年期間開發出來。處於同一時期誕生PARC通用包協議組的施樂PARC早期網路研究工作也有著重要的技術影響；人們在兩者之間搖擺不定。DARPA於是與BBN、斯坦福和倫敦大學簽署協議開發不同硬體平臺上協議的執行版本。有四個版本開發出來——TCP v1、TCP v2、在1978年春天分成TCP v3和IP v3的版本，後來就是穩定的TCP/IP v4——目前因特網仍然使用的標準協議。1975年，兩個網路之間的TCP/IP通訊在斯坦福和倫敦大學之間進行測試。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協議棧組成.整個通訊網路的任務，可以劃分成不同的功能區塊，即所謂的層級的狀態。”必須協議.所有的TCP/IP應用都必須實現IP和ICMP。對於一個路由器而言，有這兩個協議就可以運作，雖然從應用的角度來看，這樣一個路由器意義不大。實際的路由器一般還需要執行許多「推薦」使用的協議，以及一些其他的協議。幾乎所有連線到網際網路上的電腦上都存在的IPv4協議出生在1981年，今天的版本和最早的版本並沒有多少改變。升級版IPv6的工作始於1995年，目的在於取代IPv4。ICMP協議主要用於收集有關網路的資訊查詢錯誤等工作。TCP/IP參考模型.TCP/IP參考模型是一個抽象的分層模型，這個模型中，所有的TCP/IP系列網路協議都歸類到4個抽象的「層」中。每一抽象層建立在低一層提供的服務上，並且為高一層提供服務。完成一些特定的任務需要眾多的協議協同工作，這些協議分佈在參考模型的不同層中的，因此有時稱它們為一個"協議棧"。TCP/IP參考模型為TCP/IP協議棧訂身製作。其中IP協議只關心如何使得資料能夠跨越本地網路邊界的問題，而不關心如何利用傳輸媒體，資料如何傳輸。整個TCP/IP協議棧則負責解決資料如何透過許許多多個點對點通路順利傳輸，由此不同的網路成員能夠在許多「跳」的基礎上建立相互的資料通路。如想分析更普遍的網路通訊問題，ISO的OSI模型也能起更好的幫助作用。因特網協議族是一組實現支援因特網和大多數商業網路執行的協議棧的網路傳輸協議。它有時也稱為TCP/IP協議組，這個名稱其中兩個最重要的協議：傳輸控制協議，它們也是最先定義的兩個協議。同許多其他協議一樣網路傳輸協議也可以看作一個多層組合，每層解決資料傳輸中的一組問題並且向使用這些低層服務的高層提供定義好的服務。高層邏輯上與使用者更為接近，所處理資料更為抽象，它們依賴於低層將資料轉換成最終能夠進行實體控制的形式。網路傳輸協議能夠大致匹配到一些廠商喜歡使用的固定7層的OSI模型。然而這些層並非都能夠很好地與基於IP的網路對應並且一些人認為試圖將因特網協議組對應到OSI會帶來混淆而不是有所幫助。因特網協議棧中的層.人們已經進行一些討論關於如何將TCP/IP參考模型對映到OSI模型。由於TCP/IP和OSI模型組不能精確地匹配，還沒有一個完全正確的答案。另外，OSI模型下層還不具備能夠真正佔據真正層的位置的能力；在傳輸層和網路層之間還需要另外一個層整個放在同一層會引起混淆，但是OSI模型還沒有複雜到能夠做更好的工作。下面的圖表試圖顯示不同的TCP/IP和其他的協議在最初OSI模型中的位置：通常人們認為OSI模型的最上面三層增加。與此相似的是，IP是按照將它下面的網路當作一個黑盒子的思想設計的，這樣在討論TCP/IP的時候就可以把它當作一個獨立的層。應用層.該層包括所有和應用程式協同工作，利用基礎網路交換應用程式專用的資料的協議。應用層是大多數普通與網路相關的程式為了透過網路與其他程式通訊所使用的層。這個層的處理過程是應用特有的；資料從網路相關的程式以這種應用內部使用的格式進行傳送，然後編碼成標準協議的格式。一些特定的程式視為在此層執行。它們提供服務直接支援使用者應用。這些程式和它們對應的協議包括HTTP以及許多其他協議。一旦從應用程式來的資料編碼成一個標準的應用層協議，它將傳送到IP棧的下一層。在傳輸層，應用程式最常用的是TCP或者UDP，並且伺服器應用程式經常與一個公開的埠號相聯絡。伺服器應用程式的埠由網際網路號碼分配局正式地分配，但是現今一些新協議的開發者經常選擇它們自己的埠號。由於在同一個系統上很少超過少數幾個的伺服器應用，埠衝突引起的問題很少。應用軟體通常也允許使用者強制性地指定埠號作為執行引數。連結外部的客戶端程式通常使用系統分配的一個隨機埠號。監聽一個埠並且透過伺服器將那個埠傳送到應用的另外一個副本以建立對等連結的路由器對映到內部。每一個應用層協議一般都會使用到兩個傳輸層協議之一：面向連線的TCP傳輸控制協議和無連線的包傳輸的UDP使用者資料報文協議。常用的應用層協議有：執行在TCP協議上的協議：* HTTP，主要用於普通瀏覽。* HTTPS,HTTP協議的安全版本。* FTP，由名知義，用於檔案傳輸。* POP3，收郵件用。* SMTP，用來發送電子郵件。* TELNET登陸到網路。* SSH，用於加密安全登陸用。執行在UDP協議上的協議：* BOOTP，應用於無盤裝置。* NTP，用於網路同步。* DHCP，動態配置IP地址。其他：* DNS。* 。* SNMP，用於網路資訊的收集和網路管理。* ARP，用於動態解析乙太網硬體的地址。傳輸層.傳輸層和保證資料按照正確的順序到達這樣的問題。在TCP/IP協議組中，傳輸協議也包括所給資料應該送給哪個應用程式。在TCP/IP協議組中技術上位於這個層的動態路由協議通常認為是網路層的一部分；一個例子就是OSPF。TCP是一個“可靠的”、面向連結的傳輸機制，它提供一種可靠的位元組流保證資料完整、無損並且按順序到達。TCP儘量連續不斷地測試網路的負載並且控制傳送資料的速度以避免網路過載。另外，TCP試圖將資料按照規定的順序傳送。這是它與UDP不同之處，這在實時資料流或者路由高網路層丟失率應用的時候可能成為一個缺陷。較新的SCTP也是一個“可靠的”、面向連結的傳輸機制。它是面向記錄而不是面向位元組的，它在一個單獨的連結上提供透過多路複用提供的多個子流。它也提供多路自定址支援，其中連結終端能夠以多個IP地址表示，但是也可以用於其他的應用。UDP或者說“不可靠”協議——不是因為它特別不可靠，而是因為它不檢查資料包是否已經到達目的地，並且不保證它們按順序到達。如果一個應用程式需要這些特性，那它必須自行檢測和判斷，或者使用TCP協議。UDP的典型性應用是如流媒體這樣按時到達比可靠性更重要的應用，或者如DNS查詢這樣的簡單查詢／響應應用，如果建立可靠的連結所作的額外工作將是不成比例地大。DCCP目前正由IETF開發。它提供TCP流動控制語義，但對於使用者來說保留UDP的資料報服務模型。TCP和UDP都用來支援一些高層的應用。任何給定網路地址的應用透過它們的TCP或者UDP"埠號"區分。根據慣例使一些"大眾所知的埠"與特定的應用相聯絡。RTP是為如音訊和影片流這樣的實時資料設計的資料報協議。RTP是使用UDP包格式作為基礎的會話層，然而據說它位於因特網協議棧的傳輸層。網路互連層."TCP/IP協議族中的網路互連層。"正如最初所定義的，網路層解決在一個單一網路上傳輸資料包的問題。類似的協議有X.25和ARPANET的Host/IMP Protocol。隨著因特網思想的出現，在這個層上新增附加的功能，也就是將資料從源網路傳輸到目的網路。這就牽涉到在網路組成的網上選擇路徑將資料包傳輸，也就是因特網。在因特網協議組中，IP完成資料從源傳送到目的的基本任務。IP能夠承載多種不同的高層協議的資料；這些協議使用一個唯一的"IP協議號"進行標識。ICMP和IGMP分別是1和2。一些IP承載的協議，如ICMP，它們位於IP層之上但是完成網路層的功能，這表明因特網和OSI模型之間的不相容性。所有的路由協議，如BGP、OSPF、和RIP實際上也是網路層的一部分，儘管它們似乎應該屬於更高的協議棧。網路存取(連結)層.網路存取(連結)層實際上並不是因特網協議組中的一部分，但是它是資料包從一個裝置的網路層傳輸到另外一個裝置的網路層的方法。這個過程能夠在網絡卡的軟體驅動程式中控制，也可以在韌體或者專用晶片中控制。這將完成如新增報頭準備傳送、透過實體媒介實際傳送這樣一些資料鏈路功能。另一端，鏈路層將完成資料幀接收、去除報頭並且將接收到的包傳到網路層。然而，鏈路層並不經常這樣簡單。它也可能是一個虛擬專有網路。IP網路如何併吞競爭的網路.在長期的發展過程中，IP逐漸取代其他網路。這裡是簡單的解釋。IP傳輸通用資料。資料能夠用於任何目的，並且能夠很輕易地取代以前由專有資料網路傳輸的資料。下面是普通的過程：實現.如今，大多數商業作業系統包括TCP/IP棧並且預設安裝它們，對於大多數使用者來說，沒有必要去探求它們如何實現。TCP/IP包含在所有的商業Unix和Linux釋出包中，同樣也包含在Mac OS X、Windows系統和Windows Server中。