從轉發表創建 IP 範圍
我正在解決練習問題,並得到:
考慮一個使用 8 位主機地址的數據報網路。假設一個路由器使用最長前綴匹配並且有如下轉發表:
| Prefix Match | Interface | | 1 | 0 | | 10 | 1 | | 111 | 2 | | otherwise | 3 |
這可以:
1100 0000
為1101 1111
為0
1000 0000
為1011 1111
為1
1110 0000
為1111 1111
為2
0000 0000
_0111 1111
_3
對於 的範圍
0
,為什麼前綴匹配不是狀態110
,最長的前綴匹配?我可以採取哪些步驟來考慮和計算這個範圍?
這個問題有點棘手,我一直在假設範圍內有順序進展。我意識到介面 0、1 或 2 都沒有包含 0000 0000 的目標地址,因此它將是其他範圍的開始。為了確定其他範圍的結束,我需要知道其他前綴匹配中未考慮的最小可能值。 因此,為介面的 0 前綴匹配減去 1 得到 0111 1111
0000 0000
。0111 1111``3
確定了範圍的開始,我可以確定結束嗎?是的!介面 2 將停在 1111 1111,知道兩者之間的前綴匹配是使用 AND 邏輯比較創建的,只有 1110 0000 會生成 111 的前綴匹配
到目前為止我有:
0000 0000
to0111 1111
for3
1XXX XXXX
to1XXX XXXX
for0
10XX XXXX
to10XX XXXX
for1
1110 0000
to1111 1111
for2
如果 1110 0000 是介面 2 範圍的開始,那麼從中減去 1 將得到下相鄰範圍的結束,即 1101 1111。現在,如果我將地址 1101 1111 通過轉發表它會退出介面 0。因此,1101 1111 是介面 0 的結束範圍。根據我擁有的範圍重新排列我的表格:
0000 0000
to0111 1111
for3
10XX XXXX
to10XX XXXX
for1
1XXX XXXX
to1101 1111
for0
1110 0000
to to1111 1111
for2
現在,將 1 添加到介面 3 的結束範圍產生:1000 0000。通過轉發表傳遞此值將使其退出介面 1。因此,1000 0000 是介面 1 範圍的開始。
0000 0000
to0111 1111
for3
1000 0000
to10XX XXXX
for1
1XXX XXXX
to1101 1111
for0
1110 0000
為1111 1111
_2
剩下要確定的是介面 0 的起點在哪裡,如果它是 1000 0000,它將與介面 1 重疊。因此,1100 0000 是唯一與它前綴匹配的地址,並且只有它。從 1100 0000 中減去 1,得到介面 1 地址範圍的結尾。
0000 0000
為0111 1111
為3
1000 0000
為1011 1111
為1
1100 0000
為1101 1111
為0
1110 0000
_1111 1111
_2
有人對此有任何意見嗎?