HTTP協(xié)議

人生就像一列開(kāi)往墳?zāi)沟牧熊囍5吠旧蠒?huì)有很多站夜赵,很難有人至始至終陪你走完全程,當(dāng)陪你的人要下車時(shí)乡革,即便不舍寇僧,也要心存感激,然后揮手告別沸版。---sunnyhuang

HTTP

1. OSI 七層模型指什么

七層模型圖

開(kāi)放式系統(tǒng)互聯(lián)通信參考模型(OSI)

主機(jī)層

Data(數(shù)據(jù)層)7.應(yīng)用層 6. 表示層 5.會(huì)話層

Segments(數(shù)據(jù)段) 4.傳輸層

媒介層

網(wǎng)絡(luò)分組/數(shù)據(jù)報(bào)文 3. 網(wǎng)絡(luò)層

Bit/Frame(數(shù)據(jù)幀) 2. 數(shù)據(jù)鏈路層

Bit(比特) 1. 物理層

應(yīng)用層: 規(guī)定了數(shù)據(jù)的傳輸協(xié)議嘁傀,提供為應(yīng)用軟件而設(shè)的界面,以設(shè)置與另一應(yīng)用軟件之間的通信视粮。例如: HTTP细办,HTTPS,F(xiàn)TP蕾殴,TELNET笑撞,SSH岛啸,SMTP,POP3等茴肥。

表示層:解決不同系統(tǒng)之間的通信坚踩。例如:linux下的qq和windows下的qq可以通信

會(huì)話層:建立一個(gè)連接(自動(dòng)的手機(jī)信息,自動(dòng)的網(wǎng)絡(luò)尋址)

傳輸層:每一個(gè)應(yīng)用程序都會(huì)在網(wǎng)卡注冊(cè)一個(gè)端口號(hào)瓤狐,該層就是端口和端口之間的通信瞬铸,常用的是TCP/IP協(xié)議

網(wǎng)絡(luò)層:此處需要確定計(jì)算機(jī)的位置,怎么確定芬首?IPv4赴捞,IPv6!

數(shù)據(jù)鏈路層:可以簡(jiǎn)單的理解為:規(guī)定了0和1的分包形式郁稍,確定了網(wǎng)絡(luò)數(shù)據(jù)包的形式

物理層:物理層負(fù)責(zé)最后將信息編碼成電流脈沖或其它信號(hào)用于網(wǎng)上傳輸

2.HTTP 的工作原理是什么赦政?

HTTP(超文本傳輸協(xié)議)是應(yīng)用層協(xié)議。HTTP協(xié)議采用的是請(qǐng)求/響應(yīng)模型耀怜,當(dāng)客戶端給服務(wù)器建立連接后恢着,向服務(wù)器發(fā)送一個(gè)請(qǐng)求,服務(wù)器接收到相應(yīng)的請(qǐng)求后财破,給客戶端一個(gè)響應(yīng)信息掰派。

  1. 客戶端連接到web服務(wù)器:HTTP客戶端與web服務(wù)器建立一個(gè)TCP連接
  2. 客戶端向服務(wù)器發(fā)起HTTP請(qǐng)求:通過(guò)已經(jīng)創(chuàng)建好了的TCP連接,客戶端給服務(wù)器發(fā)送一個(gè)請(qǐng)求報(bào)文
  3. 服務(wù)器接收HTTP請(qǐng)求并返回HTTP響應(yīng):服務(wù)器解析請(qǐng)求左痢,定位請(qǐng)求資源靡羡,服務(wù)器將資源副本寫(xiě)到TCP連接,由客戶端讀取
  4. 釋放TCP連接:若connection模式為close俊性,則服務(wù)器主動(dòng)關(guān)閉TCP連接略步,釋放TCP連接,若connection模式為keep alive定页,則該連接會(huì)保持一段時(shí)間典徊,在該時(shí)間內(nèi)可以繼續(xù)接受請(qǐng)求

3.URL的格式是什么卒落?常見(jiàn)的協(xié)議

URL(統(tǒng)一資源定位符):協(xié)議+域名+端口+路徑組成

常見(jiàn)的協(xié)議

  1. 網(wǎng)絡(luò)層協(xié)議: IP協(xié)議、ICMP協(xié)議犀勒、ARP協(xié)議贾费、RARP協(xié)議褂萧。
  2. 傳輸層協(xié)議:TCP協(xié)議导犹、UDP協(xié)議谎痢。
  3. 應(yīng)用層協(xié)議: FTP节猿、Talnet滨嘱、HTTP太雨、SMTP

4.HTTP 協(xié)議有幾種和服務(wù)器交互的方法

  1. GET:最常用的方法囊扳,通常用于請(qǐng)求服務(wù)器發(fā)送某個(gè)資源锥咸,通常返回在響應(yīng)主體
  2. POST: 向指定資源提交數(shù)據(jù)她君,請(qǐng)求服務(wù)器進(jìn)行處理缔刹,如:表單的數(shù)據(jù)提交校镐,文件的上傳等捺典,請(qǐng)求數(shù)據(jù)會(huì)被包含在請(qǐng)求體中引谜。
  3. HEAD: 和GET方法類似员咽,但是它不會(huì)資源的內(nèi)容贝室,而是返回資源的一些基本信息滑频。主要運(yùn)用于
    • 在不獲取資源的情況下獲取資源信息(類型峡迷、大小等)
    • 通過(guò)狀態(tài)碼產(chǎn)看資源是否存在
    • 通過(guò)查看首部凉当,測(cè)試資源是否被修改了
    • HEAD方法常被用于客戶端查看服務(wù)器的性能看杭。
  4. PUT: 和GET從服務(wù)器獲取資源相反,PUT用于想服務(wù)器寫(xiě)入資源模孩。PUT的語(yǔ)義就是讓服務(wù)器用請(qǐng)求的主體部分創(chuàng)建一個(gè)請(qǐng)求URL命名的文檔榨咐,如果存在就替換块茁。
  5. TRACE: 客戶端發(fā)送一個(gè)請(qǐng)求的時(shí)候,這個(gè)請(qǐng)求可能會(huì)穿過(guò)防火墻崎场、代理谭跨、網(wǎng)關(guān)和一些其它應(yīng)用程序,沒(méi)個(gè)中間節(jié)點(diǎn)都可能修改HTTP請(qǐng)求所坯,TRACE方法允許客戶端在最終請(qǐng)求發(fā)往服務(wù)器的時(shí)候包竹,看看它變成了什么樣子苗缩。
  6. DELETTE:用于要求服務(wù)器刪除請(qǐng)求的URL。
  7. OPTIONS: OPTIONS方法用于請(qǐng)求 web服務(wù)器告知其支持的各種功能

5.狀態(tài)碼200退盯,301304琉朽,403,404,500箱叁,503分別代表什么意思

200: 表示請(qǐng)求得到響應(yīng)的相應(yīng) OK

**301: **表示客戶請(qǐng)求的文檔在其他地方耕漱,新的URL在Location中指出螟够,瀏覽器會(huì)自動(dòng)地訪問(wèn)新的URL地址 Moved Permanently(永久行的移動(dòng))


301狀態(tài)碼

**302: ** ---類似于301妓笙,但是表示臨時(shí)的替代,而不是永久性替代捧灰,瀏覽器也會(huì)自動(dòng)跳到新的URL地址, “Moved Temporatily”(臨時(shí)的移動(dòng))

304: ---(未修改)自從上次請(qǐng)求后饲窿,請(qǐng)求的內(nèi)容沒(méi)有被修改過(guò)逾雄,不會(huì)返回內(nèi)容鸦泳,直接用瀏覽器的緩存內(nèi)容。通常(If-Modified-Since在請(qǐng)求頭中钾麸,瀏覽器端緩存頁(yè)面的最后修改時(shí)間一起發(fā)到服務(wù)器去饭尝,服務(wù)器會(huì)把這個(gè)時(shí)間與服務(wù)器上實(shí)際文件的最后修改時(shí)間Last-Modified進(jìn)行比較钥平,如果時(shí)間一致,就使用緩存)If-Modified-Since解析

403: ---(禁止)資源不可用遵蚜,服務(wù)器理解客戶的請(qǐng)求帖池,但拒絕處理它。通常由于服務(wù)器上文件或目錄的權(quán)限設(shè)置導(dǎo)致吭净。Forbidden

404: ---(未找到) 找不到資源 Not Found

500: ---(服務(wù)器內(nèi)部錯(cuò)誤)服務(wù)器遇到了意料不到的情況睡汹,不能完成客戶的請(qǐng)求

503: --- (服務(wù)不可用)服務(wù)器目前無(wú)法使用(由于超載或停機(jī)維護(hù))

6.報(bào)文有哪幾部分組成?

一個(gè)HTTO報(bào)文有三部分組成

  1. 對(duì)報(bào)文進(jìn)行描述的起始行 ----start line
  2. 包含屬性的首部塊 ----header
  3. 可選的包含數(shù)據(jù)的主體部分 ----body

HTTP報(bào)文分2大類

請(qǐng)求報(bào)文 :向web服務(wù)器請(qǐng)求一個(gè)動(dòng)作

<method><request-URL><version>
<headers>

<entity-body> /*請(qǐng)求一般沒(méi)有數(shù)據(jù)的內(nèi)容*/

響應(yīng)報(bào)文: 將請(qǐng)求結(jié)果返回給客戶端

<version><status><reason-phrase>
<headers>

<entity-body>

7.請(qǐng)求頭的格式和作用是什么寂殉?給個(gè)范例截圖說(shuō)明

格式:鍵值對(duì)

作用:告訴客戶端一些請(qǐng)求的基本要求和樣式


request headers.png

8.首部的格式和作用是什么囚巴?給個(gè)范例截圖說(shuō)明

格式: 鍵值對(duì)

首部的分類:1. 通用首部字段(General)2. 請(qǐng)求首部字段(Request),3. 響應(yīng)首部字段(Response),4. 實(shí)體首部字段(Entity)

首部.png

9主體的作用是什么甚负?給個(gè)范例

主體: 主體是HTTP的第三個(gè)部分,該部分是可選擇的,一般有主體的請(qǐng)求方法是post。主體是HTTP報(bào)文的負(fù)荷,就是HTTP所要傳輸?shù)膬?nèi)容迁酸。

response內(nèi)容.png

10 簡(jiǎn)述瀏覽器緩存是如何控制的

第一次請(qǐng)求

沒(méi)有緩存的時(shí)候

有緩存后第二次請(qǐng)求

第二次請(qǐng)求
  • Cache-control:每個(gè)資源都可以通過(guò)設(shè)置cache-control來(lái)簡(jiǎn)歷緩存策略。例如,若設(shè)定Cache-Control: max-age=604800,(單位為秒),則表示這個(gè)資源的有效時(shí)間為 7 天。 ----服務(wù)器返回Cache- Control指定請(qǐng)求和響應(yīng)遵循的緩存機(jī)制。在請(qǐng)求消息或響應(yīng)消息中設(shè)置 Cache-Control并不會(huì)修改另一個(gè)消息處理過(guò)程中的緩存處理過(guò)程
  • Expires:響應(yīng)頭從另一個(gè)角度——指明緩存的具體過(guò)期日期,來(lái)控制資源何時(shí)過(guò)期衙四。在過(guò)期時(shí)間以內(nèi),若再次發(fā)起請(qǐng)求,通常瀏覽器都不會(huì)與服務(wù)器進(jìn)行任何通信灾搏,而是直接使用本地副本拷肌。當(dāng) Expires 和 Cache-Control 同時(shí)出現(xiàn)時(shí)若锁,通常后者會(huì)覆蓋前者的設(shè)定乏冀。 ----Response Headers中,指定過(guò)期時(shí)間
  • Last-Modified和ETag:服務(wù)器可在 HTTP 返回頭中包含Last-Modified字段或者ETag字段。Last-Modified 表示被請(qǐng)求資源在服務(wù)器端的上次修改時(shí)間,而 ETag 則是一個(gè)唯一文件標(biāo)識(shí)符,每次文件修改后都會(huì)生成一個(gè)新的 ETag析蝴。服務(wù)器通過(guò)向?yàn)g覽器發(fā)送這兩個(gè)字段裁赠,來(lái)告知瀏覽器其獲得的資源的版本佩捞。
    無(wú)論通過(guò) Cache-Control 還是 Expires 設(shè)置緩存绞幌,在過(guò)期時(shí)間以內(nèi)谭确,當(dāng)用戶點(diǎn)擊瀏覽器刷新按鈕時(shí)械蹋,為了確保用戶所加載的資源是最新的,大部分瀏覽器不會(huì)再直接使用緩存中的數(shù)據(jù)蝎毡,而是發(fā)出一個(gè)條件請(qǐng)求(Conditional GET Request)。對(duì)于這類請(qǐng)求毁靶,瀏覽器會(huì)在請(qǐng)求頭中包含If-Modified-Since或If-None-Match字段胧奔。前者即瀏覽器當(dāng)初得到的 Last-Modified;后者即瀏覽器當(dāng)初得到的 ETag老充。當(dāng)服務(wù)器發(fā)現(xiàn)資源的更新時(shí)間晚于 If-Modified-Since 所提供的時(shí)間葡盗,或者資源在服務(wù)器端當(dāng)前的 ETag 和 If-None-Match 提供的不符時(shí),會(huì)響應(yīng)整個(gè)資源,否則只會(huì)響應(yīng)一個(gè) 304 Not Modified 狀態(tài)碼(因此瀏覽器將不需要重新下載整個(gè)資源)觅够。這種機(jī)制可以最大程度上減少數(shù)據(jù)下載量胶背。此外,如果緩存的資源已過(guò)期喘先,瀏覽器通常有兩種選擇:重新下載這個(gè)資源钳吟,或發(fā)出一個(gè)條件請(qǐng)求。很多瀏覽器都會(huì)采取后者窘拯,以節(jié)約資源红且。
  • ---Last-modified實(shí)體頭指定服務(wù)器上保存內(nèi)容的最后修訂時(shí)間。
  • Pragma:指定“no-cache”值表示服務(wù)器必須返回一個(gè)刷新后的文檔涤姊,即使它是代理服務(wù)器而且已經(jīng)有了頁(yè)面的本地拷貝暇番。

11.下圖各個(gè)參數(shù)是什么意思

參數(shù)的意思

通用首部General

  • Request URL: 資源的路徑
  • Request Method: 資源的請(qǐng)求的方法
  • Status Code: 返回的狀態(tài)碼
  • Remote Address: 遠(yuǎn)程服務(wù)器的ip地址和端口號(hào)

反應(yīng)頭部(Response Headers)

  • Connection:表示是否需要持久連接(close/keep-alive ),如果Servlet看到這里的值為“Keep- Alive”,或者看到請(qǐng)求使用的是HTTP 1.1(HTTP 1.1默認(rèn)進(jìn)行持久連接)思喊,它就可以利用持久連接的優(yōu)點(diǎn)壁酬,當(dāng)頁(yè)面包含多個(gè)元素時(shí)(例如Applet,圖片)恨课,顯著地減少下載所需要的時(shí)間舆乔。
  • Content-Length: 表示實(shí)際傳輸返回的長(zhǎng)度
  • Date: 返回文檔的當(dāng)?shù)貢r(shí)間
  • server: 表示服務(wù)器的類型
  • X-Powered-By: 表示語(yǔ)言解析器

請(qǐng)求頭(Request Headers)

  • accept: 瀏覽器可接受的MIME類型。
  • Accept-Encoding 瀏覽器能夠進(jìn)行解碼的數(shù)據(jù)編碼方式剂公,比如gzip希俩。Servlet能夠向支持gzip的瀏覽器返回經(jīng)gzip編碼的HTML頁(yè)面。許多情形下這可以減少5到10倍的下載時(shí)間纲辽。
  • Accept-Language:瀏覽器所希望的語(yǔ)言種類颜武,當(dāng)服務(wù)器能夠提供一種以上的語(yǔ)言版本時(shí)要用到。
  • Connection:表示是否需要持久連接
  • Content-Length:表示請(qǐng)求消息正文的長(zhǎng)度拖吼。
  • Content- Type 表示后面的文檔屬于什么MIME類型盒刚。Servlet默認(rèn)為text/plain,但通常需要顯式地指定為text/html绿贞。由于經(jīng)常要設(shè)置 Content-Type,因此HttpServletResponse提供了一個(gè)專用的方法setContentTyep橘原。
  • Cookie: 個(gè)人的信息保存量籍铁,來(lái)區(qū)分不同的人不同的界面
  • Host: 指定請(qǐng)求資源的Intenet主機(jī)和端口號(hào),必須表示請(qǐng)求url的原始服務(wù)器或網(wǎng)關(guān)的位置趾断。
  • Origin: 用來(lái)說(shuō)明最初請(qǐng)求是從哪里發(fā)起的,只用于post請(qǐng)求
  • Referer: 表示上一個(gè)頁(yè)面的地址拒名,包含一個(gè)URL,用戶從該URL代表的頁(yè)面出發(fā)訪問(wèn)當(dāng)前請(qǐng)求的頁(yè)面芋酌。
  • User-agent: 瀏覽器類型增显,如果Servlet返回的內(nèi)容與瀏覽器類型有關(guān)則該值非常有用。
  • X-Requested-With: 用于區(qū)分是傳統(tǒng)的同步請(qǐng)求脐帝,還是AJAX異步請(qǐng)求

參考鏈接

http綜合

X-Requested-With區(qū)別

If-Modified-Since

瀏覽器緩存知識(shí)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末同云,一起剝皮案震驚了整個(gè)濱河市糖权,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌炸站,老刑警劉巖星澳,帶你破解...
    沈念sama閱讀 206,378評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異旱易,居然都是意外死亡禁偎,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)阀坏,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)如暖,“玉大人,你說(shuō)我怎么就攤上這事忌堂『兄粒” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,702評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵浸船,是天一觀的道長(zhǎng)妄迁。 經(jīng)常有香客問(wèn)我,道長(zhǎng)李命,這世上最難降的妖魔是什么登淘? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,259評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮封字,結(jié)果婚禮上黔州,老公的妹妹穿的比我還像新娘。我一直安慰自己阔籽,他們只是感情好流妻,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,263評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著笆制,像睡著了一般绅这。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上在辆,一...
    開(kāi)封第一講書(shū)人閱讀 49,036評(píng)論 1 285
  • 那天证薇,我揣著相機(jī)與錄音,去河邊找鬼匆篓。 笑死浑度,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的鸦概。 我是一名探鬼主播箩张,決...
    沈念sama閱讀 38,349評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了先慷?” 一聲冷哼從身側(cè)響起饮笛,我...
    開(kāi)封第一講書(shū)人閱讀 36,979評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎熟掂,沒(méi)想到半個(gè)月后缎浇,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,469評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡赴肚,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,938評(píng)論 2 323
  • 正文 我和宋清朗相戀三年素跺,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片誉券。...
    茶點(diǎn)故事閱讀 38,059評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡指厌,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出踊跟,到底是詐尸還是另有隱情踩验,我是刑警寧澤,帶...
    沈念sama閱讀 33,703評(píng)論 4 323
  • 正文 年R本政府宣布商玫,位于F島的核電站箕憾,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏拳昌。R本人自食惡果不足惜袭异,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,257評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望炬藤。 院中可真熱鬧御铃,春花似錦、人聲如沸沈矿。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,262評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)羹膳。三九已至睡互,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間陵像,已是汗流浹背湃缎。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蠢壹,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,501評(píng)論 2 354
  • 正文 我出身青樓九巡,卻偏偏與公主長(zhǎng)得像图贸,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,792評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容