Http網(wǎng)絡(luò)協(xié)議
一代咸、簡(jiǎn)介
- 超文本傳輸協(xié)議,基于TCP/IP協(xié)議來傳輸數(shù)據(jù)陵吸;
- 原理:客戶端-服務(wù)端架構(gòu)玻墅,客戶通過URL向服務(wù)端發(fā)起請(qǐng)求,服務(wù)端接收到請(qǐng)求后壮虫,向客戶端發(fā)送響應(yīng)內(nèi)容澳厢。
二、特點(diǎn)
- 無連接囚似,限制每次連接只處理一個(gè)請(qǐng)求赏酥,服務(wù)器處理完客戶端請(qǐng)求,并收到客戶端的應(yīng)答后谆构,斷開連接裸扶,節(jié)省傳輸時(shí)間;
- 媒體獨(dú)立搬素,客戶端和服務(wù)器能處理 的數(shù)據(jù)呵晨,都可以通過Http發(fā)送;
- 無狀態(tài)熬尺,對(duì)于處理過的事務(wù)沒有記憶能力摸屠,無法記住用戶是否登錄,cookie就是用來解決這個(gè)問題的粱哼。
- 明文傳輸季二,容易被監(jiān)聽
三、消息結(jié)構(gòu)
-
客戶端請(qǐng)求消息:請(qǐng)求行-請(qǐng)求頭-空行-請(qǐng)求內(nèi)容
image.png -
服務(wù)器響應(yīng)消息:響應(yīng)行-消息報(bào)頭-空行-響應(yīng)正文
image.png
四揭措、狀態(tài)碼分類
- 1**:消息服務(wù)器已經(jīng)收到胯舷,需要請(qǐng)求者繼續(xù)操作,eg:101:客戶端需要切換協(xié)議绊含;
- 2**:成功桑嘶,eg:200;
- 3**:重定向躬充,需要進(jìn)一步操作完成請(qǐng)求逃顶,eg:302:網(wǎng)頁(yè)被永久轉(zhuǎn)移到其他URL讨便;
- 4**:客戶端錯(cuò)誤,eg:404:找不到頁(yè)面以政;
- 5**:服務(wù)器錯(cuò)誤霸褒,eg:500:內(nèi)部服務(wù)器錯(cuò)誤。
五盈蛮、請(qǐng)求方法
HTTP1.0 定義了三種請(qǐng)求方法: GET, POST 和 HEAD 方法傲霸。
HTTP1.1 新增了五種請(qǐng)求方法:OPTIONS、PUT眉反、PATCH昙啄、DELETE、TRACE 和 CONNECT 方法
- GET 請(qǐng)求指定的頁(yè)面信息寸五,并返回實(shí)體主體;
- HEAD 類似于 GET 請(qǐng)求梳凛,只不過返回的響應(yīng)中沒有具體的內(nèi)容,用于獲取報(bào)頭;
- POST 向指定資源提交數(shù)據(jù)進(jìn)行處理請(qǐng)求(例如提交表單或者上傳文件)梳杏。數(shù)據(jù)被包含在請(qǐng)求體中韧拒。POST 請(qǐng)求可能會(huì)導(dǎo)致新的資源的建立和 / 或已有資源的修改;
- PUT 從客戶端向服務(wù)器傳送的數(shù)據(jù)取代指定的文檔的內(nèi)容;
- DELETE 請(qǐng)求服務(wù)器刪除指定的頁(yè)面;
- CONNECT HTTP/1.1 協(xié)議中預(yù)留給能夠?qū)⑦B接改為管道方式的代理服務(wù)器;
- OPTIONS 允許客戶端查看服務(wù)器的性能;
- TRACE 回顯服務(wù)器收到的請(qǐng)求,主要用于測(cè)試或診斷;
- PATCH 是對(duì) PUT 方法的補(bǔ)充十性,用來對(duì)已知資源進(jìn)行局部更新 .
六叛溢、GET和POST區(qū)別
- GET:請(qǐng)求指定頁(yè)面信息,直接寫URL訪問劲适,暴露URL楷掉,可以被緩存,不安全霞势;請(qǐng)求頭和數(shù)據(jù)打包在一起發(fā)送烹植;數(shù)據(jù)長(zhǎng)度有限制(2K);
- POST: 向指定資源提交數(shù)據(jù)進(jìn)行處理請(qǐng)求愕贡,數(shù)據(jù)包在請(qǐng)求體內(nèi)草雕;參數(shù)不會(huì)被保留;先發(fā)送head固以,服務(wù)器響應(yīng)100墩虹,再發(fā)送data,發(fā)包兩次憨琳。
七诫钓、三次握手
關(guān)鍵詞
- SYN:同步位,位碼=1栽渴,代表同步位狀態(tài)成功
- 序列號(hào):Sequence Number 隨機(jī)產(chǎn)生
- ACK:確認(rèn)位尖坤,主機(jī)產(chǎn)生的序列號(hào)+1
- SYN_SENT:客戶端已經(jīng)發(fā)送完SYN數(shù)據(jù)包
- SYN_RCVD:服務(wù)端已經(jīng)收到SYN數(shù)據(jù)包
- ESTABLISHED:已經(jīng)建立了連接可以發(fā)送數(shù)據(jù)
TCP三次握手
第一次:客戶端向服務(wù)端發(fā)送SYN數(shù)據(jù)包(SYN=1, 序列號(hào)=x)∠胁粒客戶端進(jìn)入SYN_SENT狀態(tài)慢味,等待服務(wù)端確認(rèn);
第二次:服務(wù)端接收到SYN數(shù)據(jù)包并進(jìn)行確認(rèn)(SYN=1,ACK number=x+1,ACK=1墅冷,序列號(hào)=y)纯路,再發(fā)送SYN+ACK數(shù)據(jù)包給客戶端,服務(wù)端進(jìn)入SYN_RCVD狀態(tài)寞忿;
第三次:客戶端收到ACK+SYN數(shù)據(jù)包驰唬,如果ACK Number=x+1,將ACK Number設(shè)置為y+1腔彰,ACK=1叫编,向服務(wù)器發(fā)送ACK數(shù)據(jù)包,此時(shí)服務(wù)端客戶端都進(jìn)入ESTABLISHED狀態(tài)霹抛。
為什么需要三次握手搓逾?
為了防止已經(jīng)失效的連接請(qǐng)求報(bào)文突然又傳到服務(wù)端 ,產(chǎn)生錯(cuò)誤杯拐。 解釋:報(bào)文已經(jīng)發(fā)送霞篡,但是在某個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)發(fā)送滯留,導(dǎo)致連接釋放端逼,釋放后報(bào)文才到達(dá)另一端朗兵。
八、四次揮手
關(guān)鍵詞
- FIN:結(jié)束
- FIN_WAIT_1:客戶端主動(dòng)關(guān)閉連接時(shí)的狀態(tài)(此狀態(tài)難以看到顶滩,發(fā)起關(guān)閉連接后余掖,另一端會(huì)馬上同意)
- FIN_WAIT_2:服務(wù)端同意關(guān)閉后,但是還有一些數(shù)據(jù)要給客戶端礁鲁,客戶端不能馬上關(guān)閉浊吏,半連接狀態(tài);
- TIME_WAIT:客戶端等2MSL后救氯,就可以關(guān)閉了找田。(如果FIN_WAIT_1時(shí)就收到了FIN和ACK的數(shù)據(jù),直接進(jìn)入此狀態(tài))
- 2MSL:最大生存時(shí)間着憨;
- CLOSED:2MSL后進(jìn)入關(guān)閉狀態(tài)墩衙。
TCP四次揮手
第一次:客戶端給服務(wù)端發(fā)送FIN報(bào)文(序列號(hào)=x),A進(jìn)入FIN_WAIT_1狀態(tài)甲抖,表示客戶端沒有數(shù)據(jù)給服務(wù)端了漆改;
第二次:服務(wù)端收到FIN報(bào)文,給A發(fā)送ACK報(bào)文(ACK=x+1)准谚,A進(jìn)入FIN_WAIT_2狀態(tài)挫剑。服務(wù)端同意客戶端關(guān)閉連接;
第三次:服務(wù)端向客戶端發(fā)送FIN報(bào)文(序列號(hào)=y)柱衔,請(qǐng)求關(guān)閉連接樊破,服務(wù)端進(jìn)入LAST_ACK狀態(tài)愉棱;
第四次:客戶端收到FIN報(bào)文,向服務(wù)端發(fā)送ACK報(bào)文(ACK=y+1)哲戚,A進(jìn)入TIME_WAIT狀態(tài)奔滑,服務(wù)端收到ACK報(bào)文后關(guān)閉連接,客戶端在2MSL后依舊沒有收到回復(fù)顺少,證明服務(wù)端已經(jīng)關(guān)閉朋其,客戶端就可以關(guān)閉了。
為什么TCP需要四次揮手脆炎?
TCP是一種面向連接的梅猿、可靠地的、基于字節(jié)流的傳輸層通信協(xié)議秒裕。
TCP是全雙工模式袱蚓,主機(jī)1請(qǐng)求關(guān)閉連接,不在發(fā)送數(shù)據(jù)簇爆,但是可以接收主機(jī)2的數(shù)據(jù)癞松,主機(jī)2不再發(fā)送數(shù)據(jù)狂丝,才算關(guān)閉鸯乃,減少了數(shù)據(jù)丟失的風(fēng)險(xiǎn)钻弄。
Https網(wǎng)絡(luò)協(xié)議
一历筝、簡(jiǎn)介
- 安全超文本傳輸協(xié)議虱咧,基于TCP/IP協(xié)議來傳輸數(shù)據(jù)砸彬;
- 原理:客戶端-服務(wù)端架構(gòu)装黑,客戶通過URL向服務(wù)端發(fā)起請(qǐng)求限番,服務(wù)端接收到請(qǐng)求后扼褪,向客戶端發(fā)送響應(yīng)內(nèi)容想幻。
- 通過SSL(安全套接層)或者TLS(運(yùn)輸層安全)加密
二、原理
- 當(dāng)計(jì)算機(jī)連接到使用SSL的網(wǎng)站服務(wù)器時(shí)话浇,計(jì)算機(jī)的網(wǎng)頁(yè)瀏覽器會(huì)要求網(wǎng)站確認(rèn)自己的身份脏毯,網(wǎng)頁(yè)服務(wù)器會(huì)向計(jì)算機(jī)發(fā)送其SSL證書的副本。