HTTP協(xié)議筆記
標(biāo)簽(空格分隔): HTTP盲赊,TCP/IP
[TOC]
1.網(wǎng)絡(luò)協(xié)議基礎(chǔ)知識(shí)
TCP/IP協(xié)議族按層次分為以下四層:
應(yīng)用層、傳輸層篡殷、網(wǎng)絡(luò)層卓箫、數(shù)據(jù)鏈路層
應(yīng)用層:
應(yīng)用層的協(xié)議有比如FTP迷雪,DNS以及HTTP協(xié)議
傳輸層:
主要是TCP(面向有連接)和UDP(面向無連接)
網(wǎng)絡(luò)層:
網(wǎng)絡(luò)層則是用來處理在網(wǎng)絡(luò)上流動(dòng)的數(shù)據(jù)包限书,數(shù)據(jù)包是網(wǎng)絡(luò)傳輸?shù)淖钚挝弧V饕膮f(xié)議為IP協(xié)議章咧。
鏈路層:
主要是來處理鏈接網(wǎng)絡(luò)的硬件部分倦西。
IP 協(xié)議:
IP協(xié)議的作用是把各數(shù)據(jù)包傳送給對(duì)方。其中重要的兩個(gè)部分則是IP地址(勿和協(xié)議混淆)以及MAC地址(MAC地址是網(wǎng)卡所屬的固定的地址)赁严。并且IP地址與MAC地址相配對(duì)扰柠,IP地址可變粉铐,MAC地址不可變。
ARP協(xié)議:
一種解析地址的協(xié)議卤档,可以通過對(duì)方的IP地址查出對(duì)應(yīng)的MAC地址蝙泼。
TCP協(xié)議:
三次握手:
TCP是面向有連接的傳輸協(xié)議。TCP不會(huì)對(duì)數(shù)據(jù)包置之不理劝枣,而是一直會(huì)向?qū)Ψ酱_認(rèn)所傳輸?shù)臄?shù)據(jù)包是否已經(jīng)到達(dá)汤踏。在三次握手中,會(huì)使用SYN以及ACK標(biāo)志來進(jìn)行確認(rèn)舔腾。
發(fā)送段首先將標(biāo)有SYN的數(shù)據(jù)包發(fā)送給接收端溪胶,接收端收到后,回答一個(gè)帶有SYN以及ACK的數(shù)據(jù)包來表示己方已經(jīng)成功的接收到了消息稳诚。最后發(fā)送端再回傳一個(gè)ACK標(biāo)志的數(shù)據(jù)包給接收端哗脖。這時(shí)代表三次握手結(jié)束。此時(shí)發(fā)送端再向接收端開始傳送數(shù)據(jù)扳还。
發(fā)送端 >————SYN————>接收端
發(fā)送端 <———SYN/ACK———<接收端
發(fā)送端 >————ACK————>接收端
四次揮手
發(fā)送端 >———FIN/ACK———>接收端
發(fā)送端 <————ACK————<接收端
發(fā)送端 <————FIN————<接收端
發(fā)送端 >————ACK————>接收端
DNS服務(wù):
DNS是和HTTP一樣位于應(yīng)用層的協(xié)議才避,它的作用是提供域名和IP地址之間的解析服務(wù)。也就是給我們一個(gè)域名普办,我們可以查它的IP地址或者說工扎,通過IP地址,反查出域名衔蹲。
2.HTTP
HTTP協(xié)議主要是客戶端到服務(wù)器端的通信協(xié)議肢娘。
HTTP協(xié)議可以分出客戶端以及服務(wù)器端,因?yàn)榭偸强蛻舳税l(fā)送請(qǐng)求舆驶,而服務(wù)器端回復(fù)響應(yīng)橱健。所以換句話說,客戶端先發(fā)出請(qǐng)求沙廉,后而有服務(wù)器端作出響應(yīng)拘荡。
HTTP是一種無狀態(tài)協(xié)議,也就是說不對(duì)請(qǐng)求和響應(yīng)之間的通信狀態(tài)進(jìn)行保存撬陵。所以只要有新的請(qǐng)求發(fā)生珊皿,就會(huì)有新的回應(yīng)產(chǎn)生。(cookie的使用則是為了方便管理狀態(tài))
HTTP使用URI定位資源巨税。
告知服務(wù)器意圖的HTTP方法
GET:獲取資源
GET方法用來請(qǐng)求訪問已經(jīng)被URI識(shí)別的資源蟋定,然后資源通過服務(wù)器解析后返回響應(yīng)的內(nèi)容。如果請(qǐng)求的資源是文本草添,那就保持原樣返回驶兜。
POST:傳輸實(shí)體主體
POST方法用來傳送實(shí)體的主體,一般由客戶端向服務(wù)器端發(fā)送信息,例如提交表格等等向服務(wù)器端提交信息抄淑。
PUT:傳輸文件
PUT方法用來傳輸文件屠凶,類似于FTP協(xié)議的文件上傳一樣,在請(qǐng)求報(bào)文中包含文件的主體內(nèi)容肆资,然后請(qǐng)求保存到URI指定的位置上矗愧。(HTTP/1.1不帶身份驗(yàn)證機(jī)制,所以并不安全)
HEAD:獲取報(bào)文首部
HEAD方法類似于GET方法迅耘,只是不返回主體報(bào)文贱枣,只是返回一個(gè)報(bào)文首部,用于確認(rèn)URI的有效性以及資源更新的日期等等颤专。
DELETE:刪除文件
DELETE方法用于刪除文件纽哥,和PUT相反
OPTIONS:詢問支持的方法
顧名思義,就是向服務(wù)器端詢問支持的哪些方法
Cookie狀態(tài)管理
之前有提到HTTP是無狀態(tài)協(xié)議栖秕,它無法對(duì)之氣發(fā)生過的請(qǐng)求和響應(yīng)進(jìn)行管理春塌。例如一個(gè)登錄頁(yè)面,我們每次打開整個(gè)頁(yè)面都需要重新進(jìn)行登錄簇捍,提交我們的身份信息進(jìn)行登錄只壳。而使用了Cookie之后,在客戶端會(huì)保存Cookie文件暑塑,在下次提交請(qǐng)求和響應(yīng)的過程中吼句,客戶端會(huì)將Cookie中的信息自動(dòng)的添加到報(bào)文請(qǐng)求中,相當(dāng)于自動(dòng)的為我們?yōu)槲覀兇鎯?chǔ)了狀態(tài)信息事格。
3.HTTP狀態(tài)碼
當(dāng)客戶端向服務(wù)器端發(fā)送請(qǐng)求時(shí)惕艳,狀態(tài)碼用來返回請(qǐng)求結(jié)果
2XX成功
200ok
表示客戶端的請(qǐng)求被成功的正常處理
204 No Content
表示服務(wù)器端接收的請(qǐng)求已經(jīng)被正常處理。(不返回新資源)
206 Partial Content
客戶端對(duì)服務(wù)器端資源的部分請(qǐng)求
3XX重定向
304 Not Modified
表示客戶端發(fā)送附帶條件的請(qǐng)求時(shí)驹愚,服務(wù)器端允許請(qǐng)求訪問資源远搪,但是并未滿足條件的情況。
4XX客戶端錯(cuò)誤
400 Bad Request
請(qǐng)求報(bào)文中有語(yǔ)法錯(cuò)誤
403 Forbidden
服務(wù)器拒絕了請(qǐng)求資源的訪問
例如未獲得文件系統(tǒng)的訪問授權(quán)逢捺,訪問權(quán)限出現(xiàn)問題
404 Not Found
服務(wù)器上無法找到請(qǐng)求的資源
5XX服務(wù)器錯(cuò)誤
5xx響應(yīng)表明服務(wù)器本身出現(xiàn)錯(cuò)誤