• 沒有找到結果。

Client 端

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

第三章 系統設計與實作

3.6 系統實作

3.6.1 Client 端

在 client 端,我們必須處理的情形,可分為匿名封包的送出,以及收取匿名 封包,而當 client 開啟匿名連線時,會向兩部以上 proxy 發出請求,兩部 proxy 分別會選定一台 last forwarder,在此假定由 proxyA 群組中選到的 last forwarder 稱為 LFA,另外一 proxyB 群組中選到的 last forwarder 稱為 LFB2,而 client 之後 會收到由 proxyA 回應的資訊為:LFA 的 IP 位址、一把 LFA 上用來 forwarding 的 secret key,在此令其為 LFA key,以及 LFA 在 proxyA 註冊時的 ID 編號,另 外就是 proxyA 對於這次 client 要求匿名連線給定的一個 session number。同樣的 也會從 proxyB 收到資訊為:LFB 的 IP 位址、一把 LFB 上用來 forwarding 的 secret key,在此稱其為 LFB key1,以及 LFA 在 proxyA 註冊時的 ID 編號,還有就是

proxyB 對於這次 client 要求匿名連線給定的一個 session number。最後 client 再 自己選定往與 server 溝通的封包時要送給哪部 proxy。本論文以下內容中接假定 client 會選定 proxyA 做為轉送封包的第一站,而最後送達 server 前的一部 forwarder 則為 LFB。下面說明與 server 溝通時送出封包的格式。

一個原始的 IP packet 格式如

2.1.1,由於我們目標是將封包傳送目標改為

proxyA,因此對原來的 IP packet 再加上一 IP header 以及 forwarding information。

格式如

3.5.1:

-3.6.1 client 送出要求 server 的封包格式-

淺灰底部分為我們加上去的 IP header,深灰則為 forwarding information,白底則 為原始 IP packet。

『forwarding information』欄位說明(由上而下):

‧Source port & Destination port number:大小為共為 32-bit,由原始 TCP/UDP 封 包中複製出一份相同的 Source port & Destination port number,目的是讓 proxyA 接收到該封包後可以取得這些資訊,以便將來轉送 server 回覆的封包給 client。

‧Packet type & packet length:大小為共為 32-bit,前半段 16-bit 填 0(request),接 著後面 16-bit 則填寫未加密前封包的長度(計算為這裡的 0 & packet length 到封 包尾端)。

‧32-bit LFB IP address:放置 LFB 的 IP 位址。

‧Packet type & packet length:大小為共為 32-bit,前半段 16-bit 填 0(request),接 著後面 16-bit 則填寫未加密前封包的長度(計算為這裡的 session number &

packet length 到封包尾端)。

‧LFB’s ID:大小為 32-bit,此值是 proxyB 給定的。

‧Session number:共 32-bit,前 16-bit 放 proxyA 指定的 session number,後 16-bit 則是存放 proxyB 所指定的 session number。

除此之外,client 尚還需處理 server 回覆(reply)的封包。Client 收到回覆的封 包格式如

3.6.2:

-3.6.2 client 收到 server 回覆的封包格式-

判斷是否為 reply 封包,我們在本論文中是以當封包的 IP protocol 欄位為 132

時,則 client 即在 ip_input fountion 中處理該封包。先在 ip_input function 中去掉 20bytes IP header,再使用 LFB key 解開剩下的部分,然後檢查 session number 欄 位與 last forwader ID 是否正確,若是都正確,則根據 length 欄位去除因加密所 padding 的部分,得到原始 server 回應封包,接著於原始封包 IP header 中 desintation IP address 欄位中填入 client 自己的 IP address,並重算 TCP checksum,或是令當 檢查 TCP checksum 時令其跳過不檢查(這是因為在 IP 層重算,之後檢查一定還 是正確的)。

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

相關文件