http於2023年誕生,此時的http尚未作為正式的標準建立,這時的http被稱為http/0.9.http作為標準被公布是在2023年,其被正式命名為http/1.0。而後2023年公布的http/1.1是目前主流的http協議版本。http至今沒有怎麼更新,顯著用的最多的是是http/1.1.
我們的網路是執行在tcp/ip協議族的,而http協議是其內部的乙個子集,tcp/ip是網際網路相關的各類協議族的總稱,包括了眾多內容,其中包括tcp,ip,dns,udp,icmp等等。
tcp/ip協議族按層次分為四個層次,分別是應用層,傳輸層,網路層,和資料鏈路層。下面分別介紹
應用層應用層決定了想使用者提**用服務時通訊的活動,次層中有ftp(檔案傳輸協議),和dns(網域名稱系統),http等。
傳輸層傳輸層對上層應用層,提供處於網路連線中的兩台計算機之間的資料傳輸。
網路層(網路互連層)
網路層用來處理在網路上流動的資料報,資料報是資料傳輸的最小資料單位,該層規定了通過怎麼樣的路徑到達對方計算機,並將資料報傳送給對方。
鏈路層(資料鏈路層,網路介面層)
用來處理連線網路的硬體部分,包括控制作業系統、硬體的裝置驅動,nic(網絡卡),及光纖等物理裝置。
**tcp/ip 通訊傳輸流,侵刪。在進行網路通訊時,會通過分層順序與對方進行通訊,傳送端從應用層往下走,接受層從應用層往上走。
我們模擬一下資料傳輸的過程,首先作為傳送端的客戶端在應用層發出乙個想看到某個web頁面的http請求。然後傳輸層把從應用層處收到的資料進行分割,並在各個報文上打上標記序號及埠號**給網路層。在網路層,增加作為通訊目的地的mac位址後**給鏈路層,這樣傳送端的工作就完成了。接受端的伺服器在鏈路層接受到資料,按序往上層傳送,一直到應用層。當傳輸到應用層,才算真正接受到有客戶端傳送過來的http請求。
再傳輸過程中,傳送端在進過每層時都必定會打上乙個該層所屬的首部資訊,而接收端在層與層傳輸資料時,每經過一層時就會把對用的首部去掉。
從我們生活中的經驗也可以知道,要建立乙個連線,通常是客戶端傳送請求,而後伺服器端響應請求。下面我們看乙個例項。
下面陳列乙個請求報文和響應報文。
請求報文
響應報文
...通過上面的兩個報文可以看出請求報文是由請求方法,請求url,協議版本,可選的請求首部欄位和實際內容組成,而響應報文則有協議版本,狀態碼,解釋狀態碼的原因短語,可選的響應首部字段以及實體主體構成。爾後很大的篇幅都會用來講解報文的構成。http是不保留狀態的協議,即無狀態協議。也就是說http協議自身不對請求和響應之間的通訊狀態進行儲存,在http這個級別,協議對於傳送過的請求或響應都不做持久化處理。當有新的請求傳送時,就會有對應的新響應產生。協議本省不對之前一切的請求和響應報文進行儲存。這樣子是為了處理大量事務,確保了協議的可伸縮性,所以才設計的這麼簡單。
但是無狀態也會帶來一些弊端,做過網頁開發的人應該都知道cookie,cookie就是為了彌補協議的無狀態化而出現的,可以參考細說cookie
前面的請求報文有乙個部分是「get」,這就是http的方法,一般開發者比較熟悉的應該是get和post這兩個。下面就挨個講解。
再來說說get和post方法的比較:
get特點:
- 請求可被快取
- 請求保留在瀏覽器歷史記錄中
- 請求不應在處理敏感資料時使用
- 請求有長度限制
- 請求只應當用於取回資料
post的特點:
- 請求不會被快取
- 請求不會保留在瀏覽器歷史記錄中
- 不能被收藏為書籤
- 請求對資料長度沒有要求
總的來說,當傳遞的資料不敏感並且比較小是才可以使用get方法,get方法會在鏈結中使用明文傳遞資訊,可以被別人看到。
在http協議的初始版本中,每進行一次http通訊就會斷開一次tcp連線,但是現如今一共同個頁面中經常包含很多,會多次請求資源,如果每次請求時都會有tcp的建立與斷開的話就會增加通訊錄的開銷,所以可以選擇建立持久連線。持久連線後,只要沒有一方明確提出斷開連線,那麼連線就會一直保持。在http/1.1中,連線是預設持久連線的。
持久連線建立後就可以使用管線化來傳送資料,管線化即指多個訊息的傳送並行進行,互不干擾,這樣就不需要乙個乙個的等待響應了。
這是http的基礎部分,下一次將會記錄http報文部分。
HTTP協議發展歷史
這是最早定稿的http版本,這個版本中它的內容非常地簡單。這個版本和現在普遍使用的http 1.1差不多,在http 0.9版本基礎上進行了改進。這個版本是在http 1.0的基礎上增加了一些功能來優化網路連線的過程。雖然現在還沒有普及,但是毫無疑問是未來的趨勢。第乙個頭資訊的壓縮。在http 1....
http協議詳解(一)HTTP協議基礎
最近在看一些http的東西,http比較雜,大致整理了一下,用思維導圖的方式呈現了出來。我會分幾個板塊來介紹http協議,具體的板塊也在下面的思維導圖中標註出來了,盡量以簡潔的方式為大家呈現http的內容。初寫部落格,文中有些紕漏的地方還請大家指點。http 超文字傳輸協議,本質上是一種通訊協議。用...
HTTP 協議基礎及發展歷史
低三層物理層 主要作用是定義物理裝置如何傳輸資料。資料鏈路層 在通訊的實體間建立資料鏈路連線。網路層 為資料在結點之間傳輸建立邏輯鏈路。傳輸層 想使用者提供可靠的端到端 end to end 服務。傳輸層向高層遮蔽了下層資料通訊的細節。應用層 為應用軟體提供了很多服務 構建於tcp協議之上 遮蔽網路...