19.3.2.2 因特網層(Internet layer)

因特網層提供消息的尋址和把邏輯地址和名稱轉換成物理地址的功能,而且傳輸層的所有協議都必須通過使用IP來發送數據。因特網層協議含有對報文如何編址和引導、對報文進行分段和重新裝配、提供安全信息以及區分所用的服務類型等規則。因特網層中已存在的協議有IP (因特網協議,Internet Protocol)、ICMP (網間控製報文協議,Internet Control Messaging Protocol),IGMP (網際分組管理協議,Internet Group Management Protocol) 和ARP (地址解析協議,Address Resolution Protocol)。

19.3.2.3 傳輸層(Transport layer)

傳輸層負責主機與主機之間的端對端的通信。這種通信可以是基於連接的,也可以基於非連接的。該層也包含了兩種協議:TCP (傳輸控製協議,Transmission Control Protocol)和UDP (用戶數據報協議,User Datagram Protocol)。

19.3.2.4 應用層(Application layer)

應用層是在TCP/IP模型中的最高層,是負責發生在OSI參考模型的會話層、表示層和應用層的所有活動。這一層有很多的協議被開發出來,例如,FTP (文件傳輸協議,File Transfer Protocol)、Telnet (遠程登錄)、DNS (域名服務,Domain Name Service)和SNMP (簡單網絡管理協議,Simple Network Management Protocol)。

應用層中也包括了使非網絡應用程序能夠與網絡通信的應用程序編程接口(Application Programming Interfaces ),例如Windows Sockets和NetBIOS。

這些層兩兩之間的接口能夠擔負起它們彼此相互傳遞信息的任務。

19.3.3 TCP/IP協議和技術

事實上,前麵提到的4層模型隻能提供一些指南,實際的工作是由包含在它們的協議完成的。本節將TCP/IP協議作為一套協議進行了討論,而不是隻是對它們的兩個(TCP協議和IP協議)進行說明。其中有6個主要的協議與TCP/IP緊密相關:

■ 傳輸控製協議(TCP)

■ 用戶數據報協議(UDP)

■ 因特網協議(IP)

■ 網間控製報文協議(ICMP)

■ 網間分組管理協議(IGMP)

■ 地址解析協議(ARP)

19.3.3.1 傳輸控製協議(TCP)

該協議是基於連接的協議,提供了可靠的數據傳輸,它要求數據在兩台計算機之間進行傳輸之前必須建立一個會話進程。會話將在主機之間建立一個正式的會話,使錯誤修複得以實現。TCP協議是寄存在傳輸層的,位於應用層和因特網層之間,能夠為數據的順利發送往目的地提供了一種可靠的、有保證的機製。

TCP把數據分為字節流,而不是單個幀。較大的消息被分成了小段,然後分段傳輸。TCP的數據報被發送到套接字(或軟接口,Socket)或端口,然後它能校驗並保證一台計算機所發出的所有數據報在另一端被接收到。而且它會通過跟蹤通信過程中單個數據報的發送和接收,基於連接地保證了它們的正確發送。當一個數據報被發出時,會話能夠通過監視數據報的發出時間、發出順序並通知發送者它的發送時間,以便它能夠繼續被發送,達到跟蹤單個數據報進程的目標。如果因為某種原因丟失了一些數據報,可使發送端的機器進行重發。

另外,TCP機製還提供了流量控製和數據包的排序。當然,由於要建立一個會話並保證數據報的發送,在使用TCP進行數據報傳輸的時候會有一些額外的開銷。

初始化一個TCP會話的過程常被稱為3次握手(Three-Way Handshake)。在此過程中間,兩台計算機要對它們每一次所發數據量的跟蹤方法,收到數據時的應答代號,以及何時不再需要連接等達成共識。隻有在這個會話被建立起來之後,數據傳輸才能開始。為提供可靠的發布,TCP協議將數據報按一定的順序進行安排,並要求它們到達其目的地發回應答信號,以便它繼續發送新的數據。所以在傳輸大宗數據的情況下,或應用程序需要在數據被接收之後得到應答信號時,一般常使用TCP協議。

會話完成之後,關閉會話的正式過程確保了通信中止之前所有的數據都被傳輸和確認。

19.3.3.2 用戶數據報協議(UDP)

該協議是一種基於非連接的協議,它並不需要兩台計算機在傳輸數據之前建立一個會話,這與TCP協議正相反。但是因為UDP協議沒有在計算機之間建立會話,因此它不能提供數據報的順序發布,而且也不能在數據報被丟失之後保證重發。

但對於一個應用程序來說並不需要時時保持一個連接,而且事實上也沒有必要,因為這樣將增加了通信量。這樣一來,對於流量很大的音頻和視頻傳輸中,不加保障的數據報發送不僅能夠傳輸大量的數據(因為廣播需要極少甚至不需要額外的開銷),而且在這種情況下重發是沒有必要的。

19.3.3.3 因特網協議(IP)

因特網協議是TCP/IP的最重要的組成部分,因為這個協議集是以IP作為基礎的地址和傳輸的設備。如果不通過因特網層的IP協議進行通信,那麼傳輸層的通信就根本無從談起。IP協議裏麵包括了地址分配、廣播、對數據進行劃分和重組的功能。

IP協議的最基本的要素是它使用的地址空間。在網絡上,每一台計算機都被分配了一個32位的地址,也即平常所說的互聯網地址或IP地址。互聯網標準定義了五種類型的IP地址,當前有A、B、C、D、E共五級的地址。一個計算機特有的互聯網地址是由A、B和C類的地址派生而來的,D類的地址是用來將計算機連接成為一個功能組,E類的地址現在隻是在實驗的階段,並不能使用。

如果計算機連到因特網上的時候,它必須要有一個網絡地址,而且隻能由InterNIC分配。InterNIC管理網絡地址的分配,以保證每一個計算機得到的網絡ID號是在互聯網上是獨一無二的。這樣一來IP協議就能對這個特定的地址進行維護、使用和調整,以便兩台計算機之間的通信。而且如果IP從網絡層收到不屬於本身地址的數據的時候,也判斷出不是網絡廣播的時候,它將放棄當前的數據報而不對它進行進一步的處理。

盡管IP協議能夠將報文直接發送到特定的計算機,但是它卻寧願將報文發往一段物理網絡連接的所有機器上,這就是IP協議的廣播功能。如果計算機從網絡接口層得到一個廣播的數據報,它必須對此報文進行接收並進行處理,好像這個報文就是發給它的一樣。

另外,IP協議的任務之一就是將過長的數據報文分解成適應預先規定的數據報的尺寸進行分段傳輸,然後到達目的計算機的時候將幾個數據報再進行重組還原成原來的數據。這個功能使網絡的流量得到充分的利用,以便數據量很大的數據也能利用基礎網絡進行傳輸。IP通過劃分將數據分成了一些能夠控製的幀,並為沒一個數據報加上一定的控製代號,以便在數據序列中標識它們,從而使每個數據報可以在目的計算機裏得到重組。

還有一個方麵,IP定義了存活時間的概念,TTL(Time to Live)規範被設置為128的缺省值,它表示128個波跳(Hop)或128毫秒。路由器每處理一次數據報,它就將TTL減少一個單位,如果數據報在超過1秒的時間中還沒有被路由器傳輸出去,路由器可以將TTL減少不止一個單位。假如數據報到達目的計算機的時候TTL已經超時,那麼它就不得不被網絡丟棄。這樣的好處就避免了數據報在網絡中無限的循環從而耗費大量的帶寬和數據同步開銷並最終帶來災難性的後果。

19.3.3.4 網間控製報文協議(ICMP)

假定一個數據報文被拋棄的原因是TTL區域達到了0,或者一個大的報文中有一兩個數據報在傳輸的過程中被丟棄了,那麼發送端如何知道有出錯的信息返回呢?這就是網間控製報文協議的任務,它負責報告與IP數據報發布有關的錯誤和消息。此外,它還能發出數據源結束以及其他的自調節信令,這些信令能夠自動調整和優化數據的傳輸過程。

通常驗證網絡上的一個IP地址是否確實存在的最常用的工具是個人互聯網探索器(Ping)。它使用了網間控製報文協議(ICMP)的反饋請求和應答機製。反饋請求是一種簡單的有向數據報,它用來請求網上某一特定IP地址的應答消息。如果具有該地址的計算機存在並接收到上述請求,那麼就按規定發出一個反饋應答報文,該報文表明向源計算機通知它的存在。Ping工具程序的最常用的兩種用途:確認主機間端到端的連接和測量往返延遲時間。

19.3.3.5 網間分組管理協議(IGMP)

網間分組管理協議是一套規範,它允許按前麵所述的D類地址向IP地址組添加和刪除計算機。IP負責將D類地址分配到各計算機組,以使它們能夠作為一個功能單元接收廣播數據。它也提供了帶有多播組標識的路由器,它們能夠在其連接的網絡裏是活動的。這個消息在傳播到其他的路由器上,致使整個網絡都支持多播。

19.3.3.6 地址解析協議(ARP)

在局域網或廣域網上從一台計算機向另外一台計算機發送數據報,如果目的計算機的物理地址是未知的,就需要一些方法來解決IP地址與物理地址相對應的關係,除非IP協議打算在網絡上進行全程廣播。為得到這個信息,就依賴地址解析協議,它負責將網絡上的IP地址映射到存儲器中的物理地址。另外也有一個協議叫做逆向地址解析協議(RARP),它能逆向映射,將一個物理地址轉換成IP地址。

提供IP地址到物理地址的解析的很有效的方法是對每一台計算機建立一個轉換表。當一個應用程序發送數據到另一台計算機時,軟件能夠檢查轉換表尋找相應的物理地址。如果它的內存裏缺少某一映射,它就必須到網絡上尋找一個。

通常ARP是通過本地廣播的方法來尋找計算機的物理地址,隻要目標地址是本地的,ARP所作的不過是對計算機進行一次本地廣播,並向IP返回相應的物理地址。IP協議知道目標地址是本地的情況下,隻需將數據報附上目標計算機物理地址之上的IP地址即可。

但是實際上,目標地址經常在遠程網絡上,這時路徑往往包括了沿途的好幾個路由器。為達到其他的網絡,需要路由器監聽該報文並把它向前傳遞。然而,使它監聽報文的唯一途徑要麼進行一次廣播,要麼將該報文發往路由器的物理地址。IP可以非常敏銳的認識到IP地址在哪個遠程網絡裏,而且數據報必須被發往路由器進行處理,但它不知道相關路由器的物理地址,為此它必須求助於ARP並由它尋找。

19.3.4 TCP/IP裏著名的服務和高層協議

在TCP和UDP處理數據報後將之提交給高層的協議TCP/IP協議組中的高級協議中常包括了OSI參考模型中會話層、表示層、應用層的功能。這些協議提供了如文件傳輸、電子郵件終端等功能。本節就討論Internet會遇到的常用應用及協議。

19.3.4.1 域名服務(Domain Name System,DNS)

DNS是一種服務,把IP地址翻譯成易於記憶的名字的機製。在TCP/IP的早期,主機設備是通過它們的IP地址進行通信,或者通過每台主機上所安裝的名為HOSTS的文件標識。HOSTS文件中包含了Internet上所有計算機的IP地址與主機名稱的映射。但隨著Internet的日益壯大,主機數目突飛猛進,維護和管理HOSTS文件副本的工作變得難於管理。另外,定期下載更新的HOSTS文件也占用了大量的通信線路。很明顯,這就需要一個中心數據庫,執行注冊和主機名稱與IP地址的注冊和轉換等功能。

名字解析有多種實現的方法,其中主機表方案最簡單。主機表是一個文本文件,它存有IP地址和對應的主機名。程序中使用主機名時,該應用在主機表中查找是否有該主機名。若找到了,則將信息送給該主機。這樣每次傳輸文件時可用主機名,不用IP地址。

主機表很容易實現,但也不能太大。而且在動態網絡環境下需要不斷修改主機名,因此它隻能適應與極小的網絡。而DNS創建了一個大型的、分布式、層次型的數據庫,從而克服了主機表的限製。在整個數據庫(名字空間)中被分為若幹各自維護的單位(域),每個域中含其子域的地址信息。

InterNIC (互聯網信息中心,Internet Network Information Center)負責高級域名的管理。這些高級域名有.com (表示商業組織),.edu (表示教育機構,如大學等),.gov (表示政府機構),以及.org (表示非贏利的組織),此外還有表示國家的域名。表19-1對常見的一些互聯網域名作了一些總結。

表19-1 組織域名類型

DNS域名

組織的類型

.com

Commercial:分配給商業組織。如microsoft.com

.edu

Educational:分配給教育機構。

.gov

Government:分配給政府機構。如whitehouse.gov

.mil

Military:分配給美國政府軍事機構。

.org

非贏利的組織。

.net

Networking organization:分配給網絡組織。

由於頂級的域名實在太少,所以Internet Ad Hoc Committee (IAHC)又創建了以下新的頂級域,從1997年起開始使用:

.store--貨物交易

.webWeb--事務組

.arts--文化藝術團體

.rec--娛樂休閑資源

.info--信息服務

.nom--個人

另外,隨著Internet 的國際化發展,就有必要引進地理域( geographical domains)標識每個國家。Internet 采用ISO 3166建立的兩字符國家代碼,例如,www.bplus.au 站點位於澳大利亞。

19.3.4.2 文件傳輸協議(File Transmission Protocol, FTP)

文件傳輸協議(FTP)是一種高層的客戶/服務器協議,用於向遠端主機傳送文本和二進製文件和從遠端主機取得文本和二進製文件。

FTP服務器在TCP端口21上傾聽到來的FTP請求。請求到達後,服務器會提示用戶輸入有效的用戶名和口令,然後才能訪問FTP服務器,用該用戶名的有限的權限上裝和下載文件。但大多數的服務器有一特殊的用戶名Anonymous (匿名),口令可以輸入電子郵件的地址,這樣就可以讓未注冊的用戶可訪問共用的文件。