IPSEC流程例子及兩個階段的協商過程詳細介紹

2021-09-18 07:35:37 字數 2377 閱讀 9671

ipsec體系結構模型圖

我們來看乙個完整的ipsec體系結構模型圖,以便更好地理解ipsec體系結構。

ipsec流程圖

sakmp/ike第一階段稱為isakmp/ike的管理連線階段.使用雙向的udp埠為500的資料連線,來共享ipsec訊息.

第二階段(3條)

phase 2的目標是協商ipsec sa,而且只有一種模式,快速模式,快速模式的協商是受ike sa保護的

ipsec流程例項

為簡單起見,我們假設這是乙個intranet例子,每台主機都有處於啟用狀態的ipsec策略:

1.使用者甲(在主機a上)向使用者乙(在主機b上)傳送一訊息 

2.主機a上的ipsec驅動程式檢查ip篩選器,檢視資料報是否需要受保護以及需要受到何種保護 

3.驅動程式通知ike開始安全協商

4.主機b上的ike收到請求安全協商通知 

5.兩台主機建立第一階段sa,各自生成共享"主金鑰" 注:若兩機在此前通訊中已經建立起第一階段sa,則可直接進行第二階段sa協商 

6.協商建立第二階段sa對:入站sa和出站sa。sa包括金鑰和spi。 

7.主機a上ipsec驅動程式使用出站sa對資料報進行簽名(完整性檢查)與/或加密。(開始傳送資料報)

8.驅動程式將資料報遞交ip層,再由ip層將資料報**至主機b 

9.主機b網路介面卡驅動程式收到資料報並提交給ipsec驅動程式。 

10.主機b上的ipsec驅動程式使用入站sa檢查完整性簽名與/或對資料報進行解密。 

11.驅動程式將解密後的資料報提交上層tcp/ip驅動程式,再由tcp/ip驅動程式將資料報提交主機b的接收應用程式。

以上是ipsec的乙個完整工作流程,雖然看起來很複雜,但所有操作對使用者是完全透明的。中介路由器或**器僅負責資料報的**,如果中途遇到防火牆、安全路由器或**伺服器,則要求它們具有ip**功能,以確保ipsec和ike資料流不會遭拒絕。

這裡需要指出的一點是,使用ipsec保護的資料報不能通過網路位址解碼nat。因為ike協商中所攜帶的ip位址是不能被nat改變的,對位址的任何修改都會導致完整性檢查失效。

ipsec體系結構模型圖

我們來看乙個完整的ipsec體系結構模型圖,以便更好地理解ipsec體系結構。

ipsec流程圖

sakmp/ike第一階段稱為isakmp/ike的管理連線階段.使用雙向的udp埠為500的資料連線,來共享ipsec訊息.

第二階段(3條)

phase 2的目標是協商ipsec sa,而且只有一種模式,快速模式,快速模式的協商是受ike sa保護的

ipsec流程例項

為簡單起見,我們假設這是乙個intranet例子,每台主機都有處於啟用狀態的ipsec策略:

1.使用者甲(在主機a上)向使用者乙(在主機b上)傳送一訊息 

2.主機a上的ipsec驅動程式檢查ip篩選器,檢視資料報是否需要受保護以及需要受到何種保護 

3.驅動程式通知ike開始安全協商

4.主機b上的ike收到請求安全協商通知 

5.兩台主機建立第一階段sa,各自生成共享"主金鑰" 注:若兩機在此前通訊中已經建立起第一階段sa,則可直接進行第二階段sa協商 

6.協商建立第二階段sa對:入站sa和出站sa。sa包括金鑰和spi。 

7.主機a上ipsec驅動程式使用出站sa對資料報進行簽名(完整性檢查)與/或加密。(開始傳送資料報)

8.驅動程式將資料報遞交ip層,再由ip層將資料報**至主機b 

9.主機b網路介面卡驅動程式收到資料報並提交給ipsec驅動程式。 

10.主機b上的ipsec驅動程式使用入站sa檢查完整性簽名與/或對資料報進行解密。 

11.驅動程式將解密後的資料報提交上層tcp/ip驅動程式,再由tcp/ip驅動程式將資料報提交主機b的接收應用程式。

以上是ipsec的乙個完整工作流程,雖然看起來很複雜,但所有操作對使用者是完全透明的。中介路由器或**器僅負責資料報的**,如果中途遇到防火牆、安全路由器或**伺服器,則要求它們具有ip**功能,以確保ipsec和ike資料流不會遭拒絕。

這裡需要指出的一點是,使用ipsec保護的資料報不能通過網路位址解碼nat。因為ike協商中所攜帶的ip位址是不能被nat改變的,對位址的任何修改都會導致完整性檢查失效。

bootloader的兩個階段

bootloader一般都是分為兩個階段的,第乙個階段使用彙編來實現,它完成一些依賴於cpu體系結構的初始化,並呼叫第二階段的 第二階段則通常使用c語言來實現,這樣可以實現更複雜的功能,而且 會有更好的可讀性和移植性。兩個階段如下 一 第一階段功能 1 硬體裝置初始化 2 為載入bootloader...

兩個學習指標的例子

下面的結果是多少?int a 5 int example1 int b int example2 int b void main 輸出結果 a1 15 b1 5152 由於a是全域性變數,存放在全域性變數的記憶體區,它一直是存在的 而區域性變數則是存在於函式的棧區,當函式example2 呼叫結束後...

兩個Activity切換例子

activity01 import android.content.intent import android.os.bundle import android.view.view import android.widget.button public class activity01 extend...