HTTP基礎小結

2021-09-13 15:36:50 字數 4544 閱讀 8065

最近開始學習ajax相關知識,所以正好仔細複習一下http的相關基礎知識。

1ip和mac:

s1 網路 分成很多個子網, 就像乙個國家分成很多個省份

s2 寄送物品的時候,只要按省份分類 下發到各省級物流中心即可 (由子網內部解決)

路由器只需記住每個子網的位置即可,大大減少了路由器所需要的記憶體

我們需要用 mac位址來區分不同的裝置;

總之

2閘道器:

聯絡外網的裝置,

具有其他閘道器位址的 路由表

具有內網內 ip和mac對應的 arp表

3dhcp伺服器: 隨機得到ip

4路由: 閘道器之間的查詢和連線的 一系列過程

5dns: 網域名稱和ip的對照表

6客戶端: 能傳送(資源)請求 + 接受響應資源的裝置,都可以稱為是客戶端

7協議: 從發起請求——獲得響應資源,這過程中的 各種約定規則的集合

我們可以模擬一下日常生活中的例子來形象理解一下:

s1 如果古代人a想獲取乙份救濟品,於是他向當地的行政員b寄了乙份申請信,這就是發起乙個資源請求。

s2 在經過一段路徑傳輸後,行政員b收到了申請(信),於是返回了某些資源(比如 救濟金 /救濟糧 /拒絕信等),這就叫做處理請求並響應

s3 在這過程中,a 和 b 之間很多方面都是有規則約束的(比如 a 申請信的格式 / b返回資源的格式 / 返回資源的多少 /傳輸路線的選擇等等)

所有這些規則的集合,就稱為`協議`
8tcp/ip 分層設計從上面的例子可以看出,資源的傳輸(發出請求—傳遞請求—接到請求並處理—返回響應—傳輸響應—獲取響應並處理)其實是乙個很複雜的過程,需要考慮到許多不同方面因素,我們可以大致分為以下層次:

s1 應用層: 首先要明確 a向b 發起請求的 具體目的是什麼 (可能是要獲取救濟品/ 可能是要投訴**c/ ….)

s2 傳輸層: 其次要明確 a和b之間如何高效完整的 傳遞資訊/資源;

s3 網路層: 明確 傳輸路線

最關鍵的是要知道  ip位址和 mac位址

核心是 `路由選擇機制`

s4 鏈路層: 實際的物理道路/大橋等實體建築

分層的目的其實類似於分工,都是為了各司其職,互不干擾,從而提高效率,繼續舉例來說:

s1應用層——寫信人&信件的內容: 不同的目的,信件的內容各不相同。但是只要負責寫好信件就可以;

s2傳輸層——信件/資源 加工處理站: 包括切分信件/資源為 小塊,以便並行傳送 + 內容完整性驗證;

s3網路層——信件/資源 傳輸中轉站: 明確 a 和 b 之間的傳輸路線;

s4鏈路層—— 實際派送人員: 實際派送資源的人員

每過一層都會添上/去除 該層的首部資訊(http資料——tcp首部——ip首部——乙太網首部)

9tcp相關:

tcp的三次握手原因:

三次握手即是在最快最省力的情況下做出的選擇

比如在紅軍時代,a連和b連分在左右翼,約定在幾時幾分一同發起打擊。這個幾時幾分的資訊就需要人工通過通訊員來走路傳遞。

所以a連指揮官派出通訊員。這是第一次。

在tcp裡,就是 `傳送端 首先傳送乙個帶 syn標誌的資料報 給對方`

假設通訊員到達了b連,並且告知了b連指揮官幾時幾分,b連指揮官一定會讓通訊員再回去通知a連指揮官,

可憐的通訊員只能冒著危險返回a連,因為a連指揮官看不到通訊員返回的話,不知道幾時幾分這個資訊到底傳達到了b連沒有。

這是第二次。

在tcp裡,就是接收端收到後, 回傳乙個帶有 syn/ack標誌的資料報 以示傳達確認資訊

在b連指揮官開始擔心通訊員是否回到了a連,如果沒回到,b連指揮官會設身處地的想一想a連指揮官見不到返回的通訊員,肯定是不敢打的,

所以b連指揮官最盼望的是再次看到通訊員出現在b連,所以a連指揮官會讓通訊員再回b連一次。

這是第三次。

在tcp裡,就是傳送端再 回傳乙個帶 ack標誌的資料報,代表「握手」結束這就是三次握手

總結圖如下:

10 uri 和 url

uri: 統一資源識別符號

由某個協議方案表示的 資源的定位字串

不同的協議方案,其獲取資源的語法等規則有區別

url: 統一資源定位符,是uri的子集。也就是一般我們輸入瀏覽器中的 網頁位址

絕對uri的格式:

其中, 檔案路徑: 類似於 伺服器上的檔案目錄結構

查詢字串: 用於確定 檔案路徑內的某一資源,形如 xx=yy

具體見下示意圖:

1 http協議 規範了客戶端和伺服器端間的通訊流程:

s1 客戶端發起請求 —— s2 伺服器接收+處理請求,返回響應內容 —— s3 客戶端接收+處理響應,展示/使用 響應內容;
可參考 mdn的 典型的http會話

2 http 規定了通訊報文的內容+格式:

s1 請求報文:

請求行: 請求方法 + 請求的資源內容(請求url: 相對url+host首部字段定位) + http協議版本;

請求首部字段

\空行(cr+lf)

請求內容實體

s2 響應報文: 狀態行:http協議版本 + 狀態碼 + 原因短語;

響應首部字段

\空行(cr+lf)

響應內容實體

可參考 mdn的 http訊息

3 http 規定了 自身是一種無狀態協議 + 持久連線

s1 為了實現保持狀態功能 —— `cookie技術`

s2 持久連線: http keep-alive, 只要任意一端沒有明確提出斷開連線,則保持 tcp連線狀態;

持久連線的好處是實現了管線化,從而可以 同時並行傳送多個請求

可參考:

mdn的 http cookies

mdn的 http/1.x 的連線管理

1 具體型別參見: mdn的 http請求方法

2 get和post請求的區別:

1 根本區別是兩者語義上的區別,get的語義是「獲取資料」,post的語義是「提交資料」;

2 get引數有長度限制(受限於url長度,具體數值取決於瀏覽器和伺服器限制),而post理論上沒有限制

3 get冪等+不改變伺服器狀態, post不冪等+改變伺服器狀態

4 get提交的資料會在url中顯示出來, 而post 是把提交的資料放在 http包的包體中

可參考

[get和post區別;](

[http協議中get和post方法的區別](

1 狀態碼的分類見圖:

2 常見的狀態碼含義

可參考

《**http》第4章

[http常見狀態碼;](

[mdn的 http響應**](

1 作用:

http首部字段 給瀏覽器/伺服器 提供了 報文主體大小/所使用的語言/認證資訊等額外資訊內容
2 語法結構:

首部欄位名: 字段值1,字段值2
3 型別:

分類一: 通用首部字段;  請求首部字段;  響應首部字段;  實體首部字段

分類二: 端到端首部; 逐跳首部

4 具體內容及含義

可參考

《**http》第5章

[mdn的 http headers](

其次,關於https和安全的部分,本文並未提及,以後會再單獨寫一篇博文。

2 mdn的 http目錄

3 如何生動的解釋ip位址、子網掩碼、閘道器等概念;

4 ip位址和mac位址的區別和聯絡是什麼;

5 怎樣生動描述 tcp 的「三次握手」;

HTTP基礎知識點小結

什麼是http協議?http,超文字傳輸協議是現在網際網路應用最為廣泛的協議,所有的www檔案都必須遵循這個標準設計這個最初的目的是為了發布和接收html檔案。http就是web通訊的基礎,就是為了能夠讓文件之間互相關聯可以進行互相傳閱。http協議在應用層。http協議的組成 http協議由htt...

HTTP協議小結

應答頭 說明allow 伺服器支援哪些請求方法 如get post等 content encoding content length 表示內容長度。只有當瀏覽器使用持久http連線時才需要這個資料。如果你想要利用持久連線的優勢,可以把輸出文件寫入bytearrayoutputstram,完成後檢視其...

Http 協議小結

1.請求行,狀態行只有一行 2.訊息頭由只有乙個部分 3.訊息頭與實體之間通過空行隔開 r n 4.可以存在多個實體部分,實體之間通過空行分開 在content type multipart form data的型別當中 5.連續兩個 r n只是乙個部分的分隔符 6.訊息頭,實體頭的格式 1.x 空...