• 沒有找到結果。

執行流程

在文檔中 網路匿名連線機制研究 (頁 46-49)

第三章 系統設計與實作

3.7 執行流程

3.7.1 啟動匿名連線

分別向兩部(或兩部以上)proxy 發出匿名連線請求,proxy 收到請求後,從該 群組的所有 forwarder 中選出一部 last forwarder,並配置一 session number 給該部 提出匿名連線請求的 client,同樣的另外一部收到 client 提出匿名連線要求的 proxy 也一樣。

完整流程敘述如下:

<1>client 告知 proxyA 與 proxyB 將進行匿名連線,並把 client 自己的 public key 送給 proxyA 與 proxyB。

<2>proxyA 得知有一 client 將進行匿名連線時,先由該群組中選定一台 forwardwer 做為連線代理之 last forwarder,在此步驟中,由 proxyA 決定 last forwarder 是哪一台,而不是讓 client 決定 last forwarder 的原因在於,只有 proxyA 知道 有哪些 forwarder 可用,client 並不知道,因此 last forwarder 必須交由 proxyA 來決定,之後並針對 client 這次的匿名連線產生一 session number。同樣的 proxyB 也會於所屬群組中挑選出一部 last forwarder,以及一組 session number。

<3>最後將這些資訊,包括選定的 last forwarder_ID、last forwarder IP 位址、last forwarder 的 secret key 以及 proxy 所配置的 session number,使用 client 的 public key 加密起來回傳給 client。

<4>client 再決定之後與 server 傳遞封包要先送給哪部 proxy,若是選定 proxyA,

則之後封包移動路徑為

client Æ proxyA Æ { 數部為 proxyA 群組中的 forwarder} Æ LFA Æ LFB Æ server ,

若是選定為 proxyB,則之後封包移動路徑為

client Æ proxyB Æ { 數部為 proxyB 群組中的 forwarder } Æ LFB Æ LFA Æ server 。

3.7.2 傳遞封包

<1> client 開啟匿名連線功能後,所有封包皆會在 ip output function 中先經過處 理,再透過 proxy 去轉送。

<2>proxyA 收到 client 送來的封包後,依照 forwarding information 中的內容,先 檢查 source port number 與 destination port number,接著再選擇數台 forwarder(在 此以經一部 forwarder1 後到達 LFA 為例),依序包裝好 forwarder IP address 並加 密,再送出給第一部 forwarder1。

<3>Forwarder1 收到 proxy 送來的封包後,先解開一層,再由解開的封包內部資 訊中得知下一個目的地為 LFA,去除存放這些資訊的內容後重新填寫 IP header 後再送出。

<4>LFALFA 收到 forwarder1 送來的封包後,同樣先解開一層,並且由內部資訊 中得到下一個目的地為 LFB,同樣的,去除存放這些資訊的內容後重新填寫 IP header 後再送出。

<5>LFB 收到 LFA 送來的封包後,同樣先解開一層,由內部資訊中得知該封包必 須經自己轉送給 server,因此改變原始 IP header 中 source IP address,重算 TCP checksum 後再送出給真正的目的 server。

<6>當 server 收到由 last forwarder 送出給他的封包後,之後回覆的封包會送給 LFB,這是因為 server 會認為此連線是由 LFB 所要求的。而 LFB 收到 server 回 應的封包後,經由查表比對 session number、source port、destination port 與 pre-forwarder IP 位址,再將封包送回給 LFA。

<7>LFA 收到後,再回送給 proxyA。

<8>proxyA 收到此封包後,找出該封包真正的目的位址(client)之後,再選擇數部 forwarders 來轉送該封包(在此僅選擇一部 forwarder1),將轉送的 IP 位址資訊包 裝好,再送給該 forwarder1,透過該 forwarder1 將此封包轉送給 client。

3.7.3 結束匿名連線

當 client 欲結束匿名連線時,會先送出通知給 proxyA 與 proxyB,proxyA 與 proxyB 再分別通知 LFA 與 LFB 令其釋放對應 session number 相關的表格,最後 proxy 再清除對應 forwarder 上的資訊。

在文檔中 網路匿名連線機制研究 (頁 46-49)

相關文件