在協議棧中,傳輸層位于網絡層之上,傳輸層協議為不同主機上運行的進程提供邏輯通信,而網絡層協議為不同主機提供邏輯通信。這個區別很微妙,但是卻非常重要。
讓我們用一家人作為類比來說明一下這個區別。
設想一下有兩所房子,一個位于東海岸而另一個位于西海岸,每所房子里都住著12個小孩。東海岸的房子里的小孩和西海岸房子里的小孩是堂兄妹。兩所房子里的孩子喜歡互相通信——每個孩子每周都給每一個堂兄妹寫一封信,每一封信都由老式的郵局分別用信封來寄。
這樣,每一家每周就都有144封信要送到另一家(這些孩子如果可以用電子郵件的話就可以省掉很多錢了!)在每一家里面.都由一個孩子——西海岸的房子里的Ann和東海岸房子里的BilI——負責郵件的收集和分發。
每周Ann都從她的兄弟姐妹那里收集起來信件,并將這些信件送到每天都來的郵遞服務員那里。當信件到達西海岸的房子,Ann又將這些信件分發給她的兄弟姐妹。BilI在東海岸有著同樣的工作。
?在這個例于中,郵遞服務提供著兩所房子之間的邏輯通信——郵遞服務在兩所房子之間傳遞郵件,而不是針對每個人的服務。另一方面,Ann和BilI提供堂兄妹之間的邏輯通信——Ann和BilI從他們的兄弟姐妹那里收集郵件并將郵件遞送給他們。
注意,從這些堂兄妹的角度看,Ann和BilI是郵件的服務人,盡管他們倆只是端到端寄送服務的一部分(終端系統部分)。這個例子是傳輸層和網絡層之間的關系的一個形象比喻:主機(也稱為終端系統)=房子 進程=堂兄妹 應用程序消息=信封里的信 網絡層協議=郵遞服務(包括郵遞員)傳輸層協議=Ann和Bill繼續我們的這個例子,Ann和Bill各自在他們的家中做所有的工作:他們不負責各個郵遞中心的郵件分類工作以及將郵件從一個中心送到另一個中心的工作。這正與傳輸層協議在終端系統中的作用一樣。在一個終端系統中,傳輸層協議將應用進程的消息傳送到網絡邊緣(也就是網絡層),反之亦然:但是它并不涉及消息是如何在網絡層之間傳送的工作。
事實上,中間路由器對于傳輸層加在應用程序消息上的信息不能做任何識別和處理。?
繼續我們的例子,假設Ann和Bill都去度假了,另外一對堂兄妹——Susan和Harvey代替——他們來提供家庭內部的郵件收取和分發工作。不幸的是,Susan和Harvey所提供的收集和分發工作與Ann和Bill所提供的不完全相同。對于年齡更小的Susan和Harvey來說,他們收集和分發郵件的頻率比較少,而且偶爾會發生丟失信件的事情(這些信件偶爾被家里的狗吃掉了)。這樣,這一對堂兄妹Susan和Harvey提供了一套不同于Ann和Bill的服務(也就是說,服務模型不同)。
打比方來說,正如一個計算機網絡可以接受不同的傳輸層協議一樣,每一個協議為應用程序提供不同的服務模型。Ann和Bill所可能提供服務明顯地受限于郵遞服務所提供的服務。例如,如果郵遞服務并不提供在兩所房子之間傳遞郵件所需要的最大時限(如3天),那么Ann和Bill也就不能保證各個堂兄妹之間的郵件的最大延遲。同樣,傳輸層協議所提供的服務也通常受限于位于其下方的網絡層協議。如果網絡層協議不能提供主機之間傳送的4—PDU的延遲和帶寬保證,那么傳輸層協議也不能提供進程之間傳送的消息的延遲和帶寬保證。?
然而,即使當下面的網絡層協議使得網絡層并不能提供某些相應服務時,傳輸層協議仍然可以提供某些特定服務。例如,即使下面的網絡層協議并不是可靠的,也就是說,即使網絡層協議丟失、篡改或者復制了傳送的數據包,傳輸層協議也可以提供可靠的數據傳輸服務。
另一個例子是,即使網絡層不能保證4—PDU的保密性,傳輸層協議也可以通過加密的方式來保證應用程序消息不被入侵吝讀取。我們會在以后的文章里逐漸接觸到這些問題。
?j0??