ip
位址耗盡促成了
cidr
的開發,但
cidr
開發的主要目的是為了有效的使用現有的
internet
位址。而同時根據
rfc 1631
(ip network address translator
)開發的
nat卻可以在多重的
internet
子網中使用相同的
ip,用來減少註冊
ip位址的使用。
nat技術使得乙個私有網路可以通過
internet
註冊ip
連線到外部世界,位於
inside
網路和outside
網路中的
nat路由器在傳送資料報之前,負責把內部
ip翻譯成外部合法位址。內部網路的主機不可能同時於外部網路通訊,所以只有一部分內部位址需要翻譯。
nat的翻譯可以採取靜態翻譯(
static translation
)和動態翻譯(
dynamic translation
)兩種。靜態翻譯將內部位址和外部位址一對一對應。當
nat需要確認哪個位址需要翻譯,翻譯時採用哪個位址
pool
時,就使用了動態翻譯。採用
portmultiplexing
技術,或改變外出資料的源
port
技術可以將多個內部
ip位址影射到同乙個外部位址,這就是
pat(
port address translator
)。當影射乙個外部
ip到內部位址時,可以利用
tcp的
load distribution
技術。使用這個特徵時,內部主機基於
round-robin
機制,將外部進來的新連線定向到不同的主機上去。注意:
load distributiong
只有在影射外部位址到內部的時候才有效。
nat使用的幾種情況:
a,連線到
internet
,但卻沒有足夠的合法位址分配給內部主機。
b,更改到乙個需要重新分配位址的
isp。
c,有相同的
ip位址的兩個
internat
合併。d
,想支援負載均衡(主機)。 採用
nat後,乙個最主要的改變就是你失去了端對端ip的
traceability
,也就是說,從此你不能再經過
nat使用
ping
和traceroute
,其次就是曾經的一些ip對
ip的程式不再可以正常執行,潛在的不易被觀察到的缺點就是增加了網路延時。
nat可以支援大部分
ip協議,但有幾個協議需要注意,首先
tftp
,rlogin,rsh,rcp
和ipmulticast
都被nat
支援,其次就是
bootp
,snmp
和路由表更新全部給拒絕了。
natinside local ip address:
指定於內部網路的主機位址,全域性唯一,但為私有位址。
inside global ip address:
代表乙個或更多內部
ip到外部世界的合法ip。
outside global ip address:
外部網路主機的合法ip。
outside local ip address:
外部網路的主機位址,看起來是內部網路的,私有位址。
****** translation entry:
影射ip
到另乙個位址的
entry
。extended translation entry:
影射ip
位址和埠到另乙個
pair
的entry。採用
nat,可以實現以下幾個功能:a,
translation inside local addressesb,
overloading inside global addressesc,
tcp load distributiond,
下面我們一一敘述它們的工作原理。 a
,內部位址翻譯(
translation inside local addresses)
:這是比較通用的一種方法,將內部
ip一對一的翻譯成外部位址。
在內部主機連線到外部網路時,當第乙個資料報到達
nat路由器時,
router
檢查它的
nat表,因為是
nat是靜態配置的,故可以查詢出來(
simply entry
),然後
router
將資料報的內部區域性
ip(源位址)更換成內部全域性位址,再**出去。外部主機接受到資料報用接受到的內部全域性位址來響應,
nat接受到外部回來的資料報,再根據
nat表把位址翻譯成內部區域性
ip,**過去。
b,內部全域性位址復用(
overloading inside glogal addresses
)使用位址和埠
pair
將多個內部位址影射到比較少的外部位址。這也是所謂的
pat。和內部位址翻譯一樣,
nat router
同樣也負責查表和翻譯內部
ip位址,唯一的區別就是由於使用了
overloading
,router
將復用同樣的內部全域性
ip位址,並儲存足夠的資訊以區分它和其他位址,這樣查詢出來的是
extended entry
。nat router
和外部主機的通訊採用翻譯過的內部全域性位址,故同一般的通訊沒有差別,
router
到內部主機通訊時,同樣要查
nat表。c,
tcp負載重分配(
tcp load distributing
)和以上兩種操作不同,這是
nat由外到內的翻譯,所以那種以為
web server
一定要放置到
nat外部的說法是錯誤的。
nat router
接受外部主機的請求並依據
nat表建立與內部主機的連線,把內部全域性位址(目的位址)翻譯成內部區域性位址,並**資料報到內部主機,內部主機接受包並作出響應。
nat router
再使用內部區域性位址和埠查詢資料表,根據查詢到的外部位址和埠做出響應。
此時,如果同一主機再做第二個連線,
nat router
將根據nat
表將建立與另一虛擬主機的連線,並**資料。
d,處理重疊網路。
這種方法主要用於兩個
intranet
的互連,同樣給我們處理兩個重疊網路提供了方法。它的實現要求
dns server
的支援(用於區別兩個不同的主機)。
1,主機
a要求向主機
c建立連線,先象
dns server
做位址查詢。2,
nat router
截獲dns
的響應,如果位址有重疊,將翻譯返回的位址。它將建立乙個
simply entry
把重疊的外部全域性位址(目的位址)翻譯成外部區域性位址。
3,路由器**
dns響應到主機
a,它已經把主機
c的位址(外部全域性位址)翻譯成外部區域性位址。
4,當路由器接受到主機
c的資料報時,它將建立內部區域性、全域性,外部全域性、區域性位址間的轉換,主機
a將由內部區域性位址(源位址)翻譯成內部全域性位址,主機
c將由外部全域性位址(目的位址)翻譯成外部區域性位址。
5,主機
c接受資料報並繼續通訊。
nat的具體配置和校驗不再敘述
測試題目:
1,請問
nat實現四種功能時查詢的
nat**是否相同,如果不同,說出它們的區別。
2,在使用動態位址翻譯時,要使用
acl,請問標準的和擴充套件的
acl都可以使用嗎?
3,在配置
nat後,所有資料報的交換可以走
fast-switch嗎?4
,如果nat router
沒有在nat
**中查詢到
nat位址影射,它如何處理發自內部主機的資料報?5,
nat操作時,由外到內和由外到內的翻譯是否相同?
6,我們是否可以將我們的
web server
放置到配置了
nat的
router
後的lan裡?7
,使用simply entry
的是nat
的哪種操作方式?
8,在哪種操作中更換
ip資料報的目的位址,又在實現什麼功能時更改源位址?
K近鄰相關概念及其Python實現
它是一種基本分類與回歸的方法。在分類時,根據其k個最近鄰的訓練例項的類別,通過多數表決等方式進行 k近鄰不具有顯式的學習過程。k近鄰法,實際上對應特徵空間的劃分。以最近鄰法為例,子空間的劃分,是相鄰點之間做垂直平分線 面,然後相交集後,劃分出的各個子空間。當例項點處在某一特徵子空間中,那麼它的類別就...
靜態鍊錶相關概念及其操作
靜態鍊錶結構 首先我們先來看看靜態鍊錶的結構定義 typedef structcomponent,staticlinklist maxsize status initlist staticlinklist l l maxsize 2 cur 0 備用鍊錶的表尾 l maxsize 1 cur 0 資...
LBA線性位址概念及其與CHS位址關係
lba,全稱logic block address 即扇區的邏輯塊位址 為什麼引入 lba概念?首先,由於int13的限制,三維位址c h s的最大值只能為1024 16 63,容量最大只能到1024x16x63 byte 528482304 byte 504 m。其次,在系統管理檔案時記錄繁瑣的c...