學習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後,回去檢查究竟時從哪一個客戶端發來的來連線請求,然後對比伺服器上的記錄,最後得到之前的狀態資訊。