天天看點

網絡程式設計者必學的TCP/IP協定——分層

  1. 如何實作單機百萬連接配接;
  2. 如何優化三次握手、四次揮手;
  3. 如何優化TCP的傳輸速率;
  4. nginx零拷貝技術的實作;
  5. epoll原理剖析和面試必問的問題。
網絡程式設計者必學的TCP/IP協定——分層

參考教材:TCP/IP詳解卷1/2/3

如果你還對此有疑問?

戳這裡:https://ke.qq.com/course/2739583?flowToken=1024417

網絡程式設計者必學的TCP/IP協定——分層

帶你解決問題所在!實戰出發,直擊痛點!

網絡協定通常分不同層次進行開發,每一層分别負責不同的通信功能。一個協定族,比如 T C P / I P,是

一組不同層次上的多個協定的組合。 T C P / I P通常被認為是一個四層協定系統,如圖 1 - 1所示。

  1. 鍊路層,有時也稱作資料鍊路層或網絡接口層,通常包括作業系統中的裝置驅動程式和計算機

    中對應的網絡接口卡。它們一起處理與電纜(或其他任何傳輸媒介)的實體接口細節。

  2. 網絡層,有時也稱作網際網路層,處理分組在網絡中的活動,例如分組的選路。在T C P / I P協定族中,網絡層協定包括 I P協定(網際協定),I C M P協定(I n t e r n e t網際網路控制封包協定),以及I G M P協定(I n t e r n e t組管理協定)。

3 ) 運輸層主要為兩台主機上的應用程式提供端到端的通信。在 T C P / I P協定族中,有兩個

互不相同的傳輸協定:T C P(傳輸控制協定)和U D P(使用者資料報協定)。

T C P為兩台主機提供高可靠性的資料通信。它所做的工作包括把應用程式交給它的資料分

成合适的小塊交給下面的網絡層,确認接收到的分組,設定發送最後确認分組的逾時時鐘

等。由于運輸層提供了高可靠性的端到端的通信,是以應用層可以忽略所有這些細節。

而另一方面,U D P則為應用層提供一種非常簡單的服務。它隻是把稱作資料報的分組

從一台主機發送到另一台主機,但并不保證該資料報能到達另一端。任何必需的可靠

性必須由應用層來提供。

這兩種運輸層協定分别在不同的應用程式中有不同的用途,這一點将在後面看到。

4 ) 應用層負責處理特定的應用程式細節。幾乎各種不同的 T C P / I P實作都會提供下面這些

通用的應用程式:

• Telnet 遠端登入。

• FTP 檔案傳輸協定。

• SMTP 簡單郵件傳送協定。

• SNMP 簡單網絡管理協定。

另外還有許多其他應用,在後面章節中将介紹其中的一部分。

假設在一個區域網路( L A N)如以太網中有兩台主機,二者都運作 F T P協定,圖1 - 2列出了

該過程所涉及到的所有協定。

網絡程式設計者必學的TCP/IP協定——分層

這裡,我們列舉了一個 F T P客戶程式和另一個F T P伺服器程式。大多數的網絡應用程式都

被設計成客戶—伺服器模式。伺服器為客戶提供某種服務,在本例中就是通路伺服器所在主

機上的檔案。在遠端登入應用程式 Te l n e t中,為客戶提供的服務是登入到伺服器主機上。

在同一層上,雙方都有對應的一個或多個協定進行通信。例如,某個協定允許 T C P層進

行通信,而另一個協定則允許兩個 I P層進行通信。

在圖1 - 2的右邊,我們注意到應用程式通常是一個使用者程序,而下三層則一般在(操作系

統)核心中執行。盡管這不是必需的,但通常都是這樣處理的,例如 U N I X作業系統。

在圖1 - 2中,頂層與下三層之間還有另一個關鍵的不同之處。應用層關心的是應用程式的

細節,而不是資料在網絡中的傳輸活動。下三層對應用程式一無所知,但它們要處理所有的

通信細節。

在圖1 - 2中列舉了四種不同層次上的協定。 F T P是一種應用層協定, T C P是一種運輸層協

議,I P是一種網絡層協定,而以太網協定則應用于鍊路層上。 T C P / I P協定族是一組不同的協

議組合在一起構成的協定族。盡管通常稱該協定族為 T C P / I P,但T C P和I P隻是其中的兩種協

議而已(該協定族的另一個名字是 I n t e r n e t協定族(Internet Protocol Suite))。

網絡接口層和應用層的目的是很顯然的—前者處理有關通信媒介的細節(以太網、令牌

環網等),而後者處理某個特定的使用者應用程式( F T P、Te l n e t等)。但是,從表面上看,網絡

層和運輸層之間的差別不那麼明顯。為什麼要把它們劃分成兩個不同的層次呢?為了了解這

一點,我們必須把視野從單個網絡擴充到一組網絡。

在8 0年代,網絡不斷增長的原因之一是大家都意識到隻有一台孤立的計算機構成的“孤

島”沒有太大意義,于是就把這些孤立的系統組在一起形成網絡。随着這樣的發展,到了 9 0

年代,我們又逐漸認識到這種由單個網絡構成的新的更大的“島嶼”同樣沒有太大的意義。

于是,人們又把多個網絡連在一起形成一個網絡的網絡,或稱作互連網 ( i n t e r n e t )。一個互連

網就是一組通過相同協定族互連在一起的網絡。

構造互連網最簡單的方法是把兩個或多個網絡通過路由器進行連接配接。它是一種特殊的用

于網絡互連的硬體盒。路由器的好處是為不同類型的實體網絡提供連接配接:以太網、令牌環網、

點對點的連結和F D D I(光纖分布式資料接口)等等。

這些盒子也稱作I P路由器(IP Router),但我們這裡使用路由器( R o u t e r )這個術語。

從曆史上說,這些盒子稱作網關( g a t e w a y),在很多T C P / I P文獻中都使用這個術語。

現在網關這個術語隻用來表示應用層網關:一個連接配接兩種不同協定族的程序(例如,

TCP/IP和IBM的SNA),它為某個特定的應用程式服務(常常是電子郵件或檔案傳輸)。 圖1 - 3是一個包含兩個網絡的互連網:一個以太網和一個令牌環網,通過一個路由器互相

連接配接。盡管這裡是兩台主機通過路由器進行通信,實際上以太網中的任何主機都可以與令牌

環網中的任何主機進行通信。

在圖 1 - 3中,我們可以劃分出端系統( End system )(兩邊的兩台主機)和中間系統

(Intermediate system)(中間的路由器)。應用層和運輸層使用端到端( En d - t o - e n d)協定。在

圖中,隻有端系統需要這兩層協定。但是,網絡層提供的卻是逐跳( Ho p - b y - h o p)協定,兩

個端系統和每個中間系統都要使用它。

網絡程式設計者必學的TCP/IP協定——分層

在T C P / I P協定族中,網絡層 I P提供的是一種不可靠的服務。也就是說,它隻是盡可能快

地把分組從源結點送到目的結點,但是并不提供任何可靠性保證。而另一方面, T C P在不可

靠的I P層上提供了一個可靠的運輸層。為了提供這種可靠的服務, T C P采用了逾時重傳、發

送和接收端到端的确認分組等機制。由此可見,運輸層和網絡層分别負責不同的功能。

從定義上看,一個路由器具有兩個或多個網絡接口層(因為它連接配接了兩個或多個網絡)。

任何具有多個接口的系統,英文都稱作是多接口的 ( m u l t i h o m e d )。一個主機也可以有多個接口,

但一般不稱作路由器 , 除非它的功能隻是單純地把分組從一個接口傳送到另一個接口。同樣,

路由器并不一定指那種在網際網路中用來轉發分組的特殊硬體盒。大多數的 T C P / I P實作也允許

一個多接口主機來擔當路由器的功能,但是主機為此必須進行特殊的配置。在這種情況下,

我們既可以稱該系統為主機(當它運作某一應用程式時,如 F T P或Te l n e t),也可以稱之為路

由器(當它把分組從一個網絡轉發到另一個網絡時)。在不同的場合下使用不同的術語。

網際網路的目的之一是在應用程式中隐藏所有的實體細節。雖然這一點在圖 1 - 3由兩個網絡

組成的網際網路中并不很明顯,但是應用層不能關心(也不關心)一台主機是在以太網上,而

另一台主機是在令牌環網上,它們通過路由器進行互連。随着增加不同類型的實體網絡,可

能會有2 0個路由器,但應用層仍然是一樣的。實體細節的隐藏使得網際網路功能非常強大,也

非常有用。

連接配接網絡的另一個途徑是使用網橋。網橋是在鍊路層上對網絡進行互連,而路由器則是

在網絡層上對網絡進行互連。網橋使得多個區域網路( L A N)組合在一起,這樣對上層來說就

好像是一個區域網路。

TCP /IP傾向于使用路由器而不是網橋來連接配接網絡,是以我們将着重介紹路由器。文獻

[Perlman 1992]的第1 2章對路由器和網橋進行了比較。

繼續閱讀