這篇是《圖解HTTP》的讀書(shū)筆記炉奴,這本書(shū)是一些比較淺顯的概念佛吓,僅用來(lái)當(dāng)做科普入門(mén)可以擦酌,內(nèi)容基于HTTP/1.1俱诸。
一、概念
HTTP:Hyper-Text Transfer Protocol赊舶,超文本傳輸協(xié)議睁搭。是一種協(xié)議規(guī)范,用來(lái)完成從客戶端到服務(wù)器端的一系列運(yùn)作流程笼平≡奥妫可以說(shuō),Web是建立在HTTP協(xié)議上通信的寓调,屬于TCP/IP協(xié)議族的一個(gè)子集锌唾。
二、TCP/IP
1.TCP/IP協(xié)議族的分層管理
TCP/IP協(xié)議族按層次分別分為以下4層:應(yīng)用層夺英,傳輸層鸠珠,網(wǎng)絡(luò)層和數(shù)據(jù)鏈路層。
- 應(yīng)用層
應(yīng)用層決定了向用戶提供應(yīng)用服務(wù)時(shí)通信的活動(dòng)秋麸,如FTP渐排,DNS,HTTP - 傳輸層
傳輸層對(duì)上層應(yīng)用層灸蟆,提供處于網(wǎng)絡(luò)連接中的兩臺(tái)計(jì)算機(jī)之間的數(shù)據(jù)傳輸驯耻。 - 網(wǎng)絡(luò)層(又名網(wǎng)絡(luò)互連層)
網(wǎng)絡(luò)層用來(lái)處理在網(wǎng)絡(luò)上流動(dòng)的數(shù)據(jù)包 -
數(shù)據(jù)鏈路層
用來(lái)處理連接網(wǎng)絡(luò)的硬件部分。包括控制操作系統(tǒng)炒考,硬件的設(shè)備驅(qū)動(dòng)等物理課件的部分可缚。
發(fā)送端在層與層之間傳輸數(shù)據(jù)時(shí),每經(jīng)過(guò)一層時(shí)必定會(huì)被打上一個(gè)該層所屬的首部信息斋枢。反之帘靡,接收端在層與層傳輸數(shù)據(jù)時(shí),每經(jīng)過(guò)一層時(shí)會(huì)把對(duì)應(yīng)的首部消去瓤帚。
2.與HTTP關(guān)系密切的:IP\TCP\DNS
IP協(xié)議:IP協(xié)議的作用是把各種數(shù)據(jù)包傳送給對(duì)方描姚。其中兩個(gè)重要條件是IP地址和MAC地址涩赢;IP地址指明了節(jié)點(diǎn)被分配到的地址,MAC地址是指向網(wǎng)卡所屬的固定地址轩勘。IP地址可以和MAC地址進(jìn)行配對(duì)筒扒,IP地址可變換,但MAC地址基本上不會(huì)更改绊寻。(ARP可以根據(jù)通信方的IP地址反查出對(duì)應(yīng)的MAC地址)花墩。
-
TCP協(xié)議:TCP提供可靠的字節(jié)流服務(wù)(為方便傳輸,大塊的數(shù)據(jù)將被分割成報(bào)文段為單位的數(shù)據(jù)包進(jìn)行管理)澄步。為了將數(shù)據(jù)準(zhǔn)確送達(dá)冰蘑,TCP采用了三次握手策略,若在握手過(guò)程中某個(gè)階段莫名中斷村缸,TCP協(xié)議會(huì)再次以相同的順序發(fā)送數(shù)據(jù)包懂缕。
DNS協(xié)議:提供通過(guò)域名查找IP地址,或逆向從IP地址反查域名的服務(wù)王凑。
三、簡(jiǎn)單的HTTP協(xié)議
1.HTTP是不保存狀態(tài)的協(xié)議
即無(wú)狀態(tài)協(xié)議聋丝。每當(dāng)有新的請(qǐng)求發(fā)送索烹,就會(huì)產(chǎn)生對(duì)應(yīng)的響應(yīng),協(xié)議本身不保留之前的一切請(qǐng)求或響應(yīng)報(bào)文的信息弱睦。
2.HTTP方法
只列舉了一些
- GET:獲取資源
- POST:傳輸實(shí)體主體
- PUT:傳輸文件(HTTP/1.1的PUT方法自身不帶驗(yàn)證機(jī)制百姓,存在安全問(wèn)題)
- HEAD:獲得報(bào)文首部,和GET方法一樣况木,只是不返回報(bào)文主體部分垒拢。
- DELETE:刪除文件(HTTP/1.1的DELETE方法自身不帶驗(yàn)證機(jī)制,存在安全問(wèn)題)
- OPTIONS:詢問(wèn)服務(wù)端支持的方法
3.使用Cookie的狀態(tài)管理
Cookie技術(shù)通過(guò)在請(qǐng)求和響應(yīng)報(bào)文中寫(xiě)入Cookie信息來(lái)控制客戶端的狀態(tài)
四火惊、狀態(tài)碼
數(shù)字的第一位指定了響應(yīng)類別求类,分別有以下5種:
- 1XX:接收的請(qǐng)求正在處理
- 2XX:請(qǐng)求正常處理完畢
- 3XX:需要進(jìn)行附加操作以完成請(qǐng)求(重定向)
- 4XX:服務(wù)器無(wú)法處理請(qǐng)求(客戶端錯(cuò)誤)
- 5XX:服務(wù)器處理請(qǐng)求出錯(cuò)(服務(wù)端錯(cuò)誤)