2019 iOS面試題-----網(wǎng)絡(luò)相關(guān)之DNS

2019 iOS面試題大全---全方面剖析面試
2019 iOS面試題-----網(wǎng)絡(luò)相關(guān)之HTTP協(xié)議
2019 iOS面試題-----網(wǎng)絡(luò)相關(guān)之HTTPS种远、對稱加密卵迂、非對稱加密
2019 iOS面試-----一個基于UDP的簡單的聊天Demo(用C語言认臊、python梯轻、GCDAsyncUdpSocket來實現(xiàn)UDP通信)
2019 iOS面試題-----網(wǎng)絡(luò)相關(guān)之UDP的特點梯刚、UDP的報文結(jié)構(gòu)及差錯檢測
2019 iOS面試題-----網(wǎng)絡(luò)相關(guān)之TCP及皂、三次握手、四次揮手价涝、代碼實現(xiàn)
2019 iOS面試題-----網(wǎng)絡(luò)相關(guān)之TCP進階:可靠數(shù)據(jù)傳輸女蜈、流量控制(滑動窗口)、擁塞控制
2019 iOS面試題-----網(wǎng)絡(luò)相關(guān)之DNS
2019 iOS面試題-----網(wǎng)絡(luò)相關(guān)之Cookie和Session
2019 iOS面試題-----網(wǎng)絡(luò)相關(guān)之IP協(xié)議色瘩、IP數(shù)據(jù)報分片鞭光、IPv4編址、網(wǎng)絡(luò)地址轉(zhuǎn)換(NAT)
2019 iOS面試題-----網(wǎng)絡(luò)相關(guān)之IPv6泞遗、從IPv4到IPv6的遷移

一惰许、DNS

因特網(wǎng)上的主機,可以使用多種方式標識史辙,比如主機名或IP地址汹买。

  • 一種標識方法就是用它的主機名(hostname)佩伤,比如·www.baidu.comwww.google.com晦毙、gaia.cs.umass.edu等生巡。這方式方便人們記憶和接受,但是這種長度不一见妒、沒有規(guī)律的字符串路由器并不方便處理孤荣。
  • 還有一種方式,就是直接使用定長的须揣、有著清晰層次結(jié)構(gòu)的IP地址盐股,路由器比較熱衷于這種方式。

為了折衷這兩種方式耻卡,我們需要一種能進行主機名到IP地址轉(zhuǎn)換的目錄服務(wù)疯汁。這就是域名系統(tǒng)(Domain Name System,DNS)的主要任務(wù)卵酪。

DNS是:
1幌蚊、一個由分層的DNS服務(wù)器實現(xiàn)的分布式數(shù)據(jù)庫
2、一個使得主機能夠查詢分布式數(shù)據(jù)庫的應(yīng)用層協(xié)議

而DNS服務(wù)器通常是運行BIND軟件的UNIX機器溃卡,DNS協(xié)議運行在UDP上溢豆,使用53號端口
DNS通常是由其他應(yīng)用層協(xié)議所使用的,包括HTTP瘸羡、SMTP等沫换。其作用則是:將用戶提供的主機名解析為IP地址

DNS的一種簡單設(shè)計就是在因特網(wǎng)上只使用一個DNS服務(wù)器,該服務(wù)器包含所有的映射最铁。很明顯這種設(shè)計是有很大的問題的:

  • 單點故障:如果該DNS服務(wù)器崩潰,全世界的網(wǎng)絡(luò)隨之癱瘓
  • 通信容量:單個DNS服務(wù)器必須處理所有DNS查詢
  • 遠距離的集中式數(shù)據(jù)庫:單個DNS服務(wù)器必須面對所有用戶垮兑,距離過遠會有嚴重的時延冷尉。
  • 維護:該數(shù)據(jù)庫過于龐大,還需要對新添加的主機頻繁更新系枪。

所以雀哨,DNS被設(shè)計成了一個分布式、層次數(shù)據(jù)庫

二私爷、DNS服務(wù)器

為了處理擴展性問題雾棺,DNS使用了大量的DNS服務(wù)器,它們以層次方式組織衬浑,并且分布在全世界范圍內(nèi)捌浩。

域名服務(wù)器是提供域名解析的服務(wù)器,在有基本的知識下工秩,任何人都可以搭建域名服務(wù)器尸饺,甚至是根域名服務(wù)器进统,有名的軟件有:BIND

目前的DNS服務(wù)器大致分為3種類型的DNS服務(wù)器:根DNS服務(wù)器、頂級域DNS服務(wù)器浪听、權(quán)威DNS服務(wù)器

1螟碎、 根DNS服務(wù)器

因特網(wǎng)上有13個根DNS服務(wù)器(標號A到M),1個為主根服務(wù)器在美國迹栓。其余12個均為輔根服務(wù)器掉分,其中9個在美國,歐洲2個克伊,位于英國和瑞典酥郭,亞洲1個位于日本。這里的并不是指物理意義上的單個服務(wù)器答毫,它是一個邏輯概念褥民,根DNS服務(wù)器可以由分布在全球的多個服務(wù)器組成,形成一個集群洗搂,對外統(tǒng)一為1臺邏輯的根DNS服務(wù)器(即每個標號下的根DNS服務(wù)器的IP地址是一樣的)消返。而實際物理意義上的根DNS服務(wù)器,已超過千臺
https://root-servers.org/ 這里可以查到所有根DNS服務(wù)器的分布



如圖耘拇,截止發(fā)這篇文章之前撵颊,中國有19臺根DNS服務(wù)器,分別位于:

  • 北京:F惫叛,I倡勇,J,L
  • 杭州:J
  • 澳門:F
  • 香港:A嘉涌、D妻熊、E、F仑最、F扔役、I、J
  • 臺北:E警医、F亿胸、F、I预皇、K侈玄、L
2、頂級域(TLD)DNS服務(wù)器

這些服務(wù)器負責(zé)頂級域名如com吟温、org序仙、net、edu和gov鲁豪,以及所有國家的頂級域名如uk诱桂、fr洋丐、ca和cn

3、權(quán)威DNS服務(wù)器

在因特網(wǎng)上具有公共可訪問主機的每個組織機構(gòu)必須提供公共可訪問的DNS記錄挥等,這些記錄將這些主機的名字映射為IP地址友绝。一個組織機構(gòu)的權(quán)威DNS服務(wù)器收藏了這些DNS記錄。

除此之外肝劲,還有一種很重要的DNS迁客,成為本地DNS服務(wù)器,其嚴格來說不屬于該服務(wù)器的層次結(jié)構(gòu)辞槐,但它對DNS層次結(jié)構(gòu)是重要的掷漱。每個ISP (互聯(lián)網(wǎng)服務(wù)提供商),比如一個大學(xué)榄檬,一個公司或一個居民區(qū)的ISP卜范,都有一臺本地DNS服務(wù)器

三鹿榜、DNS解析過程

1海雪、迭代查詢和遞歸查詢


如圖,很清晰地顯示出了一條DNS查詢鏈:本地DNS服務(wù)器-->根DNS服務(wù)器-->頂級域DNS服務(wù)器-->權(quán)威DNS服務(wù)器 舱殿,所有查詢都是遞歸的奥裸。
這是遞歸查詢

這種利用了迭代查詢遞歸查詢沪袭,從Client與本地DNS之間是遞歸查詢湾宙,其余則是迭代查詢
所謂 遞歸查詢過程 就是 “查詢的遞交者” 更替, 而 迭代查詢過程 則是 “查詢的遞交者”不變冈绊。
從理論上講侠鳄,任何DNS查詢既可以是迭代的也能是遞歸的。
而在實際過程中死宣,更常用的是圖上 從請求主機到本地DNS服務(wù)器的查詢是遞歸伟恶,其余查詢是迭代的這種方式。

2十电、DNS緩存

DNS緩存(DNS Caching):為了改善時延性能并減少在因特網(wǎng)上到處傳輸?shù)腄NS報文數(shù)量阀圾,DNS廣泛使用了緩存技術(shù)睁搭。
在一個請求鏈中,當某DNS服務(wù)器接收一個DNS回答時存筏,它能將該回答中的信息緩存在本地存儲器中罢绽。那么另一個對相同主機名的查詢到達該DNS服務(wù)器時畏线,該DNS服務(wù)器就可以提供所要求的IP地址,即使它不是該主機名的權(quán)威服務(wù)器良价。
由于IP和主機名的映射并不是永久的寝殴,DNS服務(wù)器在一段時間后就會丟棄緩存的信息蒿叠。
本地DNS服務(wù)器也能夠緩存TLD服務(wù)器的IP地址,從而允許本地DNS繞過查詢鏈中的根DNS服務(wù)器蚣常。

而事實上市咽,有DNS的地方,就有緩存抵蚊。瀏覽器施绎、操作系統(tǒng)、本地 DNS服務(wù)器贞绳、根DNS服務(wù)器谷醉,它們都會對DNS結(jié)果做一定程度的緩存。
3冈闭、DNS解析過程

上圖一目了然俱尼,大致分為8步:

  • 1、發(fā)起基于域名的請求后萎攒,首先檢查本地緩存(瀏覽器緩存-->操作系統(tǒng)的hosts文件)
  • 2遇八、如果本地緩存中有,直接返回目標IP地址躺酒,否則將域名解析請求發(fā)送給本地DNS服務(wù)器
  • 3押蚤、如果本地DNS服務(wù)器中有,直接返回目標IP地址羹应,到這一步基本能解析80%的域名揽碘。如果沒有,本地DNS服務(wù)器將解析請求發(fā)送給根DNS服務(wù)器
  • 4园匹、根DNS服務(wù)器會返回給本地DNS服務(wù)器一個所查詢的TLD服務(wù)器地址列表
  • 5雳刺、本地DNS服務(wù)器再向上一步返回的TLD服務(wù)器發(fā)送請求,TLD服務(wù)器查詢并返回域名對應(yīng)的權(quán)威域名服務(wù)器的地址
  • 6裸违、本地DNS服務(wù)器再向上一步返回的權(quán)威域名服務(wù)器發(fā)送請求掖桦,權(quán)威域名服務(wù)器會查詢存儲的域名和IP的映射關(guān)系表,將IP連同一個TTL(過期時間)值返回給本地DNS服務(wù)器
  • 7供汛、本地DNS服務(wù)器會將IP和主機名的映射保存起來枪汪,保存時間由TTL來控制
  • 8、本地DNS服務(wù)器把解析的結(jié)果返回給用戶怔昨,用戶根據(jù)TTL值緩存在本地系統(tǒng)緩存中雀久,域名解析過程結(jié)束

四、DNS記錄和報文

1趁舀、資源記錄

所有DNS服務(wù)器都存儲了資源記錄(Resource Record赖捌,RR),其提供了主機名到IP的映射矮烹。
資源記錄是一個包含以下字段的四元組:
(Name越庇,Value罩锐,Type,TTL)
TTL是該記錄的生存時間卤唉,決定了資源記錄應(yīng)當從緩存中刪除的時間涩惑。
Name和Value的值取決于Type(以下涉及的foo,bar均為偽變量):

  • Type = A,則Name是主機名搬味,Value使其對應(yīng)的IP地址境氢。這也是一個標準的主機名到IP地址的映射。如(replay1.bar.foo.com,145.37.93.126,A)
  • Type = NS碰纬,則Name是個域(如foo.com)萍聊,而Value是個知道如何獲取該域中主機IP地址的權(quán)威DNS服務(wù)器的主機名,如(foo.com,dns.foo.com,NS)
  • Type = CNAME,則Name是別名為Name的主機對應(yīng)的規(guī)范主機名悦析。該記錄能夠向查詢的主機提供一個主機名對應(yīng)的規(guī)范主機名寿桨,如(foo.com,replay1.bar.foo.com,CNAME)
  • Type = MX,則Value是個別名為Name的郵件服務(wù)器的規(guī)范主機名强戴。如(foo.com,main.bar.foo.com,MX)
2亭螟、DNS報文

DNS只有查詢和回答兩種報文,這兩種報文格式是一樣的骑歹。

  • 前12個字節(jié)是首部區(qū)域预烙。
    標識符用于標識該查詢,這個標識符會被復(fù)制到對查詢的回答報文中道媚,以便讓客戶用它來匹配發(fā)送的請求和接收到的回答扁掸。
    標志字段中含有若干標志。1比特的“查詢/回答”標志位指出報文是查詢報文(0)還是回答報文(1)最域。當某DNS服務(wù)器是所請求名字的權(quán)威DNS服務(wù)器時谴分,1比特的“權(quán)威的”標志位被置在回答報文中。此外镀脂,還有“希望遞歸”牺蹄、“遞歸可用”等標志位。
    在首部中薄翅,還有4個數(shù)量相關(guān)的字段沙兰,指出來在首部后的4類數(shù)據(jù)區(qū)域出現(xiàn)的數(shù)量,其中RR是資源記錄的意思翘魄。
  • 問題區(qū)域包含著正在進行的查詢信息鼎天。該區(qū)域包括:?名字字段,指出正在被查詢的主機名字熟丸;?類型字段训措,指出有關(guān)該名字的正被查詢的問題類型伪节,即上邊說的四元組中的Type
  • 回答區(qū)域包含了對最初請求的名字的資源記錄光羞。在回答區(qū)域中可以包含多條RR绩鸣,因此一個主機名理論上能夠有多個IP地址(不同用戶在不同地點訪問同一個域名,可能會訪問到不同的IP地址)
  • 權(quán)威區(qū)域中包含了其他權(quán)威服務(wù)器的記錄
  • 附加區(qū)域包含了其他有幫助的記錄

得知DNS的報文格式后纱兑,我們也就可以手動發(fā)送DNS查詢包了呀闻。
一個在線DNS查詢的工具:https://tool.lu/dns/index.html

五、DNS解析安全問題

1潜慎、DNS劫持

一種可能的域名劫持方式即黑客侵入了寬帶路由器并對終端用戶的本地DNS服務(wù)器進行篡改捡多,指向黑客自己偽造的本地DNS服務(wù)器,進而通過控制本地DNS服務(wù)器的邏輯返回錯誤的IP信息進行域名劫持铐炫。

另一方面垒手,由于DNS解析主要是基于UDP協(xié)議,除了上述攻擊行為外倒信,攻擊者還可以監(jiān)聽終端用戶的域名解析請求科贬,并在本地DNS服務(wù)器返回正確結(jié)果之前將偽造的DNS解析響應(yīng)傳遞給終端用戶,進而控制終端用戶的域名訪問行為鳖悠。

2榜掌、緩存污染(DNS污染)。

我們知道在接收到域名解析請求時乘综,本地DNS服務(wù)器首先會查找緩存憎账,如果緩存命中就會直接返回緩存結(jié)果卡辰,不再進行遞歸DNS查詢胞皱。這時候如果本地DNS服務(wù)器針對部分域名的緩存進行更改,比如將緩存結(jié)果指向第三方的廣告頁看政,就會導(dǎo)致用戶的訪問請求被引導(dǎo)到這些廣告頁地址上朴恳。

3、如何解決DNS劫持允蚣?

DNS解析發(fā)生在HTTP協(xié)議之前于颖,DNS解析和DNS劫持和HTTP沒有關(guān)系,DNS協(xié)議使用的是UDP協(xié)議向服務(wù)器的53端口進行請求嚷兔。
要想解決DNS劫持:

  • 可以使用HttpDNS的方案:使用 HTTP協(xié)議向DNS服務(wù)器的80端口進行請求,來規(guī)避DNS劫持
    比如:http://119.29.29.29/d?dn=domain&ip=clientIp
  • 在終端上森渐,可以更換DNS服務(wù)器,不管手機還是電腦冒晰,都能手動配置DNS


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末同衣,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子壶运,更是在濱河造成了極大的恐慌耐齐,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,214評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異埠况,居然都是意外死亡耸携,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評論 2 382
  • 文/潘曉璐 我一進店門辕翰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來夺衍,“玉大人,你說我怎么就攤上這事喜命」瞪常” “怎么了?”我有些...
    開封第一講書人閱讀 152,543評論 0 341
  • 文/不壞的土叔 我叫張陵壁榕,是天一觀的道長矛紫。 經(jīng)常有香客問我,道長牌里,這世上最難降的妖魔是什么含衔? 我笑而不...
    開封第一講書人閱讀 55,221評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮二庵,結(jié)果婚禮上贪染,老公的妹妹穿的比我還像新娘。我一直安慰自己催享,他們只是感情好杭隙,可當我...
    茶點故事閱讀 64,224評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著因妙,像睡著了一般痰憎。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上攀涵,一...
    開封第一講書人閱讀 49,007評論 1 284
  • 那天铣耘,我揣著相機與錄音,去河邊找鬼以故。 笑死蜗细,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的怒详。 我是一名探鬼主播炉媒,決...
    沈念sama閱讀 38,313評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼昆烁!你這毒婦竟也來了吊骤?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,956評論 0 259
  • 序言:老撾萬榮一對情侶失蹤静尼,失蹤者是張志新(化名)和其女友劉穎白粉,沒想到半個月后传泊,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,441評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡鸭巴,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,925評論 2 323
  • 正文 我和宋清朗相戀三年或渤,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片奕扣。...
    茶點故事閱讀 38,018評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖掌敬,靈堂內(nèi)的尸體忽然破棺而出惯豆,到底是詐尸還是另有隱情,我是刑警寧澤奔害,帶...
    沈念sama閱讀 33,685評論 4 322
  • 正文 年R本政府宣布楷兽,位于F島的核電站,受9級特大地震影響华临,放射性物質(zhì)發(fā)生泄漏芯杀。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,234評論 3 307
  • 文/蒙蒙 一雅潭、第九天 我趴在偏房一處隱蔽的房頂上張望揭厚。 院中可真熱鬧,春花似錦扶供、人聲如沸筛圆。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽太援。三九已至,卻和暖如春扳碍,著一層夾襖步出監(jiān)牢的瞬間提岔,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評論 1 261
  • 我被黑心中介騙來泰國打工笋敞, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留碱蒙,地道東北人。 一個月前我還...
    沈念sama閱讀 45,467評論 2 352
  • 正文 我出身青樓夯巷,卻偏偏與公主長得像振亮,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子鞭莽,可洞房花燭夜當晚...
    茶點故事閱讀 42,762評論 2 345