1. 程式人生 > >TCP/IP 基礎入門 ( 一 )

TCP/IP 基礎入門 ( 一 )

設計 客戶 接收機 自動 互聯網絡 重要功能 prot 應用層 細節

Introduction

T C P / I P起源於 6 0年代末美國政府資助的一個分組交換網絡研究項目,那時候的網絡與計算解決方案一起是一個享有很高專利權的互聯解決方案,這個方案幾乎是一個完整的專利。個人計算機出現前,如果某個公司想使他們的數據處理和記帳功能自動化,就必須用他們的監管系統與某個廠家聯系,而且只能與單一廠家聯系。單一廠家應用軟件只執行在由單個操作系統支持的平臺上,操作系統也只能安全地執行在相同廠家的硬件產品,甚至用戶的終端設備和與計算機進行連接的設備都必須是同一廠家產品。就如今天的手機充電線一樣,Apple只能用Apple的充電線,安卓也有好幾類。所有我們就會想要是所有手機的充電線都一樣就方便許多了。

很多不同的廠家生產各種型號的計算機,它們運行完全不同的操作系統,但 T C P / I P協議族允許它們互相進行通信。

通信處理層次化

開放式通信的關鍵在於理解所有對兩端系統相互之間通信和共享數據所必需的功能。這些必需的功能以及建立它們必須發生的先後順序是開放式通信的基礎,只有兩端系統對如何通信達成一致,它們才可能通信。也就是說,它們必須在從應用取得數據和為通過網絡傳輸將數據打包這些動作上遵守相同的過程。其中,不管是多麽細節、細小的問題都不能忽略,必須做到完全一致。幸運的是,一個通信會話中所必需的事件在邏輯上存在一定的順序。按完全的最小分割,這些事件包括如下任務:

  • 數據必須從它的應用向下傳給一個通信進程 (稱為一個協議(protocol) )。
  • 通信協議必須為通過許多類型網絡的傳輸準備應用數據。這通常意味著數據必須被分為更多可管理的塊。
  • 分段的數據必須包裝在一個數據結構中,以便於通過網絡傳送到某個指定設備。這意味著數據必須被包裝成某種形式,而這種形式所包含的信息應該可以使得任何網絡上的計算機設備可以識別出數據包來自何方,到哪裏去。該結構可能是一個幀、一個數據包或者一個單元,這與使用何種協議有關。
  • 為傳輸需要,這些幀和數據包必須被轉換成物理位流。這些位流可以被轉換成光纖網(如FDDI)上的光脈沖或者通過電子網絡傳輸的電子信號狀態 (如以太網,或其他任何以電信號通過金屬導線傳輸的網絡 )。到達目的地或接收端機器後,這個過程被翻過來。另外,在通信會話過程中,還需要其他功能,這些功能使得源端和目的端的計算機通過協同努力可以保證數據完全到達,這些功能包括:

1, 將傳輸數據流規範化,以保證接收機器和網絡不會擁塞。

2, 利用某種算法檢查接收到的數據,以保證數據在傳輸過程中沒有損壞。

3, 對沒有到達的數據包或者到達時損壞的數據包進行協調重發。

  • 最後,數據的接收方必須將各段數據重新組合成接收端應用程序認識的格式。從接收端應用的角度來看,接收到的數據應與發送方應用發出的數據完全一樣。換句話說,兩個應用所表現出的應該是在兩者之間直接通信,這就是所謂的邏輯鏈接(logical adjacency)。或許用於解釋通信分層模型 (包括邏輯鏈接)的最好工具就是 OSI參考模型。

OSI(Open System Interconnect Reference Model)

國際標準化組織 (ISO)開發了開放式系統互聯 (OSI)參考模型,以促進計算機系統的開放互聯。開放式互聯就是可在多個廠家的環境中支持互聯。該模型為計算機間開放式通信所需要定義的功能層次建立了全球標準。今天,開放式通信是必需的, OSI參考模型為示範網絡的功能結構提供了可行的機制。OSI模型將通信會話需要的各種進程劃分成 7個相對獨立的功能層次,這些層次的組織是以在一個通信會話中事件發生的自然順序為基礎的。1~3層提供了網絡訪問, 4~7層用於支持端端通信。(與TCP/IP四層對比)

技術分享


1. 物理層

最底層稱為物理層 (Physical Layer),這一層負責傳送比特流,它從第二層數據鏈路層 (DDL)接收數據幀,並將幀的結構和內容串行發送即每次發送一個比特,然後這些數據流被傳輸給DLL重新組合成數據幀。從字面上看,物理層只能看見 0和1,它沒有一種機制用於確定自己所傳輸和發送比特流的含義,而只與電信號技術結構和內容串行發送即每次發送一個比特,然後這些數據流被傳輸給DLL重新組合成數據幀。和光信號技術的物理特征相關。這些特征包括用於傳輸信號電流的電壓、介質類型以及阻抗特征,甚至包括用於終止介質的連接器的物理形狀。對OSI第一層,人們常常有這樣的誤解:就是認為 OSI第一層應該包括所有產生或發送通信數據信號的機制。其實並非如此, OSI第一層只是一個功能模型,物理層只是一種處理過程和機制,這種過程和機制用於將信號放到傳輸介質上以及從介質上收到信號。它較低層的邊界連向傳輸介質的物理連接器,但並不包含傳輸介質。

傳輸介質包含真正用於傳輸由 OSI第一層機制所產生信號的任何方法。一些傳輸介質是同軸電纜、光纖、雙絞線等。人們之所以感到迷惑,主要是因為物理層對介質的性能沒有提出任何規範。介質的性能特征對於物理層定義的過程和機制是需要並假定存在的。因此,傳輸介質處於物理層之外,有時被稱為 OSI 參考模型的第0層。

2. 數據鏈路層 (DLL)

OSI 參考模型的第二層稱為數據鏈路層 ( DLL )。與所有其他層一樣,它肩負兩個責任:發

送和接收。它還要提供數據有效傳輸的端端 (端到端)連接。在發送方, DLL需負責將指令、數據等包裝到幀中,幀 (frame)是DLL層生成的結構,它包含足夠的信息,確保數據可以安全地通過本地局域網到達目的地。成功發送意味著數據幀要完整無缺地到達目的地。也就是說,幀中必須包含一種機制用於保證在傳送過程中內容的完整性。為確保數據傳送完整安全到達,必須做到兩點:

1.在每個幀完整無缺地被目標節點收到時,源節點必須收到一個響應。

2.在目標節點發出收到幀的響應之前,必須驗證幀內容的完整性。


有很多情況可以導致幀的發送不能到達目標或者在傳輸過程中被破壞或不能使用。DLL有責任檢測並修正所有這些錯誤。DLL的另一個職責是重新組織從物理層收到的數據比特流。不過,如果幀的結構和內容都被發出, DLL並不重建一個幀。相反,它緩存到達的比特流直到這些比特流構成一個完整的幀。不論哪種類型的通信都要求有第一層和第二層的參與,不管是局域網 (LAN)還是廣域網(WAN)都是如此。

3. 網絡層

網絡層負責在源機器和目標機器之間建立它們所使用的路由。這一層本身沒有任何錯誤檢測和修正機制,因此,網絡層必須依賴於端端之間的由 DLL提供的可靠傳輸服務。網絡層用於本地 LAN網段之上的計算機系統建立通信,它之所以可以這樣做,是因為它有自己的路由地址結構,這種結構與第二層機器地址是分開的、獨立的。這種協議稱為路由或可路由協議。路由協議包括 IP、Novell公司的IPX以及AppleTalk協議。網絡層是可選的,它只用於當兩個計算機系統處於不同的由路由器分割開的網段這種情況,或者當通信應用要求某種網絡層或傳輸層提供的服務、特性或者能力時。例如,當兩臺主機處於同一個 LAN網段的直接相連這種情況,它們之間的通信只使用 LAN的通信機制就可以了(即OSI 參考模型的一二層 )。

4. 傳輸層

傳輸層提供類似於DLL所提供的服務,傳輸層的職責也是保證數據在端端之間完整傳輸,不過與DLL不同,傳輸層的功能是在本地 LAN網段之上提供這種功能,它可以檢測到路由器丟棄的包,然後自動產生一個重新傳輸請求。傳輸層的另一項重要功能就是將亂序收到的數據包重新排序,數據包亂序有很多原因。例如,這些包可能通過網絡的路徑不同,或者有些在傳輸過程中被破壞。不管是什麽情況,傳輸層應該可以識別出最初的包順序,並且在將這些包的內容傳遞給會話層之前要將它們恢復成發送時的順序。

5. 會話層

OSI的第五層是會話層,相對而言,這一層沒有太大用處,很多協議都將這一層的功能與

傳輸層捆綁在一起。OSI會話層的功能主要是用於管理兩個計算機系統連接間的通信流。通信流稱為會話,它決定了通信是單工還是雙工。它也保證了接受一個新請求一定在另一請求完成之後。

6. 表示層

表示層負責管理數據編碼方式,不是所有計算機系統都使用相同的數據編碼方式,表示層的職責就是在可能不兼容的數據編碼方式,例如在 ASCII和EBCDIC之間,提供翻譯。表示層可以用在浮點格式間的調整轉換並提供加密解密服務。

7. 應用層

OSI 參考模型的最頂層是應用層,盡管它稱為應用層,但它並不包含任何用戶應用。相反,它只在那些應用和網絡服務間提供接口。這一層可以看成是初始化通信會話的起因。例如,郵件客戶可能會產生一個從郵件服務器檢索新消息的請求,客戶端應用自動向與之相關的第七層協議發出請求,並產生通信會話,以獲取所需要的文件。

TCP/IP參考模型

與OSI參考模型不同, TCP/IP模型更側重於互聯設備間的數據傳送,而不是嚴格的功能層次劃分。它通過解釋功能層次分布的重要性來做到這一點,但它仍為設計者具體實現協議留下很大的余地。因此, OSI參考模型在解釋互聯網絡通信機制上比較適合,但 TCP/IP成為了互聯網絡協議的市場標準。由於它更強調功能分布而不是嚴格的功能層次的劃分,因此它比OSI模型更靈活。

網絡協議通常分不同層次進行開發,每一層分別負責不同的通信功能。一個協議族,比如 TCP/IP,是一組不同層次上的多個協議的組合。 TCP/IP通常被認為是一個四層協議系統

每一層負責不同的功能:

(1)鏈路層,有時也稱作數據鏈路層或網絡接口層,通常包括操作系統中的設備驅動程序和計算機中對應的網絡接口卡。它們一起處理與電纜(或其他任何傳輸媒介)的物理接口細節。

(2)網絡層,有時也稱作互聯網層,處理分組在網絡中的活動,例如分組的選路。在TCP/IP協議族中,網絡層協議包括 IP協議(網際協議),ICMP協議(Internet互聯網控制報文協議),以及IGMP協議(Internet組管理協議)。

(3)運輸層主要為兩臺主機上的應用程序提供端到端的通信。在 T C P / I P協議族中,有兩個互不相同的傳輸協議: TCP(傳輸控制協議)和UDP(用戶數據報協議)。TCP為兩臺主機提供高可靠性的數據通信。它所做的工作包括把應用程序交給它的數據分成合適的小塊交給下面的網絡層,確認接收到的分組,設置發送最後確認分組的超時時鐘等。由於運輸層提供了高可靠性的端到端的通信,因此應用層可以忽略所有這些細節。而另一方面, UDP則為應用層提供一種非常簡單的服務。它只是把稱作數據報的分組從一臺主機發送到另一臺主機,但並不保證該數據報能到達另一端。任何必需的可靠性必須由應用層來提供。

(4)應用層負責處理特定的應用程序細節。幾乎各種不同的 TCP/IP實現都會提供通用的應用程序如:Telnet 遠程登錄;FTP 文件傳輸協議;SMTP 簡單郵件傳送協議;SNMP 簡單網絡管理協議。

技術分享

UDP為應用程序發送和接收數據報。一個數據報是指從發送方傳輸到接收方的一個信息單元(例如,發送方指定的一定字節數的信息)。但是與 TCP不同的是, UDP是不可靠的,它不能保證數據報能安全無誤地到達最終目的。

TCP/IP 基礎入門 ( 一 )