計(jì)算機(jī)網(wǎng)絡(luò)——傳輸層-TCP

計(jì)算機(jī)網(wǎng)絡(luò)系列博文——目錄

概述

TCP服務(wù)

  • 多路復(fù)用與多路分解
    將端系統(tǒng)間的IP交付服務(wù)擴(kuò)展為運(yùn)行在端系統(tǒng)上的兩進(jìn)程間的交付服務(wù)粘茄,即運(yùn)輸層多路復(fù)用與多路分解签舞。
  • 可靠數(shù)據(jù)傳輸
    即保證分組不錯(cuò)不丟不亂
  • 擁塞控制
    防止任何一條TCP連接用過(guò)多的流量淹沒(méi)通信主機(jī)之間的鏈路和交換設(shè)備以優(yōu)化整個(gè)因特網(wǎng)環(huán)境

TCP特點(diǎn)

  • 三次握手 兩進(jìn)程在通過(guò)TCP傳遞傳遞有效數(shù)據(jù)前,必須互相握手柒瓣,即發(fā)送某些預(yù)備報(bào)文段以建立確保數(shù)據(jù)傳輸?shù)膮?shù)儒搭。
    客戶首先發(fā)出一個(gè)特殊報(bào)文段,服務(wù)器用另一個(gè)特殊報(bào)文段響應(yīng)芙贫,最后搂鲫,客戶用第三個(gè)特殊報(bào)文段作為響應(yīng)。前兩個(gè)特殊報(bào)文段不承載有效載荷磺平,第三個(gè)報(bào)文段可以承載有效載荷魂仍。

  • 面向連接
    通信雙方在發(fā)送數(shù)據(jù)之前必須建立連接。
    TCP協(xié)議僅在端系統(tǒng)中運(yùn)行拣挪,連接狀態(tài)在端系統(tǒng)中維護(hù)擦酌,中間網(wǎng)絡(luò)元素不會(huì)維護(hù)TCP連接狀態(tài)。

  • 雙全工服務(wù) AB兩進(jìn)程間的TCP連接可以從A向B傳輸數(shù)據(jù)也可以從B向A傳輸數(shù)據(jù)菠劝。
    TCP是雙全工的

  • 點(diǎn)對(duì)點(diǎn) TCP是點(diǎn)對(duì)點(diǎn)的赊舶,不支持多播
    多播: 一次發(fā)送操作中,從一個(gè)發(fā)送方將數(shù)據(jù)傳輸給多個(gè)接收方

  • 緩存上層數(shù)據(jù) 發(fā)送方應(yīng)用層通過(guò)套接字向TCP傳遞數(shù)據(jù)闸英,TCP將數(shù)據(jù)引導(dǎo)至該連接的發(fā)送緩存中锯岖,發(fā)送緩存在三次握手期間設(shè)置。

  • 最大報(bào)文段(有效載荷)長(zhǎng)度(Maximun Segment Size,MSS) TCP可以從緩存中取出并放入報(bào)文段中的最大數(shù)據(jù)數(shù)量甫何。 MSS通常根據(jù)最大鏈路層幀長(zhǎng)度設(shè)置出吹。該設(shè)置保證一個(gè)TCP報(bào)文段封裝在IP數(shù)據(jù)報(bào)中后,再加上TCP/IP的首部辙喂,其總長(zhǎng)度將適合單個(gè)鏈路層幀捶牢。

  • 流水線機(jī)制 TCP使用流水線機(jī)制鸠珠,但結(jié)合了GBN和SR的特點(diǎn),在收發(fā)雙方都設(shè)置有緩存

TCP連接的組成

  • 兩個(gè)端系統(tǒng)中秋麸,各自的TCP緩存渐排,變量,與進(jìn)程連接的套接字灸蟆。
  • 兩端系統(tǒng)之間的網(wǎng)絡(luò)元素沒(méi)有為該連接分配任何緩存和變量驯耻。

TCP報(bào)文段

TCP報(bào)文段由首部字段和數(shù)據(jù)字段組成。數(shù)據(jù)字段最大長(zhǎng)度由MSS限制炒考。

TCP報(bào)文段.png

首部字段結(jié)構(gòu)

  1. 源端口號(hào) 用于多路復(fù)用/分解
  2. 目的端口號(hào) 用于多路復(fù)用/分解
  3. 序號(hào)字段 32bit 用于實(shí)現(xiàn)可靠數(shù)據(jù)傳輸
  4. 確認(rèn)號(hào)字段 32bit 用于實(shí)現(xiàn)可靠數(shù)據(jù)傳輸
  5. 接收窗口字段 16bit 用于流量控制
  6. 檢驗(yàn)和字段 16bit 用于差錯(cuò)檢測(cè)
  7. 首部長(zhǎng)度字段 4bit 指示TCP首部長(zhǎng)度可缚。(選項(xiàng)字段常為空,故TCP首部典型長(zhǎng)度為20byte)
  8. 選項(xiàng)字段 可選的斋枢,變長(zhǎng)的帘靡。 可用于協(xié)商MSS大小,傳輸窗口調(diào)節(jié)因子瓤帚,時(shí)間戳等描姚。
  9. 標(biāo)志字段 6bit
    ACK位用于指示該報(bào)文段包括對(duì)一個(gè)已被成功接收的報(bào)文段的確認(rèn)。
    RST戈次,SYN,FIN位用于連接的建立與拆除轩勘。
    PSH位指示接收方應(yīng)立即將數(shù)據(jù)交付上層。
    URG位指示報(bào)文段中存在被發(fā)送端上層實(shí)體設(shè)置為緊急的數(shù)據(jù)朝扼。
    在實(shí)踐中赃阀,PSH,URG未被使用擎颖。 (然鵝可以監(jiān)測(cè)到一些報(bào)文的PSH位被置位)

TCP可靠數(shù)據(jù)傳輸

序號(hào)和確認(rèn)號(hào)

TCP將數(shù)據(jù)視為無(wú)結(jié)構(gòu)的有序字節(jié)流榛斯。

報(bào)文段序號(hào) 序號(hào)建立在傳送的字節(jié)流上而非建立在傳送的報(bào)文段序列上。報(bào)文段序號(hào)是該報(bào)文段首字節(jié)的字節(jié)流編號(hào)搂捧。發(fā)送方TCP隱式地對(duì)字節(jié)流中的每一個(gè)字節(jié)編號(hào)驮俗,將一個(gè)報(bào)文段中首字節(jié)的字節(jié)編號(hào)作為該報(bào)文段的序號(hào)。

確認(rèn)號(hào) 主機(jī)A填充進(jìn)報(bào)文段的確認(rèn)號(hào)是主機(jī)A期望從主機(jī)B收到的下一字節(jié)的序號(hào)允跑。

累計(jì)確認(rèn) TCP只確認(rèn)流中至第一個(gè)丟失字節(jié)為止的字節(jié)王凑。即確認(rèn)號(hào)之前的所有字節(jié)都已正確接收。

失序報(bào)文段 TCP RFC 中未規(guī)定如何處理收到的失序報(bào)文段聋丝。實(shí)現(xiàn)者可以令接收方直接丟棄失序報(bào)文段索烹,也可以令接收方緩存失序的字節(jié)。實(shí)踐中一般緩存失序的字節(jié)弱睦。

初始序號(hào) 一條TCP連接雙方可以隨機(jī)地選擇初始序號(hào)百姓,以減小將網(wǎng)絡(luò)中的其它報(bào)文段(先前建立,現(xiàn)已關(guān)閉的連接)誤認(rèn)為本連接報(bào)文段的可能况木。

確認(rèn)信號(hào) 確認(rèn)報(bào)文段可以在一個(gè)獨(dú)立的報(bào)文段中傳輸(數(shù)據(jù)字段為空)垒拢,也可以被一個(gè)含有效數(shù)據(jù)的報(bào)文段捎帶旬迹。

丟包檢測(cè)與恢復(fù)

  • TCP提供定時(shí)器超時(shí)和冗余ACK兩種丟包檢測(cè)機(jī)制(冗余ACK也可表征包錯(cuò)誤)
  • 相應(yīng)地,TCP提供超時(shí)重傳和快速重傳兩種丟包恢復(fù)機(jī)制(快速重傳也可恢復(fù)包錯(cuò)誤)

TCP超時(shí)機(jī)制

  • TCP需要超時(shí)重傳機(jī)制以處理報(bào)文段的丟失求类。
    一個(gè)重要的問(wèn)題是如何設(shè)置超時(shí)間隔的長(zhǎng)度奔垦。
    RTT可以作為超時(shí)間隔長(zhǎng)度設(shè)置的一個(gè)重要參考。

往返時(shí)間估計(jì)

往返時(shí)延(Round-Trip Time,RTT) 從發(fā)送端發(fā)送一段數(shù)據(jù)開(kāi)始尸疆,到發(fā)送端收到來(lái)自接收端的確認(rèn)總共經(jīng)歷的時(shí)延椿猎。
RTT由三個(gè)部分決定:鏈路的傳播時(shí)間,端系統(tǒng)的處理時(shí)間仓技,路由器的緩存中的排隊(duì)和處理時(shí)間鸵贬。

樣本RTT(SampleRTT) 報(bào)文段的樣本RTT是 從某報(bào)文段交付IP到對(duì)該報(bào)文段的確認(rèn)被收到之間的時(shí)間量。TCP根據(jù)具體實(shí)現(xiàn)在某些時(shí)刻作樣本RTT測(cè)量脖捻。只可能為已發(fā)送未確認(rèn)報(bào)文段做測(cè)量,不會(huì)為已重傳報(bào)文段做測(cè)量
報(bào)文段的樣本RTT會(huì)隨著路由器擁塞和端系統(tǒng)負(fù)載情況變化兆衅,任一給定樣本RTT都是非典型的地沮。

平均RTT(EstimatedRTT) TCP維護(hù)樣本RTT的均值,每獲得一個(gè)新樣本就更新該均值羡亩。
EstimatedRTT = (1-a) * SampleRTT + a * SampleRTT
這是一種老化算法摩疑,或稱指數(shù)加權(quán)移動(dòng)平均。新樣本權(quán)重大于老樣本權(quán)重畏铆。
a常取1/8

偏差RTT(DevRTT) 描述RTT的偏差
DevRTT = (1-b) * DevRTT + b * | SampleRTT - EstimatedRTT |
b常取1/4
RTT波動(dòng)越大雷袋,DevRTT越大

超時(shí)間隔加倍

  • 每當(dāng)超時(shí)事件發(fā)生時(shí),TCP會(huì)重置定時(shí)器辞居,且新TimeoutInterval為原TimeoutInterval的兩倍楷怒。而在其它情況下,TimeoutInterval或根據(jù)EstimatedRTT和DevRTT計(jì)算瓦灶,或使用初始值鸠删。
  • 超時(shí)間隔加倍潛在的提供了一定的擁塞控制功能。因?yàn)槌瑫r(shí)事件很可能是由網(wǎng)絡(luò)擁塞引起的贼陶,超時(shí)間隔加倍有助于緩解擁塞刃泡。

重傳超時(shí)間隔 TimeoutInterval

TimeoutInterval = TimeoutInterval_{(0)} (0) 初始值
TimeoutInterval = EstimatedRTT + 4*DevRTT (1) 正常事件
TimeoutInterval = 2*TimeoutInterval (2) 超時(shí)事件

即通常情況下超時(shí)間隔大于平均往返時(shí)間,RTT波動(dòng)越大碉怔,超時(shí)間隔的余量也應(yīng)越大烘贴。
初始TimeoutInterval常設(shè)為1秒,出現(xiàn)超時(shí)后TimeoutInterval翻倍

快速重傳

報(bào)文丟失時(shí)撮胧,因超時(shí)周期可能較長(zhǎng)桨踪,通過(guò)超時(shí)機(jī)制觸發(fā)的重傳可能導(dǎo)致端到端時(shí)延過(guò)長(zhǎng)。

冗余ACK 是發(fā)送方檢測(cè)丟包的另一手段趴樱。冗余ACK即對(duì)同一個(gè)報(bào)文段的多個(gè)ACK馒闷。

快速重傳
發(fā)送方收到三個(gè)冗余ACK酪捡,即收到同一個(gè)報(bào)文的四個(gè)ACK時(shí),執(zhí)行快速重傳纳账,即在超時(shí)事件發(fā)生之前重傳丟失的報(bào)文段逛薇。
為什么是三次冗余ACK?因?yàn)榉纸M重排(亂序)也會(huì)導(dǎo)致冗余ACK疏虫,三次冗余ACK從概率上或者說(shuō)從實(shí)踐經(jīng)驗(yàn)上強(qiáng)烈地指示發(fā)送方很可能發(fā)生了丟包而非亂序永罚。

收發(fā)雙方行為

發(fā)送方事件

  1. 接收上層數(shù)據(jù)
  2. 定時(shí)器超時(shí)
  3. 收到ACK

接收方ACK產(chǎn)生策略 [RFC 5681]
假定接收方期望下一個(gè)到達(dá)的報(bào)文段為i

  • 若 報(bào)文段i到達(dá),且i之前的所有報(bào)文都已被確認(rèn)(發(fā)送了i-1的ACK) 則 延遲ACK卧秘。等待報(bào)文段i+1 500ms呢袱,若500ms后i+1未到達(dá),發(fā)送i的ACK
  • 若 報(bào)文段i到達(dá)翅敌,且i之前有報(bào)文未被確認(rèn)(i-1的ACK未被發(fā)送) 則 立即發(fā)送單個(gè)累積ACK(i的ACK),以確認(rèn)兩個(gè)按序報(bào)文段
  • 若 報(bào)文段j到達(dá)羞福,j>i,即檢測(cè)出失序 則 立即發(fā)送一個(gè)冗余ACK(即發(fā)送i-1的ACK)以指示下一個(gè)期待的報(bào)文段為i
  • 若 報(bào)文段i到達(dá),且i能部分或完全填充之前失序接收的報(bào)文序列間的間隔蚯涮, 則 立即發(fā)送i的ACK

TCP差錯(cuò)恢復(fù)機(jī)制——回退N步與選擇重傳

  • TCP使用累積確認(rèn)技術(shù)治专,正確接收但失序的報(bào)文段不會(huì)被接收方逐個(gè)確認(rèn),對(duì)報(bào)文段i的確認(rèn)代表i之前的所有報(bào)文都已正確接收遭顶。

  • 基于累積確認(rèn)张峰,TCP發(fā)送方僅需維護(hù)已發(fā)送但未被確認(rèn)的最小序號(hào)和下一個(gè)待發(fā)送字節(jié)的序號(hào)即可。

  • 大多數(shù)TCP實(shí)現(xiàn)會(huì)將正確接收但失序的報(bào)文段緩存起來(lái)棒旗。當(dāng)報(bào)文i的ACK超時(shí)后喘批,TCP不會(huì)依照回退N步的策略將報(bào)文段i,i+1.....N都重傳铣揉,而是只重傳報(bào)文段i饶深。

  • TCP的差錯(cuò)恢復(fù)機(jī)制是回退N步與選擇重傳的結(jié)合。

流量控制

  • 速度匹配服務(wù)老速,即匹配發(fā)送方的發(fā)送速率與接收方的接收速率粥喜。
    TCP連接的兩側(cè)有各自的緩沖區(qū),若發(fā)送/接收速率不匹配橘券,易造成緩沖區(qū)溢出额湘。

  • 流量控制與擁塞控制 兩者的措施都是抑制發(fā)送方,但兩者目的不同旁舰。流量控制在接收方速率低于發(fā)送方速率時(shí)抑制發(fā)送方锋华,擁塞控制在網(wǎng)絡(luò)擁塞時(shí)抑制發(fā)送方。

  • 接收窗口 發(fā)送方維護(hù)的一個(gè)狀態(tài)變量箭窜,用以實(shí)現(xiàn)流量控制毯焕。接收窗口給發(fā)送方關(guān)于接收方還有多少可用緩存空間的指示。

  • 接收方在給發(fā)送方的報(bào)文中,包含關(guān)于自身剩余緩存大小的字段纳猫,即接收窗口字段婆咸。

  • 發(fā)送方應(yīng)當(dāng)保證所有已發(fā)送未確認(rèn)分組的總數(shù)據(jù)量不會(huì)超出接收窗口。

  • 零接收窗口 在接收窗口為0時(shí)芜辕,若完全抑制發(fā)送方尚骄,則即使將來(lái)接收方的緩存有空余,也無(wú)法通知發(fā)送方侵续。故即使在接收窗口為0時(shí)倔丈,發(fā)送方也會(huì)發(fā)生帶一個(gè)字節(jié)數(shù)據(jù)的報(bào)文段,以備接收方確認(rèn)状蜗。

TCP連接管理

本節(jié)考察TCP連接的建立與拆除需五。

連接建立

三次握手

  1. SYN報(bào)文段m1
    客戶端TCP向服務(wù)端TCP發(fā)送一個(gè)特殊TCP報(bào)文段m1,m1被稱為SYN報(bào)文段轧坎;
    m1不含應(yīng)用層數(shù)據(jù)宏邮;
    m1的首部中標(biāo)志位SYN置為1;
    客戶端還會(huì)選擇一個(gè)隨機(jī)序號(hào)client_isn缸血,置于m1的序號(hào)字段中蜀铲,作為發(fā)送方初始序號(hào);
  2. SYNACK報(bào)文段m2
    當(dāng)m1到達(dá)服務(wù)端后属百,服務(wù)器為服務(wù)器側(cè)的該TCP連接分配緩存和變量,并向客戶TCP發(fā)送允許連接的報(bào)文段m2;
    m2不含應(yīng)用層數(shù)據(jù)变姨;
    m2的SYN位被置位1族扰;
    m2首部的確認(rèn)號(hào)字段被置為client_isn+1;
    服務(wù)器選擇自己的初始序號(hào)server_isn,將之置于序號(hào)字段;
  3. 確認(rèn)與數(shù)據(jù)報(bào)文段m3
    客戶端收到m2后定欧,為該TCP分配緩存和變量;
    客戶向服務(wù)端發(fā)送報(bào)文段m3渔呵;
    m3對(duì)服務(wù)器的允許連接報(bào)文段m2進(jìn)行了確認(rèn),即將server_isn+1置于確認(rèn)字段;
    此時(shí)連接已經(jīng)建立砍鸠,故m3的SYN比特置為0;
    報(bào)文段m3中可攜帶有效負(fù)載;

三次握手之后扩氢,TCP連接上可用發(fā)送數(shù)據(jù)報(bào)文段。數(shù)據(jù)報(bào)文段的SYN比特都被置為0爷辱。

SYN洪泛

  • 注意在三次握手中录豺,第一次握手發(fā)起方不會(huì)為TCP分配資源,第二次握手接收方會(huì)為TCP分配資源饭弓,第三次握手發(fā)起方會(huì)為TCP分配資源双饥。

  • 故而,發(fā)起方若只發(fā)送第一次握手弟断,就可以在很少的代價(jià)下(發(fā)起方不必為TCP維護(hù)資源)讓接收方付出較大的代價(jià)(接收方為TCP分配資源直至等待第三次握手超時(shí))咏花。

  • SYN cookie
    SYN cookie技術(shù)可以很好地應(yīng)對(duì)SYN洪泛攻擊。對(duì)于部署了SYN cookie的操作系統(tǒng)阀趴,接收方在第二次握手時(shí)不會(huì)分配資源昏翰,而是把狀態(tài)信息苍匆,TCP標(biāo)識(shí)(雙方IP,port)棚菊,接收方秘密值一起hash加密后作為初始序號(hào)浸踩,放置到第二次握手的序號(hào)字段中。接收方只有在收到第三次握手信號(hào)并驗(yàn)證后才會(huì)為TCP分配資源窍株。
    在這種情況下民轴,要施時(shí)SYN洪泛的發(fā)起方必須消耗較多資源維護(hù)連接信息。

連接拆除

  • 參與TCP連接的兩者之任一都可以終止該連接球订。連接結(jié)束后后裸,端系統(tǒng)中的相關(guān)資源將被釋放。

  • 終止連接時(shí)冒滩,終止發(fā)起方發(fā)送一個(gè)特殊的TCP報(bào)文段微驶,該報(bào)文段首部行中的FIN標(biāo)志位被置為1;

  • 另一方接收到該報(bào)文段后开睡,向發(fā)送方回送一個(gè)確認(rèn)報(bào)文段因苹,并向終止發(fā)起方發(fā)送自己的終止報(bào)文段,該報(bào)文段中FIN標(biāo)志位為1篇恒;

  • 最后扶檐,終止發(fā)起方對(duì)另一方的終止報(bào)文段進(jìn)行確認(rèn);

套接字不匹配

考察端系統(tǒng)收到一個(gè)TCP報(bào)文段胁艰,而該報(bào)文段沒(méi)有匹配套接字的情況款筑,即沒(méi)有服務(wù)端進(jìn)程在監(jiān)聽(tīng)相應(yīng)端口的情況。
此時(shí)腾么,主機(jī)向源發(fā)送一個(gè)特殊的重置報(bào)文段奈梳,該報(bào)文段將RST位置為1。

UDP套接字不匹配時(shí)解虱,主機(jī)向源發(fā)送一個(gè)特殊的ICMP數(shù)據(jù)報(bào)攘须。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市殴泰,隨后出現(xiàn)的幾起案子于宙,更是在濱河造成了極大的恐慌,老刑警劉巖艰匙,帶你破解...
    沈念sama閱讀 216,651評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件限煞,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡员凝,警方通過(guò)查閱死者的電腦和手機(jī)署驻,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人旺上,你說(shuō)我怎么就攤上這事瓶蚂。” “怎么了宣吱?”我有些...
    開(kāi)封第一講書人閱讀 162,931評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵窃这,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我征候,道長(zhǎng)杭攻,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 58,218評(píng)論 1 292
  • 正文 為了忘掉前任疤坝,我火速辦了婚禮兆解,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘跑揉。我一直安慰自己锅睛,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,234評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布历谍。 她就那樣靜靜地躺著现拒,像睡著了一般。 火紅的嫁衣襯著肌膚如雪望侈。 梳的紋絲不亂的頭發(fā)上印蔬,一...
    開(kāi)封第一講書人閱讀 51,198評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音脱衙,去河邊找鬼扛点。 笑死,一個(gè)胖子當(dāng)著我的面吹牛岂丘,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播眠饮,決...
    沈念sama閱讀 40,084評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼奥帘,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了仪召?” 一聲冷哼從身側(cè)響起寨蹋,我...
    開(kāi)封第一講書人閱讀 38,926評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎扔茅,沒(méi)想到半個(gè)月后已旧,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,341評(píng)論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡召娜,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,563評(píng)論 2 333
  • 正文 我和宋清朗相戀三年运褪,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,731評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡秸讹,死狀恐怖檀咙,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情璃诀,我是刑警寧澤弧可,帶...
    沈念sama閱讀 35,430評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站劣欢,受9級(jí)特大地震影響棕诵,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜凿将,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,036評(píng)論 3 326
  • 文/蒙蒙 一校套、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧丸相,春花似錦搔确、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,676評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至弛作,卻和暖如春涕蜂,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背映琳。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,829評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工机隙, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人萨西。 一個(gè)月前我還...
    沈念sama閱讀 47,743評(píng)論 2 368
  • 正文 我出身青樓有鹿,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親谎脯。 傳聞我的和親對(duì)象是個(gè)殘疾皇子葱跋,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,629評(píng)論 2 354

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