国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

用戶訪問web服務(wù)器過程精解

sarva / 3019人閱讀

摘要:文件如果在本機中仍然無法完成域名的解析,則會真正請求域名服務(wù)器來解析這個域名了。若沒有命中,就直接到域名服務(wù)器請求解析。是國際頂級域名服務(wù)器,如等,全球只有臺左右。本地域名服務(wù)器再向上一步返回的服務(wù)器發(fā)送請求。

博文參考
http://www.hackdig.com/
http://www.hackdig.com/07/hack-47475.htm
http://www.cnblogs.com/yuteng/articles/1904215.html
http://blog.csdn.net/bpingchang/article/details/51328941
http://blog.csdn.net/boer521314/article/details/41460865


概括預(yù)覽

當(dāng)一個用戶在瀏覽器里輸入www.google.com這個URL時,將會發(fā)生如下操作

1 首先,瀏覽器會請求DNS把這個域名解析成對應(yīng)的IP地址;
2 然后,根據(jù)這個IP地址在互聯(lián)網(wǎng)上找到對應(yīng)的服務(wù)器,建立Socket連接,向這個服務(wù)器發(fā)起一個HTTP Get請求,由這個服務(wù)器決定返回默認(rèn)的數(shù)據(jù)資源給訪問的用戶;
3 在服務(wù)器端實際上還有復(fù)雜的業(yè)務(wù)邏輯:服務(wù)器可能有多臺,到底指定哪臺服務(wù)器處理請求,這需要一個負(fù)載均衡設(shè)備來平均分配所有用戶的請求;
4 還有請求的數(shù)據(jù)是存儲在分布式緩存里還是一個靜態(tài)文件中,或是在數(shù)據(jù)庫里;
5 當(dāng)數(shù)據(jù)返回瀏覽器時,瀏覽器解析數(shù)據(jù)發(fā)現(xiàn)還有一些靜態(tài)資源(如:css,js或者圖片)時又會發(fā)起另外的HTTP請求,而這些請求可能會在CDN上,那么CDN服務(wù)器又會處理這個用戶的請求;

HTTP協(xié)議解析 HTTP協(xié)議
最重要的就是要熟悉HTTP協(xié)議中的HTTP Header,HTTP Header控制著互聯(lián)網(wǎng)上成千上萬的用戶的數(shù)據(jù)傳輸。最關(guān)鍵的是,它控制著用戶瀏覽器的渲染行為和服務(wù)器的執(zhí)行邏輯。


? 200: 成功,請求數(shù)據(jù)通過響應(yīng)報文的entity-body部分發(fā)送;OK
? 301: 請求的URL指向的資源已經(jīng)被刪除;但在響應(yīng)報文中通過首部Location指明了資源在所處的新位置; Moved Permanently
? 302: 與301相似,但在響應(yīng)報文中通過Location指明資源現(xiàn)在所處臨時新位置; Moved Temporarily
? 304: 客戶端發(fā)出了條件式請求,但服務(wù)器上的資源未曾發(fā)生改變,則通過響應(yīng)此響應(yīng)狀態(tài)碼通知客戶端; Not Modified
? 401: 需要輸入賬號和密碼認(rèn)證方能訪問資源; Unauthorized
? 403: 請求被禁止; Forbidden
? 404: 服務(wù)器無法找到客戶端請求的資源; Not Found
? 500: 服務(wù)器內(nèi)部錯誤; Internal Server Error
? 502: 代理服務(wù)器從后端服務(wù)器收到了一條偽響應(yīng),如無法連接到父網(wǎng)關(guān); Bad Gateway

瀏覽器緩存機制
當(dāng)我們使用Ctrl+F5組合鍵刷新一個頁面時,首先是在瀏覽器端,會直接向目標(biāo)URL發(fā)送請求,而不會使用瀏覽器緩存的數(shù)據(jù);其次即使請求發(fā)送到服務(wù)端,也有可能訪問到的是緩存的數(shù)據(jù)。所以在HTTP的請求頭中會增加一些請求頭,它告訴服務(wù)端我們要獲取最新的數(shù)據(jù)而非緩存。最重要的是在請求頭中增加了兩個請求項Pragma:no-cache和Cache-Control:no-cache。

1 Cache-Control/Pragma這個HTTP Head字段用于指定所有緩存機制在整個請求/響應(yīng)鏈中必須服從的指令,如果知道該頁面是否為緩存,不僅可以控制瀏覽器,還可以控制和HTTP協(xié)議相關(guān)的緩存或代理服務(wù)器。Http Head字段的可選值:

Cache-Control請求字段被各個瀏覽器支持的較好,而且它的優(yōu)先級也比較高,它和其他一些請求字段(如Expires)同時出現(xiàn)時,Cache-Control會覆蓋其他字段。

Pragma字段的作用和Cache-Control有點類似,它也是在HTTP頭中包含一個特殊的指令,使相關(guān)的服務(wù)器來遵守,最常用的就是Pragma:no-cache,它和Cache-Control:no-cache的作用是一樣的。

2 Expires 緩存過期時間Expires通常的使用格式是Expires:Sat,25 Feb 2012 12:22:17 GMT,后面跟著一個日期和時間,超過這個值后,緩存的內(nèi)容將失效,也就是瀏覽器在發(fā)出請求之前檢查這個頁面的這個字段,看該頁面是否已經(jīng)過期了,過期了將重新向服務(wù)器發(fā)起請求。

3 Last-Modified/Etag 最后修改時間Last-Modified字段一般用于表示一個服務(wù)器上的字段的最后修改時間,資源可以是靜態(tài)(靜態(tài)內(nèi)容自動加上Last-Modified)或者動態(tài)的內(nèi)容(如Servlet提供了一個getLastModified方法用于檢查某個動態(tài)內(nèi)容是否已經(jīng)更新),通過這個最后修改時間可以判斷當(dāng)前請求的資源是否是最新的。一般服務(wù)器端在響應(yīng)頭中返回一個Last-Modified字段,告訴瀏覽器這個頁面的最后修改時間,如:Sat,25 Feb 2012 12:55:04 GMT,瀏覽器再次請求時在請求頭中增加一個If-Modified-Since:Sat,25 Feb 2012 12:55:04 GMT字段,詢問當(dāng)前緩存的頁面是否是最新的,如果是最新的就會返回304狀態(tài)碼,告訴瀏覽器是最新的,服務(wù)器也不會傳輸新的數(shù)據(jù)。

與Last-Modified字段有類似功能的還有一個Etag字段,這個字段的作用是讓服務(wù)端給每個頁面分配一個唯一編號,然后通過這個編號來區(qū)分當(dāng)前這個頁面是否是最新的。這種方式比使用Last-Modified更加靈活,但是在后端的Web服務(wù)器有多臺時比較難處理,因為每個Web服務(wù)器都要記住網(wǎng)站的所有資源編號,否則瀏覽器返回這個編號就沒有意義了。

WEB工作流程 上網(wǎng)過程
瀏覽器本身是一個客戶端,當(dāng)你輸入URL的時候,首先瀏覽器會去請求DNS服務(wù)器,通過DNS獲取相應(yīng)的域名對應(yīng)的IP,然后通過IP地址找到IP對應(yīng)的服務(wù)器后,要求建立TCP連接,等瀏覽器發(fā)送完HTTP Request(請求)包后,服務(wù)器接收到請求包之后才開始處理請求包,服務(wù)器調(diào)用自身服務(wù),返回HTTP Response(響應(yīng))包;客戶端收到來自服務(wù)器的響應(yīng)后開始渲染這個Response包里的主體(body),等收到全部的內(nèi)容隨后斷開與該服務(wù)器之間的TCP連接。

Web服務(wù)器的工作原理可以簡單地歸納為

瀏覽器通過DNS域名解析到服務(wù)器IP;

客戶機通過TCP/IP協(xié)議建立到服務(wù)器的TCP連接;

客戶端向服務(wù)器發(fā)送HTTP協(xié)議請求包,請求服務(wù)器里的資源文檔;

服務(wù)器向客戶機發(fā)送HTTP協(xié)議應(yīng)答包,如果請求的資源包含有動態(tài)語言的內(nèi)容,那么服務(wù)器會調(diào)用動態(tài)語言的解釋引擎負(fù)責(zé)處理“動態(tài)內(nèi)容”,并將處理得到的數(shù)據(jù)返回給客戶端;

客戶機與服務(wù)器斷開。由客戶端解釋HTML文檔,在客戶端屏幕上渲染圖形結(jié)果;

DNS域名解析

當(dāng)用戶在瀏覽器中輸入域名,如:www.google.com,并按下回車后,DNS解析過程大體如下

(1)瀏覽器先查緩存,若緩存中有域名對應(yīng)IP地址,則解析結(jié)束。(存活時間TTL)
(2)若瀏覽器緩存中沒有,瀏覽器會查詢操作系統(tǒng)中緩存緩存是否有這個域名對應(yīng)的DNS解析結(jié)果。(hosts 文件)
(3)如果在本機中仍然無法完成域名的解析,則會真正請求域名服務(wù)器來解析這個域名了。操作系統(tǒng)會把域名發(fā)送給設(shè)置的LDNS(cat /etc/resolv.conf)。
(4)若LDNS沒有命中,就直接到Root Server域名服務(wù)器請求解析。
(5)根域名服務(wù)器返回本地域名服務(wù)器一個所查詢域的主域名服務(wù)器(gTLD Server)地址。GTLD是國際頂級域名服務(wù)器,如.com、.cn、.org等,全球只有13臺左右。
(6)本地域名服務(wù)器(Local DNS Server)再向上一步返回的GTLD服務(wù)器發(fā)送請求。
(7)接受請求的GTLD服務(wù)器查找并返回此域名對應(yīng)的Name Server域名服務(wù)器,這個Name Server通常就是你注冊的域名服務(wù)器,例如你在某個域名服務(wù)提供商申請的域名,那么這個域名解析任務(wù)就有這個域名提供商的服務(wù)器來完成。
(8)Name Server返回IP記錄和TTL(緩存時間)。
(9)LDNS緩存該記錄,緩存時間有TTL控制。
(10)解析結(jié)果返回給用戶,用戶根據(jù)TTL值緩存在本地系統(tǒng)緩存中,域名解析過程結(jié)束。
幾種域名解析方式
1    A記錄,A代表的是Address,用來指定域名對應(yīng)的IP地址如將item.taobao.com指定到115.238.23.241,將switch.taobao.com指定到121.14.24.241。A記錄可以將多個域名解析到一個IP地址,但是不能將一個域名解析到多個IP地址。
2    MX記錄,表示的是Mail Exchange,就是可以將某個域名下的郵件服務(wù)器指向自己的Mail Server如taobao.com域名的A記錄IP地址是115.238.25.245,如果MX記錄設(shè)置為115.238.25.246,是xxx@taobao.com的郵件路由,DNS會將郵件發(fā)送到115.238.25.246所在的服務(wù)器,而正常通過Web請求的話仍然解析到A記錄的IP地址。
3    CNAME記錄,全稱是Canonical Name(別名解析),所謂的別名解析就是可以為一個域名設(shè)置一個或者多個別名如將taobao.com解析到xulingbo.net,將srcfan.com也解析到xulingbo.net,其中xulingbo.net分別是taobao.com和srcfan.com的別名。前面的跟蹤域名解析中的“www.taobao.com. 1542 IN CNAME www.gslb.taobao.com”就是CNAME解析。
4    NS記錄,為某個域名指定DNS解析服務(wù)器,也就是這個域名有指定的IP地址的DNS服務(wù)器去解析前面的“google.com. 172800 IN NS ns4.google.com.”就是NS解析。
5    TXT記錄,為某個主機名或域名設(shè)置說明如可以為google.com設(shè)置TXT記錄為“谷歌|中國”這樣的說明。
發(fā)起TCP協(xié)議 三次握手連接
拿到域名對應(yīng)的IP地址之后,User-Agent(一般是指瀏覽器)會以一個隨機端口(1024 < 端口 < 65535)向服務(wù)器的WEB程序(常用的有httpd,nginx等)80端口發(fā)起TCP的連接請求。這個連接請求(原始的http請求經(jīng)過TCP/IP4層模型的層層封包)到達(dá)服務(wù)器端后(這中間通過各種路由設(shè)備,局域網(wǎng)內(nèi)除外),進(jìn)入到網(wǎng)卡,然后是進(jìn)入到內(nèi)核的TCP/IP協(xié)議棧(用于識別該連接請求,解封包,一層一層的剝開),還有可能要經(jīng)過Netfilter防火墻(屬于內(nèi)核的模塊)的過濾,最終到達(dá)WEB程序,最終建立了TCP/IP的連接。

   Client首先發(fā)送一個連接試探,ACK=0 表示確認(rèn)號無效,SYN = 1 表示這是一個連接請求或連接接受報文,同時表示這個數(shù)據(jù)報不能攜帶數(shù)據(jù),seq = x 表示Client自己的初始序號(seq = 0 就代表這是第0號包),這時候Client進(jìn)入syn_sent狀態(tài),表示客戶端等待服務(wù)器的回復(fù)。
   Server監(jiān)聽到連接請求報文后,如同意建立連接,則向Client發(fā)送確認(rèn)。TCP報文首部中的SYN 和 ACK都置1 ,ack = x + 1表示期望收到對方下一個報文段的第一個數(shù)據(jù)字節(jié)序號是x+1,同時表明x為止的所有數(shù)據(jù)都已正確收到(ack=1其實是ack=0+1,也就是期望客戶端的第1個包),seq = y 表示Server自己的初始序號(seq=0就代表這是服務(wù)器這邊發(fā)出的第0號包)。這時服務(wù)器進(jìn)入syn_rcvd,表示服務(wù)器已經(jīng)收到Client的連接請求,等待client的確認(rèn)。
   Client收到確認(rèn)后還需再次發(fā)送確認(rèn),同時攜帶要發(fā)送給Server的數(shù)據(jù)。ACK 置1 表示確認(rèn)號ack= y + 1 有效(代表期望收到服務(wù)器的第1個包),Client自己的序號seq= x + 1(表示這就是我的第1個包,相對于第0個包來說的),一旦收到Client的確認(rèn)之后,這個TCP連接就進(jìn)入Established狀態(tài),就可以發(fā)起http請求了。
建立TCP連接發(fā)起http請求

經(jīng)過TCP3次握手之后,瀏覽器發(fā)起了http的請求(看第?包),使用的http的方法 GET 方法,請求的URL是 / ,協(xié)議是HTTP/1.0:

抓包實戰(zhàn)

以上的報文是HTTP請求報文。那么HTTP請求報文和響應(yīng)報文會是什么格式呢?

起始行:如 GET / HTTP/1.0 (請求的方法 請求的URL 請求所使用的協(xié)議)

頭部信息:User-Agent Host等成對出現(xiàn)的值

主體

不管是請求報文還是響應(yīng)報文都會遵循以上的格式。那么起始行中的請求方法有哪些種呢?

GET: 完整請求一個資源 (常用)

HEAD: 僅請求響應(yīng)首部

POST: 提交表單 (常用)

PUT: 上傳

DELETE: 刪除

OPTIONS: 返回請求的資源所支持的方法的方法

TRACE: 追求一個資源請求中間所經(jīng)過的代理

那什么是URL、URI、URN?

URI Uniform Resource Identifier 統(tǒng)一資源標(biāo)識符,如:scheme://[username:password@]HOST:port/path/to/source

URL Uniform Resource Locator 統(tǒng)一資源定位符,如:http://www.magedu.com/downloads/nginx-1.5.tar.gz

URN Uniform Resource Name 統(tǒng)一資源名稱

請求的協(xié)議有哪些種?有以下幾種

http/0.9: stateless

http/1.0: MIME, keep-alive (保持連接), 緩存

http/1.1: 更多的請求方法,更精細(xì)的緩存控制,持久連接(persistent connection) 比較常用

    Accept 就是告訴服務(wù)器端,接受那些MIME類型

    Accept-Encoding 這個看起來是接受那些壓縮方式的文件

    Accept-Lanague 告訴服務(wù)器能夠發(fā)送哪些語言

    Connection 告訴服務(wù)器支持keep-alive特性

    Cookie 每次請求時都會攜帶上Cookie以方便服務(wù)器端識別是否是同一個客戶端

    Host 用來標(biāo)識請求服務(wù)器上的那個虛擬主機,比如Nginx里面可以定義很多個虛擬主機,那這里就是用來標(biāo)識要訪問那個虛擬主機。

    User-Agent 用戶代理,一般情況是瀏覽器,也有其他類型,如:wget curl 搜索引擎的蜘蛛等

    條件請求頭部:If-Modified-Since是瀏覽器向服務(wù)器端詢問某個資源文件如果自從什么時間修改過,那么重新發(fā)給我,這樣就保證服務(wù)器端資源文件更新時,瀏覽器再次去請求,而不是使用緩存中的文件。

    安全請求頭部:Authorization: 客戶端提供給服務(wù)器的認(rèn)證信息;
網(wǎng)頁處理過程
html → head → title → #text(網(wǎng)頁標(biāo)題) → style → 加載樣式 → 解析樣式 → link → 加載外部樣式表文件 → 解析外部樣式表 → script → 加載外部腳本文件 → 解析外部腳本文件 → 執(zhí)行外部腳本 → body → div → script → 加載腳本 → 解析腳本 → 執(zhí)行腳本 → img → script → 加載腳本 → 解析腳本 → 執(zhí)行腳本 → 加載外部圖像文件 → 頁面初始化完畢
httpd請求過程

<1>.客戶端發(fā)送請求。客戶端瀏覽器向服務(wù)器發(fā)送請求URL;

<2>.服務(wù)器接收請求。服務(wù)器接收到該瀏覽器發(fā)送的請求;

<3>.服務(wù)器生成HTML。服務(wù)器解析請求的URL,根據(jù)URL確定請求的目標(biāo)資源文件;這個資源文件通常是一個動態(tài)頁面(如ASP,PHP,JSP,ASPX等文件)的網(wǎng)絡(luò)地址(MVC結(jié)構(gòu)的程序例外)。Web服務(wù)器根據(jù)動態(tài)頁面文件的內(nèi)容和URL中的參數(shù),調(diào)用相應(yīng)的資源(數(shù)據(jù)庫數(shù)據(jù)或圖片文件等等)組織數(shù)據(jù),生成HTML頁面。

<4>.服務(wù)端響應(yīng)請求。生成HTML文檔以后,服務(wù)器響應(yīng)瀏覽器的請求,將生成的HTML文檔發(fā)送給客戶端瀏覽器;

<5>.客戶端接收響應(yīng)。瀏覽器接收服務(wù)端發(fā)出的請求得來HTML文檔;

<6>.客戶端解析HTML。瀏覽器對HTML文檔進(jìn)行解析,并加載相關(guān)的資源文件(JS,CSS,多媒體資源,內(nèi)嵌網(wǎng)頁)等,(在這里瀏覽器解悉完HTML文檔以后,就會進(jìn)行呈現(xiàn),但同時也會向服務(wù)器發(fā)送請求來請求其它相關(guān)的資源文件)

<7>.服務(wù)器發(fā)送資源文件。服務(wù)器接到瀏覽器對資源文件的請求,將相應(yīng)的資源文件響應(yīng)給客戶端瀏覽器;

<8>.客戶端加載資源文件??蛻舳藶g覽器將接收服務(wù)器發(fā)送的資源文件,整理并呈現(xiàn)到頁面中;

<9>.客戶端從上到下加載。在進(jìn)行頁面呈現(xiàn)的時候,瀏覽器會從上到下執(zhí)行HTML文檔,當(dāng)遇到相應(yīng)的頁面腳本的時候,會對腳本進(jìn)行分析,并解釋執(zhí)行相應(yīng)的腳本代碼。

在第6步以后,我們就可以看到一部分頁面內(nèi)容了,不過可能是純文本內(nèi)容,沒有樣式,沒有圖片或其它資源。待到瀏覽器請求得到某資源的時候就會進(jìn)行組織呈現(xiàn),直到整個頁面所有資源加載完畢,顯示完成,請求響應(yīng)完畢。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/40709.html

相關(guān)文章

  • 用戶訪問web務(wù)器過程精解

    摘要:文件如果在本機中仍然無法完成域名的解析,則會真正請求域名服務(wù)器來解析這個域名了。若沒有命中,就直接到域名服務(wù)器請求解析。是國際頂級域名服務(wù)器,如等,全球只有臺左右。本地域名服務(wù)器再向上一步返回的服務(wù)器發(fā)送請求。 博文參考 http://www.hackdig.com/ http://www.hackdig.com/07/hack-47475.htm http://www.cnblogs...

    GraphQuery 評論0 收藏0
  • JavaScript 編程精解 中文第三版 十三、瀏覽器中的 JavaScript

    摘要:在本例中,使用屬性指定鏈接的目標(biāo),其中表示超文本鏈接。您應(yīng)該認(rèn)為和元數(shù)據(jù)隱式出現(xiàn)在示例中,即使它們沒有實際顯示在文本中。 來源:ApacheCN『JavaScript 編程精解 中文第三版』翻譯項目原文:JavaScript and the Browser 譯者:飛龍 協(xié)議:CC BY-NC-SA 4.0 自豪地采用谷歌翻譯 部分參考了《JavaScript 編程精解(第 2 版)》 ...

    zhiwei 評論0 收藏0
  • CrackMe006 | 160個crackme精解系列(圖文+視頻+注冊機源碼)

    摘要:作者逆向驛站微信公眾號逆向驛站知乎逆向驛站依然是的,而且沒殼子,條線比較清晰,算法也不難,非常適合新入門的來練習(xí)快過年了,系列年前就停更在吧,祝大家新年年后繼續(xù)準(zhǔn)備環(huán)境和工具虛擬機環(huán)境學(xué)習(xí)層次逆向分析程序驗證流程邏輯解密算法,寫注冊機積累程 作者:逆向驛站微信公眾號:逆向驛站知乎:逆向驛站showImg(https://segmentfault.com/img/bVbnUo0?w=11...

    Barry_Ng 評論0 收藏0

發(fā)表評論

0條評論

sarva

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<