一、首先來一段網上的經典問題,在網路中,傳輸資料需要面臨的三個問題:
1、客戶端是如何知道所請求的內容的位置?
2、當知道了所求的內容後,如何去獲取內容?
3、所求的內容將以何種形式來呈現在客戶端來便於客戶去識別?
大家可以先自己想想看。
二、接下來我來公布答案,上面的3
個問題實際上使用到了
3個技術:
1、統一資源定位符(url)
2、超文字傳輸協議(http)
3、超文字標記語言(html)
這篇文章將主要講解http
協議。首先就是這是乙個應用層的傳輸協議。
的網路層次如下圖:
可以看出http協議是基於
tcp/ip
協議的。而
tcp的連線可以理解為程序與程序之間的通訊。這時是需要
socket
的。那什麼事
socket
呢?我的理解很簡單就是
ip+tcp/udp+
程序埠號。
tcp的連線需要
3次握手,關閉需要
4次握手。這些都是很重要的,我會另做總結的。
連線的應用軟體叫
fiddle
。大家可以用用試試。
三、http的請求和響應
1、請求(request)
有3部分組成:請求行、
協議頭、請求體(內容,是可有可無的)
說的這裡就不得不提一下http
的請求方式有兩種:
get和
post。
他們兩個的最大的區別就是:就是上面說的可有可無的東西。即請求體。get
請求是不存在請求體的,他主要是用於從伺服器中獲取內容的。而
post
是由客戶端向伺服器傳送內容的方式,這裡的內容就會在請求體中,從而獲取伺服器中的內容。所以
post
請求必須具有請求體。
請求。但是這時想在論壇上下資源的時候會提示登陸,然後你就寫入你的使用者名稱和密碼,單擊登陸。好了,這個過程就是乙個
post
請求。你的使用者名稱和密碼會存放在請求體中被傳送至伺服器中的。
2、響應(response)
這部分也是由三個部分組成的:狀態行、http
協議頭和返回的內容。
其中狀態行會提示你的響應是否成功。其中狀態行中出現的狀態碼是200
表示響應成功。如果是404
或者是500
等表示你響應失敗。
四、http如何進行狀態的保持
http協議是無狀態的。對於接收
協議請求的伺服器來說,並不會知道每一次的請求是來自同乙個客戶端還是其他的客戶端。每一次的請求對於伺服器都是陌生的。所以我們需要額外的手段來進行處理。
這裡要提一下cookie
技術。http
是使用了
cookie
來保持狀態的。具體的過程如下圖:
這個過程就和你去圖書館借書一樣,你第一次去圖書館。誰認識你啊,來了是吧。可以給你借書,不過還要辦張借書證。這個借書證就是cookie
。當你下次還書或者再次借書的時候記得帶上借書證。好的,現在圖書館管理員拿著你的借書證就認識你了。這樣你就和圖書館保持著一種借書還書的狀態啦。
同理,客戶端和伺服器端的借書證就是cookie了。
說到cookie
就會有人想到
session。
session它是
jsp的九大內建物件之一。那什麼是
session
呢?我的理解是每乙個使用者和伺服器之間的一次會話就是乙個
session
。web
中是這樣解釋的:使用者通過瀏覽器進入某個頁面到關閉這個頁面所經歷的時間被稱為乙個
session
。session是儲存在伺服器中的,比如當我們在訪問某乙個伺服器時,我們在瀏覽器中不停的切換頁面。這個時候就需要伺服器的session
來判斷(這裡會需要
sessionid
的,乙個
32為的
16進製制數)這個使用者是不是同乙個使用者。
而我們的cookie
是儲存在每乙個使用者的客戶端瀏覽器中的。
HTTP協議簡介
現在web發展如火如荼,web開發人員也越來越多,但有幾個對支援web的http協議有了解呢?底層協議基礎不紮實,高層應用是很難做到極致的。帶著好奇心,開始學習吧!http hypertext transfer protocol 即超文字傳輸協議,是瀏覽器和伺服器之間互相通訊的一種約定,通過網際網路...
HTTP協議 簡介
全稱為超文字傳輸協議 hypertext transfer protocol 設計之初是為了將超文字標記語言 html 文件從web伺服器傳送到客戶端的瀏覽器。現在http的作用已不侷限於html的傳輸。url url示例 解釋 scheme 指定低層使用的協議 例如 http,https,ftp ...
http協議簡介
摘要 本文 go web程式設計 一書,覺得說的比較好,特轉過來收藏。我們平時瀏覽網頁的時候,會開啟瀏覽器,輸入 後按下回車鍵,然後就會顯示出你想要瀏覽的內容。在這個看似簡單的使用者行為背後,到底隱藏了些什麼呢?對於普通的上網過程,系統其實是這樣做的 瀏覽器本身是乙個客戶端,當你輸入url的時候,首...