1. 程式人生 > >學HTTP協議所要知道的基礎知識(微總結)

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

局域網 存在 長連接 代理 客戶端請求 n-n 沒有 cati 網絡層

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(響應體)

用戶看到的內容,一般使用靜態或者動態的網頁代碼

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