「計(jì)算機(jī)網(wǎng)絡(luò)」| DNS & HTTPDNS

點(diǎn)贊關(guān)注啊终,不再迷路,你的支持對(duì)我意義重大傲须!

?? Hi蓝牲,我是丑丑。本文「計(jì)算機(jī)網(wǎng)絡(luò)」| 導(dǎo)讀 —— 跬步千里泰讽,始于足下 已收錄例衍,這里有 Android 進(jìn)階成長(zhǎng)路線筆記 & 博客昔期,歡迎跟著彭丑丑一起成長(zhǎng)。(聯(lián)系方式在 GitHub)

前言

  • DNS 往往是網(wǎng)絡(luò)請(qǐng)求的第一步佛玄,在計(jì)算機(jī)網(wǎng)絡(luò)面試中硼一,DNS 也是除 HTTP、TCP 之外較重點(diǎn)考察的知識(shí)梦抢,其重要性可想而知欠动。
  • 在這篇文章里,我將梳理圖解 DNS & HTTPDNS 的原理知識(shí)惑申。如果能幫上忙具伍,請(qǐng)務(wù)必點(diǎn)贊加關(guān)注,這真的對(duì)我非常重要圈驼。

目錄


1. DNS 原理

1.1 DNS 簡(jiǎn)介

域名(Domain Name人芽,Domain) 是一個(gè)在互聯(lián)網(wǎng)上標(biāo)識(shí)主機(jī)或主機(jī)組的名稱,相當(dāng)于 IP 地址的別名绩脆,相對(duì)于晦澀難記的 IP 地址萤厅,域名更顯得易于記憶。

域名系統(tǒng)(Domain Name System靴迫,DNS) 則是將域名解析 IP 地址的一項(xiàng)互聯(lián)網(wǎng)基礎(chǔ)服務(wù)惕味,提供該服務(wù)的服務(wù)器稱為 域名服務(wù)器(Domain Name Server)

1.2 DNS 解析過(guò)程

互聯(lián)網(wǎng)上的域名系統(tǒng)是一個(gè)分布式的系統(tǒng)玉锌,結(jié)構(gòu)上是一個(gè)四層的樹(shù)狀層次結(jié)構(gòu)名挥,如下圖所示:

  • 本地域名服務(wù)器(Local Name Server,local DNS):如果通過(guò) DHCP 配置主守,local DNS 由互聯(lián)網(wǎng)服務(wù)提供商(ISP禀倔,如聯(lián)通、電信)提供参淫;

  • 根域名服務(wù)器(Root Name Server):當(dāng) local DNS 查詢不到解析結(jié)果時(shí)救湖,第一步會(huì)向它進(jìn)行查詢,并獲取頂級(jí)域名服務(wù)器的IP地址涎才。全球一共有 13 個(gè)根域名服務(wù)器(除了它們的鏡像)鞋既,它們并不直接用于域名解析,僅用于指出可查詢的頂級(jí)域名服務(wù)器耍铜。這個(gè)網(wǎng)站記錄了現(xiàn)有的 13 個(gè)根域名服務(wù)器:https://www.internic.net/domain/named.root邑闺;

  • 頂級(jí)域名服務(wù)器(Top-level Name Server):負(fù)責(zé)管理在該頂級(jí)域名服務(wù)器下注冊(cè)的二級(jí)域名,例如.com 頂級(jí)域名服務(wù)器业扒,而 baidu.com 權(quán)威服務(wù)器是注冊(cè)在 .com 的權(quán)威域名服務(wù)器检吆;

  • 權(quán)威域名服務(wù)器(Authoritative Name Server):在特定區(qū)域內(nèi)具有唯一性,負(fù)責(zé)維護(hù)該區(qū)域內(nèi)的域名與 IP 地址的映射關(guān)系程储。在 DNS 應(yīng)答報(bào)文中蹭沛,標(biāo)志位 AA 標(biāo)識(shí)本次 DNS 記錄是否來(lái)自權(quán)威域名服務(wù)器臂寝,否則可能來(lái)自緩存。

DNS 解析分為 遞歸查詢迭代查詢 兩種方式摊灭。其中咆贬,客戶端與 Local DNS 之間一般采用遞歸查詢,而 DNS 服務(wù)器之間一般采用迭代查詢帚呼。

提示:如果 DNS 服務(wù)器之間使用遞歸查詢掏缎,對(duì)根域名服務(wù)器的負(fù)擔(dān)就太重了,而如果客戶端與本地域名服務(wù)器之間使用迭代查詢煤杀,DNS 服務(wù)對(duì)于客戶端就顯得不透明了眷蜈。

  • 遞歸查詢:

所謂遞歸查詢,與我們經(jīng)常提及的遞歸函數(shù)的思想是一致的沈自,即:如果 DNS 服務(wù)器查不到該域名酌儒,那么它將重新以客戶端的身份向其他 DNS 服務(wù)器發(fā)送查詢請(qǐng)求報(bào)文,客戶端只要等待最終結(jié)果即可枯途。用偽代碼呈現(xiàn)可能比較好理解忌怎,類似這樣:

fun dns(client: String, server: String, domain: String): String {
    if (server 查詢 domain 成功) {
        return "ip"
    }
    // server 以客戶端身份遞歸查詢
    return dns(server, "其他 DNS 服務(wù)器", domain)
}
  • 迭代查詢:

所謂迭代查詢,即:如果 DNS 服務(wù)器查不到該域名酪夷,它不會(huì)替客戶端完成后續(xù)的查詢工作榴啸,而是回復(fù)下一步應(yīng)當(dāng)向哪一個(gè)域名服務(wù)器進(jìn)行查詢,隨后客戶端重新向這個(gè)新的 DNS 服務(wù)器發(fā)送查詢請(qǐng)求晚岭。用偽代碼呈現(xiàn)可能比較好理解鸥印,類似這樣:

fun dns(client: String, server: String, domain: String): String {
    while (true) {
        if (server 查詢 domain 成功) {
            return "ip"
        } else {
            // client 繼續(xù)以客戶端身份迭代查詢
            server = "其他 DNS 服務(wù)器"
        }
    }
}

下面以查詢www.baidu.com為例,闡述一次 DNS 解析過(guò)程:

  • 0腥例、首先檢查 DNS 緩存辅甥,下一節(jié)我們會(huì)講,如果緩存老化或未命中燎竖,客戶端需要向 local DNS 發(fā)送查詢請(qǐng)求報(bào)文

  • 1、客戶端local DNS 發(fā)送查詢報(bào)文 query www.baidu.com要销,local DNS 首先檢查自身緩存构回,如果存在記錄則直接返回結(jié)果,查詢結(jié)束疏咐;如果緩存老化或未命中纤掸,則:

  • 2、local DNS根域名服務(wù)器發(fā)送查詢報(bào)文 query www.baidu.com浑塞,返回 .com 頂級(jí)域名服務(wù)器的地址(如果查無(wú)記錄)

  • 3借跪、local DNS.com 頂級(jí)域名服務(wù)器發(fā)送查詢報(bào)文 query www.baidu.com,返回baidu.com所在的權(quán)威域名服務(wù)器的地址(如果查無(wú)記錄)

  • 4酌壕、local DNSbaidu.com 權(quán)威域名服務(wù)器發(fā)送查詢報(bào)文 query www.baidu.com掏愁,得到 ip 地址歇由,存入自身緩存并返回給客戶端

DNS 解析過(guò)程

1.3 DNS 報(bào)文

由于下一節(jié)我們將實(shí)戰(zhàn)抓取 DNS 包,所以這一節(jié)我們先介紹 DNS 報(bào)文格式果港。DNS 協(xié)議定義了三種報(bào)文沦泌,查詢報(bào)文 & 應(yīng)答報(bào)文 & 更新報(bào)文,它們的總體上結(jié)構(gòu)是一致的辛掠。

  • 報(bào)文首部(Header)
    • 1谢谦、事務(wù) ID(Transaction ID):用來(lái)關(guān)聯(lián) DNS 查詢與應(yīng)答,DNS客戶端每次發(fā)送查詢請(qǐng)求都會(huì)使用不同的 ID萝衩,而服務(wù)器在響應(yīng)中重復(fù)這個(gè) ID
    • 2回挽、標(biāo)志(Flags):報(bào)文的標(biāo)志字段,詳見(jiàn)下圖
    • 3猩谊、問(wèn)題數(shù)(Question Count):指定問(wèn)題部分條目數(shù)
    • 4千劈、回答資源記錄數(shù)(Answer Resource Record count):指定應(yīng)答部分中回答資源條目數(shù)
    • 5、權(quán)威資源記錄數(shù)(Authority Resource Record count):指定權(quán)威資源記錄數(shù)
    • 6预柒、附加資源記錄數(shù)(Additional Resource Record count):指定附加資源記錄數(shù)
DNS 報(bào)文首部
  • 問(wèn)題(Question)

問(wèn)題用于表達(dá)具體查詢的問(wèn)題队塘,問(wèn)題個(gè)數(shù)與報(bào)文首部中的 問(wèn)題數(shù)(Question Count)字段一致。需要注意的是宜鸯,按照 DNS 查詢的目的憔古,DNS 解析可以分為 正向解析反向解析 兩種,正向解析將域名解析為 IP 地址淋袖,而反向解析則恰恰相反鸿市,用于將 IP 地址解析域名。問(wèn)題條目中 查詢類型 是比較重要的字段即碗,這里僅列出 5 個(gè)比較常用的類型:

QTYPE 描述
A(1) 將域名解析為 IPv4 地址
NS(2) 查詢域名服務(wù)
CNAME(5) 規(guī)范名稱
PTR(12) IP 地址解析為域名
AAAA(28) 將域名解析為 IPv6 地址
問(wèn)題格式

NSCNAME 不好理解焰情,這里解釋下:

CNAME(Canonical NAME) 是規(guī)范名稱或別名,用于將一個(gè)域名指向另一個(gè)域名剥懒。具體方法是:將一個(gè)域名作為 A 記錄 指向 IP 地址内舟,而其他域名作為別名指向 A 記錄的域名,此時(shí)如果需要更改 IP 地址初橘,就不需要更改每個(gè)域名的映射了验游,只需要修改 A 記錄 ,而 CNAME 記錄將自動(dòng)指向新的 IP 地址保檐。在 第 1.4 節(jié) DNS 解析實(shí)戰(zhàn) 中你將直接看到 CNAME 的應(yīng)用耕蝉。

NS(Name Server) :域名服務(wù)器記錄,用來(lái)指定該域名由哪個(gè) DNS 服務(wù)器來(lái)進(jìn)行解析

  • 資源記錄(Resource Record)

回答資源記錄夜只、權(quán)威資源記錄和附加資源記錄的格式相同垒在,其中 TTL(Time to Live,單位秒) 表示資源記錄的生存時(shí)間扔亥,也就是允許緩存的時(shí)間场躯。0 表示該記錄只能用于當(dāng)前響應(yīng)谈为,不允許被緩存。

資源記錄格式

1.4 DNS 報(bào)文的傳輸協(xié)議

DNS 協(xié)議在傳輸層同時(shí)使用 TCP 和 UDP 協(xié)議推盛,占用的是 53 端口峦阁,那么在什么情況下使用這兩種協(xié)議?

  • 在區(qū)域傳輸時(shí)使用 TCP 協(xié)議

主輔域名服務(wù)器在進(jìn)行區(qū)域傳送時(shí)(主輔域名服務(wù)器用于平衡負(fù)載)耘成,需要傳送的數(shù)據(jù)比簡(jiǎn)單的查詢 & 應(yīng)答報(bào)文的數(shù)據(jù)量要大得多了榔昔。使用 UDP 傳輸不可靠,所以采用應(yīng)用于傳輸大量數(shù)據(jù)瘪菌,可靠性更高的 TCP 協(xié)議撒会。

  • 在域名解析時(shí)使用 UDP 協(xié)議

為了得到一個(gè)域名的 IP 地址,往往會(huì)向多個(gè)域名服務(wù)器查詢师妙,如果使用 TCP 協(xié)議诵肛,那么每次請(qǐng)求都會(huì)存在三次握手連接時(shí)延,這樣使 DNS 服務(wù)變得很慢默穴。

需要注意的是怔檩,DNS 協(xié)議規(guī)定 UDP 報(bào)文段的最大長(zhǎng)度為 512 字節(jié),如果 DNS 報(bào)文段過(guò)長(zhǎng)時(shí)會(huì)被截?cái)啵ù藭r(shí) DNS 報(bào)文頭中標(biāo)志位 TC(Truncation)置為 1)蓄诽,多余的數(shù)據(jù)會(huì)直接丟棄薛训。這是因?yàn)?UDP 是無(wú)連接的,無(wú)法確定哪幾個(gè) UDP 包是屬于同一個(gè) DNS 報(bào)文段的仑氛。

1.5 DNS 解析實(shí)戰(zhàn)

計(jì)算機(jī)網(wǎng)絡(luò)是在實(shí)踐中發(fā)展起來(lái)的學(xué)科乙埃,僅停留在學(xué)習(xí)理論知識(shí)的層面是不夠的,下面我們將在實(shí)踐中學(xué)習(xí) DNS 解析锯岖。在這里介袜,我們是用 WireShark 抓取查詢www.baidu.com的 DNS 請(qǐng)求,具體步驟如下:

  • 步驟一:設(shè)置 WireShark 過(guò)濾條件

在過(guò)濾條件欄輸入條件:icmp || dns出吹,如下圖:

在終端輸入ping www.baidu.com遇伞,如下圖:

  • 步驟三:查看 DNS 查詢 & 應(yīng)答報(bào)文

返回 WireShark,查看抓取的消息捶牢,可以看到兩條 DNS 報(bào)文消息赃额,一條為查詢報(bào)文,另一條為應(yīng)答報(bào)文叫确,如下圖:

現(xiàn)在我們具體查看這兩條 DNS 報(bào)文消息,有了上一節(jié)的鋪墊芍锦,相信閱讀這兩段報(bào)文已經(jīng)很簡(jiǎn)單了竹勉。先看 DNS 協(xié)議的報(bào)文段部分,下層協(xié)議的報(bào)文段后面講:

  • 查詢報(bào)文:

在這個(gè)報(bào)文里提出了一個(gè)問(wèn)題娄琉,即:查詢 www.baidu.com 的 IPv4 地址(A 記錄)次乓,標(biāo)記位指出以下信息:這是一個(gè)查詢報(bào)文吓歇;這是一次正向解析;報(bào)文未截?cái)嗥毖灰蠓?wù)器執(zhí)行遞歸查詢城看;

  • 應(yīng)答報(bào)文:
  • 傳輸層 & 網(wǎng)絡(luò)層:

從圖中還驗(yàn)證了 DNS 在進(jìn)行域名解析時(shí)使用 UDP 協(xié)議,端口號(hào)為 53杏慰,與上一小節(jié)的分析一致测柠。另外,還可以看出 IP 包的第一跳是發(fā)送給局域網(wǎng)路由器缘滥,而不是直接發(fā)送給 local DNS 服務(wù)器轰胁,這也合理。

1.6 DNS 緩存

一次完整的 DNS 查詢過(guò)程需要訪問(wèn)多臺(tái) DNS 服務(wù)器才能得到最終的結(jié)果朝扼,這肯定會(huì)帶來(lái)一定的時(shí)延赃阀。為了改善時(shí)延,DNS 服務(wù)并不是每次請(qǐng)求都要去訪問(wèn) DNS 服務(wù)器擎颖,而是訪問(wèn)過(guò)一次后將 DNS 記錄緩存在本地榛斯。具體來(lái)說(shuō),DNS 服務(wù)是一個(gè)多級(jí)的緩存:

瀏覽器緩存 -> 操作系統(tǒng)緩存 -> 路由器緩存 -> local DNS 緩存 -> DNS 查詢

緩存并不是永久有效的搂捧,前面提到過(guò) DNS 應(yīng)答報(bào)文中的 TTL(Time to Live)值驮俗,它決定了 DNS 記錄在緩存中的有效時(shí)間。需要注意的是异旧,TTL 只是一個(gè)參考值意述,實(shí)際使用的緩存有效時(shí)間不一定等于該值,甚至是固定值吮蛹。這也引發(fā) DNS 緩存也存在一些“副作用”荤崇,我后文再說(shuō)。


2. DNS 存在的問(wèn)題

經(jīng)過(guò)上一節(jié)的 DNS 理論知識(shí)學(xué)習(xí)和實(shí)踐探索潮针,相信大家對(duì) DNS 已經(jīng)建立起了一定的認(rèn)識(shí)术荤。那么,DNS 是一個(gè)完備的服務(wù)嗎每篷,在實(shí)踐中它有存在什么問(wèn)題呢瓣戚?這一節(jié)我們來(lái)討論這個(gè)問(wèn)題。

2.1 DNS 查詢時(shí)延

從第一節(jié)的分析可以看出焦读,一次完整的 DNS 查詢過(guò)程需要訪問(wèn)多臺(tái) DNS 服務(wù)器才能得到最終的結(jié)果子库,這肯定會(huì)帶來(lái)一定的時(shí)延。從實(shí)踐來(lái)看矗晃,這個(gè)時(shí)間還不容小覷仑嗅。

提示: 有贊技術(shù)團(tuán)隊(duì)指出,DNS 解析時(shí)延的波動(dòng)較大,好的情況幾毫秒仓技、十幾毫秒就完成了鸵贬,差的時(shí)候,可能需要花很多時(shí)間:《有贊webview加速平臺(tái)探索與建設(shè)》 —— 有贊移動(dòng)組

2.2 緩存一致性

DNS 緩存的存在雖然減少了時(shí)延脖捻,卻是以犧牲一致性(consistency)為代價(jià)的阔逼。具體來(lái)說(shuō):Local DNS 是分地區(qū)、分運(yùn)營(yíng)商的地沮,在域名解析緩存的處理上嗜浮,實(shí)現(xiàn)策略就不統(tǒng)一了。有時(shí)候 Local DNS 的解析結(jié)果 可能不是最近诉濒、最優(yōu)的節(jié)點(diǎn)周伦,有的時(shí)候并不會(huì)遵從 TTL 的限制,而是設(shè)置一個(gè)固定時(shí)間未荒。這就會(huì)導(dǎo)致域名指向新的 IP 地址后专挪,一些客戶端依然訪問(wèn)了緩存中 舊的 IP 地址。

除了運(yùn)營(yíng)商的緩存策略外片排,緩存投毒也是降低 DNS 可用性的原因寨腔。攻擊者可以通過(guò) DNS 劫持,利用 DNS 的緩存機(jī)制不對(duì)應(yīng)答數(shù)據(jù)做檢查的漏洞率寡,誘騙 DNS 服務(wù)器緩存較大 TTL 的虛假 DNS 記錄迫卢,從而長(zhǎng)期欺騙客戶端。

2.3 DNS 劫持(中間人攻擊)

由于 DNS 缺乏 加密冶共、認(rèn)證乾蛤、完整性保護(hù)的安全機(jī)制,容易引發(fā)網(wǎng)絡(luò)完全問(wèn)題捅僵。最常見(jiàn)的域名劫持攻擊是針對(duì) DNS 報(bào)文首部的 事務(wù) ID 進(jìn)行欺騙家卖,由于事務(wù) ID 在查詢報(bào)文和應(yīng)答報(bào)文中是匹配的,因此偽裝 DNS 服務(wù)器可以提前將事務(wù) ID 相同的偽造報(bào)文發(fā)送到客戶端庙楚,以實(shí)現(xiàn)域名劫持(前提是合法的報(bào)文還未到達(dá))上荡,把目標(biāo)網(wǎng)站域名解析到錯(cuò)誤的 IP 地址。

提示: 獲取事務(wù) ID 的方法主要采用 網(wǎng)絡(luò)監(jiān)聽(tīng)與序列號(hào)猜測(cè)馒闷,具體可翻閱《計(jì)算機(jī)網(wǎng)路安全原理》 (第 8 章)—— 吳禮發(fā) 著

2.4 調(diào)度不精準(zhǔn)問(wèn)題

由于存在緩存酪捡、轉(zhuǎn)發(fā)、NAT 等問(wèn)題纳账,權(quán)威的 DNS 服務(wù)器可能會(huì)誤判客戶端所在的位置和運(yùn)營(yíng)商逛薇,從而導(dǎo)致解析出跨運(yùn)營(yíng)商訪問(wèn)的 IP 地址,用戶的訪問(wèn)速度降低疏虫。


3. HTTPDNS 原理

雖然 DNS 存在不少問(wèn)題金刁,但也不能因噎廢食放棄整套域名系統(tǒng)帅涂,解決方案無(wú)非是不走尋常路,換一種方式獲取 IP 地址 —— HTTPDNS尤蛮。

3.1 HTTPDNS 簡(jiǎn)介

與傳統(tǒng)的 DNS 解析不同,HTTPDNS 是自己搭建基于 HTTP 協(xié)議的服務(wù)器斯议,當(dāng)客戶端需要 DNS 解析的時(shí)候产捞,不再向 local 發(fā)送 DNS 查詢報(bào)文,而是直接通過(guò)請(qǐng)求直接訪問(wèn) HTTPDNS 接口哼御。而服務(wù)端則根據(jù)客戶端的位置和所屬運(yùn)營(yíng)商坯临,返回就近的 IP 地址。

當(dāng)然了恋昼,基于容災(zāi)考慮看靠,當(dāng)出現(xiàn) HTTPDNS 不可用時(shí)會(huì)觸發(fā)降級(jí)策略,使用運(yùn)營(yíng)商 LocalDNS 進(jìn)行域名解析液肌。

HTTPDNS 原理

3.2 HTTPDNS 優(yōu)勢(shì)

相對(duì)與 DNS挟炬,HTTPDNS 的主要優(yōu)點(diǎn)如下:

  • 降低時(shí)延
    縮短了查詢鏈路,不像 DNS 查詢那樣需要訪問(wèn)多臺(tái) DNS 服務(wù)器才能得到最終的結(jié)果嗦哆;

  • 域名防劫持
    域名解析請(qǐng)求直接發(fā)送至HTTPDNS服務(wù)器谤祖,繞過(guò)運(yùn)營(yíng)商 Local DNS,避免域名劫持問(wèn)題老速;

  • 調(diào)度精準(zhǔn)
    由于 DNS 服務(wù)器端獲取的是真實(shí)客戶端 IP 而非 Local DNS 的 IP粥喜,能夠精確基于客戶端位置、運(yùn)營(yíng)商信息橘券,獲得最精準(zhǔn)的解析結(jié)果额湘,讓客戶端就近接入業(yè)務(wù)節(jié)點(diǎn)

  • 快速生效
    域名解析結(jié)果變更時(shí),HTTPDNS 服務(wù)沒(méi)有傳統(tǒng)DNS 服務(wù)多級(jí)緩存的影響旁舰,域名更新能夠更快地覆蓋到全量客戶端锋华。

3.3 HTTPDNS 正向效益

目前,騰訊鬓梅、阿里和百度都有自己的 HTTPDNS 解決方案供置,筆者收集了他們公示的使用效益,具體如下:

  • 騰訊

    • 官方文檔 :覆蓋超4億+用戶绽快,減少了超過(guò)60%的由于域名劫持導(dǎo)致的用戶訪問(wèn)失敗芥丧,減少了22%的用戶平均延遲;
    • 官方博客:用戶平均訪問(wèn)延遲下降超過(guò)10%坊罢,訪問(wèn)失敗率下降了超過(guò)五分之一续担;
  • 百度

    • 官方博客:iOS劫持率由0.12%降低到0.0002%,Android劫持率由0.25%降低到0.05%活孩,第二點(diǎn)的收益不明顯物遇,原因在于Feed業(yè)務(wù)主要目標(biāo)群體在國(guó)內(nèi),百度在國(guó)內(nèi)節(jié)點(diǎn)布局相對(duì)豐富,服務(wù)整體質(zhì)量也較高询兴;
  • 阿里
    未查及...


4. 總結(jié)

應(yīng)試方面乃沙,建議重點(diǎn)掌握四層 DNS 解析過(guò)程 & HTTPDNS 原理、理解知曉 DNS 存在的問(wèn)題诗舰、DNS 報(bào)文格式重點(diǎn)理解 TTL警儒、幾種查詢類型。


參考資料

實(shí)用資源


創(chuàng)作不易,你的「三連」是丑丑最大的動(dòng)力族扰,我們下次見(jiàn)厌丑!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市别伏,隨后出現(xiàn)的幾起案子蹄衷,更是在濱河造成了極大的恐慌,老刑警劉巖厘肮,帶你破解...
    沈念sama閱讀 216,544評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件愧口,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡类茂,警方通過(guò)查閱死者的電腦和手機(jī)耍属,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)巩检,“玉大人厚骗,你說(shuō)我怎么就攤上這事【た蓿” “怎么了领舰?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,764評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)迟螺。 經(jīng)常有香客問(wèn)我冲秽,道長(zhǎng),這世上最難降的妖魔是什么矩父? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,193評(píng)論 1 292
  • 正文 為了忘掉前任锉桑,我火速辦了婚禮,結(jié)果婚禮上窍株,老公的妹妹穿的比我還像新娘民轴。我一直安慰自己攻柠,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,216評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布后裸。 她就那樣靜靜地躺著瑰钮,像睡著了一般。 火紅的嫁衣襯著肌膚如雪轻抱。 梳的紋絲不亂的頭發(fā)上飞涂,一...
    開(kāi)封第一講書(shū)人閱讀 51,182評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音祈搜,去河邊找鬼。 笑死士八,一個(gè)胖子當(dāng)著我的面吹牛容燕,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播婚度,決...
    沈念sama閱讀 40,063評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼蘸秘,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了蝗茁?” 一聲冷哼從身側(cè)響起醋虏,我...
    開(kāi)封第一講書(shū)人閱讀 38,917評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎哮翘,沒(méi)想到半個(gè)月后颈嚼,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,329評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡饭寺,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,543評(píng)論 2 332
  • 正文 我和宋清朗相戀三年阻课,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片艰匙。...
    茶點(diǎn)故事閱讀 39,722評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡限煞,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出员凝,到底是詐尸還是另有隱情署驻,我是刑警寧澤,帶...
    沈念sama閱讀 35,425評(píng)論 5 343
  • 正文 年R本政府宣布健霹,位于F島的核電站旺上,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏骤公。R本人自食惡果不足惜抚官,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,019評(píng)論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望阶捆。 院中可真熱鬧凌节,春花似錦钦听、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,671評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至卒煞,卻和暖如春痪宰,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背畔裕。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,825評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工衣撬, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人扮饶。 一個(gè)月前我還...
    沈念sama閱讀 47,729評(píng)論 2 368
  • 正文 我出身青樓具练,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親甜无。 傳聞我的和親對(duì)象是個(gè)殘疾皇子扛点,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,614評(píng)論 2 353