標籤:瀏覽器 伺服器 ip地址 用戶端 記錄
一、訪問網站的基本流程
第一步:用戶端使用者在瀏覽器輸入www.51cto.com網站,斷行符號後,系統首先會尋找系統本地的DNS緩衝及hosts檔案資訊,確定是否存在www.51cto.com餘名對應的IP解析記錄,如果有就直接擷取IP地址,然後去訪問這個IP地址對應餘名www.51cto.com的伺服器。一般第一次請求的時候,DNS緩衝是沒有解析記錄的,而hosts躲在內部臨時測試時使用。
第二步:如果用戶端本地DNS緩衝及hosts檔案沒有www.51cto.com餘名對應的解析記錄,那麼,系統會把瀏覽器的解析請求發送給用戶端本地設定的DNS伺服器位址(稱為LDNS)解析,如果LDNS伺服器的本機快取有對應的解析記錄就會直接返回IP地址給用戶端;如果沒有,則LDNS會負責繼續請求其他的DNS伺服器。
第三步:LDNS從DNS系統的根開始請求對www.51cto.com餘名的解析,並針對各個層級的DNS伺服器系統進行一系列的尋找,最終會尋找到51cto.com網域名稱對應的授權DNS伺服器,而這個授權DNS伺服器正式企業購買網域名稱時用於管理網域名稱解析的伺服器,這個授權伺服器會有www.51cto.com對應的IP解析記錄。如果此時沒有,就表示企業的網域名稱管理員沒有為www.51cto.com網域名稱做解析設定,即網站還沒有架設好。
第四步:51cto.com餘名的授權DNS伺服器會把www.51cto.com對應的最終IP解析記錄發給LDNS。
第五步:LDNS把來自授權DNS伺服器的www.51cto.com對應的IP解析記錄發給用戶端瀏覽器,並且它會把該網域名稱和IP地址的對應解析緩衝起來,以便下一次更快的返回相同解析請求的記錄,這些緩衝記錄在指定的時間(DNS TTL)內不會到期。
第六步:用戶端瀏覽器擷取了www.51cto.com對應的IP地址,接下來,瀏覽器會請求獲得IP地址對應的網站伺服器,網站伺服器接收到客戶的請求並響應處理(此處的處理可能是數百台叢集的伺服器系統,也可能是一台雲主機),將客戶請求的內容返回給用戶端瀏覽器。至此,一次訪問瀏覽網頁的完整過程也就完成了。
附:
(1)查看windows用戶端的本機快取記錄:
ifconfig /displaydns
(2)清楚Windows用戶端本機快取DNS記錄:
ifconfig /flushdns
(3)Windows系統下的hosts網域名稱解析記錄位置:
C:\Windows\System32\drivers\etc\hosts
二、DNS系統解析基本流程
DNS簡介
A記錄----把餘名解析為對應的IP地址。
CNAME別名記錄--別名解析功能常備CDN加速服務商應用
MX郵件記錄--MX記錄功能,在購買或搭建郵件伺服器時會被用到
PTR記錄--反向解析,即把IP位址解析為對應網域名稱,和A記錄的解析相反,此功能在郵件服務業務中會用
650) this.width=650;" src="http://s5.51cto.com/wyfs02/M02/88/56/wKiom1fvvOzj2WqVAACIHoN53c0064.jpg-wh_500x0-wm_3-wmp_4-s_1324839642.jpg" title="123.jpg" alt="wKiom1fvvOzj2WqVAACIHoN53c0064.jpg-wh_50" />
DNS解析流程圖
650) this.width=650;" src="http://s4.51cto.com/wyfs02/M02/88/56/wKiom1fvv2niTTGgAAFPQz6r41k630.jpg-wh_500x0-wm_3-wmp_4-s_2563572070.jpg" title="123.jpg" alt="wKiom1fvv2niTTGgAAFPQz6r41k630.jpg-wh_50" />
通過dig命令來實踐理解DNS解析流程
[[email protected] ~]# dig +trace www.51cto.com; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6_4.6 <<>> +trace www.51cto.com;; global options: +cmd. 47942 IN NS j.root-servers.net.. 47942 IN NS f.root-servers.net.. 47942 IN NS b.root-servers.net.. 47942 IN NS h.root-servers.net.. 47942 IN NS e.root-servers.net.. 47942 IN NS g.root-servers.net.. 47942 IN NS k.root-servers.net.. 47942 IN NS l.root-servers.net.. 47942 IN NS m.root-servers.net.. 47942 IN NS i.root-servers.net.. 47942 IN NS c.root-servers.net.. 47942 IN NS a.root-servers.net.. 47942 IN NS d.root-servers.net.;; Received 228 bytes from 192.168.0.1#53(192.168.0.1) in 54 ms## a-m一共13個DNS伺服器,j.root-servers.net根DNS負責了此處的解析com. 172800 IN NS a.gtld-servers.net.com. 172800 IN NS b.gtld-servers.net.com. 172800 IN NS c.gtld-servers.net.com. 172800 IN NS d.gtld-servers.net.com. 172800 IN NS e.gtld-servers.net.com. 172800 IN NS f.gtld-servers.net.com. 172800 IN NS g.gtld-servers.net.com. 172800 IN NS h.gtld-servers.net.com. 172800 IN NS i.gtld-servers.net.com. 172800 IN NS j.gtld-servers.net.com. 172800 IN NS k.gtld-servers.net.com. 172800 IN NS l.gtld-servers.net.com. 172800 IN NS m.gtld-servers.net.;; Received 491 bytes from 198.97.190.53#53(198.97.190.53) in 352 ms##解析com的一共有13個DNS伺服器,.com的a.gtld-servers.net負責了此處解析51cto.com. 172800 IN NS ns1.dnsv2.com.51cto.com. 172800 IN NS ns2.dnsv2.com.;; Received 249 bytes from 192.54.112.30#53(192.54.112.30) in 272 ms##解析 ns1.dnsv2.com負責了最終A記錄解析www.51cto.com. 600 IN CNAME web.dns.51cto.com.web.dns.51cto.com. 600 IN CNAME gf.dns.51cto.com.gf.dns.51cto.com. 600 IN A 218.11.0.9151cto.com. 86400 IN NS ns2.dnsv2.com.51cto.com. 86400 IN NS ns1.dnsv2.com.;; Received 162 bytes from 115.236.151.178#53(115.236.151.178) in 139 ms
附:
常用的HTTP要求方法
| HTTP方法 |
作用描述 |
GET
|
用戶端請求指定資源資訊,伺服器返回指定資源
|
HEAD
|
只請求響應保溫中的HTTP首部
|
POST
|
將用戶端的資料提交到伺服器,例如註冊表單
|
PUT
|
用從用戶端向伺服器傳送的資料取代指定的文檔內容
|
DELETE
|
請求伺服器刪除Request-URI所標識的資源
|
MOVE
|
請求伺服器將指定的頁面移至另一個網路地址
|
不同範圍的狀態代碼及其對應的應用
| 狀態代碼範圍 |
作用描述
|
100-199
|
用於指定用戶端響應相應的某些動作
|
200-299
|
用於表示請求成功
|
300-399
|
用於已經移動的檔案,並且常被包含在定位頭資訊中指定新的地址資訊
|
400-499
|
用於指出用戶端的錯誤
|
500-599
|
用於指出伺服器的錯誤
|
工作環境中常見的狀態代碼及對應的作用
狀態碼
|
詳細描述說明
|
200-OK
|
伺服器成功返回網頁,這是成功的HTTP請求返回標準狀態代碼
|
301-Moved Permanently
|
永久跳轉,所請求的網頁將永久跳轉到被設定的新位置,例如:從www.baidu.com跳轉到www.qq.com
|
403-Forbidden
|
禁止訪問,雖然這個請求是合法的,但是伺服器端因為匹配了預先設定的規則而拒絕響應用戶端的請求,此類問題一般為伺服器或伺服器許可權配置不當所致
|
404-Not Found
|
伺服器找不到用戶端請求的指定頁面,可能是用戶端請求了伺服器上不存在的資源所致
|
500-Internal Server Error
|
內部服務錯誤,伺服器遇到了意料不到的情況,不能完成客戶的請求。這是一個籠統的報錯,一般為伺服器的設定或內部程式問題導致。例如:SELinux開啟,而有沒有為HTTP設定規則許可,用戶端訪問就是500
|
502-Bad Gateway
|
壞的網關,一般是Proxy 伺服器請求後端服務時,後端服務不可用或沒有完成響應閘道伺服器。這通常為反向 Proxy伺服器下面的節點出問題所致
|
503-Service Unavailable
|
服務當前不可用,可能是伺服器超載或停機維護導致,或者是反向 Proxy伺服器後面沒有可以提供服務的節點
|
504-Gateway Timeout
|
網關逾時,一般是網關Proxy 伺服器請求後端服務時,後端服務沒有在特定的時間內完成處理請求。多數是伺服器過載導致沒有在指定時間內返回資料給前端Proxy 伺服器
|
可以通過curl 命令在Linux命令列查看HTTP響應的數字狀態代碼:
[[email protected] ~]# curl -I wwww.baidu.comHTTP/1.1 302 Found ##302 即為狀態代碼 Date: Sat, 01 Oct 2016 14:56:01 GMTServer: ApacheLocation: http://www.baidu.com/Cache-Control: max-age=86400Expires: Sun, 02 Oct 2016 14:56:01 GMTConnection: Keep-AliveContent-Type: text/html; charset=iso-8859-1[[email protected] ~]# curl -I -s -w %{http_code} -o /dev/null www.baidu.com200 ##200即是狀態代碼
本文出自 “Richy的營運日誌” 部落格,請務必保留此出處http://richylu.blog.51cto.com/1481674/1858330
HTTP訪問服務的相關解釋