亚洲国内精品自在线影视_大胆日本免费_一级a毛一级a做视频在线观看_亚洲中文无码永久免老牛影视,一级A片免费观看一,岛国av无码网,国产强奸精品,国产精品久久一区二区三区,在线免费电影无码,大黑人交XXXX大黑人交免费看,成年人女人视频

南京軟件定制開發(fā)

南京傾心軟件歡迎您訪問本站

13605185909

新聞資訊

NEWS CENTER
欄目導(dǎo)航

南京軟件開發(fā)之Http協(xié)議

發(fā)布時(shí)間:Mar 21, 2020         已有 人瀏覽

網(wǎng)絡(luò)是由若干節(jié)點(diǎn)和連接這些節(jié)點(diǎn)的鏈路構(gòu)成,然后網(wǎng)絡(luò)與網(wǎng)絡(luò)之間所串連成的龐大網(wǎng)絡(luò)叫做互聯(lián)網(wǎng),,而我們今天要講的HTTP(HyperText Transfer Protocol 超文本傳輸協(xié)議)是互聯(lián)網(wǎng)上應(yīng)用最為廣泛的一種網(wǎng)絡(luò)協(xié)議,,它是由萬(wàn)維網(wǎng)協(xié)會(huì)(World Wide Web Consortium)制定發(fā)布,。
在這里插入圖片描述

一,、簡(jiǎn)介

HTTP 協(xié)議一共有五大特點(diǎn):

1.支持客戶/服務(wù)器模式。
2.簡(jiǎn)單快速:
客戶向服務(wù)器請(qǐng)求服務(wù)時(shí),,只需傳送請(qǐng)求方法和路徑,。
3.靈活:
HTTP允許傳輸任意類型的數(shù)據(jù)對(duì)象。
正在傳輸?shù)念愋陀蒀ontent-Type(Content-Type是HTTP包中用來表示內(nèi)容類型的標(biāo)識(shí))加以標(biāo)記,。
4.無(wú)連接:
無(wú)連接的含義是限制每次連接只處理一個(gè)請(qǐng)求,。
服務(wù)器處理完客戶的請(qǐng)求,并收到客戶的應(yīng)答后,,即斷開連接。
采用這種方式可以節(jié)省傳輸時(shí)間,。
5.無(wú)狀態(tài):
無(wú)狀態(tài)是指協(xié)議對(duì)于事務(wù)處理沒有記憶能力,,服務(wù)器不知道客戶端是什么狀態(tài)。
即我們給服務(wù)器發(fā)送 HTTP 請(qǐng)求之后,,服務(wù)器根據(jù)請(qǐng)求,,會(huì)給我們發(fā)送數(shù)據(jù)過來,但是,發(fā)送完,,不會(huì)記錄任何信息(Cookie和Session孕育而生),。

二、TCP/IP協(xié)議

HTTP是一個(gè)基于TCP/IP協(xié)議簇來傳遞數(shù)據(jù),,包含四層模型,。
在這里插入圖片描述
從上圖我們可以清晰的看到HTTP使用的傳輸層協(xié)議為TCP協(xié)議,而網(wǎng)絡(luò)層使用的是IP協(xié)議(當(dāng)然還使用了很多其他協(xié)議),,所以說HTTP是一個(gè)基于TCP/IP協(xié)議簇來傳遞數(shù)據(jù),。
那TCP/IP協(xié)議簇大致是如何工作的,我們?cè)賮砜纯聪聢D:
在這里插入圖片描述
我們可以看到在數(shù)據(jù)發(fā)送端是一層一層封裝數(shù)據(jù),,數(shù)據(jù)接收端一層一層拆封,,最后應(yīng)用層獲得數(shù)據(jù)。

三,、建立TCP連接

我們知道了TCP/IP協(xié)議簇大致的工作原理之后,,我們來看看HTTP是如何建立連接的。

1.TCP包頭信息

前面咱們講過HTTP是一個(gè)基于TCP/IP協(xié)議簇來傳遞數(shù)據(jù),,所以這HTTP建立連接也就是建立TCP連接,,TCP如何建立連接,一起來看看TCP包信息結(jié)構(gòu)吧,。
在這里插入圖片描述
TCP報(bào)文包=TCP頭信息+TCP數(shù)據(jù)體,,而在TCP頭信息中包含了6種控制位(上圖紅色框中),這六種標(biāo)志位就代表著TCP連接的狀態(tài):
1.URG:
緊急數(shù)據(jù)(urgent data)—-這是一條緊急信息
2.ACK:
確認(rèn)已收到
3.PSH:
提示接收端應(yīng)用程序應(yīng)該立即從tcp接收緩沖區(qū)中讀走數(shù)據(jù)
4.RST:
表示要求對(duì)方重新建立連接
5.SYN:
表示請(qǐng)求建立一個(gè)連接
6.FIN:
表示通知對(duì)方本端要關(guān)閉連接了
2.建立連接過程

了解了TCP包頭信息之后,,我們就可以正式看看TCP建立連接的三次握手了,。
在這里插入圖片描述
三次握手講解:

1.客戶端發(fā)送位碼為syn=1,隨機(jī)產(chǎn)生seq number=1234567的數(shù)據(jù)包到服務(wù)器,服務(wù)器由SYN=1知道客戶端要求建立聯(lián)機(jī)(客戶端:
我要連接你)
2.服務(wù)器收到請(qǐng)求后要確認(rèn)聯(lián)機(jī)信息,,向A發(fā)送ack number=(客戶端的seq+1),syn=1,ack=1,隨機(jī)產(chǎn)生seq=7654321的包(服務(wù)器:
好的,,你來連吧)
3.客戶端收到后檢查ack number是否正確,即第一次發(fā)送的seq number+1,以及位碼ack是否為1,,若正確,,客戶端會(huì)再發(fā)送ack number=(服務(wù)器的seq+1),ack=1,服務(wù)器收到后確認(rèn)seq值與ack=1則連接建立成功,。(客戶端:好的,,我來了)
面試官:為什么http建立連接需要三次握手,不是兩次或四次
答:三次是最少的安全次數(shù),,兩次不安全,,四次浪費(fèi)資源

四、客戶端請(qǐng)求

客戶端與服務(wù)器連接上了之后,,客戶端就可以開始向服務(wù)器請(qǐng)求資源,,就可以開始發(fā)送HTTP請(qǐng)求了,。

1.HTTP請(qǐng)求報(bào)文結(jié)構(gòu)

我們之前說過TCP報(bào)文包=TCP頭信息+TCP數(shù)據(jù)體,TCP頭信息我們已經(jīng)講了,,現(xiàn)在來講TCP數(shù)據(jù)體,,也就是我們的HTTP請(qǐng)求報(bào)文。
在這里插入圖片描述

2.HTTP請(qǐng)求實(shí)例

來看看實(shí)際的HTTP請(qǐng)求例子:
在這里插入圖片描述
1.①是請(qǐng)求方法,,HTTP/1.1 定義的請(qǐng)求方法有8種:
GET,、POST、PUT,、DELETE,、PATCH、HEAD,、OPTIONS,、TRACE,最常的兩種GET和POST,如果是RESTful接口的話一般會(huì)用到GET,、POST,、DELETE、PUT
2.②為請(qǐng)求對(duì)應(yīng)的URL地址,,它和報(bào)文頭的Host屬性組成完整的請(qǐng)求URL
3.③是協(xié)議名稱及版本號(hào)
4.④是HTTP的報(bào)文頭,,報(bào)文頭包含若干個(gè)屬性,格式為“屬性名:屬性值”,,服務(wù)端據(jù)此獲取客戶端的信息
5.⑤是報(bào)文體,,它將一個(gè)頁(yè)面表單中的組件值通過param1=value1&param2=value2的鍵值對(duì)形式編碼成一個(gè)格式化串,它承載多個(gè)請(qǐng)求參數(shù)的數(shù)據(jù),。
不但報(bào)文體可以傳遞請(qǐng)求參數(shù),,請(qǐng)求URL也可以通過類似于“/chapter15/user.html? param1=value1&param2=value2”的方式傳遞請(qǐng)求參數(shù)。
請(qǐng)求頭參數(shù)非常多,,這里就不一一說明,,只說明兩個(gè)低級(jí)的反扒參數(shù):
1.User-Agent:
客戶端使用的操作系統(tǒng)和瀏覽器的名稱和版本,有些網(wǎng)站會(huì)限制請(qǐng)求瀏覽器
2.Referer:
先前網(wǎng)頁(yè)的地址,,表示此請(qǐng)求來自哪里,,有些網(wǎng)站會(huì)限制請(qǐng)求來源

五、服務(wù)端響應(yīng)

服務(wù)器在收到客戶端請(qǐng)求處理完需要響應(yīng)并返回給客戶端,,而HTTP響應(yīng)報(bào)文結(jié)構(gòu)與請(qǐng)求結(jié)構(gòu)體一致,。

1.HTTP響應(yīng)報(bào)文結(jié)構(gòu)

在這里插入圖片描述

2.HTTP響應(yīng)實(shí)例

在這里插入圖片描述

3.響應(yīng)狀態(tài)碼

響應(yīng)報(bào)文中我們重點(diǎn)關(guān)注下:服務(wù)器的響應(yīng)狀態(tài)碼,面試也很容易問到,,下面只列出分類,,詳細(xì)狀態(tài)碼請(qǐng)自行上網(wǎng)查找了解。
在這里插入圖片描述

六,、斷開連接

在服務(wù)器響應(yīng)完畢后,,一次會(huì)話就結(jié)束了,請(qǐng)問這時(shí)候連接會(huì)斷開嗎,?

1.長(zhǎng)短連接

是否斷開我們需要區(qū)分HTTP版本:
(1)在HTTP/1.0版本的時(shí)候,,客戶端與服務(wù)器完成一個(gè)請(qǐng)求/響應(yīng)之后,會(huì)將之前建立的TCP連接斷開,,下次請(qǐng)求的時(shí)候又要重新建立TCP連接,,這也被稱為短連接
(2)在HTTP1.0發(fā)布僅半年后(1997年1月),HTTP/1.1版本發(fā)布并帶來一個(gè)新的功能:
在客戶端與服務(wù)器完成一次請(qǐng)求/響應(yīng)之后,,允許不斷開TCP連接,,這意味著下次請(qǐng)求就直接使用這個(gè)TCP連接而不再需要重新握手建立新連接,這也被稱為長(zhǎng)連接
注意:長(zhǎng)連接是指一次TCP連接允許多次HTTP會(huì)話,,HTTP永遠(yuǎn)都是一次請(qǐng)求/響應(yīng),,會(huì)話結(jié)束,HTTP本身不存在長(zhǎng)連接之說,。
早在1999年HTTP1.1就推廣普及,,所以現(xiàn)在瀏覽器在請(qǐng)求時(shí)請(qǐng)求頭中都會(huì)攜帶一個(gè)參數(shù):Connection:keep-alive,這表示瀏覽器要求與服務(wù)器建立長(zhǎng)連接,,而服務(wù)器也可以設(shè)置是否愿意建立長(zhǎng)連接,,如果是close,表示已關(guān)閉,。

2.長(zhǎng)連接優(yōu)缺點(diǎn)

對(duì)于服務(wù)器來說建立長(zhǎng)連接有優(yōu)點(diǎn)也有缺點(diǎn):
優(yōu)點(diǎn):
當(dāng)網(wǎng)站中有大量靜態(tài)資源(圖片,、css、js等)就可以開啟長(zhǎng)連接,,這也幾張圖片就可以通過一次TCP連接發(fā)送,。
缺點(diǎn):
當(dāng)客戶端請(qǐng)求一次時(shí)候不在請(qǐng)求,而服務(wù)器卻開著長(zhǎng)連接資源被占用著,,這是嚴(yán)重浪費(fèi)資源,。
所以是否開啟長(zhǎng)連接,長(zhǎng)連接時(shí)間都需要根據(jù)網(wǎng)站自身來合理設(shè)置,。
ps:大家不要小看這一個(gè)TCP連接,,在一次客戶端HTTP完整的請(qǐng)求中(DNS尋址、建立TCP連接,、請(qǐng)求,、等待、解析網(wǎng)頁(yè),、斷開TCP連接)建立TCP連接占用的時(shí)間比還是很大的,。

3.斷開連接過程

在建立TCP連接時(shí)是三次握手,而斷開TCP連接是四次揮手,。
在這里插入圖片描述
ps:http還有兩個(gè)很大的缺點(diǎn)就是明文且不能保證完整性,,所以目前會(huì)漸漸被HTTPS代替,。

Copyright © 2020-2022 南京傾心軟件技術(shù)有限公司 版權(quán)所有     蘇ICP備2020070309號(hào)-1
QQ在線咨詢
13605185909
返回頂部