-
1冈钦、Http和Https的區(qū)別涎永?
- Http協(xié)議運(yùn)行在TCP之上跨扮,明文傳輸甚疟,客戶端與服務(wù)器端都無法驗(yàn)證對(duì)方的身份晃财;
- Https是身披SSL(Secure Socket Layer)外殼的Http赌躺,運(yùn)行于SSL上扛伍,SSL運(yùn)行于TCP之上掂榔,是添加了加密和認(rèn)證機(jī)制的HTTP探颈。
二者之間存在如下不同:
端口不同:Http與Http使用不同的連接方式熟丸,用的端口也不一樣,前者是80伪节,后者是443光羞;
資源消耗:和HTTP通信相比,Https通信會(huì)由于加減密處理消耗更多的CPU和內(nèi)存資源怀大;
開銷:Https通信需要證書纱兑,而證書一般需要向認(rèn)證機(jī)構(gòu)購(gòu)買;Https的加密機(jī)制是一種共享密鑰加密和公開密鑰加密并用的混合加密機(jī)制化借。
-
2潜慎、三次握手
三次握手(我要和你建立鏈接,你真的要和我建立鏈接么蓖康,我真的要和你建立鏈接铐炫,成功)
第一次握手:Client將標(biāo)志位SYN置為1,隨機(jī)產(chǎn)生一個(gè)值seq=J蒜焊,并將該數(shù)據(jù)包發(fā)送給Server倒信,Client進(jìn)入SYN_SENT狀態(tài),等待Server確認(rèn)泳梆。
第二次握手:Server收到數(shù)據(jù)包后由標(biāo)志位SYN=1知道Client請(qǐng)求建立連接堤结,Server將標(biāo)志位SYN和ACK都置為1,ack=J+1鸭丛,隨機(jī)產(chǎn)生一個(gè)值seq=K竞穷,并將該數(shù)據(jù)包發(fā)送給Client以確認(rèn)連接請(qǐng)求,Server進(jìn)入SYN_RCVD狀態(tài)鳞溉。
第三次握手:Client收到確認(rèn)后瘾带,檢查ack是否為J+1,ACK是否為1熟菲,如果正確則將標(biāo)志位ACK置為1看政,ack=K+1朴恳,并將該數(shù)據(jù)包發(fā)送給Server,Server檢查ack是否為K+1允蚣,ACK是否為1于颖,如果正確則連接建立成功,Client和Server進(jìn)入ESTABLISHED狀態(tài)嚷兔,完成三次握手森渐,隨后Client與Server之間可以開始傳輸數(shù)據(jù)了。
-
3冒晰、四次握手
第一次揮手:Client發(fā)送一個(gè)FIN同衣,用來關(guān)閉Client到Server的數(shù)據(jù)傳送,Client進(jìn)入FIN_WAIT_1狀態(tài)壶运。
第二次揮手:Server收到FIN后耐齐,發(fā)送一個(gè)ACK給Client,確認(rèn)序號(hào)為收到序號(hào)+1(與SYN相同蒋情,一個(gè)FIN占用一個(gè)序號(hào))埠况,Server進(jìn)入CLOSE_WAIT狀態(tài)。此時(shí)TCP鏈接處于半關(guān)閉狀態(tài)棵癣,即客戶端已經(jīng)沒有要發(fā)送的數(shù)據(jù)了询枚,但服務(wù)端若發(fā)送數(shù)據(jù),則客戶端仍要接收浙巫。
第三次揮手:Server發(fā)送一個(gè)FIN,用來關(guān)閉Server到Client的數(shù)據(jù)傳送刷后,Server進(jìn)入LAST_ACK狀態(tài)的畴。
-
第四次揮手:Client收到FIN后,Client進(jìn)入TIME_WAIT狀態(tài)尝胆,接著發(fā)送一個(gè)ACK給Server丧裁,確認(rèn)序號(hào)為收到序號(hào)+1,Server進(jìn)入CLOSED狀態(tài)含衔,完成四次揮手煎娇。
-
4、瀏覽器中輸入網(wǎng)址之后都發(fā)生了什么贪染?
- 1)由域名→IP地址 尋找IP地址的過程依次經(jīng)過了瀏覽器緩存缓呛、系統(tǒng)緩存、hosts文件杭隙、路由器緩存哟绊、 遞歸搜索根域名服務(wù)器。
- 2)建立TCP/IP連接(三次握手具體過程)
- 3)由瀏覽器發(fā)送一個(gè)HTTP請(qǐng)求
- 4)經(jīng)過路由器的轉(zhuǎn)發(fā)痰憎,通過服務(wù)器的防火墻票髓,該HTTP請(qǐng)求到達(dá)了服務(wù)器
- 5)服務(wù)器處理該HTTP請(qǐng)求攀涵,返回一個(gè)HTML文件
- 6)瀏覽器解析該HTML文件,并且顯示在瀏覽器端
這里需要注意:
HTTP協(xié)議是一種基于TCP/IP的應(yīng)用層協(xié)議洽沟,進(jìn)行HTTP數(shù)據(jù)請(qǐng)求必須先建立TCP/IP連接
可以這樣理解:HTTP是轎車以故,提供了封裝或者顯示數(shù)據(jù)的具體形式;Socket是發(fā)動(dòng)機(jī)裆操,提供了網(wǎng)絡(luò)通信的能力怒详。
兩個(gè)計(jì)算機(jī)之間的交流無非是兩個(gè)端口之間的數(shù)據(jù)通信,具體的數(shù)據(jù)會(huì)以什么樣的形式展現(xiàn)是以不同的應(yīng)用層協(xié)議來定義的。
-
5跷车、常見HTTP狀態(tài)碼
1xx(臨時(shí)響應(yīng))
2xx(成功)
3xx(重定向):表示要完成請(qǐng)求需要進(jìn)一步操作
4xx(錯(cuò)誤):表示請(qǐng)求可能出錯(cuò)棘利,妨礙了服務(wù)器的處理
5xx(服務(wù)器錯(cuò)誤):表示服務(wù)器在嘗試處理請(qǐng)求時(shí)發(fā)生內(nèi)部錯(cuò)誤
常見狀態(tài)碼:
200(成功)
304(未修改):自從上次請(qǐng)求后,請(qǐng)求的網(wǎng)頁未修改過朽缴。服務(wù)器返回此響應(yīng)時(shí)善玫,不會(huì)返回網(wǎng)頁內(nèi)容
401(未授權(quán)):請(qǐng)求要求身份驗(yàn)證
403(禁止):服務(wù)器拒絕請(qǐng)求
404(未找到):服務(wù)器找不到請(qǐng)求的網(wǎng)頁 -
6、Session密强、Cookie
Cookie和Session都是客戶端與服務(wù)器之間保持狀態(tài)的解決方案茅郎,具體來說,cookie機(jī)制采用的是在客戶端保持狀態(tài)的方案或渤,而session機(jī)制采用的是在服務(wù)器端保持狀態(tài)的方案系冗。
Cookie 及其相關(guān) API:
Cookie實(shí)際上是一小段的文本信息⌒金校客戶端請(qǐng)求服務(wù)器掌敬,如果服務(wù)器需要記錄該用戶狀態(tài),就使用response向客戶端瀏覽器頒發(fā)一個(gè)Cookie池磁,而客戶端瀏覽器會(huì)把Cookie保存起來奔害。當(dāng)瀏覽器再請(qǐng)求該網(wǎng)站時(shí),瀏覽器把請(qǐng)求的網(wǎng)址連同該Cookie一同提交給服務(wù)器地熄,服務(wù)器檢查該Cookie华临,以此來辨認(rèn)用戶狀態(tài)。服務(wù)器還可以根據(jù)需要修改Cookie的內(nèi)容端考。Session 及其相關(guān) API:
同樣地雅潭,會(huì)話狀態(tài)也可以保存在服務(wù)器端∪刺兀客戶端請(qǐng)求服務(wù)器扶供,如果服務(wù)器記錄該用戶狀態(tài),就獲取Session來保存狀態(tài)裂明,這時(shí)诚欠,如果服務(wù)器已經(jīng)為此客戶端創(chuàng)建過session,服務(wù)器就按照sessionid把這個(gè)session檢索出來使用;如果客戶端請(qǐng)求不包含sessionid轰绵,則為此客戶端創(chuàng)建一個(gè)session并且生成一個(gè)與此session相關(guān)聯(lián)的sessionid粉寞,并將這個(gè)sessionid在本次響應(yīng)中返回給客戶端保存。保存這個(gè)sessionid的方式可以采用 cookie機(jī)制 左腔,這樣在交互過程中瀏覽器可以自動(dòng)的按照規(guī)則把這個(gè)標(biāo)識(shí)發(fā)揮給服務(wù)器唧垦;若瀏覽器禁用Cookie的話,可以通過 URL重寫機(jī)制 將sessionid傳回服務(wù)器液样。-
Session 與 Cookie 的對(duì)比:
實(shí)現(xiàn)機(jī)制:Session的實(shí)現(xiàn)常常依賴于Cookie機(jī)制振亮,通過Cookie機(jī)制回傳SessionID;
大小限制:Cookie有大小限制并且瀏覽器對(duì)每個(gè)站點(diǎn)也有cookie的個(gè)數(shù)限制鞭莽,Session沒有大小限制坊秸,理論上只與服務(wù)器的內(nèi)存大小有關(guān);
安全性:Cookie存在安全隱患澎怒,通過攔截或本地文件找得到cookie后可以進(jìn)行攻擊褒搔,而Session由于保存在服務(wù)器端,相對(duì)更加安全喷面;
服務(wù)器資源消耗:Session是保存在服務(wù)器端上會(huì)存在一段時(shí)間才會(huì)消失星瘾,如果session過多會(huì)增加服務(wù)器的壓力。