標籤:style http io os 使用 ar strong for 檔案
網際網路協議棧中的層
人們已經進行了一些討論關於如何將TCP/IP參考模型映射到OSI模型。由於TCP/IP和OSI模型組不能精確地匹配,還沒有一個完全正確的答案。 另外,OSI模型下層還不具備能夠真正佔據真正層的位置的能力;在傳輸層和網路層之間還需要另外一個層(網路互連層)。特定網路類型專用的一些協議應該運行在網路層上,但是卻運行在基本的硬體幀交換上。類似協議的例子有位址解析通訊協定和產生樹協議(用來保持冗餘橋接器的空閑狀態直到真正需要它們)。然而,它們是本地協議並且在網路互連功能下面運行。不可否認,將兩個組(更不用說它們只是運行在如ICMP等不同的互連網路通訊協定上的邏輯上的網路層的一部分)整個放在同一層會引起混淆,但是OSI模型還沒有複雜到能夠做更好的工作。 下面的圖表試圖顯示不同的TCP/IP和其他的協議在最初OSI模型中的位置:
7 |
應用程式層 |
例如HTTP、SMTP、SNMP、FTP、Telnet、SIP、SSH、NFS、RTSP、XMPP、Whois、ENRP |
6 |
展示層 |
例如XDR、ASN.1、SMB、AFP、NCP |
5 |
會話層 |
例如ASAP、SSH、ISO 8327 / CCITT X.225、RPC、NetBIOS、ASP、Winsock、BSD sockets |
4 |
傳輸層 |
例如TCP、UDP、TLS、RTP、SCTP、SPX、ATP、IL |
3 |
網路層 |
例如IP、ICMP、IGMP、IPX、BGP、OSPF、RIP、IGRP、EIGRP、ARP、RARP、X.25 |
2 |
資料連結層 |
例如乙太網路、令牌環、HDLC、框架轉送、ISDN、ATM、IEEE 802.11、FDDI、PPP |
1 |
實體層 |
例如線路、無線電、光纖 |
通常人們認為OSI模型的最上面三層(應用程式層、展示層和會話層)在TCP/IP組中是一個應用程式層。由於TCP/IP有一個相對較弱的會話層,由 TCP和RTP下的開啟和關閉串連組成,並且在TCP和UDP下的各種應用提供不同的連接埠號碼,這些功能能夠被單個的應用程式(或者那些應用程式所使用的 庫)增加。與此相似的是,IP是按照將它下面的網路當作一個黑盒子的思想設計的,這樣在討論TCP/IP的時候就可以把它當作一個獨立的層。
4 |
應用程式層 (OSI 5到7層) |
例如HTTP、FTP、DNS (如BGP和RIP這樣的路由協議,儘管由於各種各樣的原因它們分別運行在TCP和UDP上,仍然可以將它們看作網路層的一部分) |
3 |
傳輸層 (OSI 4層) |
例如TCP、UDP、RTP、SCTP (如OSPF這樣的路由協議,儘管運行在IP上也可以看作是網路層的一部分) |
2 |
網路互連層 (OSI 3層) |
對於TCP/IP來說這是網際網路協議(IP) (如ICMP和IGMP這樣的必須協議儘管運行在IP上,也仍然可以看作是網路互連層的一部分;ARP不運行在IP上) |
1 |
網路介面層 (OSI 1和2層) |
例如乙太網路、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,超文字傳輸通訊協定 (HTTP)),主要用於普通瀏覽。
- HTTPS(Hypertext Transfer Protocol over Secure Socket Layer, or HTTP over SSL,安全超文字傳輸通訊協定 (HTTPS)),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,網路時間協議),用於網路同步。
-
其他:
-
- DNS(Domain Name Service,網域名稱服務 (DNS)),用於完成地址尋找,郵件轉寄等工作(運行在TCP和UDP協議上)。
- ECHO(Echo Protocol,迴繞協議),用於查錯及測量應答時間(運行在TCP和UDP協議上)。
- SNMP(Simple Network Management Protocol,簡易網路管理通訊協定),用於網路資訊的收集和網路管理。
- DHCP(Dynamic Host Configuration Protocol,動態主機設定通訊協定),動態配置IP地址。
- 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包格式作為基礎的會話層,然而據說它位於網際網路協議棧的傳輸層。
網路互連層
正如最初所定義的,網路層解決在一個單一網路上傳輸資料包的問題。類似的協議有X.25和ARPANET的Host/IMP Protocol。 隨著網際網路思想的出現,在這個層上添加了附加的功能,也就是將資料從源網路傳輸到目的網路。這就牽涉到在網路組成的網上選擇路徑將資料包傳輸,也就是網際網路。 在網際網路協議組中,IP完成資料從源發送到目的的基本任務。IP能夠承載多種不同的高層協議的資料;這些協議使用一個唯一的IP協議號進行標識。ICMP和IGMP分別是1和2。 一些IP承載的協議,如ICMP(用來發送關於IP發送的診斷資訊)和IGMP(用來管理多播資料),它們位於IP層之上但是完成網路層的功能,這表明了網際網路和OSI模型之間的不相容性。所有的路由協議,如BGP、OSPF、和RIP實際上也是網路層的一部分,儘管它們似乎應該屬於更高的協議棧。
網路介面層
網路介面層實際上並不是網際網路協議組中的一部分,但是它是資料包從一個裝置的網路層傳輸到另外一個裝置的網路層的方法。這個過程能夠在網卡的軟體驅動程式中控制,也可以在韌體或者專用晶片中控制。這將完成如添加前序準備發送、通過實體媒介實際發送這樣一些資料鏈路功能。另一端,鏈路層將完成資料幀接收、去除前序並且將接收到的包傳到網路層。 然而,鏈路層並不經常這樣簡單。它也可能是一個Virtual Private Cloud絡(VPN)或者隧道,在這裡從網路層來的包使用隧道協議和其他(或者同樣的)協議組發送而不是發送到實體的介面上。VPN和隧道通常預先建好,並且它們有一些直接發送到實體介面所沒有的特殊特點(例如,它可以加密經過它的資料)。由於現在鏈路“層”是一個完整的網路,這種協議組的遞迴使用可能引起混淆。但是它是一個實現常見複雜功能的一個優秀方法。(儘管需要注意預防一個已經封裝並且經隧道發送下去的資料包進行再次地封裝和發送)。
網路——網際網路協議棧中的層