7.1 引言
網際協議(Internet Protocol,IP)是TCP/IP協議簇在網路層使用的傳輸機制。
IP是一種不可靠的無串連資料報協議—盡最大努力交付(best-effort delivery)的服務。
7.2 資料報
網路層的分組稱為資料報(datagram)。
資料報是一個可變長度的分組,它由兩部分組成:首部和資料。
VER 版本
HLEN 資料報的首部總長度
服務類型(type of service,TOS)
資料長度=總長度-首部長度;總長度欄位定義了包括首部在內的資料報總長度。
標識、標記,分區位移用於分區。
存留時間:用於標緻資料報所經曆的最大跳數(路由器)
協議:標識使用IP服務的高層協議。
校正和:
源IP地址,目的IP地址:在ip資料報從源主機到目的主機過程中,這倆ip地址保持不變。 7.3 分區 7.3.1 傳輸單元最大值mtu IP協議的規定資料報的足底啊長度是65535位元組,為了穿過其他物理網路,不得不分割資料報,這個過程稱為分區(fragmentation)。 源點通常不會對IP分組進行分區(fragmentation)。因為運輸層會把資料劃分成IP與源點使用的資料連結層可接納的大小。
資料報在到達最後終點之間可以經過多次的分區。
資料報可以被源主機或途中的任何路由器分區,但資料報的重裝卻只能在目的主機上進行,因為每一個分區都變成了獨立的資料報。
當資料報被分區時,首部中的一些必要的部分必須被複製到所有分區中 與一個數報的分區與重裝有關的欄位是:標識、標誌和分區位移
只有資料報的資料是分區的。
7.3.2 與分區有關的欄位 與一個數報的分區與重裝有關的欄位是: 標識 、 標誌 和 分區位移 。 標識(identitification)
16位。注意:所有分區的識別欄位都是一樣的。此標識與源IP組合唯一的確定這個資料報。 所有的分區都具有相同的標識號,它也是未經處理資料報的標識號。這個標識號在終點重裝資料報時很有用。終點知道所有具有相同標識號的分區必須被組裝成一個資料報
標記(flag) 3位,除最後一個分區外,所有分區的標誌欄位中的“還有分區”位均被置1.
分區位移 13位。標識的這個分區在資料報的相對位置。 7.4 選項 IP資料報的首部由兩部分組成:固定部分(20位元組)和可變部分(不超過40位元組)
7.4.1 格式 選項的格式:一個位元組的類型欄位,一個位元組的長度欄位以及可變長度的值欄位。這三個欄位經常被稱為TLV(type-leght-value)。
類型欄位(type field)的長度為8位,它包括三個子欄位:複製、類型和編號。 複製:1位,控制選項在分區的出現。 類型:2位,00資料報控制,10排錯和管理。 編號:5位,定義了6種
·長度欄位(length field)定義選項的總長度,包括類型欄位和長度欄位本身。
·值欄位(value field)包含的是某些特定選項所需的資料。
7.4.2 選項類型 6種選項中:分為單位元組,多位元組 類型1:無操作選項(no-operation option)是個1位元組的選項,用作選項和選項之間的填充符
類型0:選項結束選項(end-of-option option)也是個1位元組的選項,用於選項欄位結束時的填充。
類型7:記錄路由選項(record-route option)是用來記錄處理資料報的網際網路路由器。
類型137:嚴格源路由選項(strict-source-route option)被源點用來預先指定資料報在網際網路中傳送時的路由。
類型131:不嚴格源路由選項(loose-source-route option)與嚴格源路由類似,但是不指定的路由器可以經過。
類型68:時間戳記選項(timestamp option)用來記錄路由器處理資料報的時間。 7.5 校正和
絕大多數TCP/IP協議採用的差錯檢測方法稱為檢驗和(checksum)。檢驗和能夠防止分組在傳輸期間出現的損壞。檢驗和是附加在分組上的冗餘資訊。
發送端計算校正和,
接收端計算校正和 7.5.3 IP分組中校正和
IP中的檢驗和只覆蓋首部,不包括資料。
7.6 IP在ATM中運行 7.6.1 ATM廣域網路
AAL5有時候被稱作簡單有效適配層(simple and efficient adaptation layer,SEAL)
ATM信元具有53位元組的固定長度,其中前5個位元組是信元頭,其餘48個位元組是有效載荷。
AAL5(效率更高),這裡需要對比其他協議。
7.6.2 信元的路由選擇
ATM網路在進入點路由器和離去點路由器之間建立一條路由。
IP地址(每個串連到ATM網路上的路由器都有一個IP地址。IP地址在IP層制定了特定路由器,但在ATM層沒有作用)
物理地址(在一個網路中每個地址都是唯一的,且用網路系統管理員來指定。作用於區域網路中MAC類似,建立串連時用)
虛電路標識符(ATM網路內部交換器使用虛電路標識符來(VPI,VPC)為信元選路,在資料轉送的時候使用)
地址綁定
7.7 安全性 7.7.1 安全問題
有三個安全問題是特別應用於IP協議的:分組竊取(packet sniffing)、分組篡改(packet modification)和IP偽裝(IP spoofing)。
7.7.2 IPSec
IPSec能夠提供以下四種服務:定義演算法和密鑰、區塊編碼器、資料完整性、起源鑒別。
7.8 IP軟體包
可以認為IP軟體包包含八個構件:首部添加模組、處理模組、轉寄模組、分區模組、重裝模組、路由表、MTU表和重裝表。此外,在軟體包中還包括一些輸入和輸出隊列。
·這個軟體包接受來自資料連結層和高層協議的應用。 7.8.1 首部添加模組
首部添加模組(headr-adding module)接受來自高層協議的資料及其目的IP地址。它通過添加IP首部,把資料封裝在一個IP資料報中
7.8.2 處理模組
處理模組(processing module)是IP軟體包的核心。接收來自一個介面或者首部添加模組的資料報。資料被轉寄和處理。
//從一個輸入隊列擷取資料 //判斷資料是否到達終點,是被重裝if(目的地址與本地地址一個相匹配){ 把資料報發給重裝模組 return;}if(本機是路由器){ TTL -1;}if(TTL <=0){ 丟棄報文。 發送ICMP差錯報文 返回
}
把資料包發送到轉寄模組
}
7.8.3 隊列
我們的軟體包使用了兩種類型的隊列:輸入隊列和輸出隊列。輸入隊列(input quenes)存放的是來自資料連結層或高層協議的資料報。輸出隊列(output squenes)存放的是將要發送到資料連結層或高層協議的資料。
·處理模組從輸入隊列中取出資料報。分區和重裝模組則向輸出隊列中添加資料報。
7.8.4 路由表
轉寄模組利用路由表確定分組的下一跳地址。 7.8.5 轉寄模組
轉寄模組(forwarding module)接收來自處理模組的IP分組。
7.8.6 MTU表
分區模組使用MTU表找出特定介面的最大傳送單元(maximum transfer unit,MTU)。mtu表只包含兩列:介面和mtu.
7.8.7 分區模組
//提取資料報長度if(長度>MTU){ if(D位置被置1) { 資料報被丟棄發送ICMP報錯報文 返回 } else{ 計算最大長度 把資料報分區 給分區添加首部 給分區添加需要的選項}else{ 直接發送
7.8.8 重裝表
重裝表(ressembly table)是重裝模組使用的。有5個欄位:狀態,源IP地址,資料報標識符,逾時,分區、
資料報標識符是一個數字,它唯一地定義了一個資料報以及屬於該資料報的所有分區。
7.8.9 重裝模組
重裝模組(ressenbly module)接收來自處理模組的,且已到達最終目的地的資料報分區。
就是找出一個分區是屬於哪個資料報的,把屬於同一個資料報的所有分區進行排序,所有的分區到達後組成一個資料報。預定超期到了分區資料還不齊,重裝模組就把這些分區丟棄。