【1】TCP/IP協議族詳解-概述

聲明:本博客參考《TCP/IP詳解卷一:協議》

1.背景介紹

TCP/IP起源於6 0年代末美國政府資助的一個分組交換網絡研究項目,到 9 0年代已發展成爲計算機之間最常應用的組網形式。它是一個真正的開放系統,因爲協議族的定義及其多種實現可以不用花錢或花很少的錢就可以公開地得到。它成爲被稱作“全球互聯網”或“因特網(Internet)”的基礎。

2.網絡分層

 

上面左圖,是通常認爲的TCP/IP四層協議系統,在該系統中未考慮物理層。右圖展示了OSI七層模型與TCP/IP協議族模型之間的關係。下面詳細介紹每一層的功能:

(1)鏈路層:有時也稱作數據鏈路層或網絡接口層,通常包括操作系統中的設備驅動程序和計算機中對應的網絡接口卡。它們一起處理與電纜(或其他任何傳輸媒介)的物理接口細節。

(2)網絡層:有時也稱作互聯網層,處理分組在網絡中的活動,例如分組的選路。常見的協議有IP協議(網際協議),ICMP協議(Internet互聯網控制報文協議),以及IGMP協議(Internet組管理協議)。

(3)運輸層主要爲兩臺主機上的應用程序提供端到端的通信。在TCP/IP協議族中,主要有兩個不同的協議:TCP(傳輸控制協議)、UDP(用戶數據協議)。其中UDP速度快,不安全。TCP速度慢,使命必達。

(4) 應用層負責處理特定的應用程序細節。主要的協議有:Telnet遠程登陸、FTP文件傳輸協議、SMTP簡單郵件傳輸協議、SNMP簡單網絡管理協議。

使用較多的都是C/S(client/server)模型,這裏就拿C/S模型來舉例說明,協議分層的意義

①單網絡(局域網LAN)

關於圖片的說明

1>這是一個FTP客戶端程序和另一個FTP服務器程序的示例。

2>我們注意到應用程序通常是一個用戶進程,而下三層則一般在(操作系統)內核中執行。但這不是必須的,要依照操作系統而定。

3>每一幀數據的傳輸的順序都是(假定是從客戶端到服務器的數據):應用層->運輸層->網絡層->鏈路層->鏈路層->網絡層->運輸層->應用層。

②互聯網(廣域網WAN)

相比於上圖,本圖加了一個路由器。構造互連網最簡單的方法是把兩個或多個網絡通過路由器進行連接。是一種特殊的用於網絡互連的硬件盒。路由器的好處是爲不同類型的物理網絡提供連接:以太網、令牌環網、點對點的鏈接和FDDI(光纖分佈式數據接口)等等。

連接網絡的另一個途徑是使用網橋。網橋是在鏈路層上對網絡進行互連,而路由器則是在網絡層上對網絡進行互連。網橋使得多個局域網(LAN)組合在一起,這樣對上層來說就好像是一個局域網。TCP /IP傾向於使用路由器而不是網橋來連接網絡,因此我們將着重介紹路由器。

互聯網的目的之一是在應用程序中隱藏所有的物理細節。雖然這一點在上圖由兩個網絡組成的互聯網中並不很明顯,但是應用層不能關心(也不關心)一臺主機是在以太網上,而另一臺主機是在令牌環網上,它們通過路由器進行互連。隨着增加不同類型的物理網絡,可能會有2 0個路由器,但應用層仍然是一樣的。物理細節的隱藏使得互聯網功能非常強大,也非常有用

在TCP/IP協議族中,不同的協議在不同的層,下圖簡單說明了這一點。

3.IP地址

互聯網上的每個接口必須有一個唯一的Internet地址(也稱作IP地址)。IP地址長32 bit(IPv4)。下圖展示了五類不同的IP地址

需要注意的是多接口主機具有多個IP地址,其中每個接口都對應一個IP地址。

說到IP地址就不得不提到域名,我們平時訪問網絡都是使用域名,沒有人會去記住晦澀的IP地址,這就要歸功於DNS(域名系統)的功勞了,DNS是一個分佈式的數據庫。我在後面的博客中會進行介紹。

4.數據封裝和分用

數據通過互聯網傳輸的時候不可能是光禿禿的不加標識,如果這樣數據就會亂。所以數據在發送的時候需要進行封裝,加上特定標識。在數據使用的時候再去掉標識,去掉標識的過程就叫做分用。

用戶數據經過各層都會打上標識,添加上頭部。其中IP首部會標識數據的協議類型:TCP、UDP、ICMP、IGMP中的一種。 IP在首部中存入一個長度爲8 b i t的數值,稱作協議域。 1表示爲ICMP協議,2表示爲IGMP協議,6表示爲TCP協議,17表示爲UDP協議。類似地,許多應用程序都可以使用 T C P或U D P來傳送數據。運輸層協議在生成報文首部時要存入一個應用程序的標識符。 T C P和U D P都用一個1 6 b i t的端口號來表示不同的應用程序。T C P和U D P把源端口號和目的端口號分別存入報文首部中。網絡接口分別要發送和接收 I P、A R P和R A R P數據,因此也必須在以太網的幀首部中加入某種形式的標識,以指明生成數據的網絡層協議。爲此,以太網的幀首部也有一個 16 bit的幀類型域。

上圖展示了數據的分用,這是封裝的一個逆過程。

5.端口號

前面已經指出過,TCP和UDP採用16 bit的端口號來識別應用程序。服務器一般都是通過知名端口號來識別的。例如:FTP:21(TCP),Telnet:23(TCP),TFTP:69(UDP)。注意TCP和UDP端口是獨立的,即一個端口TCP使用了,UDP仍然可以用。任何T C P / I P實現所提供的服務都用知名的 1~1 0 2 3之間的端口號。這些知名端口號由Intenet號分配機構來管理。大於1024的端口可以讓用戶來使用。但是這種規則只是對大多數操作系統而言,也會有例外。一些服務進程使用端口示例:

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