Web頁面解析過程(淺)


web頁面流程

域名解析DNS

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

DNS:域名系統

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

解析域名:

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

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

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

​ 根域服務器接收到查詢請求,則會把把頂級域的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服務器中。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM