http協議,超文字傳輸協議hyper text transfer protocol的縮寫,用於從全球資訊網伺服器傳輸超文字到本地瀏覽器的協議。
它基於tcp/ip通訊協議來傳輸資料(html檔案,,查詢結果等)
http協議屬於應用層。它允許傳輸任意型別的資料物件,正在傳輸的型別由content-type標記。
1.http協議是一種無連線協議:
指的是每次連線只處理乙個請求,服務端處理完客戶端一次請求,等到客戶端作出回應之後便斷開連線;這種方式有利於節省傳輸時間;然後隨著網際網路的發展,一台伺服器同一時間處理的請求越來越多,如果依然採用原來的方式,將會在建立和斷開連線上花費大部分時間;
http/1.0:持久連線
被提出來;即當乙個tcp連線伺服器多次請求:客戶端會在請求header中攜帶connection:keep-alive;向伺服器請求持久連線,如果服務端允許就會在響應報文中加上相同的字段;
http/1.1時代:持久連線稱為了預設的連線方式;同時持久連線的弊病也展現出來,即所有的連線都是序列的,holb;當某乙個請求阻塞時就會導致同一條連線的後續請求被阻塞;
為了解決這一問題:提出了pipellining的概念;客戶端發起一次請求時不必等待響應便直接發起第二個請求;服務端按照請求的順序一次返回結果;
spdy和http/2:multiplexing:多路復用技術出現;能夠讓多個請求和響應的傳輸完全混雜在一起進行;通過streamid來互相區別;
ps:http借助於底層的tcp虛擬連線,http協議本身無需連線;就好比a和b打**,a和b是借助於底層的簡化先連線交換資訊;但是a和b本身無需連線;
2.http是一種無狀態協議
無狀態:
http協議是無狀態的,同乙個客戶端的這次請求和上次請求是沒有對應關係,對http伺服器來說,它並不知道這兩個請求來自同乙個客戶端。 為了解決這個問題, web程式引入了cookie機制來維護狀態.
3.get和post的區別
1.get請求把請求內容放在url的querystring裡,post請求把請求內容放在form裡,也就是請求的body裡。
2.get請求的資料大小有長度限制,實際上是瀏覽器限制url的長度,post沒有限制。
3.get請求存在安全性問題,因為資料直接寫在url裡,會cache,查瀏覽記錄也可以查到。
除了get和post還有put和delete,分別是增加和刪除
4.一些常見的http response狀態碼
1xx表示請求已成功接受,臨時響應(訊息)
2xx表示請求已成功接受(成功)
代表的有200表示請求成功接受並處理,請求所需的響應頭或資料體隨本條響應返回
3xx表示重定向,響應已接受但還需要進一步處理(重定向)
代表的有302,重定向到其他位址,瀏覽器將根據返回的資料體中的location重新發起對新的url的請求;304,請求的內容已快取,直接從快取裡讀即可。
4xx表示客戶端錯誤
代表的有400客戶端請求有語法錯誤等,403客戶端請求被接受但伺服器拒絕響應,404請求url位址錯誤
5xx表示伺服器錯誤
代表的有500伺服器發生不可預期的錯誤,503表示伺服器暫時不接受請求稍後恢復。
5.http 的head
head分為四大類,通用頭(描述協議本事,比如connection等) 實體頭(描述body內容) 請求頭(請求獨有) 響應頭(響應頭)
request
cache 包括if-modified- since / if-none-match/(這兩個都和304有關) /cache-control
client 包括accept accept-language accept-charset accept-encoding user-agent
cookie 很重要的頭
entity 包括content-length content-type等
miscellanous 包括referer表示從**鏈結來的
transport: 包括host和connection
response
cache包括date expires vary
cookie包括set-cookie/p3p
entity包括content-type content-length content-encoding content-language等等(後兩個是在request的client裡)
miscellenous包括server,伺服器資訊
location 重定向位置
transport包括connection等
Http協議理解
http是hypertext transfer protocal 超文字傳輸協議 的簡寫,它是tcp ip協議集中的乙個應用層協議,用於定義web瀏覽器與web伺服器之間交換資料的過程以及資料本身的格式。http 1.0是早期版本,當前版本是http 1.1,http ng處於試驗階段,是下一代的h...
HTTP協議理解
http hyper text transfer protocol 超文字傳輸協議,是一種請求響應式協議,類似兩國會晤中需要遵守的規則。那麼,其中有什麼內容特點呢?http特點 1 支援客戶端 伺服器模式 瀏覽器也是一種客戶端 2 夠簡單,所以夠快速 3 夠靈活,傳輸什麼型別的資料都能適應 4 無狀...
全面理解HTTP協議
引言 作為一名軟體工程web專業學生,對於http的熟悉掌握是必不可少的,特此做記錄,打造自己的http棧。我們經常接觸到的就是url了,它就是我們訪問web的乙個字串位址,那麼uri是什麼呢?他們是什麼關係呢?url uniform resource location 統一資源定位符uri uni...