整合營銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          網(wǎng)站請求的過程是怎樣的?(面試常問)

          的2022年愿望是什么?

          今年自己也定了個(gè)目標(biāo),我要寫16本編程的書。

          同步開啟每天更新公眾號(hào)的任務(wù)。因?yàn)楣娞?hào)更新的內(nèi)容也是我自己每天書里摘錄的一些內(nèi)容。這樣也能夠堅(jiān)持的把書寫下去。


          那么,你今年的愿望又是什么呢?可以在留言下記錄下來哦~


          面試中愛問的問題:網(wǎng)站請求的過程是怎樣的?

          這個(gè)問題如果你如果有逛過一些編程社區(qū),或者是看過一些編程網(wǎng)站,這個(gè)問題你會(huì)發(fā)現(xiàn)經(jīng)常會(huì)出現(xiàn)。特別是新人去面試的過程中,也會(huì)經(jīng)常遇到。在這里我也就簡單的寫寫我自己整理出來的筆記。希望對你的認(rèn)識(shí)有所幫助。


          答案:

          一個(gè)Web應(yīng)用程序一般都是由客戶端程序與服務(wù)端程序兩部分組成。其中,客戶端主要是指用戶和瀏覽器,用戶可以通過瀏覽器查找所需的資源,而這些資源則位于服務(wù)器上。瀏覽器是一個(gè)工具軟件,它主要有兩個(gè)作用:一是完成與服務(wù)端的交互,二是完成HTML(Hyper Text Mark-up Language,超文本標(biāo)記語言,用來告訴瀏覽器怎樣給用戶展示內(nèi)容)的解析,從而實(shí)現(xiàn)把用戶需要查看的資源信息以直觀的形式展現(xiàn)出來。服務(wù)端用來接收客戶端發(fā)來的請求,并對該請求進(jìn)行處理,找到客戶端請求的資源,最后把查找到的資源返回給客戶端,這些資源主要包括HTML頁面、圖片、音頻、視頻、PDF文件等內(nèi)容。

          下圖2-1給出了最基本的頁面請求與響應(yīng)的流程。

          圖2-1頁面請求與響應(yīng)

          (1) 用戶通過瀏覽器輸入鏈接地址來請求所需的資源。

          (2) 瀏覽器接受用戶的請求,并把該請求組裝成指定的格式發(fā)送給服務(wù)端,客戶端與服務(wù)端之間通過HTTP協(xié)議來完成具體的交互。其中請求的數(shù)據(jù)流中主要包含HTTP(Hypertext transfer protocol,超文本傳輸協(xié)議,建立在TCP/IP協(xié)議基礎(chǔ)上的一個(gè)協(xié)議,主要用來實(shí)現(xiàn)客戶端與服務(wù)端之間的通信)請求方法(GET或POST)、請求的網(wǎng)址(URL,全稱Uniform Resource Locator,統(tǒng)一資源定位符)以及請求的一些參數(shù)信息。(當(dāng)然在把數(shù)據(jù)發(fā)送給服務(wù)器之前,首先需要根據(jù)網(wǎng)頁地址獲取服務(wù)器的IP地址,這就需要通過訪問DNS服務(wù)器來完成)。

          (3) 服務(wù)器接收到客戶端發(fā)來的請求,并查找用戶所需要的資源。

          (4) 服務(wù)器查找到用戶請求的資源后,把該資源返回給客戶端。

          (5) 服務(wù)器通過把響應(yīng)消息組裝成特定的消息格式后返回給客戶端,這個(gè)過程通過HTTP協(xié)議來完成。響應(yīng)的數(shù)據(jù)流主要包含狀態(tài)碼(代表請求成功或失敗),Content-type(例如text、picture、HTML等),響應(yīng)消息的內(nèi)容(圖片或HTML格式的內(nèi)容)。

          瀏覽器對HTML進(jìn)行解析后并把響應(yīng)結(jié)果展現(xiàn)給用戶。


          更多精彩文章,歡迎關(guān)注《琉憶編程庫》。

          當(dāng)你在瀏覽器輸入url到發(fā)起http請求,這過程到底發(fā)生了什么?其實(shí)整個(gè)流程如下:

          1. 域名解析
          2. 為了將消息從你的PC上傳到服務(wù)器
          3. 上.需要用到1P協(xié)議、ARP協(xié)議和0SPF協(xié)議
          4. 發(fā)起TCP的3次握手
          5. 建立TCP連接后發(fā)起http請求
          6. 服務(wù)器響應(yīng)htp請求
          7. 瀏覽器解析htm代碼,并請求html代碼中的資源(如js、css、圖片等)
          8. 斷開TCP連接
          9. 瀏覽器對頁面進(jìn)行渲染呈現(xiàn)給用戶


          用戶輸入url

          當(dāng)用戶輸入url,操作系統(tǒng)會(huì)將輸入事件傳遞到瀏覽器中,在這過程中,瀏覽器可能會(huì)做一些預(yù)處理,比如 Chrome 會(huì)根據(jù)歷史統(tǒng)計(jì)來預(yù)估所輸入字符對應(yīng)的網(wǎng)站,例如輸入goog,根據(jù)之前的歷史發(fā)現(xiàn) 90% 的概率會(huì)訪問「www.google.com 」,因此就會(huì)在輸入回車前就馬上開始建立 TCP 鏈接甚至渲染了。

          接著是輸入url之后,點(diǎn)擊回車,這時(shí)瀏覽器會(huì)對 URL 進(jìn)行檢查,首先判斷協(xié)議,如果是 http 就按照 Web 來處理,另外還會(huì)對這個(gè) URL 進(jìn)行安全檢查

          安全檢查完成之后,在瀏覽器內(nèi)核中會(huì)先查看緩存,然后設(shè)置 UA 等 HTTP 信息,接著調(diào)用不同平臺(tái)下網(wǎng)絡(luò)請求的方法。

          注意:

          瀏覽器和瀏覽器內(nèi)核是不同的概念,瀏覽器指的是 Chrome、Firefox,而瀏覽器內(nèi)核則是 Blink、Gecko,瀏覽器內(nèi)核只負(fù)責(zé)渲染,GUI 及網(wǎng)絡(luò)連接等跨平臺(tái)工作則是瀏覽器實(shí)現(xiàn)的



          http網(wǎng)絡(luò)請求

          • 通過 DNS 查詢 IP;
          • 通過 Socket 發(fā)送數(shù)據(jù)

          dns查詢ip

          DNS,英文是Domain Name System,中文叫域名系統(tǒng),是Internet的一項(xiàng)服務(wù),他將域名和IP地址相互映射的一個(gè)分布式數(shù)據(jù)庫

          假設(shè)用戶在瀏覽器中輸入的是www.google.com,大概過程:

          如果輸入的是域名,則需要進(jìn)行dns查詢,將域名解析成ip;

          進(jìn)行DNS查詢的主機(jī)或軟件叫做DNS解析器,用戶使用的工作站或電腦都屬于解析器。域名解析就是利用DNS解析器得到對應(yīng)IP過程,解析器會(huì)向域名服務(wù)器進(jìn)行查詢處理。

          主要過程如下:

          • 從瀏覽器緩存中查找域名www.google.com的IP地址
          • 在瀏覽器緩存中沒找到,就在操作系統(tǒng)緩存中查找,這一步中也會(huì)查找本機(jī)的hosts看看有沒有對應(yīng)的域名映射(當(dāng)然已經(jīng)緩存在系統(tǒng)DNS緩存中了)
          • 在系統(tǒng)中也沒有的話,就到你的路由器來查找,因?yàn)槁酚善饕话阋矔?huì)有自己的DNS緩存

          如果以上都沒有找到,則繼續(xù)往下向dns域名服務(wù)器查詢

          • 用戶電腦的解析器向LDNS(也就是Local DNS,互聯(lián)網(wǎng)服務(wù)提供商ISP),發(fā)起域名解析請求,查詢www.google.com的IP地址,這是一個(gè)遞歸查找過程
          • 在緩存沒有命中的情況下,LDNS向根域名服務(wù)器.查詢www.google.com的IP地址,LDNS的查詢過程是一個(gè)迭代查詢的過程
          • 根告訴LDNS,我不知道www.google.com對應(yīng)的IP,但是我知道你可以問com域的授權(quán)服務(wù)器,這個(gè)域歸他管
          • LDNS向com的授權(quán)服務(wù)器問www.google.com對應(yīng)的IP地址
          • com告訴LDNS,我不知道www.google.com對應(yīng)的IP,但是我知道你可以問google.com域的授權(quán)服務(wù)器,這個(gè)域歸他管
          • LDNS向google.com的授權(quán)服務(wù)器問www.google.com對應(yīng)的IP地址
          • google.com查詢自己的ZONE文件(也稱區(qū)域文件記錄),找到了www.google.com對應(yīng)的IP地址,返回給LDNS
          • LDNS本地緩存一份記錄,把結(jié)果返回給用戶電腦的解析器
          • 在這之后,用戶電腦的解析器拿到結(jié)果后,緩存在自己操作系統(tǒng)DNS緩存中,同時(shí)返回給瀏覽器,瀏覽器依舊會(huì)緩存一段時(shí)間。

          注意,

          域名查詢時(shí)有可能是經(jīng)過了CDN調(diào)度器的(如果有cdn存儲(chǔ)功能的話)

          而且,需要知道dns解析是很耗時(shí)的,因此如果解析域名過多,會(huì)讓首屏加載變得過慢,可以考慮dns-prefetch優(yōu)化

          tcp/ip請求

          有了 IP 地址,就可以通過 Socket API 來發(fā)送數(shù)據(jù)了,這時(shí)可以選擇 TCP 或 UDP 協(xié)議。

          http本質(zhì)是tcp協(xié)議。

          TCP是一種面向有連接的傳輸層協(xié)議。他可以保證兩端(發(fā)送端和接收端)通信主機(jī)之間的通信可達(dá)。他能夠處理在傳輸過程中丟包、傳輸順序亂掉等異常情況;此外他還能有效利用寬帶,緩解網(wǎng)絡(luò)擁堵。

          建立TCP連接一開始都要經(jīng)過三次握手:

          三次握手


          第一次握手,請求建立連接,發(fā)送端發(fā)送連接請求報(bào)文

          第二次握手,接收端收到發(fā)送端發(fā)過來的報(bào)文,可知發(fā)送端現(xiàn)在要建立聯(lián)機(jī)。然后接收端會(huì)向發(fā)送端發(fā)送一個(gè)報(bào)文

          第三次握手,發(fā)送端收到了發(fā)送過來的報(bào)文,需要檢查一下返回的內(nèi)容是否是正確的;若正確的話,發(fā)送端再次發(fā)送確認(rèn)包

          在TCP連接建立完成之后就可以發(fā)送HTTP請求了。

          注意

          瀏覽器對同一個(gè)域名有連接數(shù)限制,大部分是 6,http1.0中往往一個(gè)資源下載就需要對應(yīng)一個(gè)tcp/ip請求,而像 HTTP 2.0 協(xié)議盡管只使用一個(gè) TCP 連接來傳輸數(shù)據(jù),但性能反而更好,而且還能實(shí)現(xiàn)請求優(yōu)先級。


          后面會(huì)分享更多devops和DBA內(nèi)容,感興趣的朋友可以關(guān)注下!!

          04頁面是什么,有什么作用?

          404頁面的目的是:告訴瀏覽者其所請求的頁面不存在或鏈接錯(cuò)誤,同時(shí)引導(dǎo)用戶使用網(wǎng)站其他頁面而不是關(guān)閉窗口離開。

          現(xiàn)在大部分開源系統(tǒng)都會(huì)為大家考慮到404頁面的跳轉(zhuǎn)引導(dǎo),比如:z-blog/wordpress,都是很不錯(cuò)的開源系統(tǒng)(注意不要用最原始的開源系統(tǒng),而是采用帶有模板的系統(tǒng))。菜鳥后院網(wǎng)站本身也是wordpress的開源程序,然后我們用robin模板。(花299元擁有和菜鳥后院一樣的網(wǎng)站,包括域名和1G阿里巴巴云空間)

          頁面應(yīng)該達(dá)到什么樣的效果才能滿足SEO的要求?

          搜索引擎使用 http 狀態(tài)碼來識(shí)別網(wǎng)頁的狀態(tài)。當(dāng)搜索引擎獲得不正確的鏈接時(shí),網(wǎng)站應(yīng)該返回一個(gè)狀態(tài)代碼404,告訴搜索引擎放棄索引該鏈接。如果返回一個(gè)200或302狀態(tài)代碼,搜索引擎會(huì)對鏈接進(jìn)行索引,導(dǎo)致許多不同的鏈接指向相同的頁面內(nèi)容。結(jié)果,搜索引擎對這個(gè)網(wǎng)站的信任度大大降低。很多網(wǎng)站存在這個(gè)問題,那就是404頁面返回的是200或302狀態(tài)碼而不是404狀態(tài)碼。

          正確建立404頁面的方法是:(僅適合Apache服務(wù)器)

          • 在.htaccess 文件中加入代碼: ErrorDocument 404 /Error.html
          • 建立一個(gè)簡單的html404頁面命名 Error.html
          • 把 Error.html放置在網(wǎng)站根目錄
          • 如果碰到困難,參考本站:錯(cuò)誤網(wǎng)頁
          • 注意:不要將404錯(cuò)誤直接,跳轉(zhuǎn)到網(wǎng)站首頁,這將導(dǎo)致首頁不被收錄,正確的做法是在404頁面加上一個(gè)返回首頁的鏈接,讓用戶判斷,并選擇是否返回首頁,或者返回其他頁面,這也是用戶體驗(yàn)的一種表現(xiàn),搜索引擎對于這種做法比較友好。
          • /Error.html 前面不要帶主域名,否則返回的狀態(tài)碼是302或200狀態(tài)碼。

          現(xiàn)在我們購買的虛擬主機(jī)一般提供有404頁面的制作方法,流程:

          1、做一個(gè)簡單的404頁面,命名如:404.html;

          2、通過ftp把這個(gè)404頁面上傳到網(wǎng)站根目錄;

          3、進(jìn)入虛擬主機(jī)管理后臺(tái),找到404頁面提交的入口,添加以上404頁面的地址,如:www.cnbackyard.com/404.html(一般空間服務(wù)商都有帶著種功能,也可以直接找他們技術(shù)客服完成這步操作)

          4、輸入一個(gè)錯(cuò)誤的鏈接進(jìn)行訪問測試,隨便輸入,比如:www.cnbackyard.com/123.html,如果正確返回到404.html頁面,則算正確;

          5、使用站長工具(http://tool.chinaz.com/pagestatus),輸入任意一個(gè)錯(cuò)誤網(wǎng)址,檢查返回值是否為404。如果返回值是200,代表該主機(jī)商設(shè)置有誤,可以與其技術(shù)反饋。

          以上操作方法對于一個(gè)seo初學(xué)者來說,還是有點(diǎn)復(fù)雜,同學(xué)們可以關(guān)注燃燈教育直播課程,參加我們的培訓(xùn),理解起來會(huì)更透徹一點(diǎn)。


          主站蜘蛛池模板: 丰满爆乳无码一区二区三区 | 中文字幕一区二区三区四区 | 国产精华液一区二区区别大吗| 国产在线无码视频一区二区三区 | 中文字幕一区在线观看| 成人日韩熟女高清视频一区| 性盈盈影院免费视频观看在线一区| 亚洲AV无码一区东京热| 亚洲国产高清在线一区二区三区 | 国产精品视频无圣光一区| 中文字幕在线一区二区在线| 日韩精品无码一区二区三区四区| 精品免费AV一区二区三区| 精品国产免费一区二区| 国产午夜精品片一区二区三区| 亚欧色一区W666天堂| 国产爆乳无码一区二区麻豆| 丰满爆乳一区二区三区| 精品国产一区二区三区2021| 视频一区在线播放| 一区二区三区免费看| 一区二区三区视频观看| 亚洲国产av一区二区三区| 大伊香蕉精品一区视频在线| 一区国严二区亚洲三区| 亚洲国产精品第一区二区三区| 一区精品麻豆入口| 国产日韩一区二区三免费高清| 久久精品无码一区二区app| 久久精品无码一区二区app | 无码人妻啪啪一区二区| 国产伦精品一区二区三区不卡| 国产香蕉一区二区在线网站| 国产午夜精品片一区二区三区| 亚洲av无码一区二区三区天堂 | 制服丝袜一区二区三区| 久久一区二区明星换脸| 亚洲日本久久一区二区va| 亚洲日韩中文字幕一区| 国产一区二区三区免费视频| 精品视频一区二区三区|