天天看點

深入了解計算機網絡(一)——計網體系結構

目錄

1.1 應用層

1.2 運輸層

1.3 網絡層

1.4 資料鍊路層

1.5 實體層

1.6 總結一下

計算機網絡體系結構是指計算機網絡層次結構模型,它是各層的協定以及層次之間的端口的集合。在計算機網絡中實作通信必須依靠網絡通信協定,目前廣泛采用的是國際标準化組織(ISO)1997年提出的開放系統互聯(Open System Interconnection,OSI)參考模型,習慣上稱為ISO/OSI參考模型。

TCP/IP(transmission control protocol/internet protocol,傳輸控制協定/網際協定)由它的2個主要協定即TCP協定和IP協定而得名。TCP/IP是Internet上所有網絡和主機之間進行交流時所使用的共同“語言”,是Internet上使用的一組完整的标準網絡連接配接協定。通常所說的TCP/IP協定實際上包含了大量的協定和應用,且由多個獨立定義的協定組合在一起,是以,更确切地說,應該稱其為TCP/IP協定集。

學習計算機網絡時我們一般中和 OSI 和 TCP/IP 的優點,采用一種隻有五層協定的體系結構,這樣既簡潔又能将概念闡述清楚。

深入了解計算機網絡(一)——計網體系結構

結合網際網路的情況,自上而下地,非常簡要的介紹一下各層的作用。

1.1 應用層

應用層(application-layer)的任務是通過應用程序間的互動來完成特定網絡應用。應用層協定定義的是應用程序(程序:主機中正在運作的程式)間的通信和互動的規則。對于不同的網絡應用需要不同的應用層協定。在網際網路中應用層協定很多,如域名系統DNS,支援網際網路應用的 HTTP協定,支援電子郵件的 SMTP協定等等。我們把應用層互動的資料單元稱為封包。

應用層協定其實就是在傳輸層協定上辨別了端口号

域名系統

域名系統(Domain Name System縮寫 DNS,Domain Name被譯為域名)是網際網路的一項核心服務,它作為可以将域名和IP位址互相映射的一個分布式資料庫,能夠使人更友善的通路網際網路,而不用去記住能夠被機器直接讀取的IP數串。(百度百科)例如:一個公司的 Web 網站可看作是它在網上的門戶,而域名就相當于其門牌位址,通常域名都使用該公司的名稱或簡稱。例如上面提到的微軟公司的域名,類似的還有:IBM 公司的域名是 www.ibm.com、Oracle 公司的域名是 www.oracle.com、Cisco公司的域名是 www.cisco.com 等。

HTTP協定

超文本傳輸協定(HTTP,HyperText Transfer Protocol)是網際網路上應用最為廣泛的一種網絡協定。所有的 WWW(網際網路) 檔案都必須遵守這個标準。設計 HTTP 最初的目的是為了提供一種釋出和接收 HTML 頁面的方法。(百度百科)

1.2 運輸層

運輸層(transport layer)的主要任務就是負責向兩台主機程序之間的通信提供通用的資料傳輸服務。應用程序利用該服務傳送應用層封包。“通用的”是指并不針對某一個特定的網絡應用,而是多種應用可以使用同一個運輸層服務。由于一台主機可同時運作多個線程,是以運輸層有複用和分用的功能。所謂複用就是指多個應用層程序可同時使用下面運輸層的服務,分用和複用相反,是運輸層把收到的資訊分别傳遞上面應用層中的相應程序。

運輸層主要使用以下兩種協定:

  1. 傳輸控制協定 TCP(Transmission Control Protocol)--提供面向連接配接的,可靠的資料傳輸服務。
  2. 使用者資料協定 UDP(User Datagram Protocol)--提供無連接配接的,盡最大努力的資料傳輸服務(不保證資料傳輸的可靠性)。

TCP 與 UDP 的對比見問題三。

1.3 網絡層

在 計算機網絡中進行通信的兩個計算機之間可能會經過很多個資料鍊路,也可能還要經過很多通信子網。網絡層的任務就是選擇合适的網間路由和交換結點, 確定資料及時傳送。 在發送資料時,網絡層把運輸層産生的封包段或使用者資料報封裝成分組和包進行傳送。在 TCP/IP 體系結構中,由于網絡層使用 IP 協定,是以分組也叫 IP 資料報 ,簡稱 資料報。

這裡要注意:不要把運輸層的“使用者資料報 UDP ”和網絡層的“ IP 資料報”弄混。另外,無論是哪一層的資料單元,都可籠統地用“分組”來表示。

這裡強調指出,網絡層中的“網絡”二字已經不是我們通常談到的具體網絡,而是指計算機網絡體系結構模型中第三層的名稱.

網際網路是由大量的異構(heterogeneous)網絡通過路由器(router)互相連接配接起來的。網際網路使用的網絡層協定是無連接配接的網際協定(Internet Protocol)和許多路由選擇協定,是以網際網路的網絡層也叫做網際層或IP層。

IP資料報

IP是TCP/IP協定族中最核心的協定,所有的TCP、UDP、ICMP、IGMP資料都以IP資料報的格式傳輸。IP僅提供盡力而為的傳輸服務,如果發生某種錯誤,IP會丢失該資料,然後發送ICMP消息給信源端。另外,IP資料報可以不按發送順序接受。

IP資料報的格式如下:

深入了解計算機網絡(一)——計網體系結構

前20位元組和緊接其後的選項部分是IP資料報的首部,前20個位元組是固定的,選項可有可無。首部的每一行是一個32位字的機關,最高位在左邊,為0bit,最低位在右邊,為31bit。4位元組的32bit值按照以下次序傳輸:首先0-7bit,其次8-15比特,然後16-23bit,最後是24-31bit,這種傳輸次序稱為big endian位元組序(我們在C語言寫位操作的算法時常用到該詞)。TCP/IP首部中的所有二進制整數在網絡中傳輸時都要求以這種次序,是以它又稱作網絡位元組序,其他形式存儲的二進制資料,如little endian格式,則必須在傳輸資料之前把首部轉化成網絡位元組序。

首部長度是指首部占32bit字的數目,因為4位的最大值為15,是以首部最長為60位元組,也即是說選項部分的最大值為40位元組,不夠4的倍數,要用0填充,使資料部分的起始位址為4的倍數。

總長度指整個IP資料報的長度,包括首部和資料部分,16bit,最長可達65535位元組。盡管理論上可以傳送一個長達65535的IP資料報,但實際上還要考慮網絡的最大承載能力等因素,标準的TCP/IP分組大小為576位元組,減去IP首部的20個位元組,TCP首部的20個位元組,路由協定頭的24個位元組,為512位元組,是以主機接受的資料報的資料部分一般不超過512個位元組。

IP路由選擇

主機通過路由器和目的主機連接配接。主機通過IP資料報連接配接目的主機時,按照如下步驟搜尋(同一網絡中的搜尋要經過ARP協定将目的主機的IP位址解析為MAC位址):

  1. 搜尋路由表,優先搜尋比對主機,如果能找到和IP位址完全一緻的目标主機,則将該包發向目标主機
  2. 搜尋路由表,如果比對主機失敗,則比對同子網的路由器,這需要子網路遮罩的協助。如果找到路由器,則将該包發向路由器。
  3. 搜尋路由表,如果比對同子網路由器失敗,則比對同網号路由器,如果找到路由器,則将該包發向路由器。
  4. 搜尋路由表,如果以上都失敗了,就搜尋預設路由,如果預設路由存在,則發包
  5. 如果都失敗了,就丢掉這個包。

子網路遮罩

主機号再分成一個子網号和主機号,便将一個網絡又劃分成了若幹子網,子網路遮罩與該子網中的IP位址相與,便得到該子網,另外,子網對于子網内部的路由器是不透明的,也就是說IP資料報傳到該網絡的網關時,網關再将該資料報傳送到子網的預設路由器上,最後通過該路由器再傳遞給該主機。

ARP協定和RARP協定

前面已經說過,ARP協定隻用在區域網路中,它用來将IP位址解析為MAC位址。區域網路中的每個主機都有一個ARP緩存,它儲存了最近發起的IP位址到MAC位址的映射記錄,當該主機要向區域網路中的某一主機發送資料時,它會先從自己的緩存中查找,看是否存在目标IP位址,如果找到,就通過映射找到它的MAC位址,進而發送過去,如果沒有找到該目的IP位址,它就向該區域網路内發送一個廣播,廣播中包含自己的IP位址、MAC位址和目的主機的IP位址,區域網路内的所有主機都會收到該廣播,但隻有目的IP位址的主機會做出回應,并把自己的MAC位址發送給源主機,源主機收到後,在自己的ARP緩存中增加上該映射,并根據發來的MAC位址将資料發送給目的主機。 ARP高速緩存中的表項一般都要設定逾時值,如果一段時間内沒有與某主機通信,就将該主機對應的IP與MAC之間的映射關系去掉,下次在需要通信時,依然發送廣播。 如果ARP請求是從一個網絡的主機到另一個網絡的主機,那麼連接配接這兩個網絡的路由器就可以回答該請求,這個過程成為ARP代理。 RARP協定則剛好相反,它将MAC位址解析成為對應的IP位址,通常在DHCP中有內建,現在已很少單獨使用。

ARP的工作流程:

深入了解計算機網絡(一)——計網體系結構
  1. 在區域網路内,主機A要向主機B發送IP資料報時,首先會在主機A的ARP快取記錄中查找是否有IP位址及其對應的MAC位址,如果有,則将MAC位址寫入到MAC幀的首部,并通過區域網路将該MAC幀發送到MAC位址所在的主機B。
  2. 如果主機A的ARP快取記錄中沒有主機B的IP位址及所對應的MAC位址,主機A會在區域網路内廣播發送一個ARP請求分組。區域網路内的所有主機都會收到這個ARP請求分組。
  3. 主機B在看到主機A發送的ARP請求分組中有自己的IP位址,會像主機A以單點傳播的方式發送一個帶有自己MAC位址的響應分組。
  4. 主機A收到主機B的ARP響應分組後,會在ARP快取記錄中寫入主機B的IP位址及其IP位址對應的MAC位址。
  5. 如果主機A和主機B不在同一個區域網路内,即使知道主機B的MAC位址也是不能直接通信的,必須通過路由器轉發到主機B的區域網路才可以通過主機B的MAC位址找到主機B。并且主機A和主機B已經可以通信的情況下,主機A的ARP快取記錄中寸的并不是主機B的IP位址及主機B的MAC位址,而是主機B的IP位址及該通信鍊路上的下一跳路由器的MAC位址。這就是上圖中的源IP位址和目的IP位址一直不變,而MAC位址卻随着鍊路的不同而改變。
  6. 如果主機A和主機B不在同一個區域網路,參考上圖中的主機H1和主機H2,這時主機H1需要先廣播找到路由器R1的MAC位址,再由R1廣播找到路由器R2的MAC位址,最後R2廣播找到主機H2的MAC位址,建立起通信鍊路。

ICMP協定

ICMP經常被認為是IP層的一個組成部分,它是網絡層的一個協定,它傳遞差錯封包以及其他需要注意的資訊,ICMP封包通常被IP層或更高層(TCP、UDP等)使用,它是在IP資料報内傳輸的。

ICMP封包大緻分為兩類:查詢封包和差錯封包。

先來看差錯封包。當傳送IP資料報發生錯誤時(比如主機不可達、網絡不可達等),ICMP協定将會發送一個ICMP差錯封包給源主機,好讓主機做出相應的處理,也是以IP層以上的一些協定有可能做到可靠傳輸。書中給出了ICMP差錯封包中的一些組合(類型和代碼的組合)描述:如網絡不可達、網絡不可達、協定不可達、端口不可達等。這裡說下端口不可達的意思:UDP的規則之一是,如果收到一份UDP資料報而目的端口與某個正在使用的程序不相符,那麼UDP傳回一個ICMP不可達封包,将封包中的類型和代碼的組合設定為端口不可達。Traceroute程式就是利用端口不可達來産生ICMP差錯封包的。

另外,在大多數情況下,傳送IP資料報發生錯誤,會産生一個ICMP錯誤封包,但下面各種情況都不會導緻産生ICMP差錯封包:

  • ICMP差錯封包不會産生差錯封包(ICMP查詢封包可能會産生ICMP差錯封包);
  • 目的位址是廣播位址和多點傳播位址的IP資料報;
  • 作為鍊路層廣播的資料報;
  • 不是IP分片的第一片
  • 源位址不是單個主機的資料報。

這些規則是為了防止過去允許ICMP差錯封包對廣播分組影響所帶來的廣播風暴。 再來看ICMP查詢封包,查詢封包主要用途有:

  • 子網路遮罩查詢;
  • 時間戳查詢;
  • ping查詢。

ping程式

ping是ICMP的一個很著名的應用。ping程式時對兩個TCP/IP系統連通性進行測試的基本工具,它隻利用ICMP回應要求和回應答覆封包,而不用經過傳輸層,ping伺服器一般在核心中試下ICMP的功能。當某一個網站通路不了時,我們就可以ping一下這個網站,看下連通情況。

ping的工作過程:

  1. 向目的主機發送多個ICMP回送請求封包
  2. 根據目的主機傳回的回送封包的時間和成功響應的次數估算出資料包往返時間及丢包率。

Traceroute程式

Traceroute是ICMP協定的另一個重要應用,主要用來偵測源主機到目的主機之間所經過的路由的情況。Traceroute使用ICMP封包和IP首部中的TTL字段,其原理很簡單,開始時發送一個TTL字段為1的UDP資料報,而後每次收到ICMP逾時封包後,再發送一個TTL字段加1的UDP資料報,以确定路徑中的每個路由器,而每個路由器在丢棄UDP資料報時都會傳回一個ICMP逾時封包,最終到達目的主機後,由于ICMP選擇了一個不可能的值作為UDP端口(大于30000)。這樣目的主機就會發送一個端口不可達的ICMP差錯封包。

1.4 資料鍊路層

資料鍊路層(data link layer)通常簡稱為鍊路層。兩台主機之間的資料傳輸,總是在一段一段的鍊路上傳送的,這就需要使用專門的鍊路層的協定。 在兩個相鄰節點之間傳送資料時,資料鍊路層将網絡層交下來的 IP 資料報組裝成幀,在兩個相鄰節點間的鍊路上傳送幀。每一幀包括資料和必要的控制資訊(如同步資訊,位址資訊,差錯控制等)。

在接收資料時,控制資訊使接收端能夠知道一個幀從哪個比特開始和到哪個比特結束。這樣,資料鍊路層在收到一個幀後,就可從中提出資料部分,上交給網絡層。 控制資訊還使接收端能夠檢測到所收到的幀中有無差錯。如果發現差錯,資料鍊路層就簡單地丢棄這個出了差錯的幀,以避免繼續在網絡中傳送下去白白浪費網絡資源。如果需要改正資料在鍊路層傳輸時出現差錯(這就是說,資料鍊路層不僅要檢錯,而且還要糾錯),那麼就要采用可靠性傳輸協定來糾正出現的差錯。這種方法會使鍊路層的協定複雜些。

資料鍊路層主要有三個目的:

  • 為IP子產品發送和接受IP資料報;
  • 為ARP子產品發送ARP請求和接受ARP應答;
  • 為RARP發送RARP請求和RARP應答。

TCP/IP支援多種不同的資料鍊路協定,這取決于網絡所使用的硬體,如以太網、令牌環網、FDDI、RS-232串行線路等,當今TCP/IP采用的主要局網技術是以太網。

最大傳輸單元MTU: 資料鍊路層中的網絡對資料幀的長度都有一個限制,不同網絡的MTU值不同,常用的以太網為1500個位元組。

MTU主要是為了限制一次傳輸的最大IP資料報的值,如果IP層有一個資料報要傳,而且資料産度比資料鍊路層的MTU大,則就需要将IP資料報進行分片,使每一片都小于MTU。

路徑MTU: 當在同一網絡上的兩台主機互相進行通信時,該網絡的MTU是非常重要的,但如果兩台主機之間的通信要經過多個網絡,而每個網絡的鍊路層可能有不同的MTU,這時,要重點考慮的是兩台通信主機路徑中各網絡的最小MTU,稱它為路徑MTU。 兩台主機之間的路徑MTU把有一定是個常數,它取決于當時所選擇的路由,而且選路不一定是對稱的,即從A到B經過的路由和從B到A經過的路由不同,是以路徑MTU在兩個方向上不一定是一緻的。

1.5 實體層

在實體層上所傳送的資料機關是比特。

實體層(physical layer)的作用是實作相鄰計算機節點之間比特流的透明傳送,盡可能屏蔽掉具體傳輸媒體和實體裝置的差異, 使其上面的資料鍊路層不必考慮網絡的具體傳輸媒體是什麼。“透明傳送比特流”表示經實際電路傳送後的比特流沒有發生變化,對傳送的比特流來說,這個電路好像是看不見的。

在網際網路使用的各種協定中最重要和最著名的就是 TCP/IP 兩個協定。現在人們經常提到的TCP/IP并不一定單指TCP和IP這兩個具體的協定,而往往表示網際網路所使用的整個TCP/IP協定族。

1.6 總結一下

上面我們對計算機網絡的五層體系結構有了初步的了解,下面附送一張七層體系結構圖總結一下(圖檔來源于網絡)。

深入了解計算機網絡(一)——計網體系結構