• 沒有找到結果。

續傳功能

在文檔中 Web Content Recovery System (頁 12-0)

第二章 簡述 Web Service

2.6 續傳功能

在 HTTP/1.1 裡支援截取檔案的部份內容,方法是在 Request 裡的 Range 欄位內指定要截取的範圍及所使用的單位,但在 HTTP/1.1 裡只 支援一種單位就是 bytes,因此透過這個功能便可支援續傳的功能,或 是將檔案分割傳送以加快傳送的速度。

[Method] 檔名 版本 Accept: 指定可接受的 media type

Accept-Language: 限制所欲接收的所接收的 response 所使用的自 然語言

Accept-Encoding: 限制可使用的編碼格式(content-codings)

If-Modified-Since: 時間(optional) If-None-Match: “Etag”(optional) Connection: 指定所要使用的連線方式 Cache-Control:指定所需遵從的 cache 機制

圖 2-1 Request 封包格式 1(Method 依照使用的功能有不同的設定,如 果是要求檔案的話,Method 設為 GET;如果以 GET 或 POST 方式傳送附

加資訊,如留言版等,則將 Method 設為 POST。)

版本 狀態碼

Date: 說明此訊息所產生的日期和時間 Content Type: 本文所使用的 media type

Accept-Ranges: Range 所使用的單位 Last-Modified: 最後一次修改的日期

ETag: 檔案的 Tag 值

Content-Length: 表示本文內容的長度 本文

圖 2-2 Response 封包格式 2 2.7 虛擬目錄

所謂虛擬目錄,就是一個實際上不在主目錄中、但是用戶端瀏覽 器卻認為它在那裡的目錄。

2.7.1 虛擬目錄的設定

IIS 的虛擬目錄設定方法為:[開始]->[設定]->[控制台]->[系統 管理工具]->[電腦管理]->[服務及應用程式]->[Internet

Information Services] 選取”預設的 Web 站台”可看到目前設定虛 擬目錄及其真實路徑的對應,以及網頁根目錄下的所有目錄及網頁(圖

2-3)。在”預設的 Web 站台”上按右鍵->[新增]->[虛擬目錄]可開啟 設定虛擬目錄的功能,第一步先設定別名(圖 2-4),也就是所要新增的 虛擬目錄名稱,下一步則是選取所對應的真實目錄(圖 2-5),再下一步 則是設定目錄的權限(圖 2-6),接下來便完成設定的動作(圖 2-7),再 來便可看到新增的虛擬目錄出現在之前的列表中(圖 2-8)。

圖 2-3 虛擬目錄設定畫面 1

圖 2-4 虛擬目錄設定畫面 2

圖 2-5 虛擬目錄設定畫面 3

圖 2-6 虛擬目錄設定畫面 4

圖 2-7 虛擬目錄設定畫面 5

圖 2-8 虛擬目錄設定畫面 6

第三章 TCP Proxy 3.1 何謂 TCP Proxy

針對OSI model中的應用程式層之end port建立一Multithreaded Server來達成IP Tunnels,使由外界進來的封包資料能夠依照使用者設 定將封包送到指定的End Port上面。

一般來說封包的裡頭會記錄目的位址與目的port,裡頭記錄的通 常是其真正的目的地,也就是封包送到指定的位址與port後傳輸便完 成,可能再等待對方的回應,而TCP Proxy則是在這個連線中間在作一 個轉送點,也就是封包並非送給真正的目的地,而是先送給TCP Proxy 再由他轉送給真正的目的地,轉送的目的通常是希望能在封包上動些 手腳,如filter或流量控制等。

3.2 TCP Proxy實作

實作時所要面對的問題是如何將發送端的封包送到接收端,並將 接收端的封包回傳給發送端,也就是在服務對象不止一個連線的情況 下能將封包送到正確的地方,解決方法可將目的port改成真正目的地 的port後再送過去,讓目的服務程式感覺不出中間的轉送,並且讓目 的服務程式直接從所在port將資料送回給發送端或是直接擋在Server 的前面,先將所要處理的動作完成後,再送給Server(圖3-1),這屬於 較低階的作法;或是利用Client/Server架構(如圖3-2),並提供機制

讓每個連線獨立且互不影響,讓整個連線的動作都需透過TCP Proxy包 含Request和Response。

圖3-1 TCP Proxy作法一意示圖

圖3-2 TCP Proxy作法二意示圖 3.2.1 TCP Proxy Server

TCP Proxy Server所要負責的工作是接收發送端的封包,並轉送 給TCP Proxy Client,然後再接收由TCP Proxy Client所回傳的封包 並回傳給發送端。

3.2.2 TCP Proxy Client

TCP Proxy Client所負責的工作是從TCP Proxy Server接收封包,

並轉送給接收端,並將接收端回應的封包轉送給TCP Proxy Server。

3.2.3 彼此獨立的TCP Proxy Client/Server

每個TCP Proxy Client/Server為成對組合,每個連線都由一組TCP Proxy Client/Server來負責,彼此獨立互不影響,否則可能會將封包 傳送到錯誤的地方,作法上可以在TCP Proxy Server收到封包後,建 立一個Thread來執行TCP Proxy Client所要執行與回傳的工作,並將 TCP Proxy Server的Socket或fd傳入,這樣當TCP Proxy Client收到 接收端的回應時,便可透過此Socket或fd來將資料回傳給發送端,而 發送端與接收端的對應也是透過此機制來維持,因為是用獨立的 Thread來處理封包,因此不同的連線不會互相影響,而每個連線的對 應也是透過此機制來維持,不需額外的對應表來做對應。

3.2.4 TCP Proxy 內部的資料傳送

兩者之間的傳送方式,可不需透過封包來傳送,因在同個程式內,

所以只需透過簡單的參數傳送,將TCP Proxy Server(Client)收到的 封包傳給TCP Proxy Client(Server),甚至可將整個Socket傳入,將 整個Socket傳入的好處是可以等初始動作完成後再來接收資料,並且 當要把資料回傳時,也可直接使用此Socket,便能正確無誤的送到正

確的地方。

3.2.5 低階的作法

前面提到都是運作在AP層,所以實作起來還算簡單,移值性也較 高,因為高階的Socket程式寫法在許多平台上是差不多的,或許無法 直接移植,但也只需做部份修改,這種作法的適用範圍也會較大。如 果實作在底層如driver或NDIS,可能得有個對應表來作轉送的查詢,

做在底層的好處是可以限制無法直接由外部傳送封包到想要保護的 port,做法是當封包目的port為保護的port時就將封包的port改成其 他沒在用的port或是將CRC值改掉,使這個封包無效,但如果是運作在 AP層的話想要封鎖port不能從外部送入的話,可能需要OS提供這樣的 服務,或是用其他方法來達成。做在底層甚至可以直接擋在Server之 前,做完對封包所要做的處理後,直接送給Server。

3.2.6 可能遇到的問題

a. 當收到的封包還沒送完時,又有新的封包進來,如果只有一個 Buffer可能會被蓋過去,解決方法是建立一個queue來將存放封包,

並等待處理,就不會讓新的封包蓋掉舊的封包。

b. 當傳送檔案時,如果檔案很大且傳送速度太快,可能網路卡的 Buffer會不敷使用,而造成錯誤,此時需將程式等待一小段時間後 重送,這也是為什麼要用Thread來實作TCP Proxy的理由,因為這樣

等待才不會影響主程式的運作。

c. 如果實作在AP層需提供一個機制來使的即使對方將資料直接送往 Server所在的Port,也是徒勞無功,否則TCP Proxy的功能會因此消 失。

3.3 Web Service 結合 TCP Proxy 3.3.1 目的

Web Service 所提供的功能是製造廠商出貨時決定的,要修改他的 所提供的服務並不是簡單的事情,但如果能在 Request 進到 Web Service 前先做一點手腳,便可讓 Web Service 提供他原本的功能,但 卻產生額外的附加功能,也就是在不更動原 Web Service 的情況下加 入新的功能,也因非針對特定的 Web Service 來做處理,所以基本上 可以適用於所有的 Web Service,但還是得做些微的修改,如各家 Web Service 的虛擬目錄的讀取方式不同等。

3.3.2 缺點

如果無法將 Web Service 所在 port 限制為只能讓本機轉送,那只 要對方知道 Web Service 所在的 port,那掛在上面的 TCP Proxy 會視 同無效,所以需提供一個機制來讓即使知道 Web Service 所在的 port,

送出的 request 並無法得到想要的回應,也就是想要得到正確的結果 一定得透過 TCP Proxy 的轉送。

第四章 DES-X 介紹 4.1 何謂 DES

DES 為 Data Encrypt Standard(資料加密標準)的縮寫,在 1997 年 被美國國家標準與技術協會(National Institute of Standards and Technology,NIST)所採行;而 DES 就成為 NIST 所發布的第 46 項聯邦 資訊處理標準(FIPS PUB 46)。基本上 DES 屬於對稱式加密的一種,

其加密過程會使用一把 56 位元的鑰匙來對 64 位元的資料區段進行加 密,其演算法會透過一連串的步驟將 64 位元的輸入轉換成 64 位元的 輸出,同樣的步驟和鑰匙也被用在解密上。

4.2 DES 加密程序

DES 的加密與所有的加密架構一樣都需要兩各輸入:需要被加密的 明文和鑰匙。在 DES 中明文長度是 64 位元,而鑰匙的長度是 56 位元。

圖 4-1 是 DES 加密演算法的一般結構,我們可以看到密文處理分為三 階段。首先 64 位元的明文區段會通過一個起始重排程序(Initial Permutation,IP),IP 會重新組合其位元來產生「重新排列過的輸入」。 下一個階段是由具有相同功能的 16 個回合所組成,其中包含了重排與 取代這兩種函數,最後一回合(第 16 回合)所產生的 64 位元是根據 明文與鑰匙所產生的,其輸出的左右兩邊交換過來之後就形成了「前 期輸出(peroutput)」,這個前期輸出會經過一個重排程序(IP-1)來產

生 64 位元的密文。(IP-1是起始重排程序(IP)的反函數)

Initial permutation

Round 1

Round 2

Permuted choice 1

Left circular shit Permuted choice

2

Permuted choice

2 Left circular shit

K1

K2

. . .

. . .

. . .

Round 1

32-bit swap

Left circular shit Permuted choice

2 K16

Inverse initial permutation

…………

64-bit ciphertext

………… …………

64-bit plaintext 56-bit key

. . .

圖4-1 DES加密演算法的一般架構圖

4.2.1 起始重排程序(Initial Permutation) 起始重排與其逆運算是由表格來定義的:

為了確定這兩個程序的確是互為逆運算讓我們來考慮底下的 64 位元輸 入 M(依序為 M1~M64),此處的每個 Mi都表示一個二進位數字,則其重排 的結果 X=IP(M)就會如下所示:

所以我們將這個結果導入其逆運算,我們會得到:

Y = IP-1(X) = IP-1(IP(M)) 很明顯的我們發現所有位元又會還原成原來的順序。

4.2.2 單一回合的運作細節

圖 4-2 顯示了單一回合的內部架構。同樣地我們先來看圖的左邊,

我們將 64 位元的中間形式的左右兩半視為兩個獨立的 32 位元資料,

並且分別將它們標示為 L(左)與 R(右),每回合中的處理程序都可以用 下列的方程式來表示:

圖 4-2 DES 演算法中的單一回合流程圖

每回合中所使用的子鑰匙 Kn 是 48 位元,R 的大小是 32 位元,R 會先 被擴充為 48 位元而擴充的方式是透過下面的表格來定義:

這個表格定義了一個重排運算與一個擴充運算;這個擴充運算會複製 R 中的某 16 個位元,接下來所產生的 48 位元會被拿來產生 32 位元的輸 出,最後這 32 位元的資料會依照下表所定義的方式重新排列。

重排函數(P)

16 7 20 21 29 12 28 17 1 15 23 26 5 18 31 10 2 8 24 14 32 27 3 9 19 13 30 6 22 11 4 25

圖 4-3 DES 每回合 S-box 的流程圖

圖 4-3 所顯示的是在函數 F 中 S-box 所扮演的角色,整各取代運算是

圖 4-3 所顯示的是在函數 F 中 S-box 所扮演的角色,整各取代運算是

在文檔中 Web Content Recovery System (頁 12-0)

相關文件