一.背景介紹
1.什么是IP地址
互聯(lián)網(wǎng)協(xié)議地址(英語:Internet Protocol Address,又譯為網(wǎng)際協(xié)議地址),縮寫為IP地址(英語:IP Address),是分配給網(wǎng)絡(luò)上使用網(wǎng)際協(xié)議(英語:Internet Protocol,IP)的設(shè)備的數(shù)字標(biāo)簽。IP地址是唯一的。常見的IP地址分為IPv4與IPv6兩大類。可以把IP地址類比為一個電話號碼,180.149.132.47即是一個IP地址。
2.什么是域名
網(wǎng)域名稱(英語:Domain Name),簡稱域名、網(wǎng)域,是由一串用點(diǎn)分隔的名字組成的Internet上某一臺計(jì)算機(jī)或計(jì)算機(jī)組的名稱,用于在數(shù)據(jù)傳輸時標(biāo)識計(jì)算機(jī)的電子方位(有時也指地理位置)。可以理解為聯(lián)系人名稱,如www.baidu.com就是一個域名。
3.什么是DNS
網(wǎng)域名稱系統(tǒng)(DNS,Domain Name System)是因特網(wǎng)的一項(xiàng)核心服務(wù),它作為可以將域名和IP地址相互映射的一個布式數(shù)據(jù)庫,能夠使人更方便的訪問互聯(lián)網(wǎng),而不用去記住能夠被機(jī)器直接讀取的IP地址數(shù)串。DNS將域名轉(zhuǎn)換為IP地址的過程叫解析,
域名必須對應(yīng)一個IP地址,而IP地址不一定只對應(yīng)一個域名。可以把DNS理解為一個通訊錄。
4.什么是cookie
cookie是一小段文本信息,以鍵值對的形式存儲在客戶端,伴隨著用戶請求和頁面在Web服務(wù)器和瀏覽器之間傳遞。用戶每次訪問站點(diǎn)時,Web應(yīng)用程序都可以讀取Cookie包含的信息。
5.什么是session
Session指的是服務(wù)器端為客戶端所開辟的存儲空間,在其中保存的信息就是用于保持狀態(tài)。
用戶打開瀏覽器訪問一起網(wǎng)站,瀏覽器的COOKIE中會生成sessionID,在每次請求時都會自動帶上sessionID,然后服務(wù)器端根據(jù)sessionID找到對應(yīng)的session值。
sessionID就相當(dāng)于是一個鑰匙,服務(wù)器上存session的地方相當(dāng)于一個柜子,只能拿自己的鑰匙開自己的柜子取自己的東西。
session一般存儲用戶相關(guān)的的信息,如用戶登錄狀態(tài)、權(quán)限控制等,其他的信息也可存。另外就是無論你站點(diǎn)上的用戶是否登錄都會生成sessionID。
二.知識剖析
1.域名的用處
a.比IP地址更容易記憶
b.有利于SEO(搜索引擎優(yōu)化)
2.Cookie的用處
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的會話了。cookie可以解決此問題。
a.cookie可以跟蹤會話,確認(rèn)訪問者的身份。
b.cookie可以將用戶登錄憑據(jù)保存在本地,cookie到期之前再訪問該服務(wù)器就不必再登錄了。
三.常見問題
1.cookie和session的的區(qū)別
a.cookie數(shù)據(jù)存放在客戶的瀏覽器上,session數(shù)據(jù)放在服務(wù)器上。
b.cookie不是很安全,別人可以分析存放在本地的COOKIE并進(jìn)行COOKIE欺騙考慮到安全應(yīng)當(dāng)使用session
c.session會在一定時間內(nèi)保存在服務(wù)器上。當(dāng)訪問增多,會比較占用你服務(wù)器的性能考慮到減輕服務(wù)器性能方面,應(yīng)當(dāng)使用COOKIE。
d.單個cookie保存的數(shù)據(jù)不能超過4K,很多瀏覽器都限制一個站點(diǎn)最多保存20個cookie。
所以個人建議:將登陸信息等重要信息存放為SESSION其他信息如果需要保留,可以放在COOKIE中
2.cookie的有效期
分為會話cookie和持久cookie
如果不設(shè)置過期時間,則表示這個cookie生命周期為瀏覽器會話期間,只要關(guān)閉瀏覽器窗口,cookie就消失了。這種生命期為瀏覽會話期的cookie被稱為會話cookie。會話cookie一般不保存在硬盤上而是保存在內(nèi)存里。
如果設(shè)置了過期時間,瀏覽器就會把cookie保存到硬盤上,關(guān)閉后再次打開瀏覽器,這些cookie依然有效直到超過設(shè)定的過期時間。
存儲在硬盤上的cookie可以在不同的瀏覽器進(jìn)程間共享,比如兩個IE窗口。而對于保存在內(nèi)存的cookie,不同的瀏覽器有不同的處理方式。
四.解決方案
五.編碼實(shí)戰(zhàn)
在使用JavaScript存取cookie時,必須要使用Document對象的cookie屬性;一行代碼介紹如何創(chuàng)建和修改一個cookie:
document.cookie='username=Darren'
以上代碼中'username'表示cookie名稱,'Darren'表示這個名稱對應(yīng)的值。假設(shè)cookie名稱并不存在,那么就是創(chuàng)建一個新的cookie;如果存在就是修改了這個cookie名稱對應(yīng)的值。如果要多次創(chuàng)建cookie,重復(fù)使用這個方法即可。
六.擴(kuò)展思考
cookie與本地存儲之間的區(qū)別
a.cookie在瀏覽器和服務(wù)器間來回傳遞。而sessionStorage和localStorage不會自動把數(shù)據(jù)發(fā)給服務(wù)器,僅在本地保存。
b.cookie數(shù)據(jù)還有路徑(path)的概念,可以限制cookie只屬于某個路徑下。存儲大小限制也不同,cookie數(shù)據(jù)不能超過4k,同時因?yàn)槊看蝖ttp請求都會攜帶cookie,所以cookie只適合保存很小的數(shù)據(jù),如會話標(biāo)識。sessionStorage和localStorage雖然也有存儲大小的限制,但比cookie大得多,可以達(dá)到5M或更大。
c.數(shù)據(jù)有效期不同,sessionStorage:僅在當(dāng)前瀏覽器窗口關(guān)閉前有效,自然也就不可能持久保持;localStorage:始終有效,窗口或?yàn)g覽器關(guān)閉也一直保存,因此用作持久數(shù)據(jù);cookie只在設(shè)置的cookie過期時間之前一直有效,即使窗口或?yàn)g覽器關(guān)閉。
七.參考文獻(xiàn)
參考一:session到底是什么?
參考三:wiki-Cookie
八.更多討論
IPv4和IPv6的區(qū)別
IPv4,由四組數(shù)字組合而成,由句點(diǎn)隔開(如207.44.214.87);IPv6,由8組4位16進(jìn)制數(shù)表示,用冒號隔開(如2001:0db8:0000:0042:0000:8a2e:0370:7334)。
IPv6的優(yōu)點(diǎn):
a.更大的地址空間。IPv4中規(guī)定IP地址長度為32,即有2^32-1個地址;而IPv6中IP地址的長度為128,即有2^128-1個地址。
b.更小的路由表。IPv6能使得路由器能在路由表中用一條記錄(Entry)表示一片子網(wǎng),提高了路由器轉(zhuǎn)發(fā)數(shù)據(jù)包的速度。
c.增強(qiáng)的組播(Multicast)支持以及對流的支持(Flow-control)。這使得網(wǎng)絡(luò)上的多媒體應(yīng)用有了長足發(fā)展的機(jī)會。
d.加入了對自動配置(Auto-configuration)的支持。使得網(wǎng)絡(luò)(尤其是局域網(wǎng))的管理更加方便和快捷.
e.更高的安全性.在使用IPv6網(wǎng)絡(luò)中用戶可以對網(wǎng)絡(luò)層的數(shù)據(jù)進(jìn)行加密并對IP報文進(jìn)行校驗(yàn)。