HTTP請(qǐng)求報(bào)文結(jié)構(gòu)
4部分:
[圖片上傳失敗...(image-411794-1539070537099)]
請(qǐng)求行 GET /user http1.1
請(qǐng)求頭 附加信息,比如cookie混移,Content-Length,Content-Type
空行:表示請(qǐng)求頭到這里結(jié)束
請(qǐng)求體 get沒(méi)有驱显,post有
響應(yīng)報(bào)文
[圖片上傳失敗...(image-adf26b-1539070537099)]
HTTP 1.0和1.1 的區(qū)別
1.1 默認(rèn)使用長(zhǎng)連接
1.1 引入了100狀態(tài)碼,客戶(hù)端先發(fā)送一個(gè)只有請(qǐng)求頭的請(qǐng)求类垦,如果可以訪(fǎng)問(wèn)返回100举反,然后繼續(xù)發(fā)送完整的請(qǐng)求。如果不能返回401笔宿,不在發(fā)送完整請(qǐng)求了,節(jié)約帶寬棱诱。
三次握手
三次握手是建立一個(gè)可靠連接的最少握手次數(shù)泼橘,這個(gè)階段主要是為了建立一個(gè)可靠的連接,并確認(rèn)發(fā)送數(shù)據(jù)的序列號(hào)
為什么要三次握手迈勋?
假設(shè)只進(jìn)行二次握手炬灭,那么如果有一個(gè)建立連接請(qǐng)求因?yàn)榫W(wǎng)絡(luò)原因阻塞在一個(gè)節(jié)點(diǎn)很久并且超時(shí),那么客戶(hù)端會(huì)重新發(fā)送一個(gè)連接請(qǐng)求靡菇。服務(wù)端響應(yīng)了這個(gè)請(qǐng)求重归,發(fā)送確認(rèn)報(bào)文米愿。對(duì)服務(wù)端來(lái)說(shuō)就已經(jīng)建立了連接了。這個(gè)時(shí)候鼻吮,那個(gè)超時(shí)的請(qǐng)求也到了育苟,服務(wù)端再次響應(yīng),再次建立一個(gè)連接椎木,但對(duì)于客戶(hù)端來(lái)說(shuō)宙搬,這個(gè)報(bào)文已經(jīng)被拋棄了,不會(huì)理會(huì)拓哺。造成了服務(wù)端資源的浪費(fèi)。
所以第三次握手是為了防止已經(jīng)失效的報(bào)文突然傳到server產(chǎn)生錯(cuò)誤脖母。
過(guò)程:
1士鸥、首先client會(huì)發(fā)送一個(gè)SYN=1,seq=x的連接建立報(bào)文谆级。進(jìn)入SYN-SENT
2烤礁、之后server收到這個(gè)報(bào)文后,可以建立連接的話(huà)發(fā)送SYN=1肥照,ACK=1脚仔,ack=x+1,seq=y的一個(gè)確認(rèn)報(bào)文,進(jìn)入SYN-RCVD狀態(tài)
3舆绎、client收到了發(fā)送SYN=1,ACK=1,seq = x+1,ack=y=1的確認(rèn)報(bào)文鲤脏,進(jìn)入ESTABLISHED狀態(tài)
4、server收到了以后也進(jìn)入ESTABLISHED狀態(tài)吕朵,連接建立完成
四次揮手
兩邊分別發(fā)送FIN=1 的連接釋放報(bào)文猎醇,分別發(fā)送確認(rèn)釋放報(bào)文。
[圖片上傳失敗...(image-25844b-1539070537099)]
為什么客戶(hù)端最后還要等待2MSL努溃?
1硫嘶、如果客戶(hù)端發(fā)送的ACK服務(wù)端沒(méi)有收到,那么服務(wù)端會(huì)再次發(fā)送FIN=1的連接釋放報(bào)文梧税,此時(shí)客戶(hù)端還是TIME_WAIT狀態(tài)沦疾,可以發(fā)送確認(rèn)報(bào)文。
2第队、為了讓這次請(qǐng)求的所有數(shù)據(jù)報(bào)文在網(wǎng)絡(luò)中消失哮塞。
301 永久轉(zhuǎn)移
302 暫時(shí)轉(zhuǎn)移
401 未登錄
403 權(quán)限不夠,禁止訪(fǎng)問(wèn)
404 找不到資源
500 服務(wù)器內(nèi)部錯(cuò)誤
https是在http的下面加了一層ssl層斥铺,有兩個(gè)左右彻桃,一個(gè)是保證網(wǎng)站的真是性,一個(gè)是對(duì)數(shù)據(jù)進(jìn)行加密