小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

一則經(jīng)典技術(shù)面試題目的解讀

 鷹兔牛熊眼 2019-01-22

從瀏覽器地址欄輸入網(wǎng)址,到網(wǎng)頁徹底打開,中間都發(fā)生了什么?

這是一道經(jīng)典面試題,以前我以為只有我喜歡出這道題,后來在微博上發(fā)現(xiàn)其他技術(shù)大牛也出這道題。

這道題其實(shí)測試的不是具體特定的技術(shù),而是對整個(gè)上網(wǎng)這個(gè)概念以及背后流程的理解。

我先說一下我所理解或者說我所期待的大概的答題要點(diǎn),后面再解釋這道題的目的和意義,實(shí)際上所謂上網(wǎng)這個(gè)過程分為三個(gè)大的區(qū)塊,一塊是客戶端,一塊是網(wǎng)絡(luò)傳輸層,一塊是服務(wù)端。

從輸入網(wǎng)址開始,這個(gè)網(wǎng)址在客戶端就會(huì)有一個(gè)解析,首先瀏覽器如果有鉤子,可能會(huì)直接對這個(gè)網(wǎng)址做出判斷和反饋,比如國內(nèi)大部分第三方瀏覽器(IE瀏覽器基礎(chǔ)上加殼的那種),都會(huì)直接把地址輸入關(guān)鍵詞后應(yīng)該跳轉(zhuǎn)到微軟搜索頁的那個(gè)url劫持掉,所以第一步是瀏覽器對url的判斷和劫持,第二步是本地host文件的判斷,在360崛起之前,host文件也是各種木馬和流氓軟件最愛處理修改的文件,不聲不響就把你的hao123給劫持了,而且你幾乎看不出來哪里改了。

那么逃脫本地客戶端的判斷后,這個(gè)域名查詢請求會(huì)發(fā)到服務(wù)商的dns服務(wù)器,服務(wù)商的dns服務(wù)器會(huì)檢查緩存,如果不存在你要訪問的這個(gè)域名或者緩存狀態(tài)已經(jīng)過期,會(huì)訪問根域名服務(wù)器,根域名服務(wù)器也會(huì)先檢查緩存,如果無法直接返回結(jié)果,會(huì)檢查這個(gè)域名是哪個(gè)dns服務(wù)器負(fù)責(zé)解析的,然后將請求轉(zhuǎn)發(fā)過去,獲得這個(gè)域名所對應(yīng)的ip,然后返回給本地服務(wù)商的dns,本地服務(wù)商的dns就更新緩存,然后把ip返回給客戶端。

當(dāng)然這里本地dns服務(wù)商也可能基于某種目的劫持域名,至于GFW,在這里只能說呵呵吧, 但另一個(gè)眾所周知的案例是,如果你的IE地址欄輸入錯(cuò)關(guān)鍵詞,應(yīng)該默認(rèn)是跳轉(zhuǎn)到微軟的搜索頁,假設(shè)你用的是原版ie,并且本地沒有裝各種會(huì)給ie加插件的工具,那么你的請求應(yīng)該是微軟搜索頁的,但是在地方電信這塊依然會(huì)被劫持掉,改為當(dāng)?shù)仉娦诺乃阉鹘Y(jié)果頁。所以有時(shí)候,有些用戶會(huì)把自己電腦上網(wǎng)配置的dns修改為更可信賴的公共dns,而不是地方電信的dns。(地方電信的劫持能力當(dāng)然不止是dns,還包括內(nèi)容替換,強(qiáng)插。不過這是后面的內(nèi)容。)

關(guān)于解析到ip,復(fù)雜點(diǎn)的還可以說說cdn的原理和機(jī)制,以及針對不同地區(qū)用戶智能解析的機(jī)制。不過這里就不展開了,當(dāng)然展開了我也未必說的清楚。

到了ip這里,瀏覽器發(fā)出請求,去指定ip獲取指定的文件,這里涉及路由尋址和報(bào)文傳輸,當(dāng)然如果細(xì)說我也說不清了,但是至少知道用tracert可以跟蹤路由就好。然后到了指定ip,服務(wù)器會(huì)在80端口有一個(gè)守護(hù)進(jìn)程接受這個(gè)請求,細(xì)說的話這里還有三次握手的協(xié)議,那么下面就是webserver是怎么工作的,靜態(tài)頁面的處理比較簡單,動(dòng)態(tài)腳本還需要一個(gè)解釋器系統(tǒng)工作,執(zhí)行一段代碼后將返回結(jié)果輸出。這里可能又涉及有服務(wù)端緩存的,數(shù)據(jù)庫,負(fù)載均衡和輪詢等等,也就是可能后面不是一臺(tái)主機(jī),而是一個(gè)集群。再往下變成架構(gòu)師專題了,就更不能展開了。

但是到這里沒完,為什么呢,返回的這個(gè)內(nèi)容頁往往又包含了大量的嵌入頁面請求,比如css,比如各種小圖標(biāo),小圖片,這又涉及瀏覽器發(fā)出請求,這里也存在一些需要注意的邏輯,比如瀏覽器在發(fā)出請求時(shí),對數(shù)量和排隊(duì)的限制。此外,這個(gè)內(nèi)容頁可能還涉及了一些可執(zhí)行代碼,是在瀏覽器上執(zhí)行的,這也對你看到什么有重要的影響。

但是到這里依然還沒完,在到了目標(biāo)機(jī)房,以及數(shù)據(jù)返回你的電腦時(shí),都存在一個(gè)在子網(wǎng)被劫持被篡改的風(fēng)險(xiǎn),ARP欺騙,ARP協(xié)議是什么,為什么你要訪問的內(nèi)容會(huì)被劫持會(huì)被篡改。此外,在傳輸中會(huì)不會(huì)被偵聽,會(huì)不會(huì)被篡改,上文提過,除了GFW,還有強(qiáng)大的地方電信。

啰嗦這么一堆,可能有人會(huì)覺得,我就應(yīng)聘一個(gè)服務(wù)端程序員/前端技術(shù)/運(yùn)維工程師,我需要知道這些么?那么問題來了,通常我問這個(gè)題目的時(shí)候,還會(huì)包含一到兩個(gè)引申題目。

題目1:如果有個(gè)用戶跟你說,你的網(wǎng)站/游戲很卡很慢,你該怎么分析,怎么響應(yīng)?

題目2:如果有個(gè)用戶跟你說,打開你的網(wǎng)站會(huì)彈出淫蕩小廣告或殺毒軟件報(bào)有木馬,你該怎么分析,怎么響應(yīng)?

看到這些,相信很多人都會(huì)發(fā)現(xiàn),哎呀,這還真是個(gè)常見問題啊。而這種常見問題的排查,其實(shí)就涉及了如上的每個(gè)步驟??ê吐烤故强蛻舳?,網(wǎng)絡(luò)層還是傳輸層的問題?如何快速排查和定位出問題,以及影響范圍? 這個(gè)思考題今天不展開,但是如果沒有上面那個(gè)流程的認(rèn)識(shí),這個(gè)題目你肯定不可能給出好的結(jié)果。

說一個(gè)觀點(diǎn),全棧工程師為什么現(xiàn)在這么被看重,是因?yàn)榇蟛糠謫栴}出現(xiàn)的時(shí)候,問題并不會(huì)告訴你,它是屬于哪個(gè)領(lǐng)域的,而需要你來摸索,排查,如果你不具備綜合的視野和開闊的思路,你很可能無法找到問題的關(guān)鍵所在。你的能力又怎么體現(xiàn)呢?

其實(shí)是不是我們同時(shí)需要精通前端,精通網(wǎng)絡(luò)協(xié)議,精通服務(wù)端,這個(gè)的確太難,但是有一個(gè)整體框架的思路,再去精通其中一個(gè)領(lǐng)域,你的能力和視野就會(huì)上一個(gè)臺(tái)階,至少在排查問題,技術(shù)協(xié)同等各個(gè)方面會(huì)顯得更專業(yè),更有自信。

我剛開始接觸互聯(lián)網(wǎng)的時(shí)候,剛開始寫web程序的時(shí)候,那真是一竅不通,我寫一個(gè)cgi程序,我想讓他運(yùn)行起來,我都糊里糊涂,不知道這個(gè)東西是怎么運(yùn)行的,我跑一個(gè)webserver,設(shè)置目錄權(quán)限,糊里糊涂,以及最早看著coolfire的一個(gè)黑客手冊照貓畫虎去拿別人服務(wù)器權(quán)限的時(shí)候,還是糊里糊涂,很長時(shí)間都不知道這玩意到底原理是蝦米。 我總在想,那些年就沒有人跟我講這些,幫我梳理一下,所以當(dāng)時(shí)很多東西做出來,但是不明白其發(fā)生作用的機(jī)制,更不明白如何更好的調(diào)優(yōu)和細(xì)化。

梳理一下這些,其實(shí)花不了太多時(shí)間和精力,而梳理后對認(rèn)識(shí)問題的提升,是巨大的,對技術(shù)協(xié)同意識(shí)的提升,也是巨大的。


    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請遵守用戶 評(píng)論公約

    類似文章 更多