對服務器程序來說,有兩個基本假設十分重要,究竟服務器是基於狀態請求還是無狀態請求。狀態化的判斷是指兩個來自相同發起者的請求在服務器端是否具備上下文關系。如果是狀態化請求,那么服務器端一般都要保存請求的相關信息,每個請求可以默認地使用以前的請求信息。而無狀態請求則不行,服務器端所能夠處理的過程,他的處理信息必須全部來自於請求所攜帶的信息以及其他服務器端自身所保存的、並且可以被所有請求所使用的公共信息。
無狀態的服務器程序,最著名的就是WEB服務器。每次HTTP請求和以前都沒有啥關系,只是獲取目標URI。得到目標內容之后,這次連接就被殺死,沒有任何痕跡。在后來的發展進程中,逐漸在無狀態化的過程中,加入狀態化的信息,比如COOKIE。服務端在響應客戶端的請求的時候,會向客戶端推送一個COOKIE,這個COOKIE記錄服務端上面的一些信息。客戶端在后續的請求中,可以攜帶這個COOKIE,服務端可以根據這個COOKIE判斷這個請求的上下文關系。COOKIE的存在,是無狀態化向狀態化的一個過渡手段,他通過外部擴展手段,COOKIE來維護上下文關系。
狀態化的服務器有更廣闊的應用范圍,比如MSN、網絡游戲等服務器。他在服務端維護每個連接的狀態信息,服務端在接收到每個連接的發送的請求時,可以從本地存儲的信息來重現上下文關系。這樣,客戶端可以很容易使用缺省的信息,服務端也可以很容易地進行狀態管理。比如說,當一個用戶登錄后,服務端可以根據用戶名獲取他的生日等先前的注冊信息;而且在后續的處理中,服務端也很容易找到這個用戶的歷史信息。
狀態化服務器在功能實現方面具有更加強大的優勢,但由於他需要維護大量的信息和狀態,在性能方面要稍遜於無狀態服務器。無狀態服務器在處理簡單服務方面有優勢,但復雜功能方面有很多弊端,比如,用無狀態服務器來實現即時通訊服務器,將會是場惡夢。