1 HTTP協(xié)議
1.1請(qǐng)求報(bào)文
1.2 響應(yīng)報(bào)文
1.3 http的請(qǐng)求方式有哪些
1.4 HTTP擴(kuò)展方法
1.5 GET和POST的區(qū)別(從語(yǔ)義的角度)
1.6 狀態(tài)碼
1.7 首部
1.8 連接建立過(guò)程
1.9 HTTP的特點(diǎn)
2 HTTP與網(wǎng)絡(luò)安全
2.1 HTTPS連接建立流程是怎樣的
2.2 HTTPS都使用了那些加密手段美旧?為什么
3 TCP/UDP傳輸層協(xié)議
3.1 DNS解析
3.1.1 了解DNS解析
3.1.2 DNS解析查詢方式
3.1.3 DNS解析存在哪些常見(jiàn)問(wèn)題
3.1.3.1 DNS劫持問(wèn)題
3.1.3.2 DNS解析轉(zhuǎn)發(fā)問(wèn)題
3.1.3.3 怎么解決DNS劫持
4 Session/Cookie
1 HTTP協(xié)議
HTTP是超文本傳輸協(xié)議
了解報(bào)文流的概念:
HTTP報(bào)文在客戶端、服務(wù)器陶舞、和代理之間的傳遞可以形象的稱為流動(dòng)绪励。術(shù)語(yǔ)“流入”优炬、“流出”、“上游”雅宾、“下游”是在流的基礎(chǔ)上定義的眉抬,用來(lái)描述報(bào)文方向懈凹。
“流入”意為報(bào)文從客戶端到達(dá)服務(wù)器介评;“流出”,則和流入相反寒瓦∑撼穑可以看出椅文,這兩個(gè)術(shù)語(yǔ)是針對(duì)服務(wù)器而言。
“上游”和“下游”少辣,不管是請(qǐng)求報(bào)文還是響應(yīng)報(bào)文毒坛,所有報(bào)文都會(huì)向“下游”流動(dòng)。所有報(bào)文的發(fā)送者都在接收者的“上游”屯伞。
1.1請(qǐng)求報(bào)文
1.2 響應(yīng)報(bào)文
? HTTP報(bào)文結(jié)構(gòu):
實(shí)例 :請(qǐng)求和響應(yīng)報(bào)文
各部分的作用如下:
- 起始行和首部是由行分割的ASCII文本,每行由一個(gè)回車符(\n)和一個(gè)換行符(\r)組成的序列結(jié)束末融。這個(gè)序列可以寫(xiě)作CRLF勾习。
- method懈玻,客戶端希望服務(wù)器執(zhí)行的動(dòng)作。
- request-url艺栈,請(qǐng)求的資源路徑湿右。
- version罚勾,HTTP的版本尖殃,如HTTP/1.0。不同版本有不同的特性。
- status蚪战,3位數(shù)铐懊,描述了請(qǐng)求過(guò)程中的情況科乎。具體介紹在后面。
- reason-phrase捏萍,和status對(duì)應(yīng)令杈,是其描述。
- headers掉丽,可以沒(méi)有或多個(gè)异雁。具體介紹在后面纲刀。
- entity-body,數(shù)據(jù)塊芥挣,主體是可選的空免,可以為二進(jìn)制或文本盆耽。
1.3 HTTP的請(qǐng)求方式有哪些
HTTP規(guī)定了這些方法摄杂,具體服務(wù)器是否支持,由服務(wù)器確定墨坚。
HTTP的請(qǐng)求方式 | 描述 | 詳細(xì)描述 |
---|---|---|
GET | 告知服務(wù)器泽篮,需要從服務(wù)器向客戶端發(fā)送命名資源 | 從服務(wù)器獲取資源柑船,HTTP/1.1 要求實(shí)現(xiàn)的方法鞍时。 |
HEAD | 僅發(fā)送命名資源響應(yīng)中的HTTP首部 | 和GET 方法類似扣蜻,但是響應(yīng)報(bào)文中不會(huì)包含主體部分莽使。使用該特性吮旅,可以在不真正獲取資源的情況下完成:判斷資源類型 查看對(duì)應(yīng)資源是否存在 查看資源是否被修改 HTTP/1.1 規(guī)范中要求實(shí)現(xiàn)該方法味咳,并且對(duì)于同一資源槽驶,該方法響應(yīng)首部應(yīng)該和GET 方法返回的相同。 |
PUT | 將客戶端的數(shù)據(jù)存儲(chǔ)的命名的服務(wù)器資源中 | 和GET 相反罕拂,請(qǐng)求服務(wù)器在指定位置創(chuàng)建文件爆班,內(nèi)容為請(qǐng)求主體的內(nèi)容辱姨。若對(duì)應(yīng)資源存在雨涛,則替換。 |
POST | 將客戶端數(shù)據(jù)發(fā)送到一個(gè)服務(wù)器應(yīng)用程序 | 客戶端向服務(wù)器發(fā)送數(shù)據(jù)凉泄。常用來(lái)提交表單后众。 |
TRACE | 追溯一個(gè)請(qǐng)求 | 客戶端發(fā)出請(qǐng)求后吼具,可能經(jīng)過(guò)中間的網(wǎng)關(guān)矩距、代理等锥债,原始請(qǐng)求可能被修改,使用TRACE 可以查看最終到達(dá)服務(wù)器的請(qǐng)求具體是什么樣子(服務(wù)器在響應(yīng)報(bào)文的主體中包含其收到的請(qǐng)求報(bào)文)登夫。TRACE 通常用于診斷一個(gè)請(qǐng)求是否能到達(dá)服務(wù)器恼策,不能帶有主體部分涣楷。 |
OPTIONS | 查看服務(wù)器對(duì)資源支持的操作 | 用于查看服務(wù)器對(duì)特定資源所支持的方法抗碰。在請(qǐng)求報(bào)文中若使用*代替URL弧蝇,則意為查看服務(wù)器對(duì)所有資源的通用方法。 |
DELETE | 從服務(wù)器刪除資源 | 請(qǐng)求服務(wù)器刪除指定資源沙峻。當(dāng)然摔寨,具體是否刪除祷肯,由服務(wù)器決定 |
1.4 HTTP擴(kuò)展方法
HTTP擴(kuò)展方法指的是沒(méi)有在HTTP規(guī)范中定義的方法疗隶。例如斑鼻,下面是在WebDAV HTTP擴(kuò)展中的方法:
擴(kuò)展方法名 | 描述 |
---|---|
LOCK | 告知服務(wù)器,對(duì)指定資源鎖定蜀备,防止其他人對(duì)其更改 |
MKCOL | 允許用戶創(chuàng)建資源 |
COPY | 允許用戶 復(fù)制資源 |
MOVE | 移動(dòng)服務(wù)器資源 |
1.5 GET和POST的區(qū)別
1.6 狀態(tài)碼
1.7 首部
1.8 連接建立過(guò)程
三次揮手(建立連接)
第一次:建立連接時(shí),客戶端發(fā)送SYN包(syn=j)到服務(wù)器脂凶,并進(jìn)入SYN_SEND狀態(tài),等待服務(wù)器確認(rèn)亭病;
第二次:服務(wù)器收到SYN包罪帖,向客戶端返回ACK(ack=j+1)邮屁,同時(shí)自己也發(fā)送一個(gè)SYN包(syn=k)樱报,即SYN+ACK包,此時(shí)服務(wù)器進(jìn)入SYN_RCVD狀態(tài)迹蛤;
第三次:客戶端收到服務(wù)器的SYN+ACK包民珍,向服務(wù)器發(fā)送確認(rèn)包ACK(ack=k+1),此包發(fā)送完畢盗飒,客戶端和服務(wù)器進(jìn)入ESTABLISHED狀態(tài)嚷量,完成三次握手。
完成三次握手逆趣,客戶端與服務(wù)器開(kāi)始傳送數(shù)據(jù)蝶溶,也就是ESTABLISHED狀態(tài)。
三次握手保證了不會(huì)建立無(wú)效的連接宣渗,從而浪費(fèi)資源。
四次揮手(斷開(kāi)連接)
第一次: TCP客戶端發(fā)送一個(gè)FIN痕囱,用來(lái)關(guān)閉客戶到服務(wù)器的數(shù)據(jù)傳送田轧。
第二次:服務(wù)器收到這個(gè)FIN,它發(fā)回一個(gè)ACK鞍恢,確認(rèn)序號(hào)為收到的序號(hào)加1傻粘。和SYN一樣,一個(gè)FIN將占用一個(gè)序號(hào)帮掉。
第三次:服務(wù)器關(guān)閉客戶端的連接弦悉,發(fā)送一個(gè)FIN給客戶端。
第四次:客戶端發(fā)回ACK報(bào)文確認(rèn)蟆炊,并將確認(rèn)序號(hào)設(shè)置為收到序號(hào)加1稽莉。
1.9 HTTP的特點(diǎn)
支持客戶/服務(wù)器模式
-
簡(jiǎn)單快速:
客戶向服務(wù)器請(qǐng)求服務(wù)時(shí),只需傳送請(qǐng)求方法和路徑涩搓。請(qǐng)求方法常用的有GET污秆、HEAD后室、POST。每種方法規(guī)定了客戶與服務(wù)器聯(lián)系的類型不同混狠。由于HTTP協(xié)議簡(jiǎn)單,使得HTTP服務(wù)器的程序規(guī)模小疾层,因而通信速度很快将饺。 -
靈活:
HTTP允許傳輸任意類型的數(shù)據(jù)對(duì)象。正在傳輸?shù)念愋陀蒀ontent-Type(Content-Type是HTTP包中用來(lái)表示內(nèi)容類型的標(biāo)識(shí))加以標(biāo)記痛黎。 -
無(wú)連接:
無(wú)連接的含義是限制每次連接只處理一個(gè)請(qǐng)求予弧。服務(wù)器處理完客戶的請(qǐng)求,并收到客戶的應(yīng)答后湖饱,即斷開(kāi)連接掖蛤。采用這種方式可以節(jié)省傳輸時(shí)間。 -
無(wú)狀態(tài):
HTTP協(xié)議是無(wú)狀態(tài)協(xié)議井厌。無(wú)狀態(tài)是指協(xié)議對(duì)于事務(wù)處理沒(méi)有記憶能力蚓庭。缺少狀態(tài)意味著如果后續(xù)處理需要前面的信息,則它必須重傳仅仆,這樣可能導(dǎo)致每次連接傳送的數(shù)據(jù)量增大器赞。另一方面,在服務(wù)器不需要先前信息時(shí)它的應(yīng)答就較快墓拜。
持久連接:
2 HTTP與網(wǎng)絡(luò)安全
2.1 HTTPS連接建立流程是怎樣的
2.2 HTTPS都使用了那些加密手段港柜?為什么
3 TCP/UDP傳輸層協(xié)議
3.1 DNS解析
4 Session/Cookie
參考文章:
《圖解HTTP》— HTTP報(bào)文信息
【讀】這一次,讓我們?cè)偕钊胍稽c(diǎn) - HTTP報(bào)文
iOS http & https & 網(wǎng)絡(luò)請(qǐng)求過(guò)程
詳細(xì)解析 HTTP 與 HTTPS 的區(qū)別
IOS 網(wǎng)絡(luò)請(qǐng)求之 NSURLSession 使用
iOS網(wǎng)絡(luò)層詳解和優(yōu)化
HTTP協(xié)議詳解(一)
HTTP協(xié)議詳解(二)