自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

TCP/IP協(xié)議棧--IP選項處理

網(wǎng)絡 網(wǎng)絡管理
IP輸入函數(shù)將在驗證分組格式(檢驗和,長度等)之后,確定分組是否到達目的地之前,對選項進行處理。

[[121153]]

IP輸入函數(shù)(ipintr)將在驗證分組格式(檢驗和,長度等)之后,確定分組是否到達目的地之前,對選項進行處理。這表明分組所遇到的每個路由器以及最終的目的主機都對要分組的選項進行處理。

IP分組內可以包含某些在分組被轉發(fā)或被接收之前處理的可選字段。IP實現(xiàn)可以用任意順序處理選項。標準IP首部之后最多可跟40字節(jié)的選項。

 

 

1.選項格式

IP選項字段可能包含0個或多個單獨選項。選項有兩種類型,單字節(jié)和多字節(jié)。如圖所示:

 

 

所有選項都以1字節(jié)類型type字段開始。在多字節(jié)選項中,類型字段后面緊接著一個長度len字段,其他字段時數(shù)據(jù)data。許多選項數(shù)據(jù)字段的***個字節(jié)時1字節(jié)的位域offset字段,指向數(shù)據(jù)字段內的某個字節(jié)。長度字節(jié)的計算覆蓋了類型、長度和數(shù)據(jù)字段。類型被繼續(xù)分成三個子字段:1bit備份copied標志,2bit類class字段和5bit數(shù)字number字段。下圖列出了目前定義的IP選項。前兩個選項時單字節(jié)選項;其他的是多字節(jié)選項。

 

 

第1列顯示了Net/3的選項常量,第2列和第3列是該類型的十進制和二進制值,第4列是選項的長度。Net/3列顯示的是在Net3中由ip_dooptions實現(xiàn)的選項。IP必須自動忽略所有它不識別的選項。其中安全和流ID沒有在Net/3中實現(xiàn),流ID選項時過時的,安全選項主要時美國軍方使用。

當Net/3對一個有選項的分組進行分片時,它將檢查copied標志位。該標志位之處是否把所有選項都備份到每個分片的IP首部。class字段把相關的選項按下圖進行分組,除時戳選項具有class為2外,所有選項都是class為0.

2.ip_dooptions函數(shù)

ipintr在檢測分組的目的地址之前調用ip_dooptions.該函數(shù)處理分組中它所直到的所有選項。

ip_dooptions順序讀取每個選項并進行處理:如果遇到EOL選項則終止該循環(huán),如果遇到NOP選項,則忽略它,如果需要未知選項則忽略。

分組選項被處理后,如果分組需要被轉發(fā),分組被傳給ip_forward。如果處理選項時出現(xiàn)了錯誤,函數(shù)就會進入錯誤處理,發(fā)出適當?shù)腎CMP錯誤報文。下面幾節(jié)會具體說明選項的處理。

3.記錄路由選項

記錄路由選項使得分組在穿過互聯(lián)網(wǎng)時所經過的路由被記錄在分組內部,項的大小是源主機在構造時確定的,必須足夠保存所有預期的地址。我們記得在IP分組的首部,選項最多只能有40個字節(jié)。記錄路由選項可以有3個字節(jié)的開銷。后面緊跟地址的列表(每個地址4個字節(jié)),如果該選項是唯一選項,則最多可以有9個(3+4*9=39)地址出現(xiàn)。一旦分配給該選項的空間被填滿,

就按通常的情況對分組進行轉發(fā),中間的系統(tǒng)就不再記錄地址。下圖說明了一個記錄路由選項的格式。

 

 

如果IP目的地址時某個系統(tǒng)地址(分組已到達目的地),則把接收接口的地址記錄在選項中;否則把ip_rtaddr函數(shù)提供的外出接口的地址記錄下來。如果ip_rtaddr無法找到目的地路由,則發(fā)送一個ICMP主機不可達差錯報文。

ip_rtaddr函數(shù):該函數(shù)查詢路由緩存,必要時查詢完整的路由表,來找到到給定IP地址的路由。函數(shù)返回一個指向in_ifaddr結構的指針,該指針與該路由的外出接口有關。該函數(shù)中,rtalloc函數(shù)搜索路由表,尋找到目的地的路由。

4.源站和記錄路由選項

通常在中間路由器所選擇的路徑上轉發(fā)分組。源站和記錄路由選項允許源站明確制定一條到目的地的路由,覆蓋掉中間路由器的路由選擇決定。而且在分組到達目的地的過程中,把該路由記錄下來。

嚴格路由包含了源站和目的站之間的每個中間路由器的地址。寬松路由只指定某些中間路由器地址,在寬松路由中,路由器可以自由選擇兩個系統(tǒng)之間的任何路徑;而在嚴格路由中,則不允許路由器這么做。

如下圖,A,B和C是路由器,而HS和HD是源和目的主機。因為每個接口都有自己的IP地址,所以我們看到路由器A有三個地址:

A1,A2,A3。同樣,B和C也有多個地址。

 

 

IP首部的源和目的地址以及在選項中列出的位移和地址表,指定了路由以及分組目前在該路由中所處的位置。下圖顯示了當分組按照這個寬松路由從HS經過A,B,C到HD,信息時如何改變的,每行代表當分組被第1列顯示的系統(tǒng)發(fā)送時的狀態(tài),***一行顯示分組被HD接收。#p#

每個系統(tǒng)都把接口的地址放到選項去。通過這種方法, 分組所采用的路由都被記錄在選項中。被記錄的路由將被目的系統(tǒng)倒轉過來放到應答分組上,讓他們沿著原始的路由的逆方向發(fā)送。除了UDP,Net/3在應答時總是把收到的源路由逆轉過來。

 

 

選項處理主要包含以下幾個部分:

1)源路由的結束

如果IP首部的目的地址是某個本地地址,并且offset所指向的超過了源路由的末尾,源路由中沒有地址了,則分組已經到達了目的地,調用save_rte將源路由保存在如下圖所示的ip_srcrt結構中,因為在最終目的地,運輸協(xié)議必須能夠使用分組中被記錄下來的路由,運輸協(xié)議必須把該路由倒過來并附在所有應答的分組上。

 

 

2)為下一跳更新分組

如果IP首部目的地址是一個本地地址,并且offset指向選項內的一個地址,則該系統(tǒng)是源路由中指定的一個中間系統(tǒng),分組還沒有到達目的地。在嚴格路由中,下一個系統(tǒng)必須位于某個直接相連的網(wǎng)絡上,而在寬松路由中,如果沒有找到下一個系統(tǒng)的接口或路由,則發(fā)送一個ICMP源路由失敗差錯報文。

如果找到一個接口或一條路由,則更新IP目的地址設置為offset指向的IP地址。在源路由選項內,用外出接口的地址代替中間系統(tǒng)的地址,把offset增加,指向路由的下一個地址。

3)多播目的地

如果新的目的地址不是多播地址,在處理完所有選項后,應該把分組轉發(fā)不是返回給ipintr。

源路由中的多播地址允許兩個多播路由器通過不支持多播的中間路由器進行通信。

5.時間戳選項

當分組穿過一個互聯(lián)網(wǎng)時,時間戳選項使各個系統(tǒng)把它當前的時間表示記錄在分組的選項內。時間是以從UTC的午夜開始計算的毫秒計,被記錄在一個32bit的字段里。

如果系統(tǒng)沒有準確的UTC或沒有每秒更新至少15次,就不把它作為標準時間,非標準時間必須把時間戳字段的高位置位。

有三種時間戳選項,Net/3通過下圖所示的ip_timestamp結構訪問。

 

 

ip_flg指定的三種時間戳選項如下:

 

 

初始主機必須構造一個具有足夠大的數(shù)據(jù)區(qū)存放可能的時間戳和地址的地址的時間戳選項,對于ipt_flg為3的時間戳選項,

初始主機在構造該選項時,填寫要記錄時間戳的系統(tǒng)的地址。下圖顯示了三種時間戳選項的結構。

 

 

因為IP選項只有40個字節(jié),所以時間戳選項限制只能有9個時戳,或4個地址和時間時戳對。

責任編輯:林琳 來源: CSDN博客
相關推薦

2010-09-08 15:11:36

TCP IP協(xié)議棧

2010-09-08 15:24:28

TCP IP協(xié)議棧

2010-06-13 14:54:40

TCP IP協(xié)議棧linux

2010-09-08 15:15:12

TCP IP協(xié)議棧

2010-09-27 13:25:58

TCP IP協(xié)議棧

2010-09-08 15:34:27

TCP IP協(xié)議棧

2021-07-09 08:55:23

LinuxTCPIP

2010-06-13 13:39:46

TCP IP協(xié)議棧

2021-07-06 21:29:16

TCPIP協(xié)議棧

2019-09-30 09:28:26

LinuxTCPIP

2022-06-27 08:59:21

數(shù)據(jù)包TCP/IP協(xié)議棧

2020-07-09 08:14:43

TCPIP協(xié)議棧

2010-09-09 14:43:08

TCP IP協(xié)議棧

2010-06-19 13:32:36

TCP IP協(xié)議棧

2010-06-19 14:10:35

TCP IP協(xié)議棧

2021-05-12 00:07:27

TCPIP協(xié)議

2019-08-21 05:48:06

TCPIP協(xié)議棧

2010-09-08 15:18:54

單片機TCP IP協(xié)議棧

2010-06-08 13:32:19

TCP IP協(xié)議基礎

2010-06-08 14:23:47

TCP IP協(xié)議概念
點贊
收藏

51CTO技術棧公眾號