深入理解Http請求、DNS劫持與解析侣夷。

背景

前段時(shí)間在處理iOS端的HTTPDNS相關(guān)SDK横朋,在接入和測試環(huán)節(jié)發(fā)現(xiàn)大家對HTTP的整體請求流程包括HTTP劫持原理以及HTTPDNS的工作原理并不是太清楚,所以寫下這邊文章幫助大家深入web請求過程:如何發(fā)起請求百拓,HTTP協(xié)議解析琴锭,DNS域名解析晰甚。

HTTP發(fā)起一個(gè)請求過程

當(dāng)我們在手機(jī)端請求一個(gè)@"www.baidu.com"的域名的時(shí)候

  • 1.請求到達(dá)運(yùn)營商的DNS服務(wù)器并由其把這個(gè)域名解析成對應(yīng)的IP地址。

  • 2.根據(jù)IP地址在互聯(lián)網(wǎng)上找到對應(yīng)的服務(wù)器决帖,向這個(gè)服務(wù)器發(fā)起一個(gè)get\post請求厕九。

  • 3.由這個(gè)服務(wù)器找到對應(yīng)的資源原路返回給訪問的用戶。

這里只是一個(gè)大概的流程實(shí)際每一步都有復(fù)雜的結(jié)構(gòu)和邏輯例如:服務(wù)器可能有很多臺地回,到底指定哪臺服務(wù)器來處理請求扁远,需要一個(gè)負(fù)載均衡設(shè)備來平均分配所有用戶的請求。請求的數(shù)據(jù)是存儲在分布式緩存中還是一個(gè)靜態(tài)文件中刻像,或是在數(shù)據(jù)庫里畅买。當(dāng)數(shù)據(jù)返回瀏覽器時(shí),瀏覽器解析數(shù)據(jù)發(fā)現(xiàn)還有一些靜態(tài)資源(如CSS细睡、JS或者圖片)時(shí)又會發(fā)起另外的HTTP請求皮获,而這些請求很可能會在CDN上,那么CDN服務(wù)器上又會處理這個(gè)用戶的請求纹冤。

HTTP劫持

我們使用HTTPDNS的主要目的就是解決HTTP劫持問題洒宝。HTTP的劫持分兩種第一種是DNS劫持,第二種是內(nèi)容劫持萌京,后者是基于前者的基礎(chǔ)上發(fā)展出來雁歌,是比較高級的劫持手段,目前無解知残,下面來分開講解:

1:DNS劫持
  • 劫持流程
    DNS劫持又稱域名劫持靠瞎,是指在劫持的網(wǎng)絡(luò)范圍內(nèi)攔截域名解析的請求,分析請求的域名求妹,把審查范圍以外的請求放行乏盐,否則返回假的IP地址或者什么都不做使請求失去響應(yīng),其效果就是對特定的網(wǎng)絡(luò)不能訪問或訪問的是假網(wǎng)址制恍。其實(shí)本質(zhì)就是對DNS解析服務(wù)器做手腳父能,或者是使用偽造的DNS解析服務(wù)器可以通過下圖來展示
    DNS劫持原理

    從圖中可以看出紅色的是劫持的流程,劫持后將你的請求轉(zhuǎn)發(fā)到一個(gè)虛假的服務(wù)器净神。
  • 解決辦法
    • DNS的劫持過程是通過攻擊運(yùn)營商的解析服務(wù)器來達(dá)到目的何吝。我們可以不用運(yùn)營商的DNS解析而使用自己的解析服務(wù)器或者是提前在自己的App中將解析好的域名以IP的形式發(fā)出去就可以繞過運(yùn)營商DNS解析,這樣一來也避免了DNS劫持的問題鹃唯。
    • HttpDNS是使用HTTP協(xié)議向DNS服務(wù)器的80端口進(jìn)行請求爱榕,代替?zhèn)鹘y(tǒng)的DNS協(xié)議向DNS服務(wù)器的53端口進(jìn)行請求,繞開了運(yùn)營商的Local DNS,從而避免了使用運(yùn)營商Local DNS造成的劫持和跨網(wǎng)問題
2:內(nèi)容劫持
  • 劫持流程
    內(nèi)容劫持網(wǎng)上很少有提到坡慌,這也是在做httpDNS SDK所遇到的一個(gè)問題黔酥,其實(shí)內(nèi)容劫持一開始的出發(fā)點(diǎn)是好的,是運(yùn)營商為了加快用戶的訪問速度同時(shí)減少自己的流量損耗而做的一個(gè)緩存機(jī)制,用戶在像服務(wù)器請求數(shù)據(jù)的時(shí)候運(yùn)營商會把用戶的請求轉(zhuǎn)移到這個(gè)緩存池中跪者,如果緩存中有就直接返回棵帽,沒有的話再去像服務(wù)器請求然后攔截并緩存服務(wù)端給用戶的回調(diào)數(shù)據(jù),這樣一來可以極大的降低運(yùn)營商像服務(wù)器請求的次數(shù)坑夯,也能加快用戶的訪問,所以出發(fā)點(diǎn)是好抡四,但是一些非法的商家對緩存池內(nèi)部做一些處理就是直接對返回的內(nèi)容進(jìn)行修改柜蜈,這樣一來我們就會接受到錯(cuò)誤的數(shù)據(jù)


    內(nèi)容劫持

    黃色線條就是比價(jià)危險(xiǎn)的了,因?yàn)榛卣{(diào)的數(shù)據(jù)很可能已經(jīng)被篡改過指巡。

  • 解決辦法:
    現(xiàn)在暫時(shí)無法通過HTTPdns和其他手段解決淑履,不過這樣的劫持不是很多。

DNS解析過程

如果是iOS設(shè)備請直接跳到第三步驟

  • 1.系統(tǒng)會檢查瀏覽器緩存中有沒有這個(gè)域名對應(yīng)的解析過的IP地址藻雪,如果緩存中有秘噪,這個(gè)解析過程就將結(jié)束。瀏覽器緩存是受這個(gè)域名的失效時(shí)間和緩存的空間大小控制的勉耀。

  • 2.如果用戶的瀏覽器緩存中沒有指煎,瀏覽器會查找操作系統(tǒng)緩存中即為本地的Host文件。

  • 3.如果本地Host文件中沒有那么操作系統(tǒng)會把這個(gè)域名發(fā)送給這里設(shè)置的LocalDNS便斥,也就是本地區(qū)的域名服務(wù)器至壤。這個(gè)DNS通常都提供給你本地互聯(lián)網(wǎng)接入的一個(gè)DNS解析服務(wù)。這個(gè)專門的域名解析服務(wù)器性能都會很好枢纠,它們一般都會緩存域名解析結(jié)果像街,當(dāng)然緩存時(shí)間是受域名的失效時(shí)間控制的,一般緩存空間不是影響域名失效的主要因素晋渺。大約90%的域名解析都到這里就已經(jīng)完成了镰绎,所以LDNS主要承擔(dān)了域名的解析工作。

  • 4.如果LDNS仍然沒有命中木西,就直接到Root Server域名服務(wù)器請求解析

  • 5.根域名服務(wù)器返回給本地域名服務(wù)器一個(gè)所查詢的域的主域名服務(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ù)器的地址,這個(gè)Name Server通常就是你注冊的域名服務(wù)器鸠信,例如你在某個(gè)域名服務(wù)提供商申請的域名纵寝,那么這個(gè)域名解析任務(wù)就由這個(gè)域名提供商的服務(wù)器來完成

  • 8.Name Server域名服務(wù)器會查詢存儲的域名和IP的映射關(guān)系表,正常情況下都根據(jù)域名得到目標(biāo)IP記錄,連同一個(gè)TTL值返回給DNS Server域名服務(wù)器爽茴。

  • 9.返回該域名對應(yīng)的IP和TTL值葬凳,Local DNS Server會緩存這個(gè)域名和IP的對應(yīng)關(guān)系,緩存的時(shí)間由TTL值控制室奏。

  • 10.把解析的結(jié)果返回給用戶火焰,用戶根據(jù)TTL值緩存在本地系統(tǒng)緩存中,域名解析過程結(jié)束胧沫。
    以上的流程可以簡化為下圖


    DNS解析

    綠色的為非iOS設(shè)備的操作流程

CDN工作機(jī)制

CDN簡介

CDN昌简,全稱Content Delivery Network,根本的作用是將網(wǎng)站的內(nèi)容發(fā)布到最接近用戶的網(wǎng)絡(luò)“邊緣”绒怨,使用戶可以就近取得所需的內(nèi)容纯赎,提高用戶訪問網(wǎng)站的響應(yīng)速度。他-有別于鏡像南蹂,它比鏡像更智能犬金,可以這樣做一個(gè)比喻:CDN=鏡像(Mirror) + 緩存(cache) + 整體負(fù)載均衡(GSLB),因而六剥,CDN可以明顯提高Internet中信息流動的效率晚顷。目前CDN都以緩存網(wǎng)站中的靜態(tài)數(shù)據(jù)為主,如CSS疗疟、JS音同、圖片和靜態(tài)網(wǎng)頁等數(shù)據(jù)。用戶在從主站服務(wù)器請求到動態(tài)內(nèi)容后再從CDN上下載這些靜態(tài)數(shù)據(jù)秃嗜,從而加速網(wǎng)頁數(shù)據(jù)內(nèi)容的下載速度权均,如淘寶有90%以上的數(shù)據(jù)都是由CDN來提供的。這里引用一個(gè)網(wǎng)上比較形象的例子:A家的網(wǎng)速 100M的锅锨,但他只用了10M的速度叽赊,B家的網(wǎng)速是10M的,但是他需要15M的速度才行必搞。怎么辦呢必指。 C是一家CDN服務(wù)商,在A家有個(gè)節(jié)點(diǎn)(就像A是一個(gè)贊助商一樣)B在C家買了CDN加速服務(wù)恕洲。當(dāng)B的速度不夠的時(shí)候塔橡,CDN加速就會選擇有節(jié)余的節(jié)點(diǎn)來幫B,提高B的速度霜第。這樣B的速度就能達(dá)到或超過15M 葛家,A沒浪費(fèi),B速度有了泌类,C賺了錢癞谒,皆大歡喜。 當(dāng)C的節(jié)點(diǎn)在全國都有,非常多的時(shí)候弹砚。那么你用C家的CDN加速服務(wù)双仍,你就會健步如飛了

CDN工作流程

一個(gè)用戶訪問某個(gè)靜態(tài)文件(如CSS)桌吃,這個(gè)靜態(tài)文件的域名假如是www.baidu.com朱沃,而這個(gè)域名最終會被指向CDN全局中CDN負(fù)載均衡服務(wù)器,再由這個(gè)負(fù)載均衡服務(wù)器來最終分配是哪個(gè)地方的訪問用戶茅诱,返回給離這個(gè)訪問用戶最近的CDN節(jié)點(diǎn)逗物。之后用戶就直接去這個(gè)CDN節(jié)點(diǎn)訪問這個(gè)靜態(tài)文件了,如果這個(gè)節(jié)點(diǎn)中請求的文件不存在让簿,就會再回到源站去獲取這個(gè)文件敬察,然后再返回給用戶秀睛。

負(fù)載均衡

負(fù)載均衡就是對工作任務(wù)進(jìn)行平衡尔当、分?jǐn)偟蕉鄠€(gè)操作單元上執(zhí)行,如圖片服務(wù)器蹂安、應(yīng)用服務(wù)器等椭迎,共同完成工作任務(wù)。它可以提高服務(wù)器響應(yīng)速度及利用效率田盈,避免軟件或者硬件模塊出現(xiàn)單點(diǎn)失效畜号,解決網(wǎng)絡(luò)擁塞問題,實(shí)現(xiàn)地理位置無關(guān)性允瞧,為用戶提供較一致的訪問質(zhì)量简软。
CDN整體的工作流程可以大概歸為下圖:


image.png

總結(jié)

以上就是Http請求的一些理解,如果有不對的地方及時(shí)與我來溝通述暂。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末痹升,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子畦韭,更是在濱河造成了極大的恐慌疼蛾,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,729評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件艺配,死亡現(xiàn)場離奇詭異察郁,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)转唉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,226評論 3 399
  • 文/潘曉璐 我一進(jìn)店門皮钠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人赠法,你說我怎么就攤上這事鳞芙。” “怎么了?”我有些...
    開封第一講書人閱讀 169,461評論 0 362
  • 文/不壞的土叔 我叫張陵原朝,是天一觀的道長驯嘱。 經(jīng)常有香客問我,道長喳坠,這世上最難降的妖魔是什么鞠评? 我笑而不...
    開封第一講書人閱讀 60,135評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮壕鹉,結(jié)果婚禮上剃幌,老公的妹妹穿的比我還像新娘。我一直安慰自己晾浴,他們只是感情好负乡,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,130評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著脊凰,像睡著了一般抖棘。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上狸涌,一...
    開封第一講書人閱讀 52,736評論 1 312
  • 那天切省,我揣著相機(jī)與錄音,去河邊找鬼帕胆。 笑死朝捆,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的懒豹。 我是一名探鬼主播芙盘,決...
    沈念sama閱讀 41,179評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼脸秽!你這毒婦竟也來了儒老?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,124評論 0 277
  • 序言:老撾萬榮一對情侶失蹤豹储,失蹤者是張志新(化名)和其女友劉穎贷盲,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體剥扣,經(jīng)...
    沈念sama閱讀 46,657評論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡巩剖,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,723評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了钠怯。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片佳魔。...
    茶點(diǎn)故事閱讀 40,872評論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖晦炊,靈堂內(nèi)的尸體忽然破棺而出鞠鲜,到底是詐尸還是另有隱情宁脊,我是刑警寧澤,帶...
    沈念sama閱讀 36,533評論 5 351
  • 正文 年R本政府宣布贤姆,位于F島的核電站榆苞,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏霞捡。R本人自食惡果不足惜坐漏,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,213評論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望碧信。 院中可真熱鬧赊琳,春花似錦、人聲如沸砰碴。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,700評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽呈枉。三九已至趁尼,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間碴卧,已是汗流浹背弱卡。 一陣腳步聲響...
    開封第一講書人閱讀 33,819評論 1 274
  • 我被黑心中介騙來泰國打工乃正, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留住册,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,304評論 3 379
  • 正文 我出身青樓瓮具,卻偏偏與公主長得像荧飞,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子名党,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,876評論 2 361

推薦閱讀更多精彩內(nèi)容