1. 程式人生 > >《TCP/IP詳解卷一:協議》學習筆記一

《TCP/IP詳解卷一:協議》學習筆記一

一、分層

1、網路協議通常分不同層次進行開發,每一層分別負責不同的通訊功能。

2、TCO/IP通常被認為是一個四層協議系統:


 1)、鏈路層,有時候也被稱作資料鏈路層或網路介面層,通常包括作業系統中的裝置驅動程式和計算機中對應的網路介面卡。它們一起處理與電纜(或其他任何傳輸媒介)的物理介面細節。

 2)、網路層,有時也稱作網際網路層,處理分組在網路中的活動。在TCP/IP協議族中,網路層協議包括IP協議(網際協議),ICMP協議(internet網際網路控制報文協議),以及IGMP協議(internet組管理協議)。

 3)、運輸層主要為兩臺主機上的應用程式提供端到端的通訊。在TCP/IP協議族中,有兩個互不相同的傳輸協議:TCP(傳輸控制協議)和UDP(使用者資料報協議)。

 4)、應用層負責處理特定的應用程式細節。

3、在TCP/IP協議族中,網路層IP提供的是一個不可靠的服務,它只是儘可能快地把分組從源節點送到目的節點,不提供任何可靠性的保證。另一方面,TCP在不可靠的IP層上提供一個可靠的運輸層。

二、TCP/IP的分層

1、TCP/IP協議族中不同層次的協議


2、TCP使用不可靠的IP服務,但是它提供一種可靠的運輸層服務。

3、UDP為應用程式接收和傳送資料報。但是EDP是不可靠的,它不保證資料報能安全無誤的到達目的地。

4、IP是網際層的主要協議,同時被TCP和UDP使用。

5、ICMP是IP的附屬協議。IP層用它來與其他主機或路由器交換錯誤報文和其他重要的資訊。

6、IGMP是Internet組管理協議。它用來把一個UDP資料報多播到多個主機。

7、ARP(地址解析協議)和RARP(逆地址解析協議)是某些網路介面使用的特殊協議,用來轉換IP層和網路介面層使用的地址。

三、網際網路的地址

1、網際網路上的每個介面必須有一個唯一的Internet地址(也稱作IP地址)。IP地址長32bit。Internet地址並不採用平面形式的地址空間。IP地址具有一定的介面,五類不同的網際網路地址格式如下:


2、32位IP地址“點分十進位制表示法”


3、有三類IP地址

 1)、單播地址(目標為單個主機)

 2)、廣播地址(目的端為給定網路上的左右主機)

 3)、多播地址(目的端為同一組類的所有主機)

四、域名系統

1、域名系統是一個分佈的資料庫,由它來提供IP地址和主機名之間的對映資訊。

五、封裝

1、資料進入協議棧的封裝過程:


 1)、幀頭和幀尾所標註的數字是典型乙太網首部的長度。

 2)、乙太網資料幀的物理特性是其長度必須在46~1500位元組之間。

 3)、圖中IP和網路介面層傳送的資料單元應該是分組。分組既可以是一個IP資料報,也可以是IP資料報的一個片。

 4)、UDP資料和TCP資料基本一致。唯一不同的是UDP傳送給IP的資訊單元稱作UDP資料報,而UDP首部的長度為8位。

 5)、由於TCP、UDP、ICMP、IGMP都要向IP傳送資料,因此IP必須在生成的IP首部加入某種標識,以表明資料屬於那一層。IP在首部存入一個長度為8位的數值,稱作協議域。1表示IGMP協議,2表示ICMP協議,6表示TCP協議,17表示UDP協議。

 6)、TCP、UDP、網路介面也要在首部加入識別符號。

2、當應用程式用TCP傳送資料時,資料被送入協議棧中,然後逐個通過每一層直到被當作一串位元流送入網路。其中每一層對收到的資料都要新增一些首部資訊(有時還要新增尾部資訊)。

3、TCP傳給IP的資料單元稱作TCP報文段或簡為TCP段,IP傳給網路介面層的資料單元稱作IP資料報。通過乙太網傳輸的位元流稱作資料幀。

六、分用

1、當目的主機收到一個乙太網資料幀時,資料就開始從協議棧中由低往上升,同時去掉各層協議加上的報文首部。每層協議盒都要去檢查報文首部中的協議標識,以確定接受資料的上層協議。這個過程稱作分用。

2、乙太網資料幀的分用過程


七、客戶-伺服器模型

1、伺服器提供的服務分兩種型別:

 1)、重複型

 2)、併發型

2、重複型伺服器通過以下步驟進行互動:

 I、等待一個客戶請求的到來

 II、處理客戶請求

 III、傳送響應給傳送請求的客戶

 IV、返回第I步

3、併發型伺服器採用以下步驟:

 I、等待一個客戶請求的到來

 II、啟動一個新的伺服器來處理這個請求

 III、返回第I步

4、一般來說,TCP伺服器是併發的,而UDP伺服器是重複的,但也存在一些例外。

八、埠號

1、伺服器一般都是通過知名埠號來識別的。客戶使用臨時設定的埠號。

2、大多數TCP/IP實現給臨時埠分配1024~5000之間的埠號。大於5000的埠號是為其他伺服器預留的。

3、Uinx系統有保留埠號的概念。只有超級使用者特權的程序才允許給它自己分配一個保留埠號。