出自:http://blog.csdn.net/bingjing12345/article/details/9819731
無連接:服務(wù)器處理完客戶的請(qǐng)求误褪,并收到客戶的應(yīng)答后脆贵,即斷開連接忆植。
注:這里說的用戶應(yīng)答指小渊,它要確認(rèn)響應(yīng)內(nèi)容已經(jīng)傳到請(qǐng)求端了法褥,是tcp協(xié)議的應(yīng)答。 并不是用戶需要進(jìn)行什么額外操作酬屉。
早期這么做的原因是
HTTP協(xié)議產(chǎn)生于互聯(lián)網(wǎng)半等,因此服務(wù)器需要處理同時(shí)面向全世界數(shù)十萬、上百萬客戶端的網(wǎng)頁(yè)訪問,但每個(gè)客戶端(即瀏覽器)與服務(wù)器之間交換數(shù)據(jù)的間歇性較大(即傳輸具有突發(fā)性酱鸭、瞬時(shí)性)吗垮,并且網(wǎng)頁(yè)瀏覽的聯(lián)想性、發(fā)散性導(dǎo)致兩次傳送的數(shù)據(jù)關(guān)聯(lián)性很低凹髓,如果按照上面的方式則需要在服務(wù)器端開的進(jìn)程和句柄數(shù)目都是不可接受的烁登,象paranoid945所說的,大部分通道實(shí)際上會(huì)很空閑蔚舀、無端占用資源饵沧。因此HTTP的設(shè)計(jì)者有意利用這種特點(diǎn)將協(xié)議設(shè)計(jì)為請(qǐng)求時(shí)建連接、請(qǐng)求完釋放連接赌躺,以盡快將資源釋放出來服務(wù)其他客戶端狼牺。
隨著時(shí)間的推移,html頁(yè)面變得復(fù)雜了礼患,里面可能嵌入了很多圖片是钥,這時(shí)候每次訪問圖片都需要建立一次tcp連接就顯得低效了。因此Keep-Alive被提出用來解決效率低的問題缅叠。
這樣一來悄泥,客戶端和服務(wù)器之間的HTTP連接就會(huì)被保持,不會(huì)斷開(超過Keep-Alive規(guī)定的時(shí)間肤粱,意外斷電等情況除外)弹囚,當(dāng)客戶端發(fā)送另外一個(gè)請(qǐng)求時(shí),就使用這條已經(jīng)建立的連接领曼。
無狀態(tài)是指服務(wù)器不知道客戶端是什么狀態(tài)鸥鹉。
HTTP是一個(gè)無狀態(tài)協(xié)議,這意味著每個(gè)請(qǐng)求都是獨(dú)立的庶骄,Keep-Alive沒能改變這個(gè)結(jié)果毁渗。
然而,隨著時(shí)間的推移单刁,人們發(fā)現(xiàn)靜態(tài)的HTML著實(shí)無聊而乏味祝蝠,增加動(dòng)態(tài)生成的內(nèi)容才會(huì)令Web應(yīng)用程序變得更加有用。于是乎幻碱,HTML的語(yǔ)法在不斷膨脹绎狭,其中最重要的是增加了表單(Form);客戶端也增加了諸如腳本處理褥傍、DOM處理等功能儡嘶;對(duì)于服務(wù)器,則相應(yīng)的出現(xiàn)了CGI(Common Gateway Interface)以處理包含表單提交在內(nèi)的動(dòng)態(tài)請(qǐng)求恍风。
在這種客戶端與服務(wù)器進(jìn)行動(dòng)態(tài)交互的Web應(yīng)用程序出現(xiàn)之后蹦狂,HTTP無狀態(tài)的特性嚴(yán)重阻礙了這些交互式應(yīng)用程序的實(shí)現(xiàn)誓篱,畢竟交互是需要承前啟后的,簡(jiǎn)單的購(gòu)物車程序也要知道用戶到底在之前選擇了什么商品凯楔。于是窜骄,兩種用于保持HTTP狀態(tài)的技術(shù)就應(yīng)運(yùn)而生了,一個(gè)是Cookie摆屯,而另一個(gè)則是Session邻遏。
下面是關(guān)于cookie和session的一篇文章,少年已經(jīng)總結(jié)的相當(dāng)好了虐骑,直接拿來~
http://www.blogjava.net/cheneyfree/archive/2007/05/26/120168.html
Cookie是客戶端的存儲(chǔ)空間准验,由瀏覽器來維持。具體來說cookie機(jī)制采用的是在客戶端保持狀態(tài)的方案廷没,而session機(jī)制采用的是在服務(wù)器端保持狀態(tài)的方案糊饱。同時(shí)我們也看到,由于才服務(wù)器端保持狀態(tài)的方案在客戶端也需要保存一個(gè)標(biāo)識(shí)颠黎,所以session機(jī)制可能需要借助于cookie機(jī)制來達(dá)到保存標(biāo)識(shí)的目的另锋,但實(shí)際上還有其他選擇,比如說重寫URL和隱藏表單域狭归。