天天看點

學HTTP協定所要知道的基礎知識(微總結)

1、網絡本質

進行資源共享和資訊傳輸。

2、基于網絡的應用程式的本質

就是擷取資料和傳輸資料給使用者使用。

3、TCP/IP協定棧工作流程

實體層是不屬于TCP/IP協定棧的一層。也就是說TCP/IP協定棧共計四層。

首先得接入網絡,區域網路或者廣域網,在計算機接入網絡的時候,也就是插入網線的時候本地路由器中的  

路由表會更新資料,通過一定淘汰機制算法删除很久沒有使用過的計算機ip以及mac位址,并對新加入組的計算

機新配置設定ip,在配置設定ip的過程中,路由表會通過ARP協定(位址解析協定)得到新接入計算機的mac位址,并存入

mac位址以及配置設定的ip位址。

首先A使用者使用應用程式産生資料,并通過應用層約定的規則(即應用層協定)發送資料,資料進行第一次封

裝形成head和data。再通過傳輸層确定目标計算機所需要接受資料的端口再次進行編碼第二次封裝,利用傳輸層

約定的規則(即傳輸層協定,tcp/udp)發送資料,資料到達網絡層,網絡層通過ip協定确認要發送資料的目标ip,

然後通過資料鍊路層的mac位址,資料鍊路層把資料通過以太網協定第三次封裝成幀,幀也分head(标頭,固定長

度18位元組)和data(資料,最短46位元組,最長1500位元組),超出則分成多個幀進行發送。再通過實體層進行第四次

封裝,把資料利用實體層協定封裝成1或者0高低電位,這裡可能會使用差分曼徹斯特等編碼方式,資料這時候通過

網線或者電磁波到達路由或者交換機,路由首先檢視目标ip是否在本組區域網路内,通過目标ip位址以及發送方ip地

址對本地子網路遮罩進行與(and)運算,如果運算結果相等則說明目标主機在此區域網路之内,則直接通過路由表确定

ip以及mac資訊發送資料。如果不相等則路由器繼續向上層發送這次發送的資料,直到某個結點有屬于目标ip的資訊

時,進行接收,并再次通過實體層->資料鍊路層->網絡層->傳輸層->應用層的方式進行四次拆包,找到ip->确認mac

位址->确認端口資訊,接收資料到B使用者使用的應用程式上,再由應用程式展現到B使用者面前。

4、網絡五層

1)應用層:

應用層決定了向使用者提供應用服務時通信的活動,HTTP 協定也處于該層。

2)傳輸層:

傳輸層對上層應用層提供處于網絡連接配接中的兩台計算機之間端口到端口的資料傳輸。在傳輸層有兩個性質不同的協定: TCP 和 UDP 。

3)網絡層:

網絡層用來處理在網絡上流動的資料包。資料包是網絡傳輸的最小資料機關。該層規定了通過怎樣的路徑(ip位址到ip位址)到達對方計算機,

并把資料包傳送給對方。

與對方計算機之間通過多台計算機或網絡裝置進行傳輸時,網絡層所起的作用就是在衆多的選項内選擇一條傳輸路線。

4)鍊路層:

用來處理連接配接網絡的硬體部分。包括控制作業系統、硬體的裝置驅動、網卡及光纖等實體可見部分(還包括連接配接器等一切傳輸媒介)。

硬體上的範疇均在鍊路層的作用範圍之内。

5)實體層:

負責通過實體手段将電腦連接配接起來,并傳輸0和1的電信号。

5、Html,即超文本

超級文本,把線性的文本變成非線性的文本,帶跳轉。

6、HTTP協定

HTTP協定是在 TCP/IP 協定族的基礎上運作的,是TCP/IP的一個子集。

是在應用層上對伺服器,用戶端進行資料傳輸方式,傳輸格式限制和規定的一個協定,具體格式和流程

在下面說明。

7、伺服器、服務、伺服器程式

伺服器可以了解成一台比較厲害的主機,伺服器對每個用戶端提供服務,針對用戶端請求的服務,

由伺服器程式調用對應的服務,給用戶端提供服務。

8、浏覽器———>伺服器 請求 響應

用戶端發起對伺服器的請求,發送請求封包,伺服器接收到請求封包,如果發送不帶Cookie的封包(例如初次登入)

,伺服器會設定Cookie并記錄,并回複響應封包,并對比請求頭中的緩存資料,如果記錄的最後一次修改時間等于服務

器最後一次修改時間或者資源戳和伺服器一緻,則不傳回新頁面,用戶端繼續使用原來的界面,否則傳回新頁面。

9、url

url格式:schema://host[:port#]/path/../[?query-string][#anchor]

i. schema:使用的協定,http、https。 https就是安全的http協定

ii. host:表示請求伺服器的域名或者ip位址

iii. port:端口号,預設是80

iv. path:請求資源的路徑

v. query-string:發送給伺服器的資料

vi. anchor:錨,跟伺服器無關,隻跟用戶端有關

url舉例:http://www.mywebsit.com/sj/test/test.html?name=zhangsan&age=18

schema:http

host:www.mywebsit.com

port:80

path:sj/test/test.html

query-string:name=zhangsan&age=18

10、封包相關資訊補充:

請求封包:

​請求封包有4部分:

​1、Request line(請求行)

結構:Method/path-to-resource HTTP/Version-number

Method:請求方法:Get、Post

Get 擷取伺服器的資料

Post 送出資料到伺服器

Path-to-resource:請求資源的路徑url

Version-number:版本号 一般HTTP/1.1

2、Request header(請求頭)

Accept:浏覽器接收的資料類型

Accept-Encoding:浏覽器能夠接收資料的編碼格式

Accept-Language:浏覽器支援的語言

Accept-Charset:浏覽器能夠接收的字元集類型

User_Agent:使用者代理,告訴伺服器用戶端的浏覽器資訊和作業系統資訊

Connection:keep alive(長連接配接和短連接配接)

Host:主機位址

Cookie:使用者識别(儲存使用者名)

3、空行

4、Request body(請求體)

響應封包:

響應封包也分為四部分:

1、Response line(響應行)

結構:HTTP/Version-number status-code message

HTTP/version number :版本号 一般HTTP/1.1

Status code :狀态碼

a)狀态碼作用:伺服器用來告訴浏覽器是否産生了浏覽器預期的Response

b)狀态碼類别:1XX 2XX 3XX 4XX 5XX

i. 1XX:提示資訊,表示伺服器已經接收到浏覽器的請求,繼續處理

ii. 2XX:處理成功,表示浏覽器的請求已經成功被接收、并正确處理

iii.3XX:重定向,表示需要進行更進一步的處理

iv. 4XX用戶端請求錯誤,表示用戶端請求出現錯誤

v. 5XX伺服器端錯誤,伺服器未能正确處理用戶端請求

常見狀态碼解釋:

i.    200   OK :表示用戶端請求被成功接收,并将響應資料發送給用戶端

ii.   302   Found :重定向,新的URL會在Response中傳回,浏覽器将會自動向新的URL發送請求。

iii.  304   Not Modified :表示資訊已經被緩存了,還可以繼續使用

iv.  403   Forbidden :伺服器接收到用戶端請求,但拒絕為用戶端提供服務

v.   404   Not Found :表示用戶端請求的資源不存在(url輸錯了)

vi.  500   Internet Server Error :伺服器發生了不可預期的錯誤

Message:狀态碼對應的狀态資訊

2、Response header(響應頭)

Date:消息生成時間

Content-type:響應資料的類型

Transfer-encoding:分塊傳輸

Last-Modified: Fri, 13 Apr 2018 06:43:31 GMT :伺服器記錄的檔案最後一次修改的時間

Content-type:響應封包的body的内容類型

Etag:資源戳,與請求封包的if-none_match配合使用

Set-Cookie:将Cookie資料發送到浏覽器,并要求浏覽器進行記錄

Content-Encoding:伺服器響應給浏覽器的檔案的壓縮方式

Content-Language:伺服器告訴浏覽器響應的語言

Server:伺服器告訴浏覽器目前伺服器的資訊

Location:重定向的url

3、空行

4、Request body(響應體)

使用者看到的内容,一般使用靜态或者動态的網頁代碼