免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
http面試,有這一篇就夠了

正文

今天這篇文章我準(zhǔn)備分兩部分講,一部分是基礎(chǔ)知識(shí)點(diǎn),一部分是總結(jié)面試常問(wèn)到的內(nèi)容,是基礎(chǔ)知識(shí)點(diǎn)是用大綱的形式進(jìn)行展示,細(xì)節(jié)上不會(huì)闡述很多,重點(diǎn)放在面試題上,下面我們就開(kāi)始吧~

基本知識(shí)點(diǎn)

  1. HTTP的誕生
  2. HTTP通信的過(guò)程
  3. HTTP的特點(diǎn)
  4. HTTP的內(nèi)容
  5. HTTP的持久連接和管線化(管道化)
  6. cookie的由來(lái)
  7. webscoket,AJAX和HTTP的關(guān)系
  8. HTTP和HTTPS的關(guān)系

HTTP的誕生

在計(jì)算機(jī)剛開(kāi)始流行的時(shí)候,一般都是一人一機(jī),每個(gè)機(jī)器并沒(méi)有通信。WWW(也就是現(xiàn)在的web)為了讓全世界的研究者知識(shí)共享,就提出了三項(xiàng)技術(shù),分別是http,html,url。其中http就是控制客戶端和服務(wù)端之間通信的協(xié)議(協(xié)議就像是我們平時(shí)交流的語(yǔ)言,只有語(yǔ)言相通,才可以交流)

HTTP通信的過(guò)程

HTTP和TCP/IP協(xié)議的關(guān)系

HTTP協(xié)議的通信過(guò)程簡(jiǎn)單來(lái)說(shuō)就是請(qǐng)求和響應(yīng)的過(guò)程,客戶端發(fā)送請(qǐng)求,服務(wù)端接收請(qǐng)求并作出響應(yīng)。復(fù)雜點(diǎn)兒說(shuō),就是基于TCP/IP協(xié)議進(jìn)行通信,這里需要分清楚TCP/IP協(xié)議與TCP協(xié)議以及IP協(xié)議之間的區(qū)別,乍一看,我們會(huì)誤認(rèn)為

TCP/IP協(xié)議 = TCP協(xié)議 + IP協(xié)議

這樣理解有些片面,其實(shí)TCP/IP是一個(gè)協(xié)議族,是互聯(lián)網(wǎng)相關(guān)的各類協(xié)議族的總稱,它包含了我們常見(jiàn)的協(xié)議:HTTP協(xié)議,TCP協(xié)議,IP協(xié)議等。

ps:這個(gè)地方我翻了好幾本書(shū),《圖解HTTP》中說(shuō),兩種理解都可以;但是在《圖解TCP/IP》中和謝希仁的《計(jì)算機(jī)網(wǎng)絡(luò)教程》中都只是說(shuō)TCP/IP協(xié)議是一個(gè)協(xié)議族。

那么HTTP協(xié)議和TCP協(xié)議以及IP協(xié)議有什么關(guān)系呢,看下面這張圖就知道了:

這張圖只是很簡(jiǎn)單的說(shuō)明一下TCP/IP的分層結(jié)構(gòu),我們只需要知道HTTP,TCP,IP分別位于應(yīng)用層,傳輸層和網(wǎng)絡(luò)層,并且信息在發(fā)送和解析的過(guò)程是這樣的:(圖片來(lái)自《圖解HTTP》)

可以理解成發(fā)送的過(guò)程就是不斷的添加首部,也就是設(shè)置信息(后面會(huì)講),而接收解析的過(guò)程就像是剝洋蔥一樣將首部一層一層的去掉,最后得到HTTP數(shù)據(jù)。

TCP三次握手與四次揮手

TCCP的三次握手指的是客戶端和服務(wù)器的連接與斷開(kāi)的過(guò)程,三次握手和四次揮手的簡(jiǎn)單版本如下面這張圖所示:(圖片來(lái)自《圖解TCP/IP》)

在整個(gè)通信的過(guò)程中至少需要來(lái)回發(fā)送7個(gè)包才能完成。

HTTP的特點(diǎn)

  • 簡(jiǎn)單快速
  • 靈活
  • 無(wú)連接
  • 無(wú)狀態(tài)

前面兩點(diǎn)很好理解,解釋一下后面兩點(diǎn)。無(wú)連接指的是每次連接只處理一個(gè)請(qǐng)求,服務(wù)器在處理完請(qǐng)求并收到應(yīng)答后會(huì)斷開(kāi)連接;無(wú)狀態(tài)是指服務(wù)器對(duì)傳遞的內(nèi)容沒(méi)有記憶

HTTP的內(nèi)容(重點(diǎn))

報(bào)文

HTTP報(bào)文分為以下兩種

  • 請(qǐng)求報(bào)文

  • 響應(yīng)報(bào)文

報(bào)文的具體劃分又是這樣的(很多詳細(xì)內(nèi)容沒(méi)有講,可以去參考別的資料進(jìn)行學(xué)習(xí)):

方法

一般在請(qǐng)求報(bào)文中都會(huì)將請(qǐng)求方法放在請(qǐng)求行的第一個(gè),比較常見(jiàn)的方法有以下幾種:

  • GET:獲取資源
  • POST:傳輸實(shí)體內(nèi)容
  • PUT:傳輸文件
  • DELETE:刪除文件
  • HEAD:獲取報(bào)文首部

狀態(tài)碼

http狀態(tài)碼是在響應(yīng)報(bào)文中出現(xiàn)的,表示此次響應(yīng)的狀態(tài),大致可劃分為

  • 1XX:請(qǐng)求接收成功,需要繼續(xù)處理
  • 2XX:請(qǐng)求接收成功,并且服務(wù)端已經(jīng)進(jìn)行處理
  • 200:請(qǐng)求已經(jīng)成功,會(huì)返回響應(yīng)的數(shù)據(jù)
  • 3XX:重定向,即URL發(fā)生了改變
  • 301:永久重定向,即URL已經(jīng)發(fā)生了改變
  • 302:臨時(shí)重定向,即URL只是暫時(shí)發(fā)生改變
  • 304:請(qǐng)求的網(wǎng)頁(yè)沒(méi)有發(fā)生改變,可以直接從緩存服務(wù)器中取資源
  • 4XX:請(qǐng)求發(fā)生了錯(cuò)誤
  • 401:請(qǐng)求需要進(jìn)行驗(yàn)證
  • 403:頁(yè)面訪問(wèn)被禁止
  • 404:請(qǐng)求的資源不存在
  • 5XX:服務(wù)端發(fā)生了錯(cuò)誤

HTTP的持久連接和管線化

持久連接

前面我們?cè)谡f(shuō)HTTP特點(diǎn)的時(shí)候說(shuō)過(guò), HTTP是一種無(wú)連接,無(wú)狀態(tài)的協(xié)議。而TCP是有狀態(tài)的長(zhǎng)連接,為什么HTTP是基于TCP,但HTTP卻是無(wú)連接?

因?yàn)镠TTP每次請(qǐng)求完成后就會(huì)關(guān)閉TCP協(xié)議,但是我們可以通過(guò)編程自己控制TCP的關(guān)閉時(shí)間。由于每次請(qǐng)求都要連接TCP協(xié)議,效率很低,所以從HTTP/1.1過(guò)后,就開(kāi)啟了一個(gè)keep-Alive來(lái)保持連接,但是這個(gè)連接也是有時(shí)間限制的,不同的服務(wù)器有不同的處理,自己也可以設(shè)置。

管線化

以前請(qǐng)求和響應(yīng)模式基本是這樣的:

請(qǐng)求1 -> 響應(yīng)1 -> 請(qǐng)求2 -> 響應(yīng)2 。。。

有了管線化過(guò)后請(qǐng)求和響應(yīng)模式就變成了這樣:

請(qǐng)求1 -> 請(qǐng)求2 -> 響應(yīng)1 -> 響應(yīng)2 。。。

也就是說(shuō),現(xiàn)在可以先一次進(jìn)行很多次請(qǐng)求,而不是像以前那樣,只有上一次的響應(yīng)成功后才可以下一次請(qǐng)求,這樣大大的提高了效率。

cookie的由來(lái)

之前我們說(shuō)過(guò),HTTP是無(wú)狀態(tài)的,這樣每次跳轉(zhuǎn)到新頁(yè)面時(shí),都需要重新登錄一次,麻煩又浪費(fèi)時(shí)間。所以就誕生了cookie,cookie是進(jìn)行狀態(tài)管理的,里面會(huì)存放之前登錄的信息。實(shí)現(xiàn)原理是客戶端第一次發(fā)送請(qǐng)求后,服務(wù)端響應(yīng)時(shí)會(huì)在響應(yīng)頭中添加一個(gè)set-cookie信息,要求客戶端保存cookie信息,客戶端在下次請(qǐng)求時(shí),會(huì)將這個(gè)cookie信息自動(dòng)發(fā)送給服務(wù)端,服務(wù)端接收后就會(huì)根據(jù)cookie信息進(jìn)行匹配。

webscoket,AJAX和HTTP的關(guān)系

隨著WEB信息量越來(lái)越大,HTTP的性能優(yōu)化也變得越來(lái)越重要了,其中AJAX就是為了解決HTTP每次發(fā)送請(qǐng)求都會(huì)更新整個(gè)頁(yè)面的問(wèn)題,有的時(shí)候只是改變了一點(diǎn)點(diǎn),甚至是無(wú)關(guān)緊要的東西時(shí)都會(huì)發(fā)生整個(gè)頁(yè)面的更新,這樣會(huì)造成很大的浪費(fèi)。所以出現(xiàn)了AJAX,AJAX是一個(gè)異步刷新技術(shù),其核心在于XMLHttpRequest,如果不了解AJAX的可以看看我之前的這篇文章。

我們會(huì)發(fā)現(xiàn)無(wú)論怎么改,服務(wù)器都是處于被動(dòng)狀態(tài),只能接受客戶端的請(qǐng)求,這樣客戶端只有通過(guò)經(jīng)常發(fā)送請(qǐng)求來(lái)確認(rèn)是否有數(shù)據(jù)更新,但是大多數(shù)時(shí)候都是沒(méi)有數(shù)據(jù)更新的,這樣會(huì)造成很大的浪費(fèi),所以就產(chǎn)生了webSocket協(xié)議,這個(gè)協(xié)議就是為了改變服務(wù)器的被動(dòng)狀態(tài),使用這個(gè)協(xié)議后,服務(wù)端可以主動(dòng)給客戶端發(fā)送信息,這樣就意味著客戶端只需要一次請(qǐng)求,就可以保證數(shù)據(jù)的實(shí)時(shí)更新,而不是像之前那樣定時(shí)發(fā)送AJAX請(qǐng)求的來(lái)實(shí)現(xiàn)定時(shí)更新,可以看看下圖幫助理解(來(lái)自菜鳥(niǎo)教程):

HTTP與HTTPS之間的關(guān)系

其實(shí)HTTPS不是一個(gè)新的協(xié)議,只是在HTTP和TCP之間添加了一層SSL協(xié)議,上面誕生的新技術(shù)是為了提高HTTP通信的性能,而HTTPS是為了提高通信過(guò)程中的安全性:

HTTP + 加密 + 認(rèn)證 + 完整性保護(hù) = HTTPS(引自《圖解HTTP》)

這里只是說(shuō)明一下有這個(gè)新技術(shù),具體可以看這篇文章。

??济嬖囶}

由于這篇文章本身就比較長(zhǎng),害怕有些初學(xué)者看到會(huì)直接關(guān)閉,所以我將面試題放在了另外一篇文章,大家請(qǐng)移步這里。

總結(jié)

這篇文章還有好多知識(shí)點(diǎn)沒(méi)有總結(jié),只是列了一個(gè)很粗糙的大綱,把經(jīng)常容易問(wèn)到的內(nèi)容詳細(xì)說(shuō)了一下,還是推薦大家看書(shū)來(lái)學(xué)習(xí),如果你是對(duì)HTTP一無(wú)所知,推薦你看《圖解HTTP》,這本書(shū)比較適合初學(xué)者;如果是對(duì)HTTP有一定的了解,想系統(tǒng)的進(jìn)行學(xué)習(xí)的話,推薦你看《HTTP權(quán)威指南》,這本書(shū)講得非常細(xì),而且書(shū)里面結(jié)構(gòu)的分布特別好,強(qiáng)烈推薦!

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
小哥哥,小姐姐,我有一份tcp、http面試指南你要嗎?
絕對(duì)不能繞開(kāi)的 HTTP 協(xié)議
一個(gè)http報(bào)文到了數(shù)據(jù)鏈路層會(huì)切割成多個(gè)幀發(fā)送出去嗎?
《圖解HTTP》讀書(shū)筆記 – 第2章 簡(jiǎn)單的 HTTP 協(xié)議 – 博客歪歪
黑客入侵計(jì)中計(jì)
TCP/IP詳解學(xué)習(xí)筆記(5)
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服