java網(wǎng)絡(luò)編程(1)基礎(chǔ)知識總結(jié)

一. 概述

本文是網(wǎng)絡(luò)編程系列的第一篇文章旗扑,所以不講代碼,主要是網(wǎng)絡(luò)編程的一些基礎(chǔ)知識,下面的這些知識點(diǎn)主要是對java網(wǎng)絡(luò)編程這本書的歸納與整理佃牛。

我們知道計(jì)算機(jī)之間的通信要經(jīng)過一系列復(fù)雜的過程,計(jì)算機(jī)之間通過傳輸介質(zhì)床未、通信設(shè)施和網(wǎng)絡(luò)通信協(xié)議互聯(lián)竭翠,實(shí)現(xiàn)資源共享和數(shù)據(jù)傳輸。而我們的網(wǎng)絡(luò)編程就是使用程序使互聯(lián)網(wǎng)的兩個(gè)(或多個(gè))計(jì)算機(jī)之間進(jìn)行數(shù)據(jù)傳輸薇搁。當(dāng)然java語言斋扰,為了實(shí)現(xiàn)兩個(gè)計(jì)算機(jī)之間的數(shù)據(jù)傳輸,提供了一系列的接口啃洋,使得開發(fā)人員可以方便的實(shí)現(xiàn)传货。

不過在正式開始代碼編寫之前就先看看一些通信的基本知識。

二 宏娄、網(wǎng)絡(luò)體系結(jié)構(gòu)

計(jì)算機(jī)之間的通信要經(jīng)過一系列復(fù)雜的過程问裕,必須將這兩臺計(jì)算機(jī)的物理邏輯和通信邏輯好好的規(guī)劃好。為此我們先看看計(jì)算機(jī)網(wǎng)絡(luò)的層次模型孵坚。然后再進(jìn)行分析粮宛。

image

從上面這張圖我們對計(jì)算機(jī)之間的通信特點(diǎn)進(jìn)行整理一下:

(1)計(jì)算機(jī)之間的網(wǎng)絡(luò)通信被分解為多個(gè)層,層與層之間用接口連接卖宠。

(2)通信的雙方具有相同的層次窟勃,層次實(shí)現(xiàn)的功能由協(xié)議數(shù)據(jù)單元(PDU)來描述。

(3)不同系統(tǒng)中的同一層構(gòu)成對等層逗堵,對等層之間通過對等層協(xié)議進(jìn)行通信秉氧。

(4)在通信的時(shí)候數(shù)據(jù)必須由一層依次傳遞到下一層,不能跨級傳輸蜒秤。

為了促進(jìn)計(jì)算機(jī)網(wǎng)絡(luò)的發(fā)展汁咏,國際標(biāo)準(zhǔn)化組織ISO在現(xiàn)有網(wǎng)絡(luò)的基礎(chǔ)上,提出了不基于具體機(jī)型作媚、操作系統(tǒng)或公司的網(wǎng)絡(luò)體系結(jié)構(gòu)攘滩,稱為開放系統(tǒng)互連參考模型,即OSI/RM纸泡。但是ISO制定的OSI參考模型過于龐大漂问、復(fù)雜招致了許多批評。因此美國國防部提出了TCP/IP協(xié)議棧參考模型女揭,簡化了OSI參考模型蚤假,獲得了廣泛的應(yīng)用。

1吧兔、OSI參考模型

這里首先介紹OSI參考模型磷仰,是國際標(biāo)準(zhǔn)化組織ISO提出的,把網(wǎng)絡(luò)通信的工作分為7層境蔼,分別是物理層灶平、數(shù)據(jù)鏈路層伺通、網(wǎng)絡(luò)層、傳輸層逢享、會(huì)話層罐监、表示層和應(yīng)用層。也是我們在大學(xué)計(jì)算機(jī)網(wǎng)絡(luò)課程中認(rèn)識的那樣瞒爬。下面一張圖來看看笑诅。

img

(1)物理層處于OSI的最底層,是開放系統(tǒng)的基礎(chǔ)疮鲫,它的功能主要是為計(jì)算機(jī)提供傳送數(shù)據(jù)的通路以及傳輸數(shù)據(jù)吆你。

(2)數(shù)據(jù)鏈路層的主要任務(wù)是實(shí)現(xiàn)計(jì)算機(jī)網(wǎng)絡(luò)中相鄰節(jié)點(diǎn)之間的可靠傳輸,把原始的俊犯、有差錯(cuò)的物理傳輸數(shù)據(jù)加上數(shù)據(jù)鏈路協(xié)議以后妇多,構(gòu)成邏輯上可靠的數(shù)據(jù)鏈路。

(3)網(wǎng)絡(luò)層主要完成的功能主要包括路由選擇燕侠、網(wǎng)絡(luò)尋址者祖、流量控制、擁塞控制绢彤、網(wǎng)絡(luò)互連等七问。實(shí)現(xiàn)兩個(gè)計(jì)算機(jī)節(jié)點(diǎn)之間的數(shù)據(jù)傳輸。

(4)傳輸層涉及源端節(jié)點(diǎn)到目的端節(jié)點(diǎn)之間可靠的信息傳輸茫舶。也就是說是采用TCP/IP還是采用UDP協(xié)議械巡。他需要三次握手四次揮手。

(5)會(huì)話層的主要功能是負(fù)責(zé)應(yīng)用程序之間建立饶氏、維持和中斷會(huì)話讥耗,提供單工、半雙工和全雙工3種不同的通信方式疹启,使系統(tǒng)和服務(wù)之間有序地進(jìn)行通信古程。

(6)表示層關(guān)心所傳輸數(shù)據(jù)信息的格式定義,其主要功能是把應(yīng)用層提供的信息變換為能夠共同理解的形式喊崖,提供字符代碼挣磨、數(shù)據(jù)格式、控制信息格式荤懂、加密等的統(tǒng)一表示茁裙。

(7)應(yīng)用層是直接為應(yīng)用進(jìn)程提供服務(wù)的。其作用是多個(gè)系統(tǒng)應(yīng)用進(jìn)程相互通信的同時(shí)势誊,完成一系列業(yè)務(wù)處理所需的服務(wù)呜达。

2 谣蠢、TCP/IP參考模型

TCP/IP參考模型采用4層的層級結(jié)構(gòu)粟耻,每一層都呼叫它的下一層所提供的協(xié)議來完成自己的需求查近,這4個(gè)層次分別是:網(wǎng)絡(luò)接口層、網(wǎng)絡(luò)層(IP層)挤忙、傳輸層(TCP層)霜威、應(yīng)用層。

img

(1)網(wǎng)絡(luò)接口層:對應(yīng)著OSI參考模型的物理層和數(shù)據(jù)鏈路層

(2)網(wǎng)絡(luò)層(IP層):是整個(gè)TCP/IP協(xié)議棧的核心册烈。它的功能是把分組數(shù)據(jù)發(fā)往目標(biāo)網(wǎng)絡(luò)或主機(jī)戈泼。可以完成將不同類型的網(wǎng)絡(luò)(異構(gòu)網(wǎng))互連的任務(wù)赏僧。除此之外大猛,還需要完成擁塞控制的功能。

(3)傳輸層(TCP層):傳輸層負(fù)責(zé)在應(yīng)用進(jìn)程之間建立端到端的連接和可靠通信淀零。TCP層涉及兩個(gè)協(xié)議挽绩,TCP和UDP。TCP協(xié)議提供面向連接的服務(wù)驾中,提供按字節(jié)流的有序唉堪、可靠傳輸,可以實(shí)現(xiàn)連接管理肩民、差錯(cuò)控制唠亚、流量控制、擁塞控制等持痰。也就是可靠傳輸灶搜。UDP協(xié)議提供無連接的服務(wù),用于不需要或無法實(shí)現(xiàn)面向連接的網(wǎng)絡(luò)應(yīng)用中工窍。也就是不可靠傳輸占调。

(4)應(yīng)用層:為各種網(wǎng)絡(luò)應(yīng)用提供服務(wù)。

3移剪、網(wǎng)絡(luò)協(xié)議

OSI參考模型和TCP/IP模型在不同的層次中有許多不同的網(wǎng)絡(luò)協(xié)議究珊,如圖所示:

image

網(wǎng)絡(luò)協(xié)議之間的關(guān)系圖如下:

image

下面我們抽出來一些重要的協(xié)議看一下。其他的協(xié)議用到的時(shí)候再說纵苛。

(1)IP協(xié)議

IP協(xié)議的作用在于把各種數(shù)據(jù)包準(zhǔn)備無誤的傳遞給對方剿涮。由于IP地址是稀有資源,不可能每個(gè)人都擁有一個(gè)IP地址攻人,所以我們通常的IP地址是路由器給我們生成的IP地址取试,路由器里面會(huì)記錄我們的MAC地址。而MAC地址是全球唯一的怀吻。舉例瞬浓,IP地址就如同是我們居住小區(qū)的地址,而MAC地址就是我們住的那棟樓那個(gè)房間那個(gè)人蓬坡。

(2)TCP協(xié)議

TCP層是位于IP層之上猿棉,應(yīng)用層之下的中間層磅叛。有可靠的、像管道一樣的TCP連接萨赁,還有不可靠的包交換的UDP鏈接弊琴。那tcp協(xié)議之間的通信數(shù)據(jù)格式是什么樣子的呢?也就是什么樣的數(shù)據(jù)在傳輸杖爽,下面一張圖來看一下:

TCP報(bào)文段包括協(xié)議首部和數(shù)據(jù)兩部分敲董,協(xié)議首部的固定部分是20個(gè)字節(jié),首部的固定部分后面是選項(xiàng)部分慰安。

image

下面是報(bào)文段首部各個(gè)字段的含義腋寨,也是《計(jì)算機(jī)網(wǎng)絡(luò)》書中的說明:

  1. 源端口號以及目的端口號:各占2個(gè)字節(jié),端口是傳輸層和應(yīng)用層的服務(wù)接口化焕,用于尋找發(fā)送端和接收端的進(jìn)程精置,一般來講,通過端口號和IP地址锣杂,可以唯一確定一個(gè)TCP連接脂倦,在網(wǎng)絡(luò)編程中,通常被稱為一個(gè)socket接口元莫。

  2. 序號:Seq序號赖阻,占4個(gè)字節(jié)、32位踱蠢。用來標(biāo)識從TCP發(fā)送端向TCP接收端發(fā)送的數(shù)據(jù)字節(jié)流火欧。發(fā)起方發(fā)送數(shù)據(jù)時(shí)對此進(jìn)行標(biāo)記。

  3. 確認(rèn)序號:Ack序號茎截,占4個(gè)字節(jié)苇侵、32位。包含發(fā)送確認(rèn)的一端所期望收到的下一個(gè)序號企锌。只有ACK標(biāo)記位為1時(shí)榆浓,確認(rèn)序號字段才有效,因此撕攒,確認(rèn)序號應(yīng)該是上次已經(jīng)成功收到數(shù)據(jù)字節(jié)序號加1陡鹃,即Ack=Seq + 1。

  4. 數(shù)據(jù)偏移:占4個(gè)字節(jié)抖坪,用于指出TCP首部長度萍鲸,若不存在選項(xiàng),則這個(gè)值為20字節(jié)擦俐,數(shù)據(jù)偏移的最大值為60字節(jié)脊阴。

  5. 保留字段占6位,暫時(shí)可忽略,值全為0嘿期。

  6. 標(biāo)志位品擎,6個(gè)

    • URG(緊急):為1時(shí)表明緊急指針字段有效

    • ACK(確認(rèn)):為1時(shí)表明確認(rèn)號字段有效

    • PSH(推送):為1時(shí)接收方應(yīng)盡快將這個(gè)報(bào)文段交給應(yīng)用層

    • RST(復(fù)位):為1時(shí)表明TCP連接出現(xiàn)故障必須重建連接

    • SYN(同步):在連接建立時(shí)用來同步序號

    • FIN(終止):為1時(shí)表明發(fā)送端數(shù)據(jù)發(fā)送完畢要求釋放連接

  7. 接收窗口:占2個(gè)字節(jié),用于流量控制和擁塞控制秽五,表示當(dāng)前接收緩沖區(qū)的大小孽查。在計(jì)算機(jī)網(wǎng)絡(luò)中饥悴,通常是用接收方的接收能力的大小來控制發(fā)送方的數(shù)據(jù)發(fā)送量坦喘。TCP連接的一端根據(jù)緩沖區(qū)大小確定自己的接收窗口值,告訴對方西设,使對方可以確定發(fā)送數(shù)據(jù)的字節(jié)數(shù)瓣铣。

  8. 校驗(yàn)和:占2個(gè)字節(jié),范圍包括首部和數(shù)據(jù)兩部分贷揽。

  9. 選項(xiàng)是可選的棠笑,默認(rèn)情況是不選。

三次握手與四次揮手(超級重要禽绪。面試必問)

TCP是面向連接的協(xié)議蓖救,因此每個(gè)TCP連接都有3個(gè)階段:連接建立、數(shù)據(jù)傳送和連接釋放印屁。連接建立經(jīng)歷三個(gè)步驟循捺,通常稱為“三次握手”。

TCP三次握手過程如下:

image

1. 第一次握手(客戶端發(fā)送請求)

男孩:“咱倆處對象吧”雄人,并等待對方回復(fù)確認(rèn)从橘。

2. 第二次握手(服務(wù)端回傳確認(rèn))

女孩:告訴男孩說“可以”,

3. 第三次握手(客戶端回傳確認(rèn))

男孩說:“那就在一塊吧”础钠,于是倆人有了情侶鏈接關(guān)系了恰力。

注意:握手過程中傳送的包里不包含數(shù)據(jù),三次握手完畢后旗吁,客戶端與服務(wù)器才正式開始傳送數(shù)據(jù)踩萎。

TCP四次揮手過程如下:

image

由于TCP連接是全雙工的,因此每個(gè)方向都必須單獨(dú)進(jìn)行關(guān)閉很钓。這原則是當(dāng)一方完成它的數(shù)據(jù)發(fā)送任務(wù)后就能發(fā)送一個(gè)FIN來終止這個(gè)方向的連接驻民。收到一個(gè)FIN只意味著這一方向上沒有數(shù)據(jù)流動(dòng),一個(gè)TCP連接在收到一個(gè)FIN后仍能發(fā)送數(shù)據(jù)履怯。首先進(jìn)行關(guān)閉的一方將執(zhí)行主動(dòng)關(guān)閉回还,而另一方執(zhí)行被動(dòng)關(guān)閉。

1. 女孩:要和男孩分手叹洲,并等待男孩回應(yīng)

2. 男孩:回復(fù)女孩柠硕,先同意分手,不過還是又考慮了一段時(shí)間。

3. 男孩思考了一段時(shí)間蝗柔,還是選擇了分手闻葵。

4. 女孩收到消息,于是倆人正式分手癣丧。

注意:為什么連接的時(shí)候是三次握手槽畔,關(guān)閉的時(shí)候卻是四次揮手?

因?yàn)楫?dāng)服務(wù)端收到客戶端的SYN連接請求報(bào)文后胁编,可以直接發(fā)送SYN+ACK報(bào)文厢钧。其中ACK報(bào)文是用來應(yīng)答的,SYN報(bào)文是用來同步的嬉橙。但是關(guān)閉連接時(shí)早直,當(dāng)服務(wù)端收到FIN報(bào)文時(shí),很可能并不會(huì)立即關(guān)閉socket市框,所以只能先回復(fù)一個(gè)ACK報(bào)文霞扬,告訴客戶端,“你發(fā)的FIN報(bào)文枫振,我收到了”喻圃。只有等到服務(wù)端所有的報(bào)文都發(fā)送完了,我才能發(fā)送FIN報(bào)文粪滤,因此不能一起發(fā)送斧拍,故需要四步揮手。

(3)UDP協(xié)議

UDP额衙,用戶數(shù)據(jù)報(bào)協(xié)議饮焦,它是TCP/IP協(xié)議簇中無連接的運(yùn)輸層協(xié)議。

  1. UDP是一個(gè)非連接的協(xié)議窍侧,傳輸數(shù)據(jù)之前源端和終端不建立連接县踢,當(dāng)它想傳送時(shí)就簡單地去抓取來自應(yīng)用程序的數(shù)據(jù),并盡可能快地把它扔到網(wǎng)絡(luò)上伟件。

  2. 由于傳輸數(shù)據(jù)不建立連接硼啤,因此也就不需要維護(hù)連接狀態(tài),包括收發(fā)狀態(tài)等斧账,因此一臺服務(wù)器可同時(shí)向多個(gè)客戶端傳輸相同的消息谴返。

  3. UDP信息包的標(biāo)題很短,只有8個(gè)字節(jié)咧织,相對于TCP的20個(gè)字節(jié)信息包的額外開銷很小嗓袱。

  4. 吞吐量不受擁擠控制算法的調(diào)節(jié),只受應(yīng)用軟件生成數(shù)據(jù)的速率习绢、傳輸帶寬渠抹、源端和終端主機(jī)性能的限制蝙昙。

  5. UDP使用盡量最大努力交付,即不保證可靠交付梧却,因此主機(jī)不需要維持復(fù)雜的鏈接狀態(tài)表奇颠。

  6. UDP是面向報(bào)文的。發(fā)送方的UDP對應(yīng)用程序交下來的報(bào)文放航,在添加首部受就向下交付給IP層烈拒。既不拆分,也不合并广鳍,而是保留這些報(bào)文的邊界荆几,因此,應(yīng)用程序需要選擇合適的報(bào)文大小搜锰。

UDP協(xié)議格式

image

UDP協(xié)議由兩部分組成:首部和數(shù)據(jù)伴郁。其中耿战,首部僅有8個(gè)字節(jié)蛋叼,包括源端口和目的端口、長度(UDP用于數(shù)據(jù)報(bào)的長度)剂陡、校驗(yàn)和狈涮。

(4) TCP與UDP的區(qū)別

  1. TCP基于連接,UDP是無連接的鸭栖;

  2. 對系統(tǒng)資源的要求歌馍,TCP較多,UDP較少晕鹊;

  3. UDP程序結(jié)構(gòu)較簡單松却;

  4. TCP是流模式,而UDP是數(shù)據(jù)報(bào)模式溅话;

  5. TCP保證數(shù)據(jù)正確性晓锻,而UDP可能丟包;TCP保證數(shù)據(jù)順序飞几,而UDP不保證砚哆;

(5)HTTP協(xié)議

HTTP,超文本傳輸協(xié)議屑墨,它是互聯(lián)網(wǎng)上應(yīng)用最為廣泛的一種網(wǎng)絡(luò)協(xié)議躁锁。HTTP是一種應(yīng)用層協(xié)議,它是基于TCP協(xié)議之上的請求/響應(yīng)式的協(xié)議卵史。

對于從客戶端到服務(wù)器的每一個(gè)請求战转,都有4個(gè)步驟:

  1. 默認(rèn)情況下,客戶端在端口80打開與服務(wù)器的一個(gè)TCP連接以躯,URL中還可以指定其他端口槐秧。

  2. 客戶端向服務(wù)器發(fā)送消息,請求指定路徑上的資源。這個(gè)資源包括一個(gè)首部色鸳,可選地(取決于請求的性質(zhì))還可以有一個(gè)空行社痛,后面是這個(gè)請求的數(shù)據(jù)。

  3. 服務(wù)器向客戶端發(fā)送響應(yīng)命雀。響應(yīng)以響應(yīng)碼開頭蒜哀,后面是包含數(shù)據(jù)的首部、一個(gè)空行以及所請求的文檔或錯(cuò)誤消息吏砂。

  4. 服務(wù)器關(guān)閉連接撵儿。

HTTP報(bào)文

HTTP協(xié)議是基于TCP協(xié)議之上的請求/響應(yīng)式協(xié)議,下面主要介紹HTTP報(bào)文的格式狐血,HTTP報(bào)文主要有請求報(bào)文和響應(yīng)報(bào)文兩種淀歇。

首先看HTTP請求報(bào)文的格式

image

下圖是谷歌瀏覽器內(nèi)訪問服務(wù)器查看的HTTP請求例子:

image

HTTP響應(yīng)報(bào)文格式

image

上面這張圖是HTTP響應(yīng)報(bào)文,它由狀態(tài)行匈织、首部行和實(shí)體主體組成浪默。下圖為HTTP響應(yīng)報(bào)文例子:

image

HTTP請求方法和響應(yīng)狀態(tài)碼

在上面的HTTP請求報(bào)文例子中,我們可以看到請求方法是GET缀匕,這表示請求讀取由URL所標(biāo)志的信息纳决,除了GET,還有其他幾種常用的方法乡小。

image

在HTTP響應(yīng)報(bào)文的例子中阔加,我們可以看到狀態(tài)碼是200,表示響應(yīng)成功满钟。下表是其他狀態(tài)碼胜榔,總共5大類,33種湃番。

image

HTTP和HTTPS的區(qū)別

超文本傳輸協(xié)議HTTP協(xié)議被用于在Web瀏覽器和網(wǎng)站服務(wù)器之間傳遞信息夭织。HTTP協(xié)議以明文方式發(fā)送內(nèi)容,不提供任何方式的數(shù)據(jù)加密牵辣,如果攻擊者截取了Web瀏覽器和網(wǎng)站服務(wù)器之間的傳輸報(bào)文摔癣,就可以直接讀懂其中的信息,因此HTTP協(xié)議不適合傳輸一些敏感信息纬向,比如信用開號择浊、密碼等。

為了解決HTTP協(xié)議的這一缺陷逾条,需要使用另一種協(xié)議:安全套接字層超文本傳輸協(xié)議HTTPS琢岩。為了數(shù)據(jù)傳輸?shù)陌踩琀TTPS在HTTP的基礎(chǔ)上加入了SSL協(xié)議师脂,SSL依靠證書來驗(yàn)證服務(wù)器的身份担孔,并為瀏覽器和服務(wù)器之間的通信加密江锨。

HTTPS和HTTP的區(qū)別主要為以下四點(diǎn):

  • https協(xié)議需要到ca申請證書,一般免費(fèi)證書很少糕篇,需要繳費(fèi)啄育。

  • http是超文本傳輸協(xié)議,信息是明文傳輸拌消,https則是具有安全性的ssl加密傳輸協(xié)議挑豌。

  • http和https使用的是完全不同的連接方式,用的端口也不一樣墩崩,前者是80氓英,后者是443。

  • http的連接很簡單鹦筹,是無狀態(tài)的铝阐;https協(xié)議是有ssl+http協(xié)議構(gòu)建的可進(jìn)行加密傳輸、身份認(rèn)證的網(wǎng)絡(luò)協(xié)議铐拐,比http協(xié)議安全徘键。

HTTP和TCP/IP協(xié)議的關(guān)系

“我們在傳輸數(shù)據(jù)時(shí),可以只使用(傳輸層)TCP/IP協(xié)議余舶,但是那樣的話啊鸭,如 果沒有應(yīng)用層锹淌,便無法識別數(shù)據(jù)內(nèi)容匿值,如果想要使傳輸?shù)臄?shù)據(jù)有意義,則必須使用到應(yīng)用層協(xié)議赂摆,應(yīng)用層協(xié)議有很多挟憔,比如HTTP、FTP烟号、TELNET等绊谭,也 可以自己定義應(yīng)用層協(xié)議。WEB使用HTTP協(xié)議作應(yīng)用層協(xié)議汪拥,以封裝HTTP文本信息达传,然后使用TCP/IP做傳輸層協(xié)議將它發(fā)到網(wǎng)絡(luò)上∑戎”

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末宪赶,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子脯燃,更是在濱河造成了極大的恐慌搂妻,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,376評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件辕棚,死亡現(xiàn)場離奇詭異欲主,居然都是意外死亡邓厕,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,126評論 2 385
  • 文/潘曉璐 我一進(jìn)店門扁瓢,熙熙樓的掌柜王于貴愁眉苦臉地迎上來详恼,“玉大人,你說我怎么就攤上這事引几〉ノ恚” “怎么了?”我有些...
    開封第一講書人閱讀 156,966評論 0 347
  • 文/不壞的土叔 我叫張陵她紫,是天一觀的道長硅堆。 經(jīng)常有香客問我,道長贿讹,這世上最難降的妖魔是什么渐逃? 我笑而不...
    開封第一講書人閱讀 56,432評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮民褂,結(jié)果婚禮上茄菊,老公的妹妹穿的比我還像新娘。我一直安慰自己赊堪,他們只是感情好面殖,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,519評論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著哭廉,像睡著了一般脊僚。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上遵绰,一...
    開封第一講書人閱讀 49,792評論 1 290
  • 那天辽幌,我揣著相機(jī)與錄音,去河邊找鬼椿访。 笑死乌企,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的成玫。 我是一名探鬼主播加酵,決...
    沈念sama閱讀 38,933評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼哭当!你這毒婦竟也來了猪腕?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,701評論 0 266
  • 序言:老撾萬榮一對情侶失蹤荣病,失蹤者是張志新(化名)和其女友劉穎码撰,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體个盆,經(jīng)...
    沈念sama閱讀 44,143評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡脖岛,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,488評論 2 327
  • 正文 我和宋清朗相戀三年朵栖,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片柴梆。...
    茶點(diǎn)故事閱讀 38,626評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡陨溅,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出绍在,到底是詐尸還是另有隱情门扇,我是刑警寧澤,帶...
    沈念sama閱讀 34,292評論 4 329
  • 正文 年R本政府宣布偿渡,位于F島的核電站臼寄,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏溜宽。R本人自食惡果不足惜吉拳,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,896評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望适揉。 院中可真熱鬧留攒,春花似錦、人聲如沸嫉嘀。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,742評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽剪侮。三九已至拭宁,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間票彪,已是汗流浹背红淡。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留降铸,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,324評論 2 360
  • 正文 我出身青樓摇零,卻偏偏與公主長得像推掸,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子驻仅,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,494評論 2 348