協議現在的協議一般是http和https的協議
即hyper text transfer protocol (超文字傳輸協議),,用於從全球資訊網(www:world wide web)伺服器傳輸超文字到本地瀏覽器的傳送協議。它基於tcp/ip通訊協議來傳遞資料 (html 檔案,檔案,查詢結果等)。
http0.9——最初的http只能get
http1.0——有現在的基本樣子,但伺服器傳送完乙個http響應後,會斷開連線
http1.1——有host(多網域名稱合乙個ip/伺服器)和持久連線
http2.0——資料以二進位制傳輸,同乙個連線裡面傳送多個請求不再需要按照順序來,頭資訊壓縮以及推送等提高效率的功能(推送的概念是服務端可以主動發起請求的,通常情況下我們需要載入完html後才會通過標籤引入的形式載入js和css檔案,但是如果http2的話,可以做到html/js/css同時載入),但是目前應用並不廣泛
而https則是加密版的http
這兩種協議均涉及tcp
傳送方:傳送訊息,等待…
接收方:接收訊息,並給傳送方回信,此時傳送方接收到訊息後,從傳送方的角度就可明白自己的訊息是可以發過去的。但是接收方還不能確定自己的訊息是否可以正常傳送。
傳送方:接收到傳送方的回信後,在給接收方發乙個訊息,此時從接收方的角度就能明白自己的訊息可以可以正常傳送。
畫成圖如下:
為什麼要三次握手
為了防止已失效的連線請求(大致是指由於網路問題造成的時效性失效)報文段突然又傳送到了服務端,因而產生錯誤。
簡單來說,就是你寫信告訴伺服器你要來了,但是信件在快遞途中慢了一步,到你經過他家的時候還沒給你回信能不能來,然後這個時候你已經走過了他家門口沒進去,但是這個時候他又收到了遲到的信件,並給你回信,說等你來,但是這個時候你已經走出大西洋了,他就一直等你來,就浪費時間了並且徒勞了。
具體例子:「已失效的連線請求報文段」的產生在這樣一種情況下:client發出的第乙個連線請求報文段並沒有丟失,而是在某個網路結點長時間的滯留了,以致延誤到連線釋放以後的某個時間才到達server。本來這是乙個早已失效的報文段。但server收到此失效的連線請求報文段後,就誤認為是client再次發出的乙個新的連線請求。於是就向client發出確認報文段,同意建立連線。假設不採用「三次握手」,那麼只要server發出確認,新的連線就建立了。由於現在client並沒有發出建立連線的請求,因此不會理睬server的確認,也不會向server傳送資料。但server卻以為新的運輸連線已經建立,並一直等待client發來資料。這樣,server的很多資源就白白浪費掉了。採用「三次握手」的辦法可以防止上述現象發生。例如剛才那種情況,client不會向server的確認發出確認。server由於收不到確認,就知道client並沒有要求建立連線。
tcp鏈結斷開瀏覽器端發訊息通知伺服器現在需要斷開(第一次揮手)
伺服器接到要斷開的請求之後,給瀏覽器返回訊息,告訴瀏覽器我正在準備釋放(第二次揮手)
此時瀏覽器接到訊息後正在等待伺服器釋放完成,而伺服器正在準備釋放的過程
當伺服器釋放完成後,再通知瀏覽器我已經釋放完成了。(第三次揮手)
瀏覽器接收到伺服器釋放完成的訊息後,再給伺服器傳送訊息告訴伺服器我已經知道你釋放完成了,伺服器收到訊息後,就能確認自己釋放完成的訊息已經通知到了(第四次揮手)
2msl(msl是maximum segment lifetime英文的縮寫,中文可以譯為「報文最大生存時間)
狀態碼
1xx:指示資訊——請求已接收,繼續處理
2xx:成功——請求已被成功接收、理解、接受
3xx:重定向——須進行更進一步的操作
4xx:客戶端錯誤——請求有語法錯誤/請求無法實現
5xx:伺服器端錯誤——伺服器未能實現合法的請求
請求方法
get(沒有請求體):請求指定頁面,返回實體主體。
post(有請求體):提交資料進行處理(提交表單或檔案)
網域名稱/ip——用於確認伺服器
埠——用於確認伺服器中的應用是哪個
資源路徑——用於確定具體資源
引數——用於操作或者開啟資源
特殊字元
#:是用來指導瀏覽器動作的,對伺服器端完全無用。 #代表網頁中的乙個位置。其右面的字元,就是該位置的識別符號。為網頁位置指定識別符號,有兩個方法。一是使用錨點,比如,二是使用id屬性,比如
。
?:通過?來帶引數,連線網域名稱和引數,經常會用到
&:不同引數的間隔符
瀏覽器URL編碼
1 瀏覽器編碼 ie6.0及以前版本,通過在位址列裡輸入url時,使用的預設編碼是gbk ie7.0 ie8版本,通過在位址列裡輸入url時,使用的預設編碼是utf 8,也可以在工具 高階選項裡修改 2 中文引數編碼例項 string version request.getheader user a...
瀏覽器快取url請求
最近遇到瀏覽器快取url的問題,google了一把,學到不少東西,結合網上其他人文章拼湊一篇,供大家交流。一 防止url被瀏覽器快取 根據 http 規範,get 用於資訊獲取,而且應該是冪等的。也就是說,當使用相同的url重複get請求會返回預期的相同結果時,get方法才是適用的。當對乙個請求有 ...
瀏覽器快取url請求
一 防止url被瀏覽器快取 根據 http 規範,get 用於資訊獲取,而且應該是冪等的。也就是說,當使用相同的url重複get請求會返回預期的相同結果時,get方法才是適用的。當對乙個請求有 的時候 例如,提交資料註冊新使用者時 應該使用post請求而不是get。所以瀏覽器會對get請求做快取處理...