前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。
TCP/IP協議族(TCP/IP Protocol Suite,或TCP/IP Protocols),簡稱TCP/IP。由于在網絡通訊協議普遍采用分層的結構,當多個層次的協議共同工作時,類似計算機科學中的堆棧,因此又被稱為TCP/IP協議棧(英語:TCP/IP Protocol Stack)?。這些協議最早發源于美國國防部(縮寫為DoD)的ARPA網項目,因此也被稱作DoD模型(DoD Model)。這個協議族由互聯網工程任務組負責維護。
?
TCP/IP提供點對點的鏈接機制,將數據應該如何封裝、定址、傳輸、路由以及在目的地如何接收,都加以標準化。它將軟件通信過程抽象化為四個抽象層,采取協議堆棧的方式,分別實現出不同通信協議。協議族下的各種協議,依其功能不同,被分別歸屬到這四個層次結構之中,常被視為是簡化的七層OSI模型。
所有的TCP/IP應用都必須實現IP和ICMP。
?
TCP/IP參考模型:
是一個抽象的分層模型,這個模型中,所有的TCP/IP系列網絡協議都被歸類到4個抽象的"層"中。每一抽象層創建在低一層提供的服務上,并且為高一層提供服務。 完成一些特定的任務需要眾多的協議協同工作,這些協議分布在參考模型的不同層中的,因此有時稱它們為一個協議棧。
?TCP/IP參考模型為TCP/IP協議棧訂身制作。其中IP協議只關心如何使得數據能夠跨越本地網絡邊界的問題,而不關心如何利用傳輸媒體,數據如何傳輸。整個TCP/IP協議棧則負責解決數據如何通過許許多多個點對點通路(一個點對點通路,也稱為一"跳", 1 hop)順利傳輸,由此不同的網絡成員能夠在許多"跳"的基礎上創建相互的數據通路。?
如想分析更普遍的網絡通信問題,ISO的OSI模型也能起更好的幫助作用。?因特網協議族是一組實現支持因特網和大多數商業網絡運行的協議棧的網絡傳輸協議。它有時也被稱為TCP/IP協議組,這個名稱來源于其中兩個最重要的協議:傳輸控制協議(TCP)和因特網協議(IP),它們也是最先定義的兩個協議。 同許多其他協議一樣網絡傳輸協議也可以看作一個多層組合,每層解決數據傳輸中的一組問題并且向使用這些低層服務的高層提供定義好的服務。高層邏輯上與用戶更為接近,所處理數據更為抽象,它們依賴于低層將數據轉換成最終能夠進行實體控制的形式。
?
?
因特網協議棧中的層
人們已經進行一些討論關于如何將TCP/IP參考模型映射到OSI模型。由于TCP/IP和OSI模型組不能精確地匹配,還沒有一個完全正確的答案。下面的圖表試圖顯示不同的TCP/IP和其他的協議在最初OSI模型中的位置:
?
7 | 應用層 application layer | 例如HTTP、SMTP、SNMP、FTP、Telnet、SIP、SSH、NFS、RTSP、XMPP、Whois、ENRP |
6 | 表示層 presentation layer | 例如XDR、ASN.1、SMB、AFP、NCP |
5 | 會話層 session layer | 例如ASAP、SSH、ISO 8327 / CCITT X.225、RPC、NetBIOS、ASP、IGMP、Winsock、BSD sockets |
4 | 傳輸層 transport layer | 例如TCP、UDP、TLS、RTP、SCTP、SPX、ATP、IL |
3 | 網絡層 network layer | 例如IP、ICMP、IPX、BGP、OSPF、RIP、IGRP、EIGRP、ARP、RARP、X.25 |
2 | 數據鏈路層 data link layer | 例如以太網、令牌環、HDLC、幀中繼、ISDN、ATM、IEEE 802.11、FDDI、PPP |
1 | 物理層 physical layer | 例如線路、無線電、光纖 |
?
通常人們認為OSI模型的最上面三層(應用層、表示層和會話層)在TCP/IP組中是一個應用層。由于TCP/IP有一個相對較弱的會話層,由TCP和RTP下的打開和關閉連接組成,并且在TCP和UDP下的各種應用提供不同的端口號,這些功能能夠被單個的應用程序(或者那些應用程序所使用的庫)增加。與此相似的是,IP是按照將它下面的網絡當作一個黑盒子的思想設計的,這樣在討論TCP/IP的時候就可以把它當作一個獨立的層。
?
4 | 應用層 application layer | 例如HTTP、FTP、DNS (如BGP和RIP這樣的路由協議,盡管由于各種各樣的原因它們分別運行在TCP和UDP上,仍然可以將它們看作網絡層的一部分) |
3 | 傳輸層 transport layer | 例如TCP、UDP、RTP、SCTP (如OSPF這樣的路由協議,盡管運行在IP上也可以看作是網絡層的一部分) |
2 | 網絡互連層 internet layer | 對于TCP/IP來說這是因特網協議(IP) (如ICMP和IGMP這樣的必須協議盡管運行在IP上,也仍然可以看作是網絡互連層的一部分;ARP不運行在IP上) |
1 | 網絡接口層 link layer | 例如以太網、Wi-Fi、MPLS等。 |
?
?
四層模型:
應用層
該層包括所有和應用程序協同工作,利用基礎網絡交換應用程序專用的數據的協議。?應用層是大多數普通與網絡相關的程序為了通過網絡與其他程序通信所使用的層。這個層的處理過程是應用特有的;數據從網絡相關的程序以這種應用內部使用的格式進行傳送,然后被編碼成標準協議的格式。
一些特定的程序被認為運行在這個層上。它們提供服務直接支持用戶應用。這些程序和它們對應的協議包括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,域名服務),用于完成地址查找,郵件轉發等工作(運行在TCP和UDP協議上)。
- ECHO(Echo Protocol,回繞協議),用于查錯及測量應答時間(運行在TCP和UDP協議上)。
- SNMP(Simple Network Management Protocol,簡單網絡管理協議),用于網絡信息的收集和網絡管理。
- ARP(Address Resolution Protocol,地址解析協議),用于動態解析以太網硬件的地址。
?
傳輸層
傳輸層的協議,能夠解決諸如端到端可靠性(“數據是否已經到達目的地?”)和保證數據按照正確的順序到達這樣的問題。
在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和信道通常預先建好,并且它們有一些直接發送到實體接口所沒有的特殊特點(例如,它可以加密經過它的數據)。由于現在鏈路“層”是一個完整的網絡,這種協議組的遞歸使用可能引起混淆。但是它是一個實現常見復雜功能的一個優秀方法。(盡管需要注意預防一個已經封裝并且經隧道發送下去的數據包進行再次地封裝和發送)。
?
如今,大多數商業操作系統都包括TCP/IP棧,并且缺省安裝它們,對于大多數用戶來說,沒有必要去探求它們如何實現。
TCP/IP包含在所有的商業Unix和Linux發布包中,同樣也包含在Mac OS X和微軟視窗和視窗服務器版本中。
?
特別說明:以上大部分內容整理自**百科。