一、背景介紹
域名是什么?
要解釋域名是什么,我們應(yīng)當(dāng)知道一些互聯(lián)網(wǎng)的基本概念
? ? ? ? 我們實(shí)現(xiàn)互聯(lián)網(wǎng)的方式中有一個網(wǎng)絡(luò)層的概念,這個網(wǎng)絡(luò)層在實(shí)體層和鏈接層上。網(wǎng)絡(luò)層引入了一套地址,用來區(qū)分不同的計(jì)算機(jī)是否屬于同一個子網(wǎng)絡(luò),建立“主機(jī)到主機(jī)”的通信基礎(chǔ)。這套地址就是“網(wǎng)絡(luò)地址”,也就是我們常說的網(wǎng)址互聯(lián)網(wǎng)實(shí)現(xiàn)的方式還規(guī)定了許多協(xié)議,其中規(guī)定網(wǎng)絡(luò)地址的協(xié)議,叫做IP協(xié)議。IP協(xié)議定義的地址就是我們常說的IP地址。IP地址是一個32位的二進(jìn)制數(shù),通常被分割為4個“8位二進(jìn)制數(shù)”(也就是4個字節(jié))。IP地址通常用“點(diǎn)分十進(jìn)制”表示成(a.b.c.d)的形式,其中,a,b,c,d都是0~255之間的十進(jìn)制整數(shù)。例:點(diǎn)分十進(jìn)IP地址(100.4.5.6),實(shí)際上是32位二進(jìn)制數(shù)(01100100.00000100.00000101.00000110)。
? ? ? ? IP地址用來建立互聯(lián)網(wǎng)通信,它具有唯一性,只有知道對方主機(jī)的IP地址,我們才能和對方主機(jī)互相通信。而這一串IP地址是非常難記的.這時候域名登場了。域名(Domain Name)是IP地址的映射,每個域名對應(yīng)一個唯一的IP地址。通俗的講,域名就是IP地址的代表。有了域名,我們就不用去記一長串的數(shù)字地址,而是可以用幾個有意義的詞來代替。比如我們官網(wǎng)的域名是:www.jnshu.com,對應(yīng)的ip地址就是121.41.226.206。我們不論輸入121.41.226.206還是www.jnshu.com,都可以訪問我們的官網(wǎng)。
? ? ? ?域名分成頂級域名,二級域名,三級域名等,比較少有四級域名。一個完整的域名由二個或二個以上部分組成,各部分之間用英文的句號"."來分隔,最右邊部分稱為頂級域名(TLD,也稱為一級域名,包含一個合法字符串,和一個域名后綴),頂級域名的左邊部分字符串到下個"."為止稱為二級域名(SLD),二級域名的左邊部分稱為三級域名,以此類推,每一級的域名控制它下一級域名的分配。例如jnshu.com是一級域名,www.jnshu.com是二級域名,test.skill.ptteng.com是三級域名。頂級域名[1]又分為兩類: 一是國家頂級域名,例如中國是cn,美國是us,日本是jp等。二是國際頂級域名,例如表示工商企業(yè)的.Com,表示網(wǎng)絡(luò)提供商的.net,表示非盈利組織的.org等
? ? ? ?使用域名訪問網(wǎng)站的時候,實(shí)際上是先經(jīng)過域名系統(tǒng)DNS (Domain Name Server)將域名解析成計(jì)算機(jī)識別的IP地址(二進(jìn)制數(shù)字串),系統(tǒng)再通過這個IP地址建立主機(jī)與主機(jī)的通信基礎(chǔ)。Hosts文件也可以解析域名,用來提高解析效率。在進(jìn)行DNS請求以前,系統(tǒng)會先檢查自己的Hosts文件中是否有這個地址映射關(guān)系,如果有則調(diào)用這個IP地址映射,如果沒有再向已知的DNS服務(wù)器提出域名解析。也就是說Hosts的請求級別比DNS高。當(dāng)Hosts文件里面有對應(yīng)的IP時,它就會直接訪問那個IP,可以跳過DNS的解析這一步,提高解析效率。
cookie\session是什么?
? ? ? ?Web應(yīng)用程序是使用HTTP協(xié)議傳輸數(shù)據(jù)的。HTTP協(xié)議是無狀態(tài)的協(xié)議。一旦數(shù)據(jù)交換完畢,客戶端與服務(wù)器端的連接就會關(guān)閉,再次交換數(shù)據(jù)需要建立新的連接。這就意味著服務(wù)器無法從連接上跟蹤會話。即用戶A購買了一件商品放入購物車內(nèi),當(dāng)再次購買商品時服務(wù)器已經(jīng)無法判斷該購買行為是屬于用戶A的會話還是用戶B的會話了。要跟蹤該會話,必須引入一種機(jī)制。Cookie就是這樣的一種機(jī)制。它可以彌補(bǔ)HTTP協(xié)議無狀態(tài)的不足。所以出現(xiàn)了Cookie機(jī)制是為了辯別用戶身份,進(jìn)行會話跟蹤而存儲在客戶端上的數(shù)據(jù);
cookie是什么?
? ? ? ?cookie指某些網(wǎng)站為了辨別用戶身份、進(jìn)行session跟蹤而儲存在用戶本地終端上的數(shù)據(jù)(通常經(jīng)過加密)。“Cookie”是小量信息,由網(wǎng)絡(luò)服務(wù)器發(fā)送出來以存儲在網(wǎng)絡(luò)瀏覽器上,從而下次這位獨(dú)一無二的訪客又回到該網(wǎng)絡(luò)服務(wù)器時,可從該瀏覽器讀回此信息。讓瀏覽器記住這位訪客的特定信息,如上次訪問的位置、花費(fèi)的時間或用戶首選項(xiàng)(如樣式表)客戶端請求服務(wù)器,服務(wù)器就使用response向客戶端瀏覽器頒發(fā)一個Cookie。客戶端瀏覽器會把Cookie保存起來。當(dāng)瀏覽器再請求該網(wǎng)站時,瀏覽器把請求的網(wǎng)址連同該Cookie一同提交給服務(wù)器。服務(wù)器檢查該Cookie,以此來辨認(rèn)用戶狀態(tài)。
cookie的分類:
? ? ? cookie分為會話cookie和持久cookie,會話cookie是指在不設(shè)定它的生命周期expires時的狀態(tài),前面說了,瀏覽器的開啟到關(guān)閉就是一次會話,當(dāng)關(guān)閉瀏覽器時,會話cookie就會跟隨瀏覽器而銷毀。當(dāng)關(guān)閉一個頁面時,不影響會話cookie的銷毀。持久cookie則是設(shè)定了它的生命周期expires,此時,cookie像商品一樣,有個保質(zhì)期,關(guān)閉瀏覽器之后,它不會銷毀,直到設(shè)定的過期時間。對于持久cookie,可以在同一個瀏覽器中傳遞數(shù)據(jù),比如,你在打開一個淘寶頁面登陸后,你在點(diǎn)開一個商品頁面,依然是登錄狀態(tài),即便你關(guān)閉了瀏覽器,再次開啟瀏覽器,依然會是登錄狀態(tài)。這就是因?yàn)閏ookie自動將數(shù)據(jù)傳送到服務(wù)器端,在反饋回來的結(jié)果。
什么是SESSION
? ? ? ?Session:在計(jì)算機(jī)中,稱為“會話控制”。是另一種記錄客戶狀態(tài)的機(jī)制,不同的是Cookie保存在客戶端瀏覽器中,而Session保存在服務(wù)器上。在打開瀏覽器第一次請求服務(wù)器時,服務(wù)器會自動為其創(chuàng)建一個session,并賦予其一個sessionID,發(fā)送給客戶端的瀏覽器(通過cookie)。以后客戶端接著請求本應(yīng)用中其他資源的時候,會自動在請求頭上添加:Cookie:JSESSIONID=客戶端第一次拿到的session ID。服務(wù)器端在接到請求時候,就會收到session ID,并根據(jù)ID在內(nèi)存中找到之前創(chuàng)建的session對象進(jìn)行比對,提供給請求使用。當(dāng)用戶在應(yīng)用程序的Web頁之間跳轉(zhuǎn)時,存儲在Session對象中的變量將不會丟失,而是在整個用戶會話中一直存在下去。
? ? ? ? Session的作用是回話跟蹤,比如購物車,當(dāng)A用戶點(diǎn)擊下單按鈕時,由于HTTP協(xié)議無狀態(tài),所以并不知道是哪個用戶操作的,所以服務(wù)端要為特定的用戶創(chuàng)建了特定的Session,用用于標(biāo)識這個用戶,并且跟蹤用戶,這樣才知道購物車?yán)锩嬗袔妆緯@幾本書是誰的。
Session刪除的時間:
1)Session超時:超時指的是連續(xù)一定時間服務(wù)器沒有收到該Session所對應(yīng)客戶端的請求,并且這個時間超過了服務(wù)器設(shè)置的Session超時的最大時間。
2)程序調(diào)用HttpSession.invalidate()
3)服務(wù)器關(guān)閉或服務(wù)停止
三、常見問題
1、域名有什么用?
2、COOKIE的用處是什么?
3、COOKIE的有效期?
4、COOKIE、session有什么區(qū)別?
四、解決方案
1、域名有什么用?
1、IP地址比較難記憶,因而使用域名來標(biāo)識網(wǎng)站地址,方便我們訪問和記憶,這是域名最本質(zhì)的作用。
2、建網(wǎng)站,域名是一個網(wǎng)站的重要元素,一個好域名可以讓網(wǎng)站在推廣過程中更加省力,在用戶腦中留下深刻印象。
3、投資賺錢。除了做網(wǎng)站以外,還有很多人注冊域名是拿來投資,也有了不少專做域名投資的人,稱為“米農(nóng)”。
因?yàn)橛蛎哂形ㄒ恍裕砸粋€少一個。(新浪微博域名weibo.com花了800萬的代價才買回來的。)
2、COOKIE的用處是什么?
? ? ? ? 每次HTTP請求的時候,客戶端都會發(fā)送相應(yīng)的Cookie信息到服務(wù)端。實(shí)際上大多數(shù)的應(yīng)用都是用Cookie來實(shí)現(xiàn)Session跟蹤的,第一次創(chuàng)建Session的時候,服務(wù)端會在HTTP反饋的報文通過Cookie攜帶Session ID反饋給客戶端,以后客戶端每次請求把這個會話ID發(fā)送到服務(wù)器,服務(wù)器通過比對反饋的Session ID來判斷是哪個用戶。
①.保存用戶的登陸狀態(tài),用戶進(jìn)行登陸,成功登陸后,服務(wù)器生成特定的cookie返回給客戶端,客戶端下次訪問該域名下的任何頁面,將該cookie的信息發(fā)送給服務(wù)器,服務(wù)器經(jīng)過檢驗(yàn),來判斷用戶是否登陸。
②.記錄用戶的行為,例如,京東商場左下角有一個最近訪問的產(chǎn)品記錄信息,當(dāng)當(dāng)網(wǎng)上有你最近瀏覽過的書籍信息,都是根據(jù)用戶訪問頁面,記錄到cookie的信息來制作的。
③.電商購物車的處理,因?yàn)樵诓煌撁妫c(diǎn)擊添加到購物車,這個信息也是記到了cookie里面。結(jié)賬的時候統(tǒng)一提交
④.定制頁面。如果網(wǎng)站提供了換膚的功能,我們這個時候也是將他記錄到cookie里面,以便下次訪問還是保持原來的風(fēng)格頁面。
3、COOKIE的有效期?
Cookie的maxAge決定著Cookie的有效期,單位為秒(Second)。如果maxAge屬性為正數(shù),則表示該Cookie會在maxAge秒之后自動失效。瀏覽器會將maxAge為正數(shù)的Cookie持久化,即寫到對應(yīng)的Cookie文件中。如果maxAge為負(fù)數(shù),則表示該Cookie僅在本瀏覽器窗口以及本窗口打開的子窗口內(nèi)有效,關(guān)閉窗口后該Cookie即失效。Cookie默認(rèn)的maxAge值為–1。如果maxAge為0,則表示刪除該Cookie。Cookie機(jī)制沒有提供刪除Cookie的方法,因此通過設(shè)置該Cookie即時失效實(shí)現(xiàn)刪除Cookie的效果。失效的Cookie會被瀏覽器從Cookie文件或者內(nèi)存中刪除,
例如:
cookie.setmaxage設(shè)置為0時,會馬上在瀏覽器上刪除指定的cookie
cookie.setmaxage設(shè)置為-1時,代表關(guān)閉當(dāng)前瀏覽器即失效。
例如:Cookie c = new Cookie("username","john");
c.setMaxAge(60);//60秒的意思
c.setMaxAge(60*60);//一小時
c.setMaxAge(365*24*60*60);//一年
4、COOKIE、session的區(qū)別
1、cookie數(shù)據(jù)存放在客戶的瀏覽器上,session數(shù)據(jù)放在服務(wù)器
2、cookie不是很安全,別人可以分析存放在本地的cookie并進(jìn)行cookie欺騙。session存于服務(wù)器端。狀態(tài)信息保存在服務(wù)器端。這意味著session安全性更高
3、session會在一定時間內(nèi)保存在服務(wù)器上,當(dāng)訪問增多,會比較占用你服務(wù)器的性能,考慮到減輕服務(wù)器性能方面,應(yīng)當(dāng)使用cookie
4、 單個cookie保存的數(shù)*據(jù)不能超過4K,很多瀏覽器都限制一個站點(diǎn)最多保存20個cookie
5、 建議將登錄信息等重要信息存放為session,其他信息如果需要保留,可以放在cookie中
6、session保存在服務(wù)器,客戶端不知道其中的信心;cookie保存在客戶端,服務(wù)器能夠知道其中的信息
7、session中保存的是對象,cookie中保存的是字符串
8、session不能區(qū)分路徑,同一個用戶在訪問一個網(wǎng)站期間,所有的session在任何一個地方都可以訪問到,而cookie中如果設(shè)置了路徑參數(shù),那么同一個網(wǎng)站中不同路徑下的cookie互相是訪問不到的
六.擴(kuò)展思考
如果客戶端的瀏覽器禁用了Cookie怎么辦?
? ? ? ?一般這種情況下,會使用一種叫做URL重寫的技術(shù)來進(jìn)行會話跟蹤,即每次HTTP交互,URL后面都會被附加上一個諸如sid=xxxxx這樣的參數(shù),服務(wù)端據(jù)此來識別用戶。重寫URL,在URL后面追加jsessionid。還有一種技術(shù)叫做表單隱藏字段。就是服務(wù)器會自動修改表單,添加一個隱藏字段,以便在表單提交時能夠把session?id傳遞回服務(wù)器。
Jsessionid?
Jsessionid只是tomcat的對sessionid的叫法,其實(shí)就是sessionid;在其它的容器也許就不叫jsessionid了。
七、參考文獻(xiàn).
參考一:JS學(xué)習(xí)之Cookie和Session:https://segmentfault.com/a/1190000011844051
參考二:cookie和session的區(qū)別:https://segmentfault.com/a/1190000012058858
參考三:網(wǎng)址前為什么要加www:http://www.mahaixiang.cn/seowd/1333.html
參考四:Cookie/Session機(jī)制詳解:http://blog.csdn.net/fangaoxin/article/details/6952954/