上海商城網(wǎng)站站內(nèi)免費推廣有哪些
用戶訪問網(wǎng)站的基本流程
一次訪問瀏覽網(wǎng)頁的完整過程
第一步:客戶端用戶從瀏覽器輸入www.baidu.com網(wǎng)站網(wǎng)址后回車,系統(tǒng)會查詢本地hosts文件及DNS緩存信息,查找是否存在網(wǎng)址對應(yīng)的IP解析記錄。如果有就直接獲取到IP地址,然后訪問網(wǎng)站,一般第一次請求時,DNS緩存是沒有解析記錄的;
第二步:如果客戶端DNS緩存或hosts沒有對應(yīng)www.baidu.com網(wǎng)站網(wǎng)址的域名解析記錄,那么,系統(tǒng)會把瀏覽器的解析請求,交給客戶端本地設(shè)置的DNS服務(wù)器地址解析(此DNS為LDNS,即Local DNS),如果LDNS服務(wù)器的本地緩存有對應(yīng)的解析記錄,就會直接返回IP地址;如果沒有,LDNS會負責(zé)繼續(xù)請求其它的DNS服務(wù)器;
第三步:LDNS會從DNS系統(tǒng)的“.”根開始請求www.baidu.com域名的解析,經(jīng)過一系列的查找各個層次DNS服務(wù)器,最終會查找到www.baidu.com域名對應(yīng)的授權(quán)DNS服務(wù)器,而這個授權(quán)DNS服務(wù)器,正是該企業(yè)購買域名時用于管理域名解析的服務(wù)器。這個服務(wù)器有www.baidu.com對應(yīng)的IP解析記錄,如果此時都沒有,就表示企業(yè)的運維人員沒有給www.baidu.com域名做解析;
第四步:baidu.com域名對應(yīng)的授權(quán)DNS服務(wù)器會把www.baidu.com對應(yīng)的最終IP解析記錄發(fā)給LDNS;
第五步:LDNS把收到來自授權(quán)DNS服務(wù)器關(guān)于www.baidu.com對應(yīng)的IP解析記錄發(fā)給客戶端瀏覽器,并且在LDNS本地把域名和IP的對應(yīng)解析緩存起來,以便下一次更快的返回相同的解析請求的記錄;
第六步:客戶端瀏覽器獲取到了www.baidu.com的對應(yīng)IP地址,接下來瀏覽器會請求獲得的IP地址對應(yīng)的Web服務(wù)器,Web服務(wù)器接收到客戶的請求并響應(yīng)處理,將客戶請求的內(nèi)容返回給客戶端瀏覽器;
在瀏覽器輸入想要訪問的域名之后,瀏覽器會進行域名解析獲得IP地址,再經(jīng)過TCP的連接,實現(xiàn)數(shù)據(jù)的傳輸就會有兩種報文,即請求報文和響應(yīng)報文。最終才能實現(xiàn)通信。因此想要實現(xiàn)通信,就得先弄懂DNS的解析原理以及TCP連接通道的流程。
DNS的解析原理
說說DNS是什么?
DNS(Domain Name System,域名系統(tǒng)),因特網(wǎng)上作為域名和IP地址相互映射的一個分布式數(shù)據(jù)庫,能夠使用戶更方便的訪問互聯(lián)網(wǎng),而不用去+·記住能夠被機器直接讀取的IP數(shù)串。通過主機名,最終得到該主機名對應(yīng)的IP地址的過程叫做域名解析(或主機名解析)。DNS協(xié)議運行在UDP協(xié)議之上,使用端口號53。訪問網(wǎng)站的實質(zhì)就是解析其域名得到IP地址,再轉(zhuǎn)向其網(wǎng)站。
DNS的解析原理:
?
原理步驟:
1)系統(tǒng)首先會查找本地的DNS緩存和hosts文件信息,確認其中是否有與,域名www.baidu.com所對應(yīng)的IP地址。如果有,就直接訪問這個IP地址所對應(yīng)的www.baidu.com域名服務(wù)器。
2)如果沒有找到,那么,系統(tǒng)將會把瀏覽器的解析請求發(fā)送給本地主機所指定的DNS服務(wù)器,稱為LDNS。如果LDNS服務(wù)器中有域名www.baidu.com所對應(yīng)的IP地址,則返回給客戶端的瀏覽器,如果沒有,則繼續(xù)請求其他DNS服務(wù)器。
3)LDNS服務(wù)器會從DNS系統(tǒng)的根(.)開始請求對域名www.baidu.com的解析。根DNS服務(wù)器全球只有13臺,根域名服務(wù)器是沒有域名www.baidu.com解析記錄的。但是它會有域名www.baidu.com所對應(yīng)的頂級域.com的解析記錄,因此直接把頂級域.com所對應(yīng)的DNS地址返回給LDNS服務(wù)器。
4)LDNS服務(wù)器獲取到頂級域.com對應(yīng)的DNS服務(wù)器地址后,就會去.com服務(wù)器請求對www.baidu.com域名的解析。在頂級域名服務(wù)器也不會有www.baidu.com的解析記錄的。但是它有www.baidu.com的父級域名的解析記錄,即baidu.com。因此頂級域名.com服務(wù)器又會把baidu.com所對應(yīng)的DNS服務(wù)器的IP地址返回給LDNS。
5)LDNS服務(wù)器收到baidu.com所對應(yīng)的IP地址后,就會去baidu.com域名服務(wù)器請求對www.baidu.com的域名解析。Baidu.com域名對應(yīng)的DNS服務(wù)器是該域名的授權(quán)DNS服務(wù)器。這個DNS服務(wù)器就是企業(yè)購買域名時用于管理解析的服務(wù)器。
6)baidu.com域名DNS服務(wù)器會把www.baidu.com域名所對應(yīng)的IP地址給解析出來,然后發(fā)給LDNS。
7)LDNS把解析出來的結(jié)果www.baudu.com所對應(yīng)的IP地址發(fā)送給客戶端的瀏覽器。并且LDNS也會將其域名和對應(yīng)的地址緩存到cache中。
8)客戶端瀏覽器收到后,也會將其域名以及對應(yīng)的IP地址緩存的到DNS緩存和hosts文件中。
DNS解析流程
大家都知道,計算機之間只能通過ip相互通信,因為ip不好記,于是才使用dns服務(wù)器把域名解析為相應(yīng)的ip,這里以解析www.oldboyedu.com為例,當我們輸入這個網(wǎng)址回車的時候,瀏覽器會首先查詢?yōu)g覽器的緩存,這個緩存存活時間可能只有1分鐘,如果沒找到,則去查詢本地的dns緩存和hosts文件,如果有www.oldboyedu.com這個域名對應(yīng)的ip,則直接通過這個ip訪問網(wǎng)站服務(wù)器。如果本地的dns緩存和hosts文件沒找到,這時候就會把請求發(fā)送給,網(wǎng)卡配置信息里的dns服務(wù)器,默認有兩個,只有當dns1不能訪問時,才會使用dns2。我們也稱網(wǎng)卡配置信息里的dns為local?dns,這時候local?dns會先查詢它的緩存,有沒有www.oldboyedu.com相應(yīng)的記錄,如果有,則返回給用戶,如果沒有,就會訪問根域名服務(wù)器,世界一共有13臺根域名服務(wù)器,根域名服務(wù)器一看,是找.com的,于是會把.com的頂級域名服務(wù)器的ip發(fā)送給local?dns,這時local?dns再次訪問.com的頂級域名服務(wù)器,.com的頂級域名服務(wù)器一看,是找一級域名oldboyedu.com的,于是再將oldboyedu.com的ip發(fā)送給local?dns,然后繼續(xù)往下找,直到找到www.oldboyedu.com的權(quán)威dns的A記錄或者cname,這時候local?dns會把找到的www.oldboyedu.com的ip發(fā)送給客戶端,并記錄在緩存中,這樣的話,下次如果有其他的用戶訪問www.oldboyedu.com這個域名時,local?dns的緩存中就有記錄了??蛻舳耸盏絣ocal?dns發(fā)送過來的ip就會通過ip去訪問服務(wù)器,并將這個ip記錄在dns緩存中。
遞歸和迭代
遞歸查詢的工作方式
遞歸查詢是最常見的查詢方式,域名服務(wù)器將代替提出請求的客戶機(下級DNS服務(wù)器)進行域名查詢,若域名服務(wù)器不能直接回答,則域名服務(wù)器會在域各樹中的各分支的上下進行遞歸查詢,最終將返回查詢結(jié)果給客戶機,在域名服務(wù)器查詢期間,客戶機將完全處于等待狀態(tài)。
示例說明:A向B發(fā)送遞歸查詢請求,B向C發(fā)送迭代查詢請求(下一節(jié)將介紹迭代查詢),得到C給出的提示后,B向D發(fā)送迭代查詢請求,得到D給出的提示后,B向E發(fā)出迭代請求,得到E給出的提示后,B向F發(fā)出迭代查詢請求,得到F給出的提示后,B得到了F返回G的IP地址,B向A返回G的IP地址,整個查詢結(jié)束。
迭代查詢的工作方式
迭代查詢又稱重指引,當服務(wù)器使用迭代查詢時能夠使其他服務(wù)器返回一個最佳的查詢點提示或主機地址5,若此最佳的查詢點中包含需要查詢的主機地址,則返回主機地址信息,若此時服務(wù)器不能夠直接查詢到主機地址,則是按照提示的指引依次查詢,直到服務(wù)器給出的提示中包含所需要查詢的主機地址為止,一般的,每次指引都會更靠近根服務(wù)器(向上),查尋到根域名服務(wù)器后,則會再次根據(jù)提示向下查找。從上節(jié)的圖中可以知道,B訪問C、D、E、F、G,都是迭代查詢,首先B訪問C,得到了提示訪問D的提示信息后,開始訪問D,這時因為是迭代查詢,D又返回給B提示信息,告訴B應(yīng)該訪問E,依次類推。
TCP/IP協(xié)議的介紹和三次握手及四次揮手
說說TCP/IP協(xié)議是什么
Transmission Control Protocol/Internet Protocol的簡寫,中譯名為傳輸控制協(xié)議/因特網(wǎng)互聯(lián)協(xié)議,又名網(wǎng)絡(luò)通訊協(xié)議,是Internet最基本的協(xié)議、Internet國際互聯(lián)網(wǎng)絡(luò)的基礎(chǔ),由網(wǎng)絡(luò)層的IP協(xié)議和傳輸層的TCP協(xié)議組成。TCP/IP?定義了電子設(shè)備如何連入因特網(wǎng),以及數(shù)據(jù)如何在它們之間傳輸?shù)臉藴?。協(xié)議采用了4層的層級結(jié)構(gòu),每一層都呼叫它的下一層所提供的協(xié)議來完成自己的需求。通俗而言:TCP負責(zé)發(fā)現(xiàn)傳輸?shù)膯栴},一有問題就發(fā)出信號,要求重新傳輸,直到所有數(shù)據(jù)安全正確地傳輸?shù)侥康牡?。而IP是給因特網(wǎng)的每一臺聯(lián)網(wǎng)設(shè)備規(guī)定一個地址。
各個狀態(tài)的意義如下:
(1)LISTEN?-?偵聽來自遠方TCP端口的連接請求;?
(2)SYN-SENT?-在發(fā)送連接請求后等待匹配的連接請求;?
(3)SYN-RECEIVED?-?在收到和發(fā)送一個連接請求后等待對連接請求的確認;?
(4)ESTABLISHED-?代表一個打開的連接,數(shù)據(jù)可以傳送給用戶;?
(5)FIN-WAIT-1?-?等待遠程TCP的連接中斷請求,或先前的連接中斷請求的確認;
(6)FIN-WAIT-2?-?從遠程TCP等待連接中斷請求;?
(7)CLOSE-WAIT?-?等待從本地用戶發(fā)來的連接中斷請求;?
(8)CLOSING?-等待遠程TCP對連接中斷的確認;?
(9)LAST-ACK?-?等待原來發(fā)向遠程TCP的連接中斷請求的確認;?
(10)TIME-WAIT?-?等待足夠的時間以確保遠程TCP接收到連接中斷請求的確認;?
(11)CLOSED?-?沒有任何連接狀態(tài);
TCP三次握手
所謂三次握手(Three-way Handshake),是指建立一個TCP連接時,需要客戶端
和服務(wù)器總共發(fā)送3個包。
三次握手的目的是連接服務(wù)器指定端口,建立TCP連接,并同步連接雙方的序列號和確認號并交換?TCP?窗口大小信息.在socket編程中,客戶端執(zhí)行connect()時。將觸發(fā)三次握手。
?
三次握手過程:
1)第一次握手:建立連接時,客戶端A發(fā)送SYN包(SYN=j)到服務(wù)器B,并進入SYN_SEND狀態(tài),等待服務(wù)器B確認。
2)第二次握手:服務(wù)器B收到SYN包,必須確認客戶A的SYN(ACK=j+1),同時自己也發(fā)送一個SYN包(SYN=k),即SYN+ACK包,此時服務(wù)器B進入SYN_RECV狀態(tài)。
3)第三次握手:客戶端A收到服務(wù)器B的SYN+ACK包,向服務(wù)器B發(fā)送確認包ACK(ACK=k+1),此包發(fā)送完畢,客戶端A和服務(wù)器B進入ESTABLISHED狀態(tài),完成三次握手。
TCP四次揮手
TCP的連接的拆除需要發(fā)送四個包,因此稱為四次揮手(four-way handshake)??蛻舳嘶蚍?wù)器均可主動發(fā)起揮手動作,在socket編程中,任何一方執(zhí)行close()操作即可產(chǎn)生揮手操作。
?
四次揮手過程:
1)第一次揮手:客戶端A發(fā)送一個FIN,用來關(guān)閉客戶A到服務(wù)器B的數(shù)據(jù)傳送。?
2)第二次揮手:服務(wù)器B收到這個FIN,它發(fā)回一個ACK,確認序號為收到的序號加1。和SYN一樣,一個FIN將占用一個序號。?
3)第三次揮手:服務(wù)器B關(guān)閉與客戶端A的連接,發(fā)送一個FIN給客戶端A。?
4)第四次揮手:客戶端A發(fā)回ACK報文確認,并將確認序號設(shè)置為收到序號加1。
HTTP協(xié)議的介紹及請求與響應(yīng)報文
Http報文
HTTP報文中有很多行內(nèi)人,這些行的字段都是由一些ASCII碼串組成,但各個字段的長度是不同的。HTTP報文可以分為兩種,一種是從web客戶端發(fā)往web服務(wù)端的HTTP報文,稱為請求保衛(wèi),另一種是從web服務(wù)端發(fā)往客戶端的報文,稱為響應(yīng)報文。兩種報文的格式的基本相同。
http協(xié)議原理:(www服務(wù)的請求過程)請求報文細節(jié)!
http的請求報文,主要包括,請求行,請求頭部,空行,請求主體
而請求行又包括,請求方法,url,協(xié)議版本,請求方法主要有GET、HEAD、POST、PUT、DELETE、MOVE,url就是統(tǒng)一資源定位符,通過這個能在服務(wù)器上找到唯一的網(wǎng)頁資源,協(xié)議版本,目前主流的是http1.1,開始流行的協(xié)議版本是http1.0,相對應(yīng)http1.0,http1.1主要從可擴展性、緩存處理、帶寬優(yōu)化、持久連接、host頭、錯誤通知、消息傳遞、內(nèi)容協(xié)商等多方面做了一些優(yōu)化,以上是請求行的內(nèi)容
再來說一些,請求頭部,請求頭部主要有媒體類型,語言類型、支持壓縮、客戶端類型、主機名等,媒體類型主要有文本文件,圖片文件,視頻文件等,語言類型就是告訴服務(wù)器客戶端的接受的語言,支持壓縮的話,可以節(jié)省帶寬,客戶端類型,會顯示客戶端瀏覽器的版本信息,操作系統(tǒng)信息等
空行,代表請求頭部的結(jié)束,也代表著請求主體的開始
請求報文主體,只有使用POST提交表單的時候,才有
對應(yīng)的,服務(wù)器收到請求報文之后,就會給出響應(yīng)報文
響應(yīng)報文主要包含起始行、響應(yīng)頭部、空行、響應(yīng)報文主體
起始行一般包含http版本號,數(shù)字狀態(tài)碼,狀態(tài)情況
而數(shù)字狀態(tài)碼,常見有以下幾種
200?代表ok
301?永久跳轉(zhuǎn)
302 臨時跳轉(zhuǎn)
403?沒權(quán)限
404?沒有這個文件
500?未知的錯誤
502?網(wǎng)關(guān)錯誤
503?服務(wù)器超載,停機維護
504?網(wǎng)關(guān)超時
響應(yīng)頭部,主要包括,服務(wù)器的web軟件版本,服務(wù)器時間,長連接還是短連接,設(shè)置字符集等等
這里的空行和請求報文空行一樣
在報文主體中包裝載了要返回給客戶端的數(shù)據(jù)
http請求方法
1GET請求指定的頁面信息,并返回實體主體。(請求)
2HEAD類似于get請求,只不過返回的響應(yīng)中沒有具體的內(nèi)容,用于獲取報頭
3POST向指定資源提交數(shù)據(jù)進行處理請求(例如提交表單或者上傳文件)。數(shù)據(jù)被包含在請求體中。POST請求可能會導(dǎo)致新的資源的建立和/或已有資源的修改。(提交賬號密碼?)
4PUT從客戶端向服務(wù)器傳送的數(shù)據(jù)取代指定的文檔的內(nèi)容。(上傳文件)
5DELETE請求服務(wù)器刪除指定的頁面。(刪除文件)
6CONNECTHTTP/1.1協(xié)議中預(yù)留給能夠?qū)⑦B接改為管道方式的代理服務(wù)器。
7OPTIONS允許客戶端查看服務(wù)器的性能。
8TRACE回顯服務(wù)器收到的請求,主要用于測試或診斷。
9PATCH實體中包含一個表,表中說明與該URI所表示的原內(nèi)容的區(qū)別。
10MOVE請求服務(wù)器將指定的頁面移至另一個網(wǎng)絡(luò)地址。(跳轉(zhuǎn))
11COPY請求服務(wù)器將指定的頁面拷貝至另一個網(wǎng)絡(luò)地址。
12LINK請求服務(wù)器建立鏈接關(guān)系。
13UNLINK斷開鏈接關(guān)系。
14WRAPPED允許客戶端發(fā)送經(jīng)過封裝的請求。
15Extension-mothed在不改動協(xié)議的前提下,可增加另外的方法。
?
請求報文介紹
?
請求報文的內(nèi)容與格式如下:
1)請求行
作用:用來說明客戶端想要做什么。
內(nèi)容:包括方法字段GET和URL字段以及HTTP協(xié)議版本
2)請求頭
作用:通過客戶端把請求的相關(guān)信息發(fā)給服務(wù)器
內(nèi)容:包括媒體類型、語言類型、支持壓縮、客戶端類型、主機等信息。
3)空行
作用:告訴服務(wù)器空行以下內(nèi)容不屬于請求頭部信息。
4)請求報文主體
作用:用來說明客戶端具體想要做的事情。
內(nèi)容:查看信息、應(yīng)用post方法。
響應(yīng)報文介紹
?
請求報文的內(nèi)容與格式如下:
1)狀態(tài)行
作用:用來說明服務(wù)端響應(yīng)客戶端的狀態(tài)。
內(nèi)容:包括協(xié)議及版本號、數(shù)字狀態(tài)碼、狀態(tài)情況
2)響應(yīng)頭
作用:通過服務(wù)端把響應(yīng)的相關(guān)信息給客戶端
內(nèi)容:包括Location、server、connect、vary等
3)空行
作用:告訴客戶端空行以下內(nèi)容不屬于響應(yīng)頭部信息。
4)響應(yīng)報文主體
作用:用來裝載著要返回給客戶端的數(shù)據(jù)
內(nèi)容:包括文本、html、視頻或者是圖片。
GET與POST的認識
GET:當客戶端要從服務(wù)器中讀取某個資源時,使用GET?方法。GET?方法要求服務(wù)器將URL?定位的資源放在響應(yīng)報文的數(shù)據(jù)部分,回送給客戶端,即向服務(wù)器請求某個資源。使用GET?方法時,請求參數(shù)和對應(yīng)的值附加在?URL?后面,利用一個問號(“?”)代表URL?的結(jié)尾與請求參數(shù)的開始,傳遞參數(shù)長度受限制。例如,/index.jsp?id=100&op=bind、
POST:當客戶端給服務(wù)器提供信息較多時可以使用POST?方法,POST?方法向服務(wù)器提交數(shù)據(jù),比如完成表單數(shù)據(jù)的提交,將數(shù)據(jù)提交給服務(wù)器處理。GET?一般用于獲取/查詢資源信息,POST?會附帶用戶數(shù)據(jù),一般用于更新資源信息。POST?方法將請求參數(shù)封裝在HTTP?請求數(shù)據(jù)中,以名稱/值的形式出現(xiàn),可以傳輸大量數(shù)據(jù);
URL-URI
1.簡寫:
URI (uniform resource identifier)統(tǒng)一資源標志符;
URL(uniform resource location )統(tǒng)一資源定位符(或統(tǒng)一資源定位器);
URN(uniform resource name )統(tǒng)一資源命名。
2.URI 和 URL 的比較
a.
URI是一個相對來說更廣泛的概念,URL是URI的一種,是URI命名機制的一個子集,可以說URI是抽象的,而具體要使用URL來定位資源。
b.
Web上的每一種資源如:圖片、文檔、視頻等,都是由URI定位的,這里所謂的定位指的是web上的資源相對于主機服務(wù)器來說,存放在服務(wù)器上的具體路徑。
c.
URL是internet上用來描述信息資源文件的字符串,用在客戶程序和服務(wù)器上,定位客戶端連接服務(wù)器所需要的信息,它不僅定位了這個信息資源,而且定義了如何找到這個資源。
3.我的白話理解
URI就是一種資源定位機制,它是比較籠統(tǒng)地定位了資源,并不局限于客戶端和服務(wù)器,而URL就定位了網(wǎng)上的一切資源,只要是網(wǎng)上的資源,都有唯一的URL.
?
用戶訪問瀏覽器的完整過程
1、客戶端在瀏覽器中輸入要訪問的域名地址,如:www.baidu.com
2、瀏覽器請求解析DNS服務(wù)器,把域名www.baidu.com轉(zhuǎn)換成web服務(wù)器的IP地址。
1)系統(tǒng)首先會查找本地的DNS緩存和hosts文件信息,確認其中是否有與域名www.baidu.com所對應(yīng)的IP地址。如果有,就直接訪問這個IP地址所對應(yīng)的www.baidu.com域名服務(wù)器。
2)如果沒有找到,那么,系統(tǒng)將會把瀏覽器的解析請求發(fā)送給本地主機所指定的DNS服務(wù)器,稱為LDNS。如果LDNS服務(wù)器中有域名www.baidu.com所對應(yīng)的IP地址,則返回給客戶端的瀏覽器,如果沒有,則繼續(xù)請求其他DNS服務(wù)器。
3)LDNS服務(wù)器會從DNS系統(tǒng)的根(.)開始請求對域名www.baidu.com的解析。根DNS服務(wù)器全球只有13臺,根域名服務(wù)器是沒有域名www.baidu.com解析記錄的。但是它會有域名www.baidu.com所對應(yīng)的頂級域.com的解析記錄,因此直接把頂級域.com所對應(yīng)的DNS地址返回給LDNS服務(wù)器。
4)LDNS服務(wù)器獲取到頂級域.com對應(yīng)的DNS服務(wù)器地址后,就會去.com服務(wù)器請求對www.baidu.com域名的解析。在頂級域名服務(wù)器也不會有www.baidu.com的解析記錄的。但是它有www.baidu.com的父級域名,即baidu.com。因此頂級域名.com服務(wù)器又會把baidu.com所對應(yīng)的DNS服務(wù)器的IP地址返回給LDNS。
5)LDNS服務(wù)器收到baidu.com所對應(yīng)的IP地址后,就會去baidu.com域名服務(wù)器請求對www.baidu.com的域名解析。Baidu.com域名對應(yīng)的DNS服務(wù)器是該域名的授權(quán)DNS服務(wù)器。這個DNS服務(wù)器就是企業(yè)購買域名時用于管理解析的服務(wù)器。
6)baidu.com域名DNS服務(wù)器會吧www.baidu.com域名所對應(yīng)的IP地址給解析出來,然后發(fā)給LDNS。
7)LDNS把解析出來的結(jié)果,www.baudu.com所對應(yīng)的IP地址發(fā)送給客戶端的瀏覽器。并且LDNS也會將其域名和對應(yīng)的地址緩存到cache中。
8)客戶端瀏覽器收到后,也會將其域名以及對應(yīng)的IP地址緩存的到DNS緩存和hosts文件中。
?
3、瀏覽器從訪問的IP地址(URL)解析出默認的斷后號:80
4、瀏覽器通過解析后得到的IP地址和端口號進行web服務(wù)器建立一條TCP連接通道。
1)第一次握手:
建立連接時,客戶端A發(fā)送SYN包(SYN=j)到服務(wù)器B,并進入SYN_SEND狀態(tài),等待服務(wù)器B確認。
2)第二次握手:
服務(wù)器B收到SYN包,必須確認客戶A的SYN(ACK=j+1),同時自己也發(fā)送一個SYN包(SYN=k),即SYN+ACK包,此時服務(wù)器B進入SYN_RECV狀態(tài)。
3)第三次握手:
客戶端A收到服務(wù)器B的SYN+ACK包,向服務(wù)器B發(fā)送確認包ACK(ACK=k+1),此包發(fā)送完畢,客戶端A和服務(wù)器B進入ESTABLISHED狀態(tài),完成三次握手。
?
5、建立TCP連接之后,瀏覽器向web服務(wù)器發(fā)送一條HTTP請求報文。
1)請求行
作用:用來說明客戶端想要做什么。
內(nèi)容:包括方法字段GET和URL字段以及HTTP協(xié)議版本
2)請求頭
作用:通過客戶端把請求的相關(guān)信息發(fā)給服務(wù)器
內(nèi)容:包括媒體類型、語言類型、支持壓縮、客戶端類型、主機等信息。
3)空行
作用:告訴服務(wù)器空行以下內(nèi)容不屬于請求頭部信息。
4)請求報文主體
作用:用來說明客戶端具體想要做的事情。
內(nèi)容:查看信息、應(yīng)用post方法。
6、web服務(wù)器響應(yīng)并讀取瀏覽器的請求信息,然后返回一條HTTP響應(yīng)報文。
1)狀態(tài)行
作用:用來說明服務(wù)端響應(yīng)客戶端的狀態(tài)。
內(nèi)容:包括洗衣及版本號、數(shù)字狀態(tài)碼、狀態(tài)情況
2)響應(yīng)頭
作用:通過服務(wù)端把響應(yīng)的相關(guān)信息給客戶端
內(nèi)容:包括Location、server、connect、vary等
3)空行
作用:告訴客戶端空行以下內(nèi)容不屬于響應(yīng)頭部信息。
4)響應(yīng)報文主體
作用:用來裝載著要返回給客戶端的數(shù)據(jù)
內(nèi)容:包括文本、html、視頻或者是圖片。
7、web服務(wù)器關(guān)閉HTTP連接,關(guān)閉TCP連接,web服務(wù)器顯示訪問的網(wǎng)站內(nèi)容到屏幕上。
1)第一次揮手:
客戶端A發(fā)送一個FIN,用來關(guān)閉客戶A到服務(wù)器B的數(shù)據(jù)傳送。?
2)第二次揮手:
服務(wù)器B收到這個FIN,它發(fā)回一個ACK,確認序號為收到的序號加1。和SYN一樣,一個FIN將占用一個序號。?
3)第三次揮手:
服務(wù)器B關(guān)閉與客戶端A的連接,發(fā)送一個FIN給客戶端A。?
4)第四次揮手:
客戶端A發(fā)回ACK報文確認,并將確認序號設(shè)置為收到序號加1。
?
大規(guī)模網(wǎng)站集群架構(gòu)細節(jié)
常見的網(wǎng)頁資源有三種,分別是靜態(tài)網(wǎng)頁,動態(tài)網(wǎng)頁,偽靜態(tài)
靜態(tài)網(wǎng)頁就是沒有后臺數(shù)據(jù)庫,不含php,jsp,asp等程序,不可交互的,開發(fā)者編寫的是啥,顯示的就是啥,不會有任何改變
動態(tài)網(wǎng)頁,有后臺數(shù)據(jù)庫,支持更多的功能,如用戶注冊,登錄,發(fā)帖,訂單,博客等,動態(tài)網(wǎng)頁并不獨立存在于服務(wù)器上的網(wǎng)頁文件,而是當用戶請求服務(wù)器上的動態(tài)程序時,服務(wù)器解析這些程序,并調(diào)用數(shù)據(jù)庫來返回一個完整的網(wǎng)頁內(nèi)容,它跟靜態(tài)網(wǎng)頁的url不同,它的url中包含?、&等特殊符號,搜索引擎收錄的時候存在一定的問題。動態(tài)網(wǎng)頁為了方便收錄,常常會利用rewrite技術(shù),把動態(tài)網(wǎng)頁的URL偽裝成靜態(tài)網(wǎng)頁URL,這就是偽靜態(tài)。
不同的網(wǎng)頁資源,打開的流程不一樣,下面假設(shè)我們訪問的是一個靜態(tài)網(wǎng)站:
客戶端會通過http協(xié)議,下載服務(wù)器上的html文件,然后去讀這個html文件,根據(jù)html頁面中的鏈接,自上而下的請求,每一個請求是一個鏈接,如果是圖片的話,會下載邊渲染,遇到j(luò)s,就會加載js,當js比較內(nèi)容較復(fù)雜時,瀏覽器就會等待,鼠標在轉(zhuǎn)圈,我們稱這個為js阻塞,當js下載完畢并執(zhí)行完成之后,才會顯示我們看到的網(wǎng)頁。
當我們訪問的是一個動態(tài)網(wǎng)頁時,首先用戶發(fā)出一個請求,服務(wù)器收到這個請求之后,這里假設(shè)服務(wù)器使用的是nginx,nginx會把這個請求轉(zhuǎn)給php,php就會去查詢數(shù)據(jù)庫,根據(jù)數(shù)據(jù)庫返回的值,生成一個完整的網(wǎng)頁內(nèi)容,發(fā)送給用戶,用戶收到之后,也是邊下載邊渲染,加載js,執(zhí)行完畢之后,才會顯示我們看到的網(wǎng)頁
當服務(wù)器的訪問量達到億級PV時,這個訪問的過程就更復(fù)雜了,用戶的請求會先訪問全國的CDN節(jié)點,通過CDN擋住全國80%的請求,當CDN上沒有時,在訪問服務(wù)器集群,這個集群一般都有一個4層的代理,這個4層的代理,使用軟件來完成的話,就是LVS,使用硬件就是F5,4層的代理,后面才是7層的負載均衡,常用的是haproxy,nginx,然后才是多臺web服務(wù)器,web服務(wù)器比較多的時候,就有兩個問題,一個是用戶數(shù)據(jù)的一致性,不能因為不同的web服務(wù)器提供服務(wù),而導(dǎo)致數(shù)據(jù)不同步,這時候,我們就需要使用NFS共享存儲,第二個問題是session,不能因為不同的web服務(wù)器提供服務(wù),session找不到了,這時候,我們就需要使用memcached來存放并共享session。由于用戶訪問量太大,這時候的瓶頸就是數(shù)據(jù)庫的壓力,我們一般都是使用分布式緩存memcache,redis等,另外數(shù)據(jù)庫還需要做讀寫分離等優(yōu)化,后面的過程與訪問動態(tài)網(wǎng)頁類似
網(wǎng)站訪問流量的度量
IP(獨立IP): 即Internet Protocol, 指獨立IP數(shù)。00:00-24:00內(nèi)相同IP地址之被計算一次。
PV(訪問量): 即Page View, ?即頁面瀏覽量或點擊量,用戶每次刷新即被計算一次。
UV(獨立訪客):即Unique Visitor, 訪問您網(wǎng)站的一臺電腦客戶端為一個訪客。00:00-24:00內(nèi) 相同的客戶端只被計算一次
大流量網(wǎng)站解決訪問量問題
1,確認服務(wù)器硬件是否支持當前流量,不支持換性能更好的專用服務(wù)器
2,優(yōu)化數(shù)據(jù)庫訪問,比如頁面靜態(tài)化,memcache,mysql優(yōu)化
3,禁止外部盜鏈(小網(wǎng)站通過盜取一些有實力的大網(wǎng)站的地址,放置在自己網(wǎng)站中,盜取大網(wǎng)站的空間和流量)
4,控制大文件下載,最好獨立使用專用服務(wù)器
5,使用多臺服務(wù)器分流,集群