Web服務基礎
用戶訪問網站的基本流程
咱們天天都會用web客戶端上網,瀏覽器就是一個web客戶端,例如谷歌瀏覽器,以及火狐瀏覽器等。 當咱們輸入www.oldboyedu.com/時候,很快就能看到老男孩教育的官網了,這一切看起來很平淡無奇,背後又是什麼道理呢?
普通人能夠不知道,可是我們做爲it開發人員,必須得掌握清楚背後的技術。
下面超哥爲你揭曉用戶訪問網站的基本流程php
- 老男孩教育某python總監,講了一天課感受很累,下了班躺牀上打開他的macbook pro,雙擊瀏覽器,輸入www.pornhub.com網址後,系統首先會查找本地的DNS緩存以及hosts文件信息,肯定是否存在www.pornhub.com域名對應的ip解析記錄,若是有就直接獲取ip進行訪問服務器,第一次請求時,dns緩存是沒有解析記錄的,hosts文件多數是開發臨時測試用
- 若是本地dns緩存和hosts文件都沒有域名解析記錄,系統就會把某python總監訪問的網址解析請求發送給客戶端設置的DNS服務器去解析,也叫作Local DNS,若是LDNS服務器的本地緩存有對應的解析記錄就會直接返回給客戶端IP地址,若是沒有LDNS就會繼續請求其餘的DNS服務器
- LDNS繼續從DNS系統的"."(根)開始請求www.pornhub.com域名的解析,而且根據每一個層級的DNS服務器系統進行系列的查找,最終在DNS網絡上找到www.pornhub.com域名對應的受權DNS服務器。這個受權DNS服務器就是企業(我的)購買域名時用於管理域名解析的服務器,服務器上有對應的域名(IP)解析。
- 此時受權的DNS服務器就會把www.pornhub.com對應的IP解析記錄,例如(1.1.1.1)發送給LDNS
- 此時LDNS會把解析記錄發給瀏覽器,而且緩存域名和IP的解析記錄,便於下一次更快的返回請求
- 瀏覽器得到ip,請求對應的服務器,網站服務器接收到客戶端的請求開始響應處理,將內容返回給瀏覽器,而後某python總監拿出了一盒清風牌抽紙。。。。
圖解dns解析
HTTP協議
Http協議,全稱是HyperText Tansfer Protocol,中文叫超文本傳輸協議,是互聯網最多見的協議。Http最重要的是www(World Wide Web)服務,也叫web服務器,中文叫「萬維網」。 web服務端口默認是80,另一個加密的www服務應用https默認端口是443,主要用於支付,網銀相關業務
版本css
http協議誕生以來有若干個版本,主要是http/1.0 http/1.1 http/1.0規定瀏覽器和服務器只能保持短暫的鏈接,瀏覽器的每次請求都須要和服務器創建一個TCP鏈接,服務器完成請求後即斷開TCP鏈接,服務器不跟蹤每一個連接,也不記錄請求 http/1.1是對HTTP的缺陷進行重點修復,從可擴展性,緩存,帶寬優化,持久鏈接,host頭,錯誤通知等訪問改進。 http/1.1支持長鏈接,增長了更多的請求頭和響應頭信息,例如配置請求頭的Connection的值爲keep-alive,表示請求結果返回後保持鏈接
Http請求方法html
在HTTP通訊中,每一個請求報文都包含一個方法,以告訴web服務器端須要執行哪些操做,這些動做被稱爲HTTP的請求方法
1 GET 請求指定的頁面信息,並返回實體主體。 2 HEAD 相似於get請求,只不過返回的響應中沒有具體的內容,用於獲取報頭 3 POST 向指定資源提交數據進行處理請求(例如提交表單或者上傳文件)。數據被包含在請求體中。POST請求可能會致使新的資源的創建和/或已有資源的修改。 4 PUT 從客戶端向服務器傳送的數據取代指定的文檔的內容。 5 DELETE 請求服務器刪除指定的頁面。 6 CONNECT HTTP/1.1協議中預留給可以將鏈接改成管道方式的代理服務器。 7 OPTIONS 容許客戶端查看服務器的性能。 8 TRACE 回顯服務器收到的請求,主要用於測試或診斷。
HTTP狀態碼java
HTTp狀態碼錶示web服務器響應http請求狀態的數字代碼 常見狀態碼以及做用是 1** 信息,服務器收到請求,須要請求者繼續執行操做 2** 成功,操做被成功接收並處理 3** 重定向,須要進一步的操做以完成請求 4** 客戶端錯誤,請求包含語法錯誤或沒法完成請求 5** 服務器錯誤,服務器在處理請求的過程當中發生了錯誤
HTTP狀態碼的命令查看python
curl -I www.oldboyedu.com
Server: OES Date: Sun, 12 Aug 2018 04:18:24 GMT Content-Type: text/html Content-Length: 152 Connection: keep-alive Location: https://www.oldboyedu.com/
Http報文
什麼是HTTP請求報文
HTTP請求由請求行,請求頭部,空行,請求報文主體幾個部分組成
HTTP報文:它是HTTP應用程序之間發送的數據塊。這些數據塊以一些文本形式的元信息開頭,這些信息描述了報文的內容及含義,後面跟着可選的數據部分。這些報文都是在客戶端、服務器和代理之間流動。nginx
請求報文的格式: 起始行: <method> <request-URL> <version> 頭部: <headers> 主體: <entity-body>