工作階段 (電腦科學)

半永久交互信息交换

電腦科學領域來說,尤其是在網絡領域,工作階段(英語:sessionMicrosoft Windows譯作工作階段連線階段)是一種持久網絡協定,在用戶端(或用戶代理)和伺服器端之間建立關聯,從而起到交換封包的作用機制,session在網絡協定(例如telnetFTP)中是非常重要的部分。

在不包含對談層(例如UDP)或者是無法長時間駐留對談層(例如HTTP)的傳輸協定中,對談的維持需要依靠在傳輸數據中的進階別程式。例如,在瀏覽器和遠端主機之間的HTTP傳輸中,HTTP cookie就會被用來包含一些相關的資訊,例如session ID,參數和權限資訊等。

軟件實現

編輯

TCP 工作階段通常是通過子行程和(或)多線程在軟件中實現的,當電腦建立或者加入一個工作階段時即建立一個新的行程或線程。HTTP 工作階段通常不會針對每個工作階段建立一個線程,而是由一個儲存每個工作階段狀態資訊的資料庫實現的。使用多線程或者多行程的方式帶來的好處是降低了軟件的複雜度,因為每個線程或者行程都單獨具備自己的歷史資訊並且封裝了變數。而這樣做的劣勢是帶來了大量系統資源的開銷,而且工作階段會因為系統的重新啟動而被打斷。

當用戶端在多個伺服器調取數據時,保持對談狀態的一致性是需要注意的,用戶端需用同時保持和某一個主機的連接,或者多個伺服器端需要共用一個儲存對談資訊的檔案系統或者資料庫。否則,當用戶在一個新的而不是一開始儲存對談資訊的主機上提交訪問請求的時候,主機會因為無法獲知原來主機的對談的訪問狀態而產生問題。

伺服器端的工作階段

編輯

伺服器端的對談是快速而高效的,但是在負載均衡系統和高速應用系統中的使用會比較麻煩,而在沒有儲存能力的系統上更是無法使用。在負載均衡系統中可以通過共用儲存或者設立獨立的儲存伺服器來解決,這需要根據系統的效率和載入分佈的需求情況。

使用快取儲存對談數據是一種不需要儲存媒介的解決方案。這種方式適合於處理少量數據的用戶端操作(例如路由或網絡橋接器對多個用戶端產生的請求)。但是這種方式會消耗較多主記憶體空間。

用戶端的對談

編輯

用戶端對談使用了Cookie加密技術來完成上面提到的數據儲存需求。

伺服器端對談和用戶端的協同運作

編輯

在動態頁面完成解析的時候,儲存在對談中的變數會被壓縮後傳輸給用戶端的Cookie。此時完全依靠用戶端的檔案系統來儲存這些數據(或者主記憶體)。

在每一個成功的請求中,Cookie中都儲存有伺服器端用戶所具有的身份證明(如PHP中的session id)或者更為完整的數據。

雖然這樣的機制可以儲存數據的前後關聯,但是必須要保障數據的完整性和安全性。