1. 程式人生 > 其它 >學習http第一天

學習http第一天

學習http第一天

閱讀書籍:《圖解http》

參考連線:(4 封私信 / 33 條訊息) http - 搜尋結果 - 知乎 (zhihu.com)

帶著問題學習更快呀

  • web是建立在何種技術之上
  • http是如何誕生並發展的

使用Http協議訪問web

思考:在瀏覽器的位址列中輸入url時,web頁面如何呈現?

在瀏覽器輸入url之後,資訊會被送往某處,從某處得到回覆之後,內容就顯示出來了。

什麼是客戶端:通過傳送請求獲取伺服器資源的web瀏覽器。

web使用一種名為HTTP的協議作為規範,完成從客戶端到伺服器端等一系列運作流程。web是建立在HTTP協議上通訊的

Http的誕生

為知識共享而規劃web

XX博士提出一種能讓遠隔兩地的研究者們共享知識的設想,

最初的理念是藉助多文件之間的相互關聯形成的超文字,連成可相互參閱的www(萬維)

現在:HTML,頁面的文字標記語言,HTTP:文件的傳遞協議,URL:文件所在的地址

網路基礎

通常使用的網路是在tcp/ip協議的族的基礎上運作的,而http是屬於他內部的一個子集

tcp/Ip協議裡重要的一點就是分層。應用層,傳輸層,網路層,資料鏈路層。分層之後各層的只需要考慮各層,需要替換的也只是替換各層的,互不影響。

通訊傳輸流

傳送端在層與層之間傳輸時,每經過一層必定會打上一個該層所屬得首部資訊,反之,接收端在層與層傳輸資料時,每經過一層時會把對應得首部消去

傳送端從應用層往下走,接收端從資料鏈路層往上走。

與http關係密切的協議 IP,TCP,DNS

  • 負責傳輸的IP協議

    ​ 按層次分,位於網路層,作用是,把各種資料包傳輸給對方

  • 確保可靠的tcp協議

    ​ 位於傳輸層,提供可靠的位元組流服務

  • 負責域名解析的DNS服務

    ​ 和http一樣位於應用層,提供域名到IP地址之間的解析服務

個人理解:客戶端找dns要IP地址,拿到IP地址,http協議生成HTTP請求報文,tcp負責將報文可靠的傳輸給對方,ip協議負責搜尋對方的地址僅從中轉和傳送 (聯想送快遞)

URL/URI

簡單得HTTP協議

http用於客戶端和服務端之間的通訊

應用HTTP協議時必定是一端擔任客戶端角色,另一端擔任服務端角色。有時候按照實際情況,兩臺計算機作為客戶端和服務端得角色有可能互換。

通過請求和響應得互動達成通訊

請求必定是客戶端發出,響應是服務端響應。換句話說,首先是從客戶端簡歷通訊,伺服器端沒有收到請求之前不會發送響應。

HTTP是不儲存狀態的協議

即無狀態協議

使用HTTP協議,每當有新的請求傳送時,就會有對應的新響應產生。協議本身並不保留之前一切的請求或響應報文的資訊,這是為了更快的處理大量事務,確保協議的可伸縮性。但是隨著web的不斷髮展,因無狀態導致業務處理變得棘手的情況增多了

為了實現期望儲存狀態的功能引入了cookie技術,如儲存登入的一些資訊等。

get,post,put,delete...等就不寫了,工作中遇到再說

持久連線

HTTP協議的初始版本中,沒進行一次HTTP通訊就要斷開一次TCP連線,,在現在web的發展看來,每次的請求都會造成無謂的TCP連線建立和斷開,增加通訊量的開銷,為了解決找個問題,HTTP/1.1想出了持久化連線connection:keep-alive。持久化連線特點是隻要一端沒有明確提出斷開連線,則保持TCP來凝結狀態。

管線化

除了伺服器端,客戶端也需要持久化連線

持久化使得多數請求以管線化方式傳送成為可能,從前傳送請求後需等待並收到響應,才能傳送下一個請求,管線化技術出現後,不用等待響應就可之間傳送到下一個請求。

這樣就能夠做到同時並行傳送多個請求,而不需要一個接一個的等待響應了。

使用cookie的狀態管理

保留無狀態協議這個特徵的同時又要解決類似的矛盾問題,於是引入cookie技術。cookie技術通過在請求和響應中寫入cookie資訊來控制客戶端的狀態,

cookie會根據服務端傳送的的響應報文內的一個叫做set-cookie的首部欄位資訊,通知客戶端儲存cookie,當下次客戶端再往該伺服器傳送請求時,客戶端會自動再請求報文中加入cookie值後傳送出去。

伺服器端發現客戶傳送過來的cookie後,回去檢查究竟時從哪一個客戶端發來的來連線請求,然後對比伺服器上的記錄,最後得到之前的狀態資訊。