前兩天總結了TCP今兒來個HTTP,來看一看啊

2021-10-07 06:20:10 字數 3800 閱讀 2010

url:統一資源定位器(uniform resource locator)的簡稱,我們見到的太多了,每開啟乙個網頁就會看到,瀏覽器通過解析給定url就可以在網路上找到對應的資源

1、協議名稱:我們常見的http(超文字傳輸協議,預設埠80)、https(預設埠443)、smtp(傳郵件.預設埠25)、ftp(傳檔案,預設埠21)、telnet(遠端登入,預設埠23)

3、埠號:可以省略,省略時使用的是預設埠,傳輸協議有自己的預設埠。

4、帶層次的檔案路徑:從第乙個「/」開始到"?「為止,就跟你在windows下的碟符路徑是乙個概念,是帶層次的檔案路徑部分。

5、查詢字串:從「?」開始到「#」為止之間的部分是查詢字串,查詢字串可以允許有多個引數,引數之間用「&」作為分隔符,

6、片段識別符號:從「#」開始到最後,都是片段識別符號,這裡是ch1_7374

http是超文字傳輸協議,用於全球資訊網伺服器到瀏覽器之間的通訊,http協議長承載於tcp協議之上,基於tcp/ip通訊協議來傳遞資料;它的公升級安全版是https,於http相比多了加密層,安全性更好;

http0.9:只支援get這乙個請求方式,只能訪問html格式的資源

http1.0:一次請求建立一次連線獲得乙個web資源,響應後就會斷開連線,下乙個請求需要再次建立tcp連線,但我們都知道tcp需要三次握手才能建立連線,所以1.0版本效率很低。預設短連線

http1.1:一次請求建立一次連線,可以允許多個http請求,獲得多個web資源,缺省長連線

http2.0:增加雙工模式,不僅客戶端能夠同時傳送多個請求,服務端也能同時處理多個請求,採用了多路復用的技術(頻分、時分、波分),做到同乙個連線併發處理多個請求效率很高。

get:請求獲取url所標識的資源,沒有請求正文部分,可以理解為資料庫的查

post :在uri所標識的資源後附加新的資料,有請求正文,理解為改

head:請求獲取由uri所標識的資源的響應訊息報頭

put: 請求伺服器儲存乙個資源,並用uri作為其標識,理解為增

delete:請求伺服器刪除uri所標識的資源,理解為刪

trace:請求伺服器回送收到的請求資訊,主要用於測試或診斷

connect:保留將來使用

options :請求查詢伺服器的效能,或者查詢與資源相關的選項和需求

get和post的區別

1、get請求的引數放在url中,安全性比較差;而post請求是放在body裡面的,安全性比較好;

2、get請求的url引數有長度限制,post請求沒有長度限制

3、get只能通過url編碼,post支援多種編碼方式

4、get後退重新整理無害,post資料會被重新提交

類別原因

1xx(資訊性狀態碼)

接收的請求正在處理

2xx(成功狀態)

請求正常處理完畢

3xx(重定向狀態)

需要進行附加操作完成請求

4xx(客戶端狀態)

伺服器無法處理請求

5xx(伺服器狀態)-

伺服器處理請求出錯

2xx200:ok,客戶端請求成功,正常響應

204:正常響應,但沒有實體

206:範圍請求,返回部分資料

3xx301:永久重定向

302:臨時重定向

303:和302類似,但必須使用get方法

304:狀態未改變

307:臨時重定向,不該改變請求方法

4xx400:請求報文語法錯誤

401:需要認證

403:伺服器拒絕訪問對應的資源

404:請求的資源不存在

5xx500:伺服器故障

503:伺服器處於超負載或正在停機維護

3、無狀態:http是無狀態協議,無狀態是指協議對於事務處理沒有記憶能力,缺少狀態意味著如果後續需要處理前面的資訊,必須要重來一遍,但這樣會導致每次連線傳送的資料量增大。

4、無連線:無連線的含義就是每次連線就只處理乙個請求。伺服器處理完客戶端的請求之後,並收到客戶端的應答之後,就斷開連線,這種方式可以節省傳輸時間。

5、支援c/s模式

簡單理解,http傳送資料(包括賬號和密碼),都是明文傳送,很容易被竊取或者偵聽,在現有的網際網路應用中,很明顯有不安全因素,所以有了https,可以簡單理解成https多了一層加密解密層,

簡單來說,https協議是由ssl+http協議構建的可進行加密傳輸、身份認證的網路協議,要比http協議安全。

http+加密+認證+完整性保護=https

https的特點

內容加密:採用混合加密技術,中間者無法直接檢視明文內容

驗證身份:通過證書認證客戶端訪問的是自己的伺服器

保護資料完整性:防止傳輸的內容被中間人冒充或者篡改

https和http的區別主要如下:

1、https協議需要到ca申請證書,一般免費證書較少,因而需要一-定費用。

2、http是超文字傳輸協議,資訊是明文傳輸,https則是具有安全性的ssl加密傳輸協議。

3、http和https使用的是完全不同的連線方式,用的埠也不一樣,前者是80,後者是443。

4、http的連線很簡單,是無狀態的; https協議是由ssl+http協議構建的可進行加密傳輸、身份認證的網路協議,比htt

https加密方式

先來了解一下對稱加密和非對稱加密

對稱加密:加密和解密都是同乙個密匙。即傳送方和接收方都必須使用相同的金鑰對明文進行加密解密;加密速度比較快;

非對稱加密:有兩個金鑰,公開秘鑰(publickey)和私有金鑰(privatekey)是一對,如果用公開金鑰對資料進行加密,只有用對應的私有金鑰才能解密;如果用私有金鑰對資料進行加密,那麼只有用對應的公開金鑰才能解密。加密速度比較慢,非對稱加密將公鑰暴露,供客戶端加密,服務端使用私鑰解密。

對稱加密和非對稱加密結合方式

瀏覽器使用https的url訪問伺服器,建立ssl鏈結,伺服器收到ssl鏈結,傳送非對稱加密的公鑰a返回給瀏覽器,瀏覽器生成隨機數,作為對稱加密的金鑰b;瀏覽器使用公鑰a,對自己生成的金鑰b進行加密,得到金鑰c;瀏覽器將鑰c,傳送給伺服器;伺服器用私鑰d對接受的金鑰c進行解密,得到對稱加金鑰b。瀏覽器和伺服器之間可以用金鑰b作為對稱加密金鑰進行通訊。

長連線:即建立一次連線,可以被多個請求訪問,客戶端和伺服器建立連線完成一次讀寫後不會主動關閉,後面可能會繼續使用這個連線。長連線多用於操作頻繁,點對點的通訊,而且連線數不能太多情況,比如資料庫的連線。頻繁的短連線會造成socket錯誤。

短連線:建立一次連線只進行一次請求。管理起來比較簡單,而像web**的http伺服器用的就是短連線,省資源。

http2.0使用了多路復用的技術,做到同乙個連線併發處理多個請求,而且併發請求的數量比http1.0大了好幾個數量級。

http1.0不支援header資料的壓縮,http2.0使用hpack演算法對header的資料進行壓縮,這樣資料體積變小,在網路上傳輸就會更快。

當我們對支援http2.0的web server請求資料的時候,伺服器會把一些客戶端需要的資源一起推送到客戶端,免得客戶端再次建立連線傳送請求到伺服器端獲取。這種方式非常適合載入靜態資源。

前兩天寫的

往事隨風 高興,寫點自己的瑣事 還慶祝我帶我女兒來了 哈哈,好想念俺家冰冰,俺家女兒叫冰冰。天天好忙啊,學習變成了我的第一件事情,雖然學得很不好,但是我還是在學習了!這幾天在這裡跟別人在吵架,哈哈,有意思,這好像也成了我每天的例行公事!昨天下午陪老師打排球,5555,把手都給打黑了。是被球砸黑的,好...

前兩天看到的 pragma用法

前兩天使用bcb進行winsdk的程式設計中,死活無法載入資源檔案 res 寫出的rc檔案沒有問題,用brcc32也可以生成資源檔案,但是就是無法和程式源 進行鏈結起來 如果用ide就好辦多了,但無奈現在用的是命令列編譯 百思不得其解,到晚上發帖無數,結果還是沒有搞定。後來無奈用google,發現好...

兩天的總結

昨天實在是太累了,晚上一回來倒頭就睡,也沒看幾點,反正是9點之前 有史以來最早睡的一次 然後就沒有寫日誌了 今天補做。其實,這兩天的生活大致相同,大半天時間都是在寶山網球館,隨著比賽的進行,越來越多的選手被淘汰,比賽也越顯精彩許多,屢屢出現那種連續搶七的三盤大戰,雖然讓觀眾一飽眼福但卻是苦了我們當球...