2010-04-21 107 views

回答

7

無狀態的含義:

它不跟蹤的配置設置,交易信息或任何其他數據的下一屆會議。當一個程序「不保持狀態」(無狀態)或系統的基礎結構阻止程序維護狀態時,它不能將最後一個會話的信息帶入下一個會話,例如用戶選擇的設置或出現的條件處理。

HTTP:

HTTP協議,這是通信車輛爲Web交易,是無狀態的。網頁發送給用戶後,連接關閉。已經開發了反制措施,例如使用cookie,以維護用戶在網站上逐頁移動的狀態。

或者它可以是簡單的網絡定義:

協議是無狀態的,如果有後續的請求 - 響應對之間沒有關係。服務器可以唯一地處理每個請求,並且不必爲客戶端保留會話狀態。

4

當你寫一個富客戶端應用程序,您可以在您方便的任意存儲狀態。在網絡中,客戶沒有義務傳遞任何可用於保留永久信息的信息,因此您的Web服務器可能處於永久失憶狀態。每當您的客戶要求提供另一個頁面時,您只能使用線索或提示說,這是同一個人與您交談。

爲了模擬狀態,您必須使用cookie(或某些認證機制),並結合服務器端機制將這些cookie與實際的每個用戶數據相關聯。您也無法可靠地信任該Cookie,因此您必須權衡以確定該關聯的可靠程度。另外,副作用是你永遠不會真正知道用戶何時完成了會話,所以你不能依靠返回來完成諸如關閉數據庫連接之類的事情。基本上,您必須針對每個請求上的交互作出所有重要決策,然後假設用戶永遠不會回來。

1

理解HTTP和解決客戶端和服務器之間共享狀態的問題的一種方法是「篡改」來自Web瀏覽器和網站之間通信的數據。

This firefox插件只是做這個偉大的。

您可以看到,通過從瀏覽器發送請求,客戶端只會說出一些有關請求的一些基本參數的信息。
這不足以讓服務器知道客戶端過去發生了什麼(=狀態)。

某種方式來傳遞瀏覽器有關您的狀態的一些信息是通過使用cookie,這只是變量中的一些信息附加到您的請求,您也可以通過tamperdata插件看到。

0

有狀態和無狀態是描述計算機或計算機程序是否被設計爲記錄並記住與用戶,另一計算機或程序,設備或其他外部元件的給定的交互序列中的一個或多個先前事件的形容詞。有狀態意味着計算機或程序通常通過設置爲此目的指定的存儲字段中的值來跟蹤交互的狀態。無狀態意味着沒有先前交互的記錄,並且每個交互請求必須完全基於隨之而來的信息來處理。有狀態的和無狀態的來源於國家作爲一系列條件的使用。 (計算機本質上處於運行狀態,因此這些術語用於特定交互集的上下文中,而不是一般計算機的工作方式。)

Internet的基本協議Internet協議(IP)是無狀態交互的例子。每個數據包完全獨立傳輸,而不涉及任何其他數據包。當您從網站請求網頁時,請求會以一個或多個數據包的形式傳輸,每個數據包都獨立於另一個數據包,就Internet協議程序本身而言。 (上層傳輸控制協議 - TCP - 確實將數據包彼此關聯,但使用數據包內的信息而不是某些外部信息來執行此操作。)術語無連接還用於描述進行連接的通信,以及終止每個發送的消息。 IP無連接以及無狀態。

Web的超文本傳輸​​協議(HTTP),TCP/IP上的應用層也是無狀態的。每個來自用戶的網頁或URL請求都會導致所請求的頁面被服務,但沒有Web(HTTP)服務器稍後記住請求。換句話說,沒有記錄的連續性。每一封信都是離散的,與前面或後面的內容無關。爲了進行有狀態的通信,站點開發人員必須提供一個服務器可以調用的特殊程序,可以記錄和檢索狀態信息。 Web瀏覽器(如Netscape Explorer和Microsoft Internet Explorer)在其可以存儲和訪問狀態信息的子目錄中提供一個區域。 Web瀏覽器和服務器應用程序在該區域中放置的區域和信息稱爲cookie。

在正式協議規範中,有限狀態機是一個有狀態系統如何工作的抽象描述,描述了遵循每種可能狀態的動作。因特網(包括萬維網)可以被認爲是無狀態的系統或機器。大多數電腦,人類和大象都是有狀態的。