本頁使用了標題或全文手工轉換

對談 (電腦科學)

維基百科,自由的百科全書
跳至導覽 跳至搜尋

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

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

軟體實現[編輯]

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

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

伺服器端的對談[編輯]

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

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

客戶端的會話[編輯]

客戶端會話使用了Cookie和加密技術來完成上面提到的資料儲存需求。

伺服器端會話和客戶端的協同運作[編輯]

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

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

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