TCP三次握手和四次揮手

????????TCP是一種面向連接的唠帝、可靠的屯掖、基于字節(jié)流的傳輸層通信協(xié)議,在發(fā)送數(shù)據(jù)前襟衰,通信雙方必須在彼此間建立一條連接贴铜。所謂的“連接”,其實(shí)是客戶端和服務(wù)端保存的一份關(guān)于對(duì)方的信息右蒲,如ip地址阀湿、端口號(hào)等赶熟。

????????一個(gè)TCP連接通常分為三個(gè)階段:連接瑰妄、數(shù)據(jù)傳輸、退出(關(guān)閉)映砖。通過三次握手建立一個(gè)鏈接间坐,通過四次揮手來關(guān)閉一個(gè)連接。

1.TCP報(bào)文的頭部結(jié)構(gòu)

在了解TCP連接之前先來了解一下TCP報(bào)文的頭部結(jié)構(gòu)邑退。


TCPHeader.png
1.1 端口號(hào)(16位)

????????源端口號(hào)標(biāo)示這段報(bào)文來自哪里竹宋;目的端口號(hào)標(biāo)示這段報(bào)文要發(fā)往哪里。進(jìn)行tcp通信時(shí)地技,一般客戶端是通過系統(tǒng)自動(dòng)選擇的臨時(shí)端口號(hào)蜈七,而服務(wù)器一般是使用指定的端口號(hào)。

1.2 序列號(hào)seq(32位)

????????因?yàn)門CP使用IP來傳輸報(bào)文段莫矗,而IP不能過濾掉重復(fù)的報(bào)文飒硅,也不能保證報(bào)文的順序砂缩。比如客戶端給服務(wù)端發(fā)送一條5kb的數(shù)據(jù),如果tcp一次只能發(fā)1kb三娩,那就要將數(shù)據(jù)分成5段分5次來發(fā)庵芭,將這5段數(shù)據(jù)分別編號(hào)為1、2雀监、3双吆、4、5会前,發(fā)送的時(shí)候按照這個(gè)順序進(jìn)行發(fā)送好乐,服務(wù)端收到的順序可能就是13254,也就是說服務(wù)端收到的順序和發(fā)送的順序可能是不一致的瓦宜,甚至因?yàn)槟承┮蛩?比如客戶端沒收到服務(wù)端回復(fù)的ACK數(shù)據(jù)包就會(huì)重發(fā)數(shù)據(jù))導(dǎo)致服務(wù)端收到多個(gè)編號(hào)相同的數(shù)據(jù)曹宴。

????????那這樣的話服務(wù)端收到全部數(shù)據(jù)后要如何將它們拼接成正確的數(shù)據(jù)呢?這里就用到了序列號(hào)歉提。首先序列號(hào)被系統(tǒng)初始化為一個(gè)隨機(jī)值ISN笛坦,一個(gè)報(bào)文的序列號(hào)就是ISN+這個(gè)報(bào)文攜帶的數(shù)據(jù)的第一個(gè)字節(jié)的偏移量。比如上面所說的例子要發(fā)5個(gè)報(bào)文苔巨,第一個(gè)報(bào)文的第一個(gè)字節(jié)的偏移量為0版扩,序列號(hào)就是ISA+0;由于第一個(gè)報(bào)文攜帶的數(shù)據(jù)大小是1kb(1024)侄泽,所以第二個(gè)報(bào)文的第一個(gè)字節(jié)的偏移量就是1024礁芦,序列號(hào)就是ISA+1024,以此類推悼尾。(注意實(shí)際上三次握手時(shí)是會(huì)占據(jù)一個(gè)序列號(hào)的柿扣,所以實(shí)際上正式發(fā)送數(shù)據(jù)時(shí)第一個(gè)報(bào)文的序列號(hào)是ISA+1+0,這里為了方便理解就不考慮三次握手時(shí)占據(jù)的那個(gè)序列號(hào))闺魏。

1.3 確認(rèn)號(hào)ack(32位)

????????還是用前面的例子未状,服務(wù)端收到客戶端發(fā)過來的報(bào)文后需要給客戶端回復(fù)一個(gè)ack數(shù)據(jù)包,回復(fù)報(bào)文的確認(rèn)號(hào)的值等于服務(wù)端收到的報(bào)文的序列號(hào)的值+1析桥,比如服務(wù)端當(dāng)前收到的報(bào)文的序列號(hào)是ISN+2048(也就是第3段數(shù)據(jù))司草,那么它回復(fù)客戶端的報(bào)文的確認(rèn)號(hào)的值就是ISN+2048+1,其作用就是告訴客戶端ISN+2048+1之前的所有數(shù)據(jù)都已經(jīng)收到了泡仗。

????????關(guān)于ack回復(fù)有幾點(diǎn)需要說明(下面客戶端為發(fā)送端埋虹,服務(wù)端為接收端):

a.客戶端發(fā)送一個(gè)報(bào)文后并不需要等服務(wù)端的ack回復(fù)就可以接著發(fā)下一條報(bào)文。

b.服務(wù)端回復(fù)ack時(shí)娩怎,必須要確保確認(rèn)號(hào)之前的數(shù)據(jù)全部已經(jīng)收到了搔课,比如上面的例子,如果序列號(hào)是ISN+2048的報(bào)文收到了截亦,但是ISN+1024的報(bào)文還沒收到爬泥,那就不能回復(fù)ISN+2048+1的ack旦事。

c.服務(wù)端在收到數(shù)據(jù)后不是立即給客戶端發(fā)送ack的,一般會(huì)有200ms的延遲(系統(tǒng)有個(gè)定時(shí)器每隔200ms來檢查是否需要發(fā)送ack包)急灭。這么做是因?yàn)門CP數(shù)據(jù)包到達(dá)的順序是不保證的姐浮,就比如上面必須要等ISN+1024的數(shù)據(jù)收到了才能回復(fù)ISN+2048+1的ack,這個(gè)時(shí)候就只用回復(fù)ISN+2048+1這一個(gè)ack就可以了葬馋,不需要回復(fù)ISN+1024+1的ack了卖鲤,因?yàn)榛貜?fù)ISN+2048+1的ack就已經(jīng)告訴客戶端ISN+2048+1之前的數(shù)據(jù)已經(jīng)全部收到了,這樣做還可以減少網(wǎng)絡(luò)流量畴嘶。當(dāng)然如果ISN+1024的數(shù)據(jù)丟包導(dǎo)致服務(wù)端一直沒收到蛋逾,那客戶端也就一直收不到ack回復(fù),客戶端就會(huì)從上次收到的ack回復(fù)開始重發(fā)數(shù)據(jù)窗悯,包括服務(wù)端已經(jīng)收到的ISN+2048數(shù)據(jù)也會(huì)重發(fā)区匣。另外如果服務(wù)端剛好也有數(shù)據(jù)要發(fā)給客戶端,那么就會(huì)在發(fā)送數(shù)據(jù)的TCP數(shù)據(jù)包里帶上ack信息蒋院。

1.4 頭部長(zhǎng)度(4位)

頭部長(zhǎng)度是以32bit(4字節(jié))為一個(gè)單位亏钩,頭部長(zhǎng)度的值表示TCP頭部總共多少個(gè)32bit,4位的最大是二進(jìn)制1111(十進(jìn)制15)欺旧,TCP頭部最大為15*32/8個(gè)字節(jié)姑丑,也就是60字節(jié)。TCP頭部前面20個(gè)字節(jié)是固定的辞友,TCP頭部最小也就是20個(gè)字節(jié)吩抓。

1.5 六個(gè)標(biāo)志位(每個(gè)標(biāo)志占1位蒿偎,每個(gè)標(biāo)志只有0和1兩種狀態(tài))

URG:為1時(shí)表示緊急指針有效性雄。

ACK:為1時(shí)表示確認(rèn)號(hào)是有效的因篇,攜帶ACK標(biāo)志的報(bào)文段也稱確認(rèn)報(bào)文段。

PSH:為1時(shí)是提示接收端應(yīng)用程序應(yīng)該立即從TCP接受緩沖區(qū)中讀走數(shù)據(jù)鲫尊,為后續(xù)接收的數(shù)據(jù)讓出空間痴柔。

RST:為1時(shí)表示通知對(duì)方關(guān)閉連接或重新建立連接。帶RST標(biāo)志的TCP報(bào)文段也叫復(fù)位報(bào)文段马昨。很多異常情況都會(huì)導(dǎo)致無(wú)法建立TCP連接或者TCP連接異常終止竞帽,比如客戶端請(qǐng)求中使用了一個(gè)不存在的端口,那服務(wù)端就可以發(fā)送RST報(bào)文段拒絕這個(gè)請(qǐng)求鸿捧;再比如TCP連接很久沒有傳輸數(shù)據(jù)了,可以發(fā)送RST報(bào)文段來終止這個(gè)連接疙渣;還比如TCP連接出現(xiàn)了一次匙奴,然后服務(wù)端希望終止這條異常的鏈接,可以發(fā)送RST報(bào)文段來終止這個(gè)連接妄荔。注意一旦發(fā)送了復(fù)位報(bào)文段泼菌,發(fā)送端所有排隊(duì)等待發(fā)送的數(shù)據(jù)都將被丟棄谍肤,而且發(fā)送完RST報(bào)文后TCP連接就關(guān)閉了,所以接收端收到RST報(bào)文后也就沒有必要發(fā)送ACK包來確認(rèn)了哗伯。

SYN:為1表示建立一個(gè)連接荒揣,攜帶SYN標(biāo)志的報(bào)文段為同步報(bào)文段。SYN標(biāo)志位只有在TCP建立連接時(shí)(也就是三次握手的時(shí)候)才會(huì)被置為1焊刹,客戶端請(qǐng)求建立連接時(shí)(第一次握手)的報(bào)文就攜帶SYN標(biāo)志和初始化的序列號(hào)(也就是起始序列號(hào))系任,SYN標(biāo)志是提醒服務(wù)端記住客戶端的起始序列號(hào)。然后服務(wù)端也會(huì)初始化自己的起始序列號(hào)并回復(fù)客戶端一條報(bào)文(第二次握手)虐块,這條報(bào)文包含服務(wù)端的起始序列號(hào)俩滥、SYN標(biāo)志位和ACK標(biāo)志位,其中SYN標(biāo)志位用來提醒客戶端記住服務(wù)端的起始序列號(hào)贺奠。

FIN:為1時(shí)用來告知對(duì)方本端要關(guān)閉連接了霜旧。

1.6 窗口大小(16位)

窗口大小可以理解為自己接收數(shù)據(jù)的緩存區(qū)大小儡率,用來告訴對(duì)方自己最大還能接收多少數(shù)據(jù)挂据,如果對(duì)方發(fā)送的數(shù)據(jù)超過了窗口大小,那這個(gè)數(shù)據(jù)會(huì)被丟棄儿普。當(dāng)窗口大小為0時(shí)對(duì)方會(huì)暫停發(fā)送數(shù)據(jù)棱貌,直到窗口大小大于0時(shí)才會(huì)恢復(fù)發(fā)送數(shù)據(jù)。

1.7 校驗(yàn)和(16位)

發(fā)送端對(duì)TCP報(bào)文(包括TCP頭部和數(shù)據(jù)部分)執(zhí)行CRC算法得到校驗(yàn)和箕肃,接收端收到報(bào)文后對(duì)報(bào)文執(zhí)行同樣的算法婚脱,將結(jié)果與校驗(yàn)和進(jìn)行比對(duì),兩者一致說明TCP報(bào)文段在傳輸過程中沒有損壞勺像,如果不一致那么這段TCP報(bào)文段會(huì)被直接丟棄障贸。

1.8 緊急指針(16位)

只有當(dāng)URG標(biāo)志位為1時(shí)緊急指針才是有意義的,緊急指針指向緊急數(shù)據(jù)最后一個(gè)字節(jié)的下一位吟宦。準(zhǔn)確來說緊急指針的值其實(shí)是一個(gè)相對(duì)于序列號(hào)的偏移量篮洁,比如說緊急指針的值是5,如果這個(gè)報(bào)文段的序列號(hào)seq=10殃姓,那就表示緊急指針指向的是15這個(gè)位置的字節(jié)袁波,這就意味著10到14這段數(shù)據(jù)是緊急數(shù)據(jù)。緊急數(shù)據(jù)是不進(jìn)入緩存區(qū)的蜗侈。(注:關(guān)于緊急指針的指向和緊急數(shù)據(jù)的長(zhǎng)度網(wǎng)上有不同的說法篷牌,我這里也不能確定哪種是正確的)。

1.9 TCP頭部選項(xiàng)

TCP頭部選項(xiàng)時(shí)長(zhǎng)度可變的可選信息踏幻,最多包含40個(gè)字節(jié)枷颊。典型的TCP頭部選項(xiàng)包含kindlengthinfo三個(gè)部分,kind表示選項(xiàng)的類型夭苗,length表示選項(xiàng)的長(zhǎng)度信卡,info表示選項(xiàng)的具體內(nèi)容。

2. 三次握手

三次握手.png

第一次握手:客戶端要向服務(wù)端發(fā)起連接請(qǐng)求题造,首先客戶端隨機(jī)生成一個(gè)起始序列號(hào)ISN(比如是100)傍菇,那客戶端向服務(wù)端發(fā)送的報(bào)文段包含SYN標(biāo)志位(也就是SYN=1),序列號(hào)seq=100界赔。
第二次握手:服務(wù)端收到客戶端發(fā)過來的報(bào)文后丢习,發(fā)現(xiàn)SYN=1,知道這是一個(gè)連接請(qǐng)求仔蝌,于是將客戶端的起始序列號(hào)100存起來泛领,并且隨機(jī)生成一個(gè)服務(wù)端的起始序列號(hào)(比如是300)。然后給客戶端回復(fù)一段報(bào)文敛惊,回復(fù)報(bào)文包含SYN和ACK標(biāo)志(也就是SYN=1,ACK=1)渊鞋、序列號(hào)seq=300、確認(rèn)號(hào)ack=101(客戶端發(fā)過來的序列號(hào)+1)瞧挤。
第三次握手:客戶端收到服務(wù)端的回復(fù)后發(fā)現(xiàn)ACK=1并且ack=101,于是知道服務(wù)端已經(jīng)收到了序列號(hào)為100的那段報(bào)文锡宋;同時(shí)發(fā)現(xiàn)SYN=1,知道了服務(wù)端同意了這次連接特恬,于是就將服務(wù)端的序列號(hào)300給存下來执俩。然后客戶端再回復(fù)一段報(bào)文給服務(wù)端,報(bào)文包含ACK標(biāo)志位(ACK=1)癌刽、ack=301(服務(wù)端序列號(hào)+1)役首、seq=101(第一次握手時(shí)發(fā)送報(bào)文是占據(jù)一個(gè)序列號(hào)的,所以這次seq就從101開始显拜,需要注意的是不攜帶數(shù)據(jù)的ACK報(bào)文是不占據(jù)序列號(hào)的衡奥,所以后面第一次正式發(fā)送數(shù)據(jù)時(shí)seq還是101)。當(dāng)服務(wù)端收到報(bào)文后發(fā)現(xiàn)ACK=1并且ack=301远荠,就知道客戶端收到序列號(hào)為300的報(bào)文了矮固,就這樣客戶端和服務(wù)端通過TCP建立了連接。

3. 四次揮手

四次揮手.jpeg

比如客戶端初始化的序列號(hào)ISA=100譬淳,服務(wù)端初始化的序列號(hào)ISA=300档址。TCP連接成功后客戶端總共發(fā)送了1000個(gè)字節(jié)的數(shù)據(jù),服務(wù)端在客戶端發(fā)FIN報(bào)文前總共回復(fù)了2000個(gè)字節(jié)的數(shù)據(jù)邻梆。

第一次揮手:當(dāng)客戶端的數(shù)據(jù)都傳輸完成后守伸,客戶端向服務(wù)端發(fā)出連接釋放報(bào)文(當(dāng)然數(shù)據(jù)沒發(fā)完時(shí)也可以發(fā)送連接釋放報(bào)文并停止發(fā)送數(shù)據(jù)),釋放連接報(bào)文包含F(xiàn)IN標(biāo)志位(FIN=1)确虱、序列號(hào)seq=1101(100+1+1000含友,其中的1是建立連接時(shí)占的一個(gè)序列號(hào))替裆。需要注意的是客戶端發(fā)出FIN報(bào)文段后只是不能發(fā)數(shù)據(jù)了校辩,但是還可以正常收數(shù)據(jù)窘问;另外FIN報(bào)文段即使不攜帶數(shù)據(jù)也要占據(jù)一個(gè)序列號(hào)。
第二次揮手:服務(wù)端收到客戶端發(fā)的FIN報(bào)文后給客戶端回復(fù)確認(rèn)報(bào)文宜咒,確認(rèn)報(bào)文包含ACK標(biāo)志位(ACK=1)惠赫、確認(rèn)號(hào)ack=1102(客戶端FIN報(bào)文序列號(hào)1101+1)、序列號(hào)seq=2300(300+2000)故黑。此時(shí)服務(wù)端處于關(guān)閉等待狀態(tài)儿咱,而不是立馬給客戶端發(fā)FIN報(bào)文,這個(gè)狀態(tài)還要持續(xù)一段時(shí)間场晶,因?yàn)榉?wù)端可能還有數(shù)據(jù)沒發(fā)完混埠。
第三次揮手:服務(wù)端將最后數(shù)據(jù)(比如50個(gè)字節(jié))發(fā)送完畢后就向客戶端發(fā)出連接釋放報(bào)文,報(bào)文包含F(xiàn)IN和ACK標(biāo)志位(FIN=1,ACK=1)诗轻、確認(rèn)號(hào)和第二次揮手一樣ack=1102钳宪、序列號(hào)seq=2350(2300+50)。
第四次揮手:客戶端收到服務(wù)端發(fā)的FIN報(bào)文后扳炬,向服務(wù)端發(fā)出確認(rèn)報(bào)文吏颖,確認(rèn)報(bào)文包含ACK標(biāo)志位(ACK=1)、確認(rèn)號(hào)ack=2351恨樟、序列號(hào)seq=1102半醉。注意客戶端發(fā)出確認(rèn)報(bào)文后不是立馬釋放TCP連接,而是要經(jīng)過2MSL(最長(zhǎng)報(bào)文段壽命的2倍時(shí)長(zhǎng))后才釋放TCP連接劝术。而服務(wù)端一旦收到客戶端發(fā)出的確認(rèn)報(bào)文就會(huì)立馬釋放TCP連接缩多,所以服務(wù)端結(jié)束TCP連接的時(shí)間要比客戶端早一些。

4. 常見面試題

4.1 為什么TCP連接的時(shí)候是3次养晋?2次不可以嗎衬吆?

因?yàn)樾枰紤]連接時(shí)丟包的問題,如果只握手2次匙握,第二次握手時(shí)如果服務(wù)端發(fā)給客戶端的確認(rèn)報(bào)文段丟失咆槽,此時(shí)服務(wù)端已經(jīng)準(zhǔn)備好了收發(fā)數(shù)(可以理解服務(wù)端已經(jīng)連接成功)據(jù),而客戶端一直沒收到服務(wù)端的確認(rèn)報(bào)文圈纺,所以客戶端就不知道服務(wù)端是否已經(jīng)準(zhǔn)備好了(可以理解為客戶端未連接成功)秦忿,這種情況下客戶端不會(huì)給服務(wù)端發(fā)數(shù)據(jù),也會(huì)忽略服務(wù)端發(fā)過來的數(shù)據(jù)蛾娶。

如果是三次握手灯谣,即便發(fā)生丟包也不會(huì)有問題,比如如果第三次握手客戶端發(fā)的確認(rèn)ack報(bào)文丟失蛔琅,服務(wù)端在一段時(shí)間內(nèi)沒有收到確認(rèn)ack報(bào)文的話就會(huì)重新進(jìn)行第二次握手胎许,也就是服務(wù)端會(huì)重發(fā)SYN報(bào)文段,客戶端收到重發(fā)的報(bào)文段后會(huì)再次給服務(wù)端發(fā)送確認(rèn)ack報(bào)文。

4.2 為什么TCP連接的時(shí)候是3次辜窑,關(guān)閉的時(shí)候卻是4次钩述?

因?yàn)橹挥性诳蛻舳撕头?wù)端都沒有數(shù)據(jù)要發(fā)送的時(shí)候才能斷開TCP。而客戶端發(fā)出FIN報(bào)文時(shí)只能保證客戶端沒有數(shù)據(jù)發(fā)了穆碎,服務(wù)端還有沒有數(shù)據(jù)發(fā)客戶端是不知道的牙勘。而服務(wù)端收到客戶端的FIN報(bào)文后只能先回復(fù)客戶端一個(gè)確認(rèn)報(bào)文來告訴客戶端我服務(wù)端已經(jīng)收到你的FIN報(bào)文了,但我服務(wù)端還有一些數(shù)據(jù)沒發(fā)完所禀,等這些數(shù)據(jù)發(fā)完了服務(wù)端才能給客戶端發(fā)FIN報(bào)文(所以不能一次性將確認(rèn)報(bào)文和FIN報(bào)文發(fā)給客戶端方面,就是這里多出來了一次)。

4.3 為什么客戶端發(fā)出第四次揮手的確認(rèn)報(bào)文后要等2MSL的時(shí)間才能釋放TCP連接色徘?

這里同樣是要考慮丟包的問題恭金,如果第四次揮手的報(bào)文丟失,服務(wù)端沒收到確認(rèn)ack報(bào)文就會(huì)重發(fā)第三次揮手的報(bào)文褂策,這樣報(bào)文一去一回最長(zhǎng)時(shí)間就是2MSL横腿,所以需要等這么長(zhǎng)時(shí)間來確認(rèn)服務(wù)端確實(shí)已經(jīng)收到了。

4.4 如果已經(jīng)建立了連接辙培,但是客戶端突然出現(xiàn)故障了怎么辦蔑水?

TCP設(shè)有一個(gè)保活計(jì)時(shí)器扬蕊,客戶端如果出現(xiàn)故障搀别,服務(wù)器不能一直等下去,白白浪費(fèi)資源尾抑。服務(wù)器每收到一次客戶端的請(qǐng)求后都會(huì)重新復(fù)位這個(gè)計(jì)時(shí)器歇父,時(shí)間通常是設(shè)置為2小時(shí),若兩小時(shí)還沒有收到客戶端的任何數(shù)據(jù)再愈,服務(wù)器就會(huì)發(fā)送一個(gè)探測(cè)報(bào)文段榜苫,以后每隔75秒鐘發(fā)送一次。若一連發(fā)送10個(gè)探測(cè)報(bào)文仍然沒反應(yīng)翎冲,服務(wù)器就認(rèn)為客戶端出了故障垂睬,接著就關(guān)閉連接。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末抗悍,一起剝皮案震驚了整個(gè)濱河市驹饺,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌缴渊,老刑警劉巖赏壹,帶你破解...
    沈念sama閱讀 221,576評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異衔沼,居然都是意外死亡蝌借,警方通過查閱死者的電腦和手機(jī)昔瞧,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,515評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來菩佑,“玉大人自晰,你說我怎么就攤上這事∏骛” “怎么了缀磕?”我有些...
    開封第一講書人閱讀 168,017評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵缘圈,是天一觀的道長(zhǎng)劣光。 經(jīng)常有香客問我,道長(zhǎng)糟把,這世上最難降的妖魔是什么绢涡? 我笑而不...
    開封第一講書人閱讀 59,626評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮遣疯,結(jié)果婚禮上雄可,老公的妹妹穿的比我還像新娘。我一直安慰自己缠犀,他們只是感情好数苫,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,625評(píng)論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著辨液,像睡著了一般虐急。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上滔迈,一...
    開封第一講書人閱讀 52,255評(píng)論 1 308
  • 那天止吁,我揣著相機(jī)與錄音,去河邊找鬼燎悍。 笑死敬惦,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的谈山。 我是一名探鬼主播俄删,決...
    沈念sama閱讀 40,825評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼奏路!你這毒婦竟也來了畴椰?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,729評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤思劳,失蹤者是張志新(化名)和其女友劉穎迅矛,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體潜叛,經(jīng)...
    沈念sama閱讀 46,271評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡秽褒,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,363評(píng)論 3 340
  • 正文 我和宋清朗相戀三年壶硅,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片销斟。...
    茶點(diǎn)故事閱讀 40,498評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡庐椒,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出蚂踊,到底是詐尸還是另有隱情约谈,我是刑警寧澤,帶...
    沈念sama閱讀 36,183評(píng)論 5 350
  • 正文 年R本政府宣布犁钟,位于F島的核電站棱诱,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏涝动。R本人自食惡果不足惜迈勋,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,867評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望醋粟。 院中可真熱鬧靡菇,春花似錦、人聲如沸米愿。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,338評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)育苟。三九已至较鼓,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間宙搬,已是汗流浹背笨腥。 一陣腳步聲響...
    開封第一講書人閱讀 33,458評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留勇垛,地道東北人脖母。 一個(gè)月前我還...
    沈念sama閱讀 48,906評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像闲孤,于是被迫代替她去往敵國(guó)和親谆级。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,507評(píng)論 2 359

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