日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

HTTP 协议是无状态协议,怎么理解

發(fā)布時間:2023/12/18 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 HTTP 协议是无状态协议,怎么理解 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

?

HTTP 是一個屬于應(yīng)用層的面向?qū)ο蟮膮f(xié)議,HTTP 協(xié)議一共有五大特點:1、支持客戶/服務(wù)器模式;2、簡單快速;3、靈活;4、無連接;5、無狀態(tài)

?

無連接

無連接的含義是限制每次連接只處理一個請求。服務(wù)器處理完客戶的請求,并收到客戶的應(yīng)答后,即斷開連接。采用這種方式可以節(jié)省傳輸時間。

?

早期這么做的原因是 HTTP 協(xié)議產(chǎn)生于互聯(lián)網(wǎng),因此服務(wù)器需要處理同時面向全世界數(shù)十萬、上百萬客戶端的網(wǎng)頁訪問,但每個客戶端(即瀏覽器)與服務(wù)器之間交換數(shù)據(jù)的間歇性較大(即傳輸具有突發(fā)性、瞬時性),并且網(wǎng)頁瀏覽的聯(lián)想性、發(fā)散性導(dǎo)致兩次傳送的數(shù)據(jù)關(guān)聯(lián)性很低,大部分通道實際上會很空閑、無端占用資源。因此 HTTP 的設(shè)計者有意利用這種特點將協(xié)議設(shè)計為請求時建連接、請求完釋放連接,以盡快將資源釋放出來服務(wù)其他客戶端

?

隨著時間的推移,網(wǎng)頁變得越來越復(fù)雜,里面可能嵌入了很多圖片,這時候每次訪問圖片都需要建立一次 TCP 連接就顯得很低效。后來,Keep-Alive 被提出用來解決這效率低的問題。

?

Keep-Alive 功能使客戶端到服務(wù)器端的連接持續(xù)有效,當出現(xiàn)對服務(wù)器的后繼請求時,Keep-Alive 功能避免了建立或者重新建立連接。市場上的大部分 Web 服務(wù)器,包括 iPlanet、IIS 和 Apache,都支持 HTTP Keep-Alive。對于提供靜態(tài)內(nèi)容的網(wǎng)站來說,這個功能通常很有用。但是,對于負擔較重的網(wǎng)站來說,這里存在另外一個問題:雖然為客戶保留打開的連接有一定的好處,但它同樣影響了性能,因為在處理暫停期間,本來可以釋放的資源仍舊被占用。當Web服務(wù)器和應(yīng)用服務(wù)器在同一臺機器上運行時,Keep-Alive 功能對資源利用的影響尤其突出。?

?

這樣一來,客戶端和服務(wù)器之間的 HTTP 連接就會被保持,不會斷開(超過 Keep-Alive 規(guī)定的時間,意外斷電等情況除外),當客戶端發(fā)送另外一個請求時,就使用這條已經(jīng)建立的連接。

?

無狀態(tài)

無狀態(tài)是指協(xié)議對于事務(wù)處理沒有記憶能力,服務(wù)器不知道客戶端是什么狀態(tài)。即我們給服務(wù)器發(fā)送 HTTP 請求之后,服務(wù)器根據(jù)請求,會給我們發(fā)送數(shù)據(jù)過來,但是,發(fā)送完,不會記錄任何信息。

HTTP 是一個無狀態(tài)協(xié)議,這意味著每個請求都是獨立的,Keep-Alive 沒能改變這個結(jié)果。

缺少狀態(tài)意味著如果后續(xù)處理需要前面的信息,則它必須重傳,這樣可能導(dǎo)致每次連接傳送的數(shù)據(jù)量增大。另一方面,在服務(wù)器不需要先前信息時它的應(yīng)答就較快。

HTTP 協(xié)議這種特性有優(yōu)點也有缺點,優(yōu)點在于解放了服務(wù)器,每一次請求“點到為止”不會造成不必要連接占用,缺點在于每次請求會傳輸大量重復(fù)的內(nèi)容信息。

客戶端與服務(wù)器進行動態(tài)交互的 Web 應(yīng)用程序出現(xiàn)之后,HTTP 無狀態(tài)的特性嚴重阻礙了這些應(yīng)用程序的實現(xiàn),畢竟交互是需要承前啟后的,簡單的購物車程序也要知道用戶到底在之前選擇了什么商品。于是,兩種用于保持 HTTP 連接狀態(tài)的技術(shù)就應(yīng)運而生了,一個是 Cookie,而另一個則是 Session。

?

Cookie可以保持登錄信息到用戶下次與服務(wù)器的會話,換句話說,下次訪問同一網(wǎng)站時,用戶會發(fā)現(xiàn)不必輸入用戶名和密碼就已經(jīng)登錄了(當然,不排除用戶手工刪除Cookie)。而還有一些Cookie在用戶退出會話的時候就被刪除了,這樣可以有效保護個人隱私。

Cookies 最典型的應(yīng)用是判定注冊用戶是否已經(jīng)登錄網(wǎng)站,用戶可能會得到提示,是否在下一次進入此網(wǎng)站時保留用戶信息以便簡化登錄手續(xù),這些都是 Cookies 的功用。另一個重要應(yīng)用場合是“購物車”之類處理。用戶可能會在一段時間內(nèi)在同一家網(wǎng)站的不同頁面中選擇不同的商品,這些信息都會寫入 Cookies,以便在最后付款時提取信息。

?

與 Cookie 相對的一個解決方案是 Session,它是通過服務(wù)器來保持狀態(tài)的。

當客戶端訪問服務(wù)器時,服務(wù)器根據(jù)需求設(shè)置 Session,將會話信息保存在服務(wù)器上,同時將標示 Session 的 SessionId 傳遞給客戶端瀏覽器,瀏覽器將這個 SessionId 保存在內(nèi)存中,我們稱之為無過期時間的 Cookie。瀏覽器關(guān)閉后,這個 Cookie 就會被清掉,它不會存在于用戶的 Cookie 臨時文件。

以后瀏覽器每次請求都會額外加上這個參數(shù)值,服務(wù)器會根據(jù)這個 SessionId,就能取得客戶端的數(shù)據(jù)信息。

如果客戶端瀏覽器意外關(guān)閉,服務(wù)器保存的 Session 數(shù)據(jù)不是立即釋放,此時數(shù)據(jù)還會存在,只要我們知道那個 SessionId,就可以繼續(xù)通過請求獲得此 Session 的信息,因為此時后臺的 Session 還存在,當然我們可以設(shè)置一個 Session 超時時間,一旦超過規(guī)定時間沒有客戶端請求時,服務(wù)器就會清除對應(yīng) SessionId 的 Session 信息。

?

轉(zhuǎn)自:https://blog.csdn.net/tennysonsky/article/details/44562435

總結(jié)

以上是生活随笔為你收集整理的HTTP 协议是无状态协议,怎么理解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。