工作階段 (電腦科學)
此條目沒有列出任何參考或來源。 (2010年11月10日) |
在電腦科學領域來說,尤其是在網路領域,工作階段(英語:session,Microsoft Windows譯作工作階段、連線階段)是一種持久網路協定,在用戶端(或使用者代理)和伺服器端之間建立關聯,從而起到交換封包的作用機制,session在網路協定(例如telnet或FTP)中是非常重要的部分。
在不包含對談層(例如UDP)或者是無法長時間駐留對談層(例如HTTP)的傳輸協定中,對談的維持需要依靠在傳輸資料中的進階別程式。例如,在瀏覽器和遠端主機之間的HTTP傳輸中,HTTP cookie就會被用來包含一些相關的資訊,例如session ID,參數和權限資訊等。
軟體實現
TCP 工作階段通常是通過子行程和(或)多執行緒在軟體中實現的,當電腦建立或者加入一個工作階段時即建立一個新的行程或執行緒。HTTP 工作階段通常不會針對每個工作階段建立一個執行緒,而是由一個儲存每個工作階段狀態資訊的資料庫實現的。使用多執行緒或者多行程的方式帶來的好處是降低了軟體的複雜度,因為每個執行緒或者行程都單獨具備自己的歷史資訊並且封裝了變數。而這樣做的劣勢是帶來了大量系統資源的開銷,而且工作階段會因為系統的重新啟動而被打斷。
當用戶端在多個伺服器調取資料時,保持對談狀態的一致性是需要注意的,用戶端需用同時保持和某一個主機的連接,或者多個伺服器端需要共享一個儲存對談資訊的檔案系統或者資料庫。否則,當使用者在一個新的而不是一開始儲存對談資訊的主機上提交訪問請求的時候,主機會因為無法獲知原來主機的對談的訪問狀態而產生問題。
伺服器端的工作階段
伺服器端的對談是快速而高效的,但是在負載均衡系統和高速應用系統中的使用會比較麻煩,而在沒有儲存能力的系統上更是無法使用。在負載均衡系統中可以通過共享儲存或者設立獨立的儲存伺服器來解決,這需要根據系統的效率和載入分布的需求情況。
使用快取儲存對談資料是一種不需要儲存媒介的解決方案。這種方式適合於處理少量資料的用戶端操作(例如路由或網路橋接器對多個用戶端產生的請求)。但是這種方式會消耗較多主記憶體空間。
用戶端的對談
伺服器端對談和用戶端的協同運作
在動態頁面完成解析的時候,儲存在對談中的變數會被壓縮後傳輸給用戶端的Cookie。此時完全依靠用戶端的檔案系統來儲存這些資料(或者主記憶體)。
在每一個成功的請求中,Cookie中都儲存有伺服器端使用者所具有的身分證明(如PHP中的session id)或者更為完整的資料。
雖然這樣的機制可以儲存資料的前後關聯,但是必須要保障資料的完整性和安全性。