從理論到實(shí)踐蝗茁,全方位認(rèn)識(shí)DNS(理論篇)

對(duì)于 DNS(Domain Name System) 大家肯定不陌生醋虏,不就是用來將一個(gè)網(wǎng)站的域名轉(zhuǎn)換為對(duì)應(yīng)的IP嗎。當(dāng)我們發(fā)現(xiàn)可以上QQ但不能瀏覽網(wǎng)頁(yè)時(shí)哮翘,我們會(huì)想到可能是域名服務(wù)器掛掉了颈嚼;當(dāng)我們用別人提供的hosts文件瀏覽到一個(gè)“不存在”的網(wǎng)頁(yè)時(shí),我們會(huì)了解到域名解析系統(tǒng)的脆弱饭寺。

然而關(guān)于DNS還有一大堆故事值得我們?nèi)A聽阻课,去思考。

DNS 源起

要想訪問網(wǎng)絡(luò)上的一臺(tái)計(jì)算機(jī)艰匙,我們必須要知道它的IP地址限煞,但是這些地址(比如243.185.187.39)只是一串?dāng)?shù)字,沒有規(guī)律员凝,因此我們很難記住署驻。并且如果一臺(tái)計(jì)算機(jī)變更IP后,它必須通知所有的人绊序。

顯然硕舆,直接使用IP地址是一個(gè)愚蠢的方案。于是人們想出了一個(gè)替代的方法骤公,即為每一臺(tái)計(jì)算機(jī)起一個(gè)名字抚官,然后建立計(jì)算機(jī)名字到地址的一個(gè)映射關(guān)系。我們?cè)L問計(jì)算機(jī)的名字阶捆,剩下的名字到地址的轉(zhuǎn)換過程則由計(jì)算機(jī)自動(dòng)完成凌节。

hosts映射

早期,名字到地址的轉(zhuǎn)換過程十分簡(jiǎn)單洒试。每臺(tái)計(jì)算機(jī)保存一個(gè)hosts文件倍奢,里面列出所有計(jì)算機(jī)名字和對(duì)應(yīng)的IP地址,然后定期從一個(gè)維護(hù)此文件的站點(diǎn)更新里面的記錄垒棋。當(dāng)我們?cè)L問某個(gè)計(jì)算機(jī)名字時(shí)卒煞,先在hosts文件找到對(duì)應(yīng)的IP,然后就可以建立連接叼架。

簡(jiǎn)單的映射機(jī)制
簡(jiǎn)單的映射機(jī)制

早期的ARPANET就是這樣做的畔裕,但是隨著網(wǎng)絡(luò)規(guī)模的擴(kuò)大,這種方法漸漸吃不消了乖订。主要有以下三個(gè)原因:

  1. hosts文件變得非常大扮饶;
  2. 主機(jī)名字會(huì)沖突;
  3. 集中的維護(hù)站點(diǎn)會(huì)不堪重負(fù)(需要給幾百萬機(jī)器提供hosts文件乍构,想想就可怕)甜无。

域名系統(tǒng)

為了解決上面的問題,1983年Paul Mockapetris提出了域名系統(tǒng)(DNS, Domain Name System),這是一種層次的岂丘、基于域的命名方案陵究,并且用一個(gè)分布式數(shù)據(jù)庫(kù)系統(tǒng)加以實(shí)現(xiàn)。當(dāng)我們需要訪問一個(gè)域名(其實(shí)就是前面說的計(jì)算機(jī)的名字)時(shí)元潘,應(yīng)用程序會(huì)向DNS服務(wù)器發(fā)起一個(gè)DNS請(qǐng)求畔乙,DNS服務(wù)器返回該域名對(duì)應(yīng)的IP地址。通過下面三種手段解決了上面的問題:

  1. 用戶計(jì)算機(jī)上并沒有存儲(chǔ)所有的名字到IP的映射翩概,這樣避免了hosts文件過于龐大(現(xiàn)在各操作系統(tǒng)中hosts文件默認(rèn)都是空的)牲距。
  2. 規(guī)定了域名的命名規(guī)則,保證主機(jī)名字不會(huì)重復(fù)钥庇。
  3. DNS服務(wù)器不再是單一的一臺(tái)機(jī)器牍鞠,而是一個(gè)層次的、合理組織的服務(wù)器集群评姨。

這樣訪問一個(gè)域名的過程可以簡(jiǎn)化為下圖:

簡(jiǎn)化版的域名系統(tǒng)
簡(jiǎn)化版的域名系統(tǒng)

DNS 協(xié)議

那么如何具體實(shí)現(xiàn)這個(gè)所謂的域名系統(tǒng)呢难述,要知道管理一個(gè)超大型并且不斷變化的域名到IP的映射集合可不是一個(gè)簡(jiǎn)單的事,況且還要去應(yīng)付成千上萬的DNS查詢請(qǐng)求吐句。人們最終想出了一套不錯(cuò)的協(xié)議胁后,規(guī)定如何來實(shí)現(xiàn)這個(gè)系統(tǒng),下面我們一起來看看吧嗦枢。

域名空間

首先我們需要制定一套命名規(guī)則攀芯,防止域名出現(xiàn)重復(fù)。DNS關(guān)于域名的規(guī)則和我們生活中的快遞系統(tǒng)類似文虏,使用層次的地址結(jié)構(gòu)侣诺。快遞系統(tǒng)中要給某人郵寄物品氧秘,地址可能是這樣:中國(guó)年鸳、廣東省、廣州市丸相、番禺區(qū)搔确、中山西路12號(hào) XXX。而一個(gè)域名看起來則是這樣的groups.google.com(為什么不是com.google.groups灭忠?我猜可能和老外寫地址的習(xí)慣有關(guān))膳算。

對(duì)于Internet來說,域名層次結(jié)構(gòu)的頂級(jí)(相當(dāng)于國(guó)際快遞地址中的國(guó)家部分)由ICANN(互聯(lián)網(wǎng)名稱與數(shù)字地址分配機(jī)構(gòu))負(fù)責(zé)管理更舞。目前畦幢,已經(jīng)有超過250個(gè)頂級(jí)域名坎吻,每個(gè)頂級(jí)域名可以進(jìn)一步劃為一些子域(二級(jí)域名)缆蝉,這些子域可被再次劃分(三級(jí)域名),依此類推。所有這些域名可以組織成一棵樹刊头,如下圖所示(圖片來自Computer Networks: 7-1 ):

層級(jí)域名空間
層級(jí)域名空間

域名資源記錄

DNS設(shè)計(jì)之初是用來建立域名到IP地址的映射黍瞧,理論上對(duì)于每一個(gè)域名我們只需要在域名服務(wù)器上保存一條記錄即可。這里的記錄一般叫作域名資源記錄原杂,它是一個(gè)五元組印颤,可以用以下格式表示:

Domain_name Time_to_live Class Type Value

其中:

  1. Domain_name: 指出這條記錄適用于哪個(gè)域名;
  2. Time_to_live: 用來表明記錄的生存周期穿肄,也就是說最多可以緩存該記錄多長(zhǎng)時(shí)間(后面會(huì)講到緩存機(jī)制)年局;
  3. Class: 一般總是IN;
  4. Type: 記錄的類型咸产;
  5. Value: 記錄的值矢否,如果是A記錄,則value是一個(gè)IPv4地址脑溢。

我們看到域名資源記錄有一個(gè)Type字段僵朗,用來表明記錄的類型。這是為什么呢屑彻?因?yàn)閷?duì)于一個(gè)域名來說验庙,通常并非只記錄其IP地址,還可能需要一些其他種類的記錄社牲,一些常見的記錄類型如下:

記錄類型 含義
A 主機(jī)的IPv4地址
AAAA 主機(jī)的IPv6地址
NS 該域名所在域的權(quán)威域名服務(wù)器
MX 接受特定域名電子郵件的服務(wù)器域名
CNAME 當(dāng)前域名的一個(gè)別名

關(guān)于這些域名資源記錄的實(shí)例我們將在下一篇文章(實(shí)踐篇)看到粪薛。

域名服務(wù)器

我們知道不能只用一臺(tái)域名服務(wù)器來響應(yīng)所有的DNS查詢,因?yàn)闆]有一臺(tái)機(jī)器能夠給全球的用戶提供查詢服務(wù)膳沽,計(jì)算能力汗菜、存儲(chǔ)、帶寬都不允許挑社。只能合理組織一個(gè)域名服務(wù)器集群陨界,使他們協(xié)同工作,共同提供域名解析服務(wù)痛阻。接下來首先要面對(duì)的一個(gè)問題是如何合理地將所有的域名資源記錄存儲(chǔ)到不同的域名服務(wù)器上菌瘪。

前面說過域名的名字空間可以組織為一棵樹,這里我們可以進(jìn)一步將其劃分為不重疊的區(qū)域(DNS zone)阱当,針對(duì)上圖的域名空間俏扩,一種可能的域名劃分如下圖:

域名區(qū)域劃分
域名區(qū)域劃分

然后將每個(gè)區(qū)域與多個(gè)域名服務(wù)器(其中一個(gè)是master,其他slave服務(wù)器則用來提供數(shù)據(jù)備份弊添、加快解析速度录淡、保證服務(wù)可用性)關(guān)聯(lián)起來,稱這些域名服務(wù)器為該區(qū)域的權(quán)威域名服務(wù)器(Authoritative Name Servers )油坝,它保存兩類域名資源記錄:

  1. 該區(qū)域內(nèi)所有域名的域名資源記錄嫉戚。
  2. 父區(qū)域和子區(qū)域的域名服務(wù)器對(duì)應(yīng)的域名資源記錄(主要是NS記錄)刨裆。

這樣,所有的域名資源記錄都保存在多個(gè)域名服務(wù)器中彬檀,并且所有的域名服務(wù)器也組成了一個(gè)層次的索引結(jié)構(gòu)灯抛,便于我們后面進(jìn)行域名解析姿锭。下面以一個(gè)簡(jiǎn)化的域名空間為例子,說明域名資源記錄是如何保存在域名服務(wù)器中的,如下圖a:

域名服務(wù)器的分布

圖中域名空間劃分為A, B, C, D, E, F, G七個(gè)DNS區(qū)域已脓,每個(gè)DNS區(qū)域都有多個(gè)權(quán)威域名服務(wù)器同木,這些域名服務(wù)器里面保存了許多域名解析記錄皱坛。對(duì)于上圖的NDS區(qū)域E來說肢簿,它的權(quán)威域名服務(wù)器里面保存的記錄如圖中表格所示。

仔細(xì)觀察上圖你可能會(huì)發(fā)現(xiàn)區(qū)域A深浮、B并沒有父區(qū)域贴膘,他們之間并沒有一條路徑連在一起。這將導(dǎo)致一個(gè)很麻煩的問題略号,那就是區(qū)域A的權(quán)威域名服務(wù)器可能根本不知道區(qū)域B的存在刑峡。認(rèn)識(shí)到這一點(diǎn)后,你可能會(huì)想出一個(gè)很自然的解決方案玄柠,就是在A中記錄B域名服務(wù)器的地址突梦,同時(shí)在B中記錄A的,這樣它們兩個(gè)就聯(lián)系起來了羽利。但是考慮到我們有超過250個(gè)頂級(jí)域名宫患,這樣做并不是很恰當(dāng)。

而我們使用的域名系統(tǒng)則采用了一種更加聰明的方法这弧,那就是引入根域名服務(wù)器娃闲,它保存了所有頂級(jí)區(qū)域的權(quán)威域名服務(wù)器記錄。現(xiàn)在通過根域名服務(wù)器匾浪,我們可以找到所有的頂級(jí)區(qū)域的權(quán)威域名服務(wù)器皇帮,然后就可以往下一級(jí)一級(jí)找下去了。下圖為全球根域名服務(wù)器的分布圖蛋辈,可以在這里找到属拾。

根域名服務(wù)器分布
根域名服務(wù)器分布

現(xiàn)在為止,我們的權(quán)威域名服務(wù)器和根域名服務(wù)器其實(shí)組成了一個(gè)樹冷溶,樹根為根域名服務(wù)器渐白,下面每個(gè)節(jié)點(diǎn)都是一個(gè)區(qū)域的權(quán)威域名服務(wù)器,對(duì)于圖a中各個(gè)DNS區(qū)域的權(quán)威域名服務(wù)器逞频,它們組成了下面這棵樹(實(shí)際中纯衍,一個(gè)權(quán)威域名服務(wù)器可能保存有多個(gè)DNS區(qū)域的記錄,因此權(quán)威域名服務(wù)器之間的聯(lián)系并不構(gòu)成一棵樹苗胀。這部分的詳細(xì)內(nèi)容可以參考RFC 1034: 4. NAME SERVERS襟诸。下面為了容易理解褒颈,將其簡(jiǎn)化為一棵樹):

域名服務(wù)器構(gòu)成的樹
域名服務(wù)器構(gòu)成的樹

域名解析

我們已經(jīng)有了一個(gè)域名服務(wù)器集群,該集群合理地保存了域名空間和域名資源記錄的對(duì)應(yīng)關(guān)系±ぃ現(xiàn)在我們要做的就是發(fā)送一個(gè)DNS請(qǐng)求給域名服務(wù)器,然后坐等它返回正確的域名資源記錄堡掏,這個(gè)過程叫作域名解析应结。

嚴(yán)格來說,域名解析的過程最早要追溯到建立網(wǎng)絡(luò)連接泉唁。因?yàn)槊慨?dāng)連接上網(wǎng)絡(luò)之后鹅龄,計(jì)算機(jī)會(huì)自動(dòng)獲得一個(gè)默認(rèn)的DNS服務(wù)器,當(dāng)然你也可以用自己信任的DNS服務(wù)器亭畜,比如8.8.8.8(DNS服務(wù)器也有信任不信任之分扮休,是的,實(shí)踐篇會(huì)講到)拴鸵,我們把這個(gè)域名服務(wù)器也叫作本地域名服務(wù)器玷坠。接下來當(dāng)我們需要知道一個(gè)域名對(duì)應(yīng)的資源記錄時(shí),會(huì)向本地域名服務(wù)器發(fā)起請(qǐng)求劲藐,如果該域名恰好在本地域名服務(wù)器所轄屬的域名區(qū)域(DNS zone)內(nèi)八堡,那么可以直接返回記錄。

如果在本地域名服務(wù)器沒有發(fā)現(xiàn)該域名的資源記錄聘芜,就需要在整個(gè)域名空間搜索該域名兄渺。而整個(gè)域名空間的資源記錄存儲(chǔ)在一個(gè)分層的、樹狀聯(lián)系的一系列域名服務(wù)器上汰现,所以本地域名服務(wù)器首先要從根域名服務(wù)器開始往下搜索挂谍。這里有一個(gè)問題就是本地域名服務(wù)器如何找到根域名服務(wù)器在哪里呢?其實(shí)域名服務(wù)器啟動(dòng)的時(shí)候瞎饲,就會(huì)加載一個(gè)配置文件口叙,里面保存了根域名服務(wù)器的NS記錄(要知道根域名服務(wù)器地址一般非常穩(wěn)定,不會(huì)輕易改變嗅战,并且數(shù)量很少庐扫,所以這個(gè)配置文件會(huì)很小)仗哨。找到根域名服務(wù)器之后形庭,就可以一級(jí)一級(jí)地往下查找啦。

仍然以我們的圖a為例厌漂,現(xiàn)在假設(shè)區(qū)域E內(nèi)的某個(gè)用戶想訪問math.sysu.edu.cn萨醒,那么請(qǐng)求的過程如下:

一個(gè)完整的DNS解析過程
一個(gè)完整的DNS解析過程

用語(yǔ)言簡(jiǎn)單描述如下:

  1. 用戶:喂,本地域名服務(wù)器苇倡,告訴我math.sysu.edu.cn的地址富纸;
  2. 本地域名服務(wù)器:哎呀囤踩,我不知道啊,不在我的轄區(qū)晓褪,容我去問問老大哥吧堵漱。root老大,能告訴我math.sysu.edu.cn的地址嗎涣仿;
  3. 根域名服務(wù)器:忙著呢勤庐,你去問B(.cn);
  4. 本地域名服務(wù)器:喂好港,B愉镰,告訴我math.sysu.edu.cn的地址;
  5. B:你去問D(.edu.cn)钧汹;
  6. 本地域名服務(wù)器:喂丈探,D,告訴我math.sysu.edu.cn的地址拔莱;
  7. D:你去問F(sysu.edu.cn)碗降;
  8. 本地域名服務(wù)器:喂,F(xiàn)塘秦,告訴我math.sysu.edu.cn的地址遗锣;
  9. F:容老衲看看,哎呀嗤形,找到了精偿,是X.X.X.X;
  10. 本地域名服務(wù)器:踏破鐵鞋終于找到啦赋兵,喂用戶笔咽,出來啊,我找到了霹期,是X.X.X.X

仔細(xì)想想叶组,這和我們郵寄快遞實(shí)在是如出一轍啊,假設(shè)你從美國(guó)郵東西到廣州市番禺區(qū)历造,首先快遞送到中國(guó)(不過這里沒有一個(gè)類似根域名服務(wù)器的中轉(zhuǎn)站而已)甩十,然后往下到廣東省,接下來是廣州市吭产,再往下是番禺了侣监。

上面的是本地域名服務(wù)器的迭代解析過程,其實(shí)也可以遞歸查詢臣淤,這里就不說了橄霉,道理差不多。

緩存機(jī)制

現(xiàn)在整個(gè)域名系統(tǒng)已經(jīng)可以為我們提供域名解析服務(wù)了邑蒋,當(dāng)我們輸入域名姓蜂,計(jì)算機(jī)發(fā)送DNS請(qǐng)求按厘,然后DNS服務(wù)器返回給我們解析的結(jié)果,一切看起來很完美钱慢。然而是不是可以更完美呢逮京?

回顧一下平時(shí)瀏覽網(wǎng)站的情況,我們會(huì)發(fā)現(xiàn)兩個(gè)比較有意思的結(jié)論:

  1. 80%的時(shí)間我們都在看那些20%的網(wǎng)站束莫,這就是大名鼎鼎的80/20 Rule懒棉;
  2. 我們會(huì)在一個(gè)網(wǎng)站的不同網(wǎng)頁(yè)之間跳轉(zhuǎn),也就是不斷地訪問同一個(gè)域名麦箍,類似程序訪問的局部性原理。

這兩條結(jié)論很容易讓我們聯(lián)想到緩存機(jī)制陶珠。如果我們將已經(jīng)訪問過的那些域名的解析結(jié)果緩存在自己的計(jì)算機(jī)上挟裂,那么下次訪問的時(shí)候可以直接讀取結(jié)果,不用再次重復(fù)DNS查詢過程揍诽,給自己和域名服務(wù)器都節(jié)省了麻煩诀蓉。

當(dāng)然,這樣做的一個(gè)前提是要緩存的解析結(jié)果不會(huì)頻繁更改暑脆,也就是說我十分鐘后解析一個(gè)域名的結(jié)果和現(xiàn)在解析的結(jié)果是一樣的渠啤。對(duì)大多數(shù)域名來說,這都是一個(gè)不爭(zhēng)的事實(shí)添吗。但是難免有一些“善變”的域名沥曹,他們可能會(huì)頻繁更改自己的解析結(jié)果。為了使緩存機(jī)制適應(yīng)這兩類情況碟联,我們?cè)谟蛎Y源記錄里面添加一個(gè)Time_to_live字段妓美,表明這條記錄最多可以緩存多久。對(duì)于那些“穩(wěn)如泰山”的域名鲤孵,給一個(gè)比較大的值壶栋,而那些“朝三暮四”的域名,則可以給定一個(gè)小的值普监。

我們既然可以在本機(jī)利用緩存贵试,那么可不可以在域名服務(wù)器上也利用緩存機(jī)制呢,答案當(dāng)然是可以的凯正。因?yàn)閷?duì)于域名服務(wù)器來說毙玻,上面的兩條有意思的結(jié)論仍然有效。所以廊散,域名服務(wù)器可以將那些訪問過的域名資源記錄緩存淆珊,用戶再次發(fā)起請(qǐng)求時(shí),可以直接返回緩存結(jié)果奸汇,不用去迭代或者遞歸解析施符。

關(guān)于DNS理論部分往声,更多內(nèi)容還可以參考這兩個(gè)文本:

并沒有結(jié)束

上面一大堆理論,看上去有點(diǎn)不明所以是吧戳吝,沒事浩销,接下來會(huì)結(jié)合實(shí)踐來更加清晰地認(rèn)識(shí)DNS這一最基礎(chǔ)的系統(tǒng)。

其實(shí)不止是DNS听哭,還有HTTPS慢洋、TCP、UDP這些很基礎(chǔ)的協(xié)議陆盘,都值得我們靜下心去好好認(rèn)識(shí)它們普筹。因?yàn)椋瑢慏NS之前隘马,我以為我已經(jīng)完全搞明白了它太防,但是寫的過程發(fā)現(xiàn)好多地方自己根本就不知道,之前完全是停留在一個(gè)很浮夸的層面上酸员。所以蜒车,是時(shí)候找時(shí)間好好把這些協(xié)議過一遍,用自己的語(yǔ)言幔嗦,從解決問題的角度酿愧,記錄下這些經(jīng)典協(xié)議的故事了。

更多文章邀泉,請(qǐng)移步我的博客

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末嬉挡,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子汇恤,更是在濱河造成了極大的恐慌棘伴,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,718評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件屁置,死亡現(xiàn)場(chǎng)離奇詭異焊夸,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)蓝角,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門阱穗,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人使鹅,你說我怎么就攤上這事揪阶。” “怎么了患朱?”我有些...
    開封第一講書人閱讀 158,207評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵鲁僚,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我,道長(zhǎng)冰沙,這世上最難降的妖魔是什么侨艾? 我笑而不...
    開封第一講書人閱讀 56,755評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮拓挥,結(jié)果婚禮上唠梨,老公的妹妹穿的比我還像新娘。我一直安慰自己侥啤,他們只是感情好当叭,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,862評(píng)論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著盖灸,像睡著了一般蚁鳖。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上赁炎,一...
    開封第一講書人閱讀 50,050評(píng)論 1 291
  • 那天醉箕,我揣著相機(jī)與錄音,去河邊找鬼甘邀。 笑死琅攘,一個(gè)胖子當(dāng)著我的面吹牛垮庐,可吹牛的內(nèi)容都是我干的松邪。 我是一名探鬼主播,決...
    沈念sama閱讀 39,136評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼哨查,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼逗抑!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起寒亥,我...
    開封第一講書人閱讀 37,882評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤邮府,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后溉奕,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體褂傀,經(jīng)...
    沈念sama閱讀 44,330評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,651評(píng)論 2 327
  • 正文 我和宋清朗相戀三年加勤,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了仙辟。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,789評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡鳄梅,死狀恐怖叠国,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情戴尸,我是刑警寧澤粟焊,帶...
    沈念sama閱讀 34,477評(píng)論 4 333
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響项棠,放射性物質(zhì)發(fā)生泄漏悲雳。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,135評(píng)論 3 317
  • 文/蒙蒙 一沾乘、第九天 我趴在偏房一處隱蔽的房頂上張望怜奖。 院中可真熱鬧,春花似錦翅阵、人聲如沸歪玲。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)滥崩。三九已至,卻和暖如春讹语,著一層夾襖步出監(jiān)牢的瞬間钙皮,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評(píng)論 1 267
  • 我被黑心中介騙來泰國(guó)打工顽决, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留短条,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,598評(píng)論 2 362
  • 正文 我出身青樓才菠,卻偏偏與公主長(zhǎng)得像茸时,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子赋访,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,697評(píng)論 2 351

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

  • 編程派微信號(hào):codingpy 作者:selfboot來源:http://selfboot.cn/2015/11/...
    羅義的夏天閱讀 261評(píng)論 0 2
  • 1. 概述 在網(wǎng)絡(luò)環(huán)境中一般用戶只需要在瀏覽器中輸入url如www.sunny.com就可以到對(duì)應(yīng)服務(wù)器獲取相應(yīng)的...
    ghbsunny閱讀 2,878評(píng)論 0 7
  • 14.1 引言 域名系統(tǒng)(DNS)是一種用于TCP/IP應(yīng)用程序的分布式數(shù)據(jù)庫(kù)蚓耽,它提供主機(jī)名字和IP地址之間的轉(zhuǎn)換...
    張芳濤閱讀 1,881評(píng)論 0 8
  • DNS(Domain Name System渠牲,域名系統(tǒng)),因特網(wǎng)上作為域名和IP地址相互映射的一個(gè)分布式數(shù)據(jù)庫(kù)步悠,能...
    一直在努力hard閱讀 4,621評(píng)論 3 19
  • 映月掛西窗鼎兽,清風(fēng)葉冷霜答姥, 孤寒燈影后。獨(dú)自望天蒼接奈。 殘瓣催花惘踢涌,殘枝落柳殤。 欲邀飄葉住序宦,夢(mèng)去淚如汪睁壁。
    古城蒼狼閱讀 362評(píng)論 0 4