新手入門:瞭解網絡應用與網絡協議5

由因特網傳輸協議提供的服務

  TCP服務

  TCP服務模型包括面向連接的服務和可靠的數據傳輸服務。調用TCP作爲其傳輸協議的應用同時取得這兩種服務。

  面向連接的服務指的是客戶端和服務器端的TCP在開始傳輸應用層消息之前,先交換傳輸層控制信息。這個所謂的握手過程警示客戶和服務器,以便它們爲來自對方的分組衝擊做好準備。握手階段結束之後,我們說這兩個進程的套接字之間存在一個TCP連接(TCP connection)。這是一個全雙工的連接,也就是說客戶和服務器這兩個進程可以同時通過該連接向對方發送消息。完成消息的發送後,應用進程必須告知TCP拆除這個連接。稱這種服務爲“面向連接”服務而不是“連接”服務(或者說“虛電路”服務)的理由在於,它兩端的進程是以非常鬆散的方式連接的。

  可靠的傳輸服務指的是彼此通信的進程可以依賴TCP無錯地順序遞送所有數據。當其中任何一個應用進程把一個字節流傳入套接字時,它可以指望TCP把同樣的字節流遞送到對方的套接字,中間不會有字節的丟失或重複。

  TCP還包含一個擁塞控制機制,它是因特網的一種公益服務,其目的不在於讓彼此通信的進程直接受益。TCP擁塞控制機制在網絡變得擁塞時抑制發送進程(可以是客戶,也可以是服務器)。確切地說,TCP擁塞控制試圖把每個TCP連接限定在它所公平共享的網絡帶寬內。對於有最小帶寬需求限制的實時音頻和視頻應用來說,抑制傳輸率會有很壞的後果。此外,實時應用可容忍數據丟失,不需要完全可靠的傳輸服務。由於這些原因,實時應用程序的開發人員通常設計成在UDP而不是TCP上運行他們的應用。

  概述完TCP提供的服務後,我們說一下TCP沒有提供的服務。首先,TCP不保證最小傳輸率。具體地說,TCP不允許發送進程以想要的任意速率發送;相反,發送速率受到TCP擁塞控制的調節,發送進程有可能被迫以一個較低的平均速率發送。其次,TCP不提供任何延遲保證。具體地說,發送進程把數據傳入自己的TCP套接字之後,這個數據將最終到達其接收套接字,然而就該數據花多長時間到達那兒來說,TCP絕對不作保證。花幾十秒甚至幾分鐘等待TCP從web服務器往Web瀏覽器遞送一個消息(例如,其中含有一個HTML文件)也非罕見。總之,TCP保證遞送全部數據,但對遞送速率和所經歷的延遲不加保證。

  UDP服務

  UDP是一個不提供非必要服務的輕量級傳輸協議,具有一個最簡約的服務模型。UDP是無連接的,因此兩個進程彼此通信之前沒有握手過程。UDP提供不可靠的數據傳輸服務,也就是說當一個進程往自己的UDP套接字發出一個消息時,UDP不能保證這個消息會最終到達接收套接字。另外,就確實到達接收套接字的消息而言,它們的到達順序也可能與發送順序不一致。

  UDP不包含擁塞控制機制,因此發送進程能夠以任意速率往UDP套接字傾注數據。儘管不能保證所有的數據都到達接收套接字,但是仍會有相當比例的數據到達。實時應用程序的開發人員往往選擇在UDP上運行他們的應用。與TCP類似,UTP也不提供任何延遲保證。

  下表指出了一些流行的因特網應用所用的傳輸協議。我們看到,電子郵件、遠程終端訪問、web和文件傳送都使用TCP。這些應用選擇TCP的主要原因在於TCP提供可靠的數據傳輸服務,能夠保證所有數據最終到達其目的地。我們還看到,因特網電話一般運行在UDP之上。一個因特網電話應用的兩端都得以某個最小速率跨網絡發送數據:與TCP相比,UDP更可能滿足這個要求。另外,因特網電話應用可容忍數據丟失,因此並不需要由TCP提供的可靠數據傳輸服務。


表2:流行的應用及採用的協議

  我們已經指出,TCP和UDP都不提供定時保證,這是不是意味着時間敏感的應用不能運行在當今的因特網上呢?其答案顯然是否定的——時間敏感的應用已在因特網上存在好多年了。這些應用往往工作得相當出色,因爲它們已被設計成能夠盡最大程度地對付這種缺乏保證的服務。儘管如此,當延遲過大時(這在公共因特網中是常事),最聰明的設計也有其侷限。總之,當今的因特網通常能夠爲時間敏感的應用提供滿意的服務,但不能提供任何定時或帶寬上的保證。

  本文準備介紹的網絡應用

  因特網上,公衆域和專屬的應用層出不窮。我們不想百科全書式地羅列一大堆因特網應用,於是選了少數幾個既重要且流行的應用集中討論。我們將具體地討論4個流行的應用:Web、文件傳送、電子郵件、目錄服務。我們首先討論web,其原因不僅在於web是一個極其流行的應用,還在於它的應用層協議(即HTTP)相對簡單,可用於闡明網絡協議的許多關鍵因素。接下來討論文件傳送,因爲其協議與HTTP恰好形成對照,使得我們可以強調一些額外因素。我們還討論電子郵件,它是因特網中第一個高度流行的應用。應該看到,現代的電子郵件使用不止一個應用層協議。Web、文件傳送和電於郵件有共同的服務需求:需要可靠的傳輸服務,沒有特別的定時需求,能接受彈性帶寬服務。TCP提供的服務完全滿足這3個應用。域名系統(Domain Name System,DN5)是我們討論的第4個應用,它爲因特網提供目錄服務。多數用戶不會直接與DNS打交道;相反,他們通過其他應用(包括即將討論的那3個應用)間接求助於DNS。DNS精妙地展示了可以怎樣在因特網中實現分佈式數據庫。這4個即將討論的應用對時間都不大敏感。

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章