Web頁面解析過程(淺)

web頁面流程

域名解析DNS

域名解析:把域名指向網絡空間IP,讓人們經過簡單的域名訪問Web網站的服務。php

DNS:域名系統html

DNS服務器:記錄着域名及其對應的IP地址linux

解析域名:

​ 瀏覽器中輸入目標網站的域名,瀏覽器會生成一個域名IP的請求nginx

​ 請求第一時間會查詢本地主機的DNS緩存表ipconfig/displaydns,若本地DNS緩存表有對應的IP地址則返回瀏覽器進行訪問,若是沒有則會向DNS域名服務器發出查詢請求(上一級的DNS服務器)web

​ 本地DNS服務器接收到查詢請求,按照第二步查詢本地已經緩存的DNS表對應的IP地址,查詢不到本地的則會向根DNS域名服務器發送查詢shell

​ 根域服務器接收到查詢請求,則會把把頂級域的IP地址發送給本地DNS服務器,本地DNS服務器向收到的頂級域服務器發送請求,頂級域服務器則會找到管理該域名的域服務器並返回對應的IP地址給本地DNS服務器瀏覽器

​ 瀏覽器根據本地DNS服務器返回的IP地址,鏈接服務器並進行TCP鏈接和HTTP請求緩存

img

域名記錄

域名和IP地址有某種對應的關係安全

A記錄:返回域名對應的IP地址服務器

NS域名服務器記錄:保存下一級域名信息的服務器地址

MX郵件記錄:接收電子郵件的服務器地址

CNAME規範記錄:返回另外一個域名(當前查詢的域名的另外一個域名的跳轉地址)

PTR逆向查詢記錄:用於IP地址查詢域名

AAAA記錄:IPv6主機記錄

配置DNS

域名申請成功以後首先須要作域名解析。點DNS解析管理,而後增長IP,增長別名以及郵件MX記錄。先增長IP。如想要實現去掉3W的頂級域名亦可訪問網站,除了要在空間裏綁定不加3W的域名外,還要解析,主機名爲空。

修改DNS

​ 條件:要更改成的主、輔DNS服務器都必須是註冊過的、合法的DNS服務器名稱,不然修改會失敗。
​ 若是要查詢DNS是否爲合法的DNS,能夠點擊:國際域名DNS查詢界面、國內域名DNS查詢界面通用頂級域名DNS查詢界面使用方法:輸入DNS服務器的名稱,選中第三個選項Nameserver,查詢若是查詢出有DNS註冊的信息,如註冊商,名稱對應的IP地址,則這個DNS是合法的。國內域名DNS查詢界面使用方法: 在「主機」一欄中輸入DNS服務器的名稱,點擊查詢,若是查詢出有DNS註冊的信息,如註冊商,名稱對應的IP地址,則這個DNS是合法的
​ 修改方法:經過相應域名註冊公司進行域名變動DNS操做。
​ 解析生效時間
​ 通用頂級域名解析是2小時內生效,國家頂級域名解析24小時內生效。
​ 是否解析成功
​ 由於域名解析須要同步到DNS根服務器,而DNS根服務器會不定時刷,只有DNS根服務器刷新後域名才能正常訪問,新增解析通常會在10分鐘左右生效,最長不會超過24小時,修改解析時間會稍微延長。能夠用ping命令來查看域名是否生效。點擊開始菜單>運行>輸入"CMD">敲回車鍵,進入 命令提示符窗口,輸入"ping 您的域名",若是紅線部分爲您主機的IP即解析成功。

web頁面請求(Nginx)

請求過程

  1. 主機向DHCP(動態主機配置協議)服務器獲取一個IP地址
  2. 瀏覽器肯定目標域名/服務器IP
  3. DNS向瀏覽器返回目標域名的IP地址
  4. 瀏覽器接收DNS返回的IP地址並向目標發送TCP鏈接請求(TCP三次握手)
  5. TCP創建成功,瀏覽器向目標發送HTTP/服務協議請求,服務器響應瀏覽器的請求
  6. 瀏覽器對服務器返回的響應數據包進行渲染並輸出到瀏覽器中

Nginx的過程

img

POST_READ 讀取HTTP頭部,讀取並解析內容

server-rewrite在URL與location匹配以前修改請求的URL(重定向),在server塊中的請求地址重寫

find-config配置查找階段,根據請求的URL匹配location表達式;不支持nginx模塊註冊處理程序,而是由ngx_http_core_module模塊來完成當前請求與location配置之間的匹配

rewritelocation塊追蹤的請求地址重寫階段,當rewrite指令用於location中則運行;ngx_lua模塊中的set_by_lua指令和rewrite_by_lua指令也在這裏

post-rewrite請求地址重寫提交階段,防止遞歸修改URL形成死循環;由ngx_http_core_module模塊實現

preaccess訪問權限檢查準備階段,http模塊進入處理階段,ngx_limit_req(訪問控制的頻率)和ngx_limit_zone(訪問的併發率控制)也會運行

access訪問權限檢查執行階段,ngx_access和nginx_auth_request,ngx_lua的access-by_lua執行在這個階段,配置指令可能是執行訪問控制性質的任務,好比檢查用戶的訪問權限,檢查用戶的IP地址合法性

post-access訪問權限檢查提交階段,若是請求不被容許訪問Nginx服務器,該階段用於返回錯誤的響應

try-files配置項try-files處理階段,若是http訪問的靜態文件try-files配置項可使這個請求順序地訪問多個靜態文件,直至符合條件

content內容產生階段,大部分HTTP模塊會執行,全部請求處理階段中的重要階段這個階段的指令一般用來生成HTTP響應的內容

log日誌模塊處理階段,記錄日誌

HTTP協議

HTTP請求/響應:

統一資源定位符,是一種互聯網的標準地址規範

協議://服務器IP:端口/路徑/?屬性=value

計算機主要經過瀏覽器的URL進行HTTP請求發送,在linux中可使用curl命令發送HTTP請求:(linux實現curl訪問baidu)

curl http://www.baidu.com #訪問HTTP響應數據

curl http://www.baidu.com -I #回顯HTTP響應頭部數據

curl命令的結果,能夠認爲瀏覽器的做用是渲染HTTP響應信息包

HTTP是一種無狀態協議,與WEB瀏覽器之間不會創建永久鏈接;當服務器返回響應後,就會關閉與服務器之間的鏈接,只有在從新發起請求的時候纔會從新創建鏈接(服務器不主動鏈接,鏈接由客戶端發起)

HTTP是請求和響應爲核心:客戶端發起請求,服務端返回響應

HTTP請求包含:請求行、請求頭、請求正文

GET /login.php HTTP/1.1  //請求行
HOST:192.168.2.172
User-Agent:Mozilla/5.0 (Windows NT 10.0;Win64 X64;rv:66.0) Gecko/20100101 Firefox/66.0
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Languge:zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding:gzip,deflate
DNT:1
Connection: keep-alive
Cookie: security=impossible; hibext_instdsigdipv2=1; PHPSESSID=d19t3v9obo76br07i58qrl88p5
Upgrade-Insecure-Requests: 1
Pragma: no-cache
Cache-Control: no-cache

HTTP請求方法:

GET方法:

用於獲取請求頁面的指定資源,沒有完整的請求內容(請求的參數實際是存在URL中)

GET /index.php HTTP/1.1
POST方法:

用於向指定的URL頁面請求資源或提交內容資源

咱們登陸login.php,利用POST方法將請求主體上傳提交

HEAD方法:

用於只要求服務器響應返回HTTP信息(返回除消息主體外的信息);經常使用來測試連接的有效性,測試頁面是否能夠正常訪問經常使用這個請求方法訪問

PUT/DELETE方法:

PUT用於向服務器請求存儲指定的實體信息在指定的HOST中;DELETE用於向服務器請求刪除指定URL位置的資源;很是危險的兩個請求方法哦~經常被禁止使用

TRACE方法:

TRACE用於激發服務端的請求消息迴路,回顯服務器接收的請求,經常使用於診斷

HTTP響應狀態碼

1XX:信息提示

表示消息成功接收

2XX:成功

表示服務器成功的處理了消息

200:客戶端請求成功

3XX:重定向

訪問的資源被轉移,告知客戶端訪問新的指向URL

302:重定向

4XX:錯誤

請求資源錯誤

404:請求的資源不存在

400:請求語法錯誤,服務端沒法解析

401:請求未得到權限

403:服務端拒絕客戶端請求

5XX:服務端錯誤

服務端拒絕或沒法正常的處理請求

500:服務端錯誤

503:服務不可用(超載或停機維護)

HTTP消息:

HTTP消息等同於HTTP頭部(HTTP heard);由請求頭、響應頭、普通頭和實體信息

請求頭:

起始行:請求方法 + 請求URL + HTTP協議及版本

GET /index.php HTTP/1.1

HOST指定資源的URL

User-Agent客戶端瀏覽器的信息

Referer當前URL的上一級URL

Range請求實體的部份內容

x-forward-forXXF頭,請求端的IP,多個IP使用逗號隔開

Accept指定服務端接收的MIME類型信息

Accept-Charset指定客戶端接收的字符集

響應頭:

響應頭是服務器依據請求向客戶端發送的HTTP頭,

Server服務器所使用Web服務器的名稱

Set-Cookie向客戶端設置Cookie

Last-Modified告訴客戶端該資源最後的修改時間

Location302重定向的新的URL頁面

Refersh告訴瀏覽器客戶端定時刷新

普通頭:
實體頭:

Content-Type向接收端說明實體的介質類型

Content-Encoding媒體類型的修飾符(採用編碼/解碼的機制)

Content-Lengthvalue表明實體正文的長度(字節)

Last-Modified資源的最後修改時間

頁面解析中的安全

DNS域名劫持

攻擊者經過對域名解析服務器的攻擊或僞造,吧目標網站的域名解析到錯誤(黑客準備)的頁面,從而達到攻擊者的某種目的

原理上通俗的解釋:

黑客改變了DNS服務器中本來正確的網址解析的IP並變動爲本身準備的IP服務器中。

相關文章
相關標籤/搜索