Http相關(guān)內(nèi)容

http相關(guān)內(nèi)容

http基礎(chǔ)概念和依賴協(xié)議

http,超文本傳輸協(xié)議衷笋,一種無狀態(tài)連接協(xié)議苟鸯,處于TCP/IP協(xié)議族中的應(yīng)用層,和Http同處于一層的協(xié)議有DNS協(xié)議(主要負(fù)責(zé)域名解析的協(xié)議)闪湾,http協(xié)議還依賴TCP(傳輸層),依賴IP協(xié)議(網(wǎng)絡(luò)層)和物理設(shè)備和驅(qū)動(鏈路層)绩卤。

一個(gè)常見http請求的執(zhí)行流程途样,比如瀏覽器輸入 www.baidu.com 整個(gè)執(zhí)行流程

  1. 首先通過DNS協(xié)議查詢 www.baidu.com 地址的IP地址
  2. 瀏覽器根據(jù) www.baidu.com ,IP地址濒憋,GET請求方式何暇,還有一些請求頭信息
  3. 將http封裝的請求數(shù)據(jù)包,通過TCP協(xié)議發(fā)送數(shù)據(jù)包凛驮,TCP通過三次握手獲取客戶端-服務(wù)器連接裆站,整個(gè)數(shù)據(jù)包有可能不是一次性發(fā)送到服務(wù)器端,可能切分成很多合適的大小的數(shù)據(jù)包進(jìn)行發(fā)送,每發(fā)送一個(gè)數(shù)據(jù)包宏胯,發(fā)送方都需要接收方返回一個(gè)確認(rèn)碼來確保這個(gè)數(shù)據(jù)包是到達(dá)接收方的羽嫡,如果在發(fā)送某一個(gè)數(shù)據(jù)包沒有接收到確認(rèn)碼的話,會進(jìn)行重發(fā)肩袍,直到斷開超時(shí)斷開
  4. 每一個(gè)TCP切分好數(shù)據(jù)包杭棵,在通過IP協(xié)議,在進(jìn)行包裝了牛;主要作用是確保數(shù)據(jù)包到達(dá)目標(biāo)服務(wù)器
  5. 服務(wù)器接收到所有IP數(shù)據(jù)包颜屠,然后拆包成TCP數(shù)據(jù)包,然后根據(jù)TCP數(shù)據(jù)包拆包解析成http數(shù)據(jù)包鹰祸,然后發(fā)現(xiàn)客戶端GET請求甫窟,獲取 www.baidu.com 資源,然后將該url對應(yīng)的資源進(jìn)行封裝成數(shù)據(jù)包蛙婴,再通過TCP協(xié)議粗井,IP協(xié)議封裝然后到達(dá)客戶端
  6. 最后客戶端獲取到http請求返回?cái)?shù)據(jù)包解析成指定的文件,然后對這些文件進(jìn)行渲染樣式之后就變成請求的頁面了
u=1483676830,597547372&fm=27&gp=0.jpg

http兩個(gè)重要特性

無狀態(tài)

無狀態(tài)指的是http每一個(gè)請求都是獨(dú)立的街图,沒有任何關(guān)聯(lián)浇衬,也是因?yàn)檫@個(gè)特性所以http協(xié)議推出了cookie的技術(shù)來進(jìn)行會話管理的實(shí)現(xiàn)

單向性

單向性是指的是,請求只能是客戶端主動發(fā)起請求餐济,然后服務(wù)器端進(jìn)行響應(yīng)耘擂,http請求無法從服務(wù)器端直接發(fā)起,客戶端進(jìn)行響應(yīng)絮姆,也是因?yàn)檫@個(gè)原因所以后來才有的WebSocket的技術(shù)來補(bǔ)充http協(xié)議的不足

http請求方式

請求方式 描述
GET 請求指定的頁面信息醉冤,并返回實(shí)體主體
HEAD 類似于get請求,只不過返回的響應(yīng)中沒有具體的內(nèi)容篙悯,用于獲取報(bào)頭
POST 向指定資源提交數(shù)據(jù)進(jìn)行處理請求(例如提交表單或者上傳文件)蚁阳。數(shù)據(jù)被包含在請求體中。POST請求可能會導(dǎo)致新的資源的建立和/或已有資源的修改
PUT 從客戶端向服務(wù)器傳送的數(shù)據(jù)取代指定的文檔的內(nèi)容
DELETE 請求服務(wù)器刪除指定的頁面
CONNECT HTTP/1.1協(xié)議中預(yù)留給能夠?qū)⑦B接改為管道方式的代理服務(wù)器
OPTIONS 允許客戶端查看服務(wù)器的性能
TRACE 回顯服務(wù)器收到的請求鸽照,主要用于測試或診斷

http常見請求頭標(biāo)簽

請求頭 描述
Accept 通知服務(wù)器螺捐,目前客戶端可以接受的數(shù)據(jù)類型
Accept-Language 客戶端,目前可以接受的字符集類型
Accept-Encoding 客戶端矮燎,可以接受的壓縮方式
host 用來區(qū)分同一IP下的定血,不同應(yīng)用
Upgrade-Insecure-Requests 指的是瀏覽器可以支持,http 相關(guān)的請求自動升級成 https
Connection http1.1之后漏峰,這個(gè)標(biāo)簽的值通過是keep-alive糠悼,意思多個(gè)http請求,公用一個(gè)TCP連接通道
Cache-Control 緩存控制浅乔,max-age=0的時(shí)候,意思就是不緩存
Cookie 服務(wù)器提供用來記錄會話,或者存儲一下簡單數(shù)據(jù)的鍵值對
User-Agent 客戶端目前所處環(huán)境信息靖苇,比如系統(tǒng)信息席噩,瀏覽器信息等等之類
Referer 查看請求發(fā)起源

http常見響應(yīng)頭標(biāo)簽

響應(yīng)頭 描述
Cache-Control 控制緩存
Connection 和請求頭里是一樣的
Content-Encoding 響應(yīng)報(bào)文壓縮方式
Content-Type 響應(yīng)文件類型
Date 響應(yīng)報(bào)文創(chuàng)建時(shí)間
Server 服務(wù)器類型
Transfer-Encoding: chunked 分塊傳輸標(biāo)識

常見響應(yīng)碼

響應(yīng)碼 描述
2xx 成功
3xx 重定向
4xx 客戶端錯誤
5xx 服務(wù)器錯誤

有一個(gè)比較特殊的響應(yīng)碼304響應(yīng)碼,該狀態(tài)碼表示客戶端發(fā)送附帶條件的請求時(shí)贤壁,服務(wù)器端允許請求訪問資源悼枢,但未滿足條件的情況;附帶條件就比如說脾拆,GET請求的時(shí)候馒索,請求中包含了If-Match, If-Modified-Since, If-None-Match等等是If開頭的請求體的時(shí)候,然后服務(wù)器又不滿足條件的時(shí)候名船,就返回304

Cookie與會話管理

cookie指的是服務(wù)器發(fā)送給客戶端的一個(gè)鍵值對的數(shù)據(jù)绰上;cookie主要有以下幾個(gè)屬性,有一點(diǎn)必須說明一下渠驼,一旦cookie被服務(wù)器發(fā)送給客戶端蜈块,那么只能是客戶端進(jìn)行管理,服務(wù)器端是服務(wù)管理客戶端的cookie內(nèi)容的迷扇,唯一的辦法就是通過發(fā)送相同的cookie來進(jìn)行原來的cookie進(jìn)行替換百揭,來達(dá)到刪除的效果

  1. key-value,cookie主要內(nèi)容
  2. expires屬性蜓席,設(shè)置cookie有效期時(shí)間器一,如果不設(shè)置的話,那么默認(rèn)一般來說厨内,就是最大生命周期是關(guān)閉瀏覽器的時(shí)間
  3. path屬性祈秕,用來限制cookie發(fā)送的文件目錄
  4. domain屬性,通常來說隘庄,可以不用設(shè)置踢步,默認(rèn)就是當(dāng)前域名;但是如果要達(dá)到多域名共享會話的時(shí)候丑掺,那可能需要手動設(shè)置了获印,比如deal.isuwang.com和personal.isuwang.com需要共享會話的,那么cookie的domain就需要設(shè)置成 .isuwang.com
  5. secure屬性街州,用來限制cookie只在是https安全連接下才發(fā)送cookie兼丰,這樣做的好處,就是防止cookie劫持的情況出現(xiàn)
  6. HttpOnly屬性唆缴,用來限制客戶端惡意修改cookie的內(nèi)容鳍征,有這個(gè)屬性的cookie,就無法在js中修改面徽,只能由服務(wù)器重新進(jìn)行設(shè)置值艳丛;但是實(shí)際上這樣的cookie還是可以修改的匣掸,chrome的客戶端有一些cookie相關(guān)的插件也是可以修改這樣的cookie

會話管理指的是,記錄客戶端-服務(wù)器之間的通信的狀態(tài)氮双,但是由于http是一種沒有沒有連接狀態(tài)的一種通信協(xié)議碰酝,每一次http請求都是一個(gè)全新的請求,所以兩次http請求無法共享一個(gè)上下文來記錄會話戴差,但是大部分服務(wù)器都是通過cookie來進(jìn)行會話管理的送爸,比如說Tomcat是采用一個(gè)JSESSIONID的cookie來進(jìn)行會話控制的,每一個(gè)瀏覽器在訪問是Tomcat的時(shí)候暖释,Tomcat都會給客戶端提供一個(gè)JESSIONID的cookie袭厂,這個(gè)cookie每一個(gè)客戶端是不會重復(fù)的,那么服務(wù)器端球匕,可以根據(jù)JESSIONID來創(chuàng)建一塊單屬于特定客戶端的內(nèi)存區(qū)域纹磺,來存放客戶端-服務(wù)器之間會話內(nèi)容

http與https

由于http,明文傳輸谐丢,通信通道沒有加密爽航,等等因素,導(dǎo)致http是一個(gè)不安全的協(xié)議乾忱,于是就有了https

https = http + 加密通道(SSL)+ 不對稱加密/解密方式 + 證書

SSL加密通道

SSL:介于http協(xié)議和TCP協(xié)議之間一個(gè)協(xié)議讥珍,是一個(gè)安全的傳輸協(xié)議

不對稱加密/加密方式

在Https中不對稱加密的做法是,通過證書中的公鑰進(jìn)行加密窄瘟,私鑰只有服務(wù)器端才有持有衷佃,也就說只有服務(wù)器端才能解密客戶端的請求

證書

證書的主要內(nèi)容包括三部分:1. 服務(wù)器公鑰; 2. 服務(wù)器的相關(guān)信息(比如IP地址蹄葱,比如認(rèn)證信息等等)氏义; 3. 證書頒發(fā)機(jī)構(gòu)數(shù)字簽名

公鑰的作用:用來加密請求信息
服務(wù)器相關(guān)信息作用:用來驗(yàn)證服務(wù)器信息
數(shù)字簽名作用:用來驗(yàn)證證書的有效期

總的來說,證書的作用就是图云,用來建立SSL加密通道惯悠,驗(yàn)證服務(wù)器相關(guān)信息,加密客戶端的請求

https請求流程

https主要是http中http請求竣况,和建立TCP連接通道之間額外加上了SSL通道克婶;主要是多了一下幾個(gè)步驟

  1. 從服務(wù)器獲取上證書
  2. 通過證書上的數(shù)字簽名找到第三方認(rèn)證機(jī)構(gòu)校驗(yàn)證書的真實(shí)性
  3. 校驗(yàn)通過后,通過借助證書建立SSL連接通道丹泉,對需要發(fā)送的http請求進(jìn)行加密

Http2.0

作為http2.0的時(shí)代情萤,首先第一點(diǎn)需要說明,http2.0不兼容http1.x版本摹恨;改版之后的新特性有

  1. http2.0首部壓縮筋岛;比如說訪問 www.baidu.com 需要加載大量的資源,比如目標(biāo)頁面晒哄,頁面樣式睁宰,頁面js等等肪获,還有一些的圖片;在http2.0下這些資源的加載可以復(fù)用請求頭勋陪,從而達(dá)到請求頭壓縮的效果贪磺,減少頭部數(shù)據(jù)的傳輸
  2. 所有http2.0請求都在一個(gè)TCP鏈接上硫兰,這樣做的好處诅愚,減少服務(wù)器創(chuàng)建連接開銷;TCP鏈接使用效率提高
  3. http2.0請求優(yōu)先級設(shè)定劫映,可以讓客戶端首先加載重要的資源
  4. http2.0服務(wù)器主動推送违孝,由于是http1.x時(shí)代,所有的請求只能是由客戶端發(fā)起泳赋,然后服務(wù)器再進(jìn)行響應(yīng)雌桑,這樣導(dǎo)致在協(xié)議層面就限制了http1.x無法實(shí)現(xiàn)服務(wù)器主動推送數(shù)據(jù)的動作
  5. 等等新特性。祖今。校坑。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市千诬,隨后出現(xiàn)的幾起案子耍目,更是在濱河造成了極大的恐慌,老刑警劉巖徐绑,帶你破解...
    沈念sama閱讀 211,948評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件邪驮,死亡現(xiàn)場離奇詭異,居然都是意外死亡傲茄,警方通過查閱死者的電腦和手機(jī)毅访,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,371評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來盘榨,“玉大人喻粹,你說我怎么就攤上這事〔菅玻” “怎么了守呜?”我有些...
    開封第一講書人閱讀 157,490評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長捷犹。 經(jīng)常有香客問我弛饭,道長,這世上最難降的妖魔是什么萍歉? 我笑而不...
    開封第一講書人閱讀 56,521評論 1 284
  • 正文 為了忘掉前任侣颂,我火速辦了婚禮,結(jié)果婚禮上枪孩,老公的妹妹穿的比我還像新娘憔晒。我一直安慰自己藻肄,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,627評論 6 386
  • 文/花漫 我一把揭開白布拒担。 她就那樣靜靜地躺著嘹屯,像睡著了一般。 火紅的嫁衣襯著肌膚如雪从撼。 梳的紋絲不亂的頭發(fā)上州弟,一...
    開封第一講書人閱讀 49,842評論 1 290
  • 那天,我揣著相機(jī)與錄音低零,去河邊找鬼婆翔。 笑死,一個(gè)胖子當(dāng)著我的面吹牛掏婶,可吹牛的內(nèi)容都是我干的啃奴。 我是一名探鬼主播,決...
    沈念sama閱讀 38,997評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼雄妥,長吁一口氣:“原來是場噩夢啊……” “哼最蕾!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起老厌,我...
    開封第一講書人閱讀 37,741評論 0 268
  • 序言:老撾萬榮一對情侶失蹤瘟则,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后梅桩,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體壹粟,經(jīng)...
    沈念sama閱讀 44,203評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,534評論 2 327
  • 正文 我和宋清朗相戀三年宿百,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了趁仙。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,673評論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡垦页,死狀恐怖雀费,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情痊焊,我是刑警寧澤盏袄,帶...
    沈念sama閱讀 34,339評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站薄啥,受9級特大地震影響辕羽,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜垄惧,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,955評論 3 313
  • 文/蒙蒙 一刁愿、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧到逊,春花似錦铣口、人聲如沸滤钱。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,770評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽件缸。三九已至,卻和暖如春叔遂,著一層夾襖步出監(jiān)牢的瞬間他炊,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,000評論 1 266
  • 我被黑心中介騙來泰國打工掏熬, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留佑稠,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,394評論 2 360
  • 正文 我出身青樓旗芬,卻偏偏與公主長得像,于是被迫代替她去往敵國和親捆蜀。 傳聞我的和親對象是個(gè)殘疾皇子疮丛,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,562評論 2 349

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