THC TECHNOLOGY

news

技術分享

技術分享

SHARE TECHNOLOGY

TCP/IP

2017-06-30

【 TCP/IP 】

網際網路協定套組(英語:Internet Protocol Suite,縮寫IPS)是一個網路通訊模型,以及一整個網路傳輸協定家族,為網際網路的基礎通訊架構。 它常被通稱為TCP/IP協定族(英語:TCP/IP Protocol Suite,或TCP/IP Protocols),簡稱TCP/IP。該協定家族的兩個核心協定:TCP(傳輸控制協定)和IP(網際協定),為該家族中最早通過的標準。由於在網路通訊協定普遍採用分層的結構,當多個層次的協定共同工作時,類似電腦科學中的堆疊,因此又被稱為TCP/IP協定棧(英語:TCP/IP Protocol Stack)。 這些協定最早發源於美國國防部(縮寫為DoD)的ARPA網專案,因此也被稱作DoD模型(DoD Model)。這個協定套組由網際網路工程任務組負責維護。

TCP/IP提供點對點的連結機制,將資料應該如何封裝、定址、傳輸、路由以及在目的地如何接收,都加以標準化。它將軟體通訊過程抽象化為四個抽象層,採取協定堆疊的方式,分別實作出不同通訊協定。協定套組下的各種協定,依其功能不同,被分別歸屬到這四個階層之中,常被視為是簡化的七層OSI模型。

 

 

 

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協定主要用於收集有關網路的資訊尋找錯誤等工作。

 

 

 

TCP/IP參考模型

TCP/IP參考模型是一個抽象的分層模型,這個模型中,所有的TCP/IP系列網路協定都被歸類到4個抽象的"層"中。每一抽象層建立在低一層提供的服務上,並且為高一層提供服務。 完成一些特定的任務需要眾多的協定協同工作,這些協定分布在參考模型的不同層中的,因此有時稱它們為一個協定棧。 TCP/IP參考模型為TCP/IP協定棧訂身製作。其中IP協定只關心如何使得資料能夠跨越本地網路邊界的問題,而不關心如何利用傳輸媒體,資料如何傳輸。整個TCP/IP協定棧則負責解決資料如何通過許許多多個對等通路(一個對等通路,也稱為一"跳", 1 hop)順利傳輸,由此不同的網路成員能夠在許多"跳"的基礎上建立相互的資料通路。 如想分析更普遍的網路通訊問題,ISO的OSI模型也能起更好的幫助作用。 網際網路協定族是一組實現支援網際網路和大多數商業網路執行的協定棧的網路傳輸協定。它有時也被稱為TCP/IP協定組,這個名稱來源於其中兩個最重要的協定:傳輸控制協定(TCP)和網際網路協定(IP),它們也是最先定義的兩個協定。 同許多其他協定一樣網路傳輸協定也可以看作一個多層組合,每層解決資料傳輸中的一組問題並且向使用這些低層服務的高層提供定義好的服務。高層邏輯上與用戶更為接近,所處理資料更為抽象,它們依賴於低層將資料轉換成最終能夠進行實體控制的形式。 網路傳輸協定能夠大致符合到一些廠商喜歡使用的固定7層的OSI模型。然而這些層並非都能夠很好地與基於ip的網路對應(根據應用的設計和支援網路的不同它們確實是涉及到不同的層)並且一些人認為試圖將網際網路協定組對應到OSI會帶來混淆而不是有所幫助。

兩個網際網路主機通過兩個路由器和對應的層連線。各主機上的應用通過一些資料通道相互執行讀取操作。

 

 

 

網際網路協定棧中的層

人們已經進行一些討論關於如何將TCP/IP參考模型對映到OSI模型。由於TCP/IP和OSI模型組不能精確地符合,還沒有一個完全正確的答案。 另外,OSI模型下層還不具備能夠真正占據真正層的位置的能力;在傳輸層和網路層之間還需要另外一個層(網路互連層)。特定網路類型專用的一些協定應該執行在網路層上,但是卻執行在基本的硬體訊框交換上。類似協定的例子有位址解析協定和生成樹協定(用來保持冗餘網橋的空閒狀態直到真正需要它們)。然而,它們是本地協定並且在網路互連功能下面執行。不可否認,將兩個組(更不用說它們只是執行在如ICMP等不同的互連網路協定上的邏輯上的網路層的一部分)整個放在同一層會引起混淆,但是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等。

 

 

RFC 1122中描述的沿著不同的層應用資料的封裝遞減

 

應用層

該層包括所有和應用程式協同工作,利用基礎網路交換應用程式專用的資料的協定。 應用層是大多數普通與網路相關的程式為了通過網路與其他程式通訊所使用的層。這個層的處理過程是應用特有的;資料從網路相關的程式以這種應用內部使用的格式進行傳送,然後被編碼成標準協定的格式。

一些特定的程式被認為執行在這個層上。它們提供服務直接支援用戶應用。這些程式和它們對應的協定包括HTTP(全球資訊網服務)、FTP(檔案傳輸)、SMTP(電子郵件)、SSH(安全遠端登陸)、DNS(名稱<-> IP位址尋找)以及許多其他協定。 一旦從應用程式來的資料被編碼成一個標準的應用層協定,它將被傳送到IP棧的下一層。

在傳輸層,應用程式最常用的是TCP或者UDP,並且伺服器應用程式經常與一個公開的埠號相聯繫。伺服器應用程式的埠由網際網路號分碼配局(IANA)正式地分配,但是現今一些新協定的開發者經常選擇它們自己的埠號。由於在同一個系統上很少超過少數幾個的伺服器應用,埠衝突引起的問題很少。應用軟體通常也允許用戶強制性地指定埠號作為執行參數。

連結外部的用戶端程式通常使用系統分配的一個隨機埠號。監聽一個埠並且通過伺服器將那個埠傳送到應用的另外一個副本以建立對等連結(如IRC上的dcc檔案傳輸)的應用也可以使用一個隨機埠,但是應用程式通常允許定義一個特定的埠範圍的規範以允許埠能夠通過實現網路位址轉換(NAT)的路由器對映到內部。

每一個應用層(TCP/IP參考模型的最高層)協定一般都會使用到兩個傳輸層協定之一: 面向連線的TCP傳輸控制協定和無連線的包傳輸的UDP用戶資料包協定。 常用的應用層協定有:

 

執行在TCP協定上的協定:

1.HTTP(Hypertext Transfer Protocol,超文字傳輸協定),主要用於普通瀏覽。

2.HTTPS(Hypertext Transfer Protocol over Secure Socket Layer, or HTTP over SSL,安全超文字傳輸協定),HTTP協定的安全版本。

3.FTP(File Transfer Protocol,檔案傳輸協定),由名知義,用於檔案傳輸。

4.POP3(Post Office Protocol, version 3,郵局協定),收郵件用。

5.SMTP(Simple Mail Transfer Protocol,簡單郵件傳輸協定),用來傳送電子郵件。

6.TELNET(Teletype over the Network,網路電傳),通過一個終端(terminal)登陸到網路。

7.SSH(Secure Shell,用於替代安全性差的TELNET),用於加密安全登陸用。

 

執行在UDP協定上的協定:

1.BOOTP(Boot Protocol,啟動協定),應用於無盤裝置。

2.NTP(Network Time Protocol,網路時間協定),用於網路同步。

3.DHCP(Dynamic Host Configuration Protocol,動態主機配置協定),動態配置IP位址。

 

其他:

1.DNS(Domain Name Service,域名服務),用於完成位址尋找,郵件轉發等工作(執行在TCP和UDP協定上)。

2.ECHO(Echo Protocol,迴繞協定),用於查錯及測量應答時間(執行在TCP和UDP協定上)。

3.SNMP(Simple Network Management Protocol,簡單網路管理協定),用於網路資訊的收集和網路管理。

4.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和隧道通常預先建好,並且它們有一些直接傳送到實體介面所沒有的特殊特點(例如,它可以加密經過它的資料)。由於現在鏈路「層」是一個完整的網路,這種協定組的遞迴使用可能引起混淆。但是它是一個實現常見複雜功能的一個優秀方法。(儘管需要注意預防一個已經封裝並且經隧道傳送下去的封包進行再次地封裝和傳送)。

 

IP網路如何併吞競爭的網路

在長期的發展過程中,IP逐漸取代其他網路。這裏是一個簡單的解釋。IP傳輸通用資料。資料能夠用於任何目的,並且能夠很輕易地取代以前由專有資料網路傳輸的資料。下面是一個普通的過程:

1.一個專有的網路開發出來用於特定目的。如果它工作很好,用戶將接受它。

2.為了便利提供IP服務,經常用於存取電子郵件或者聊天,通常以某種方式通過專有網路隧道實現。隧道方式最初可能非常沒有效率,因為電子郵件和聊天只需要很低的頻寬。

3.通過一點點的投資IP基礎設施逐漸在專有資料網路周邊出現。

4.用IP取代專有服務的需求出現,經常是一個用戶要求。

5.IP替代品過程遍布整個網際網路,這使IP替代品比最初的專有網路更加有價值(由於網路效應)。

6.專有網路受到壓制。許多用戶開始維護使用IP替代品的複製品。

7.IP包的間接開銷很小,少於1%,這樣在成本上非常有競爭性。人們開發一種能夠將IP帶到專有網路上的大部分用戶的不昂貴的傳輸媒介。

8.大多數用戶為了削減開銷,專有網路被取消。

 

 

 

實現

1. KA9Q PPJ

2. lwIP

如今,大多數商業作業系統包括TCP/IP並且預設安裝它們,對於大多數用戶來說,沒有必要去尋找它們的實現。

TCP/IP包含在所有的商業Unix和Linux發布包中,同樣也包含在Mac OS X和微軟視窗和視窗伺服器版本中。

 

 

 

參考資料:

1.TCP/IP協定族。維基百科。2017-06-05,取自:https://zh.wikipedia.org/wiki/TCP/IP%E5%8D%8F%E8%AE%AE%E6%97%8F