网络基础(三)数据链路层

Paste_Image.png

计网系列文章:
<a href="http://www.jianshu.com/p/f18e1ab0fd06">计网积累(一)总览</a>
<a href="http://www.jianshu.com/p/472b66f242ba">计网积累(二)物理层</a>
之前打算配的是纳达尔亲吻奖杯的图,后来决定配上这张,对,毕业季轻轻的来了,感谢我最好的导助,你帮助我走出了最痛苦的那段回忆,陪伴我走过3年的大学生活,有太多的不舍,感谢你,我成长了,感谢你,我懂得了珍惜,背好行囊准备出发吧,下一站,景色更美,下一站,碧海蓝天。
OK,我们切入正题,在上一篇文章里面简单介绍了一下物理层里面的一些概念和信道复用技术,在第一篇文章里面我们知道物理层传输的数据是比特,而数据链路层传输的数据是帧,本篇文章我们来详细研究数据链路层,我觉得难点是CSD/MA碰撞检测。

本章内容大都提到了"信道",信道是信息传输的通道,即信息进行传输时所经过的一条通路。一条传输介质上可以有多条信道(多路复用)。可分为有线信道和无线信道两类。有线信道包括明线、对称电缆、同轴电缆及光缆等。无线信道有地波传播、短波电离层反射、超短波或微波视距中继、人造卫星中继以及各种散射信道等

OK,信道的概念就是这些,而数据链路层使用的信道类型分为点对点信道和广播信道,前者使用到了PPP协议,后者使用到了我要重点讲解的CSMA/CD协议。
之前我们讲过,主机H1向主机H2发送数据经过多个路由器,数据从主机的七层协议栈往下传输到路由器的三层协议栈,在路由器从物理层到网络层上查找转发表后继续向下传输到物理层转发到下一个路由器,最后传输给主机H2。
<h5>3.1使用点对点信道的数据链路层</h5>
链路是针对相邻节点,中间没有任何结点,而数据链路是必要的通信协议的硬件和软件加入到链路里面。
点对点信道的数据链路层数据传输单元是帧,说明白点就是结点A把网络层的IP数据包封装成帧(加上头部和尾部信息构成帧的首部和尾部)再发送到下一个节点B,如果B的数据链路层收到帧无差错,提取IP数据包给网络层, 否则丢弃掉。(有的还有重传机制)
3.1.2
1.封装成帧
接收端需要从物理层的比特流里识别出帧的开始和结束,而帧的首部和尾部除了进行帧定界之外,还有必要的控制信息,发送帧都需要从帧首部开始发送,为了提高效率,要让帧的数据部分尽可能大于帧首部和尾部的长度,而帧的数据部分要<=MTU(数据部分长度上限),当发送一个帧出现问题时,尾部帧是无法获取的,所以接收端会识别为不完整的帧,就会丢弃掉。
2.透明传输
如果帧的数据部分是非ASCII文件,即二进制代码或图像,数据中的某个字节二进制代码和帧定界符一样,就出现帧定界错误,数据链路层就要保证无论传输什么样的比特数据,在数据链路层上都是透明的,无差错的传输
解决方法是发送端的数据链路层里出现控制字符的前面插入一个转义字符“ESC”,在接收端的数据链路层把数据向上传给网络层之前删除这些插入的转义字符,如果转义字符也出现在了数据当中,就在转义字符前面再次插入一个转义字符,当接收端收到连续两个转义字符,就删除前面一个。
3.差错检测
如果在传输数据时出现比特差错,数据链路层必须有相应的解决方案,接下来我们看一下循环冗余检测
例如发送方要发送的一组比特是M=101001,双方事先规定好的(n+1)位的除数,比如是1101,一共4位,4-1=3,在101001后面填3个0,即101001000/1101,注意模二运算规则:

1-0=1
0-1=1
1-1=0
0-0=0

得到商是110101,余数(位数比除数少一位,即n位)001,以此作为FCS (帧检测序列)拼接在M的后面发出去,帧变成了101001001
接收端把帧除以同样的除数P,检查余数是否为0,如果是0,说明帧没错,否则丢弃这个帧。FCS 的生成和CRC检测都是硬件完成的,所以作为软件端的我们了解到这里足够,把重点放在后面讲到的网络层和传输层上面。
根据上述我们能够表述为凡是接收端数据链路层接受的帧均无差错,并且CRC机制能实现无比特差错传输,然而后面还有帧重复,丢失,所以并不能代表CRC就是可靠传输。
对于通信质量很好的有线传输链路,数据链路层协议不需要确认和重传机制,一旦出现问题就让TCP来做,对于通信质量很差的无线传输链路,数据链路层需要使用确认和重传机制(发送端一定时间内收不到接收方确认消息,就默认重传数据,因此出现了后面的碰撞检测),向上提供可靠传输服务。
<h5>3.2PPP点对点协议</h5>
我觉得一张图就能看懂PPP协议的作用

Paste_Image.png

1.PPP协议的需求
PPP协议不需要有重传机制,帧没错就收下,有错就丢弃掉。
PPP协议要把数据封装成帧,保证透明传输,并且支持多种网络层协议,能够在多种类型链路上运行(串行,并行,同步异步,电的光的~~)

Paste_Image.png

PPPoE是为宽带上网的主机使用的链路层协议。

PPP协议能够差错检测,还能检测出当前链路是否正常工作,PPP协议能为每一种类型的链路设置MTU
对于拨号连接的链路,必须通过PPP协议知道各自网络层的地址,保证网络层传送分组。
PPP协议不自持多点线路,只支持点对点的全双工链路。
2.PPP协议的组成
(1)一个将IP数据包封装到串行链路的方法
(2)一个用来建立,配置和测试数据链路连接的链路控制协议LCP
(3)一套网络控制协议NCP,每一个协议支持不同网络层协议
3.2.2PPP协议的帧格式
1.各字段的意义

Paste_Image.png

F是标志字段,即帧的定界符,连续两个帧之间只要有一个标识字段,如果出现连续两个标志字段,表示这是一个空帧,丢弃掉。
第四个字段是2字节的协议字段,不同的协议字段,PPP帧的信息字段代表不同信息(IP数据报或LCP的数据,网络层控制数据)
FCS刚才已经讲到了
2.字节填充(PPP使用异步传输,逐个字符传送)
当信息字段出现和标志字段一样的比特组合时,需要字节填充(把信息字段出现的每一个和标识字段重复的字符转成2字节序列),在接收端做与发送端相反的操作就能够还原比特流。
3.零比特填充(PPP使用同步传输,一连串的比特连续传送)
这里我必须指出帧定界符转换成二进制后是01111110,零比特填充是在发送端扫描整个信息字段,只要发现5个连续的1就马上填入一个0,接收端收到一个帧时,先找到标识字段F确定一个帧边界,然后对比特流进行扫描,只要出现5个连续的1,就把5个连续的1后的一个0删掉还原成原来的信息比特流,这样保证透明传输。
3.2.3PPP协议的工作状态
下面这个图希望读者认真看几遍。


Paste_Image.png

LCP封装成多个PPP帧,建立了LCP连接后,这些分组和响应选择了将要使用的一些PPP参数,再进行网络配置。
NCP给新接入的用户电脑分配一个临时的IP,成为互联网上有IP的主机。注意网络连接断开时,NCP释放网络层连接,收回分配的IP地址,LCP释放数据链路层连接,最后释放物理层连接。
链路静止不存在物理层连接,当用户再Windows上点击连接按钮,电脑上的调制解调器发出载波信号,路由器识别后双方建立物理连接,PPP进入链路建立状态,建立链路层的LCP连接。LCP发送配置请求帧,另一端可以发送以下三种类型的帧:
(1)配置确认帧
(2)配置否认帧
(3)配置拒绝帧(选项有的无法识别或不能接受,需要协商)
LCP配置选项包括链路上的最大帧长,所使用的鉴别协议等,协商结束后双方建立LCP链路,进入鉴别状态,一方发送身份标识符和口令确认身份,鉴别成功,就进入网络层协议,失败就链路终止。
PPP协议两端的网络层可以运行不同的网络层协议,通过NCP根据网络层不同协议互相交换网络层特定网络控制分组。如果PPP链路上使用的是IP协议,对每一端配置IP协议模块时使用NCP支持IP协议的IP控制协议IPCP,IPCP分组封装成PPP帧再PPP链路上传输。当网络层配置完毕,链路进入链路打开状态,链路两端可以发送分组,数据传输结束后一端发送终止请求LCP分组,收到对方的终止确认LCP分组后转到链路终止状态,同时,链路出现故障或者调制解调器载波停止后,也会到链路终止状态。
<h5>3.3广播信道的数据链路层</h5>
3.3.1局域网的数据链路层
局域网我就不再解释了,局域网打CS的同学们最熟悉了对不对。
局域网的优点:
(1)具有广播功能,从一个站点能方便访问全网,局域网上的主机可以共享连接在局域网上的各种硬件和软件资源
(2)便于系统拓展
(3)提高系统可靠性,可用性,生存性
局域网有多种拓扑结构,其中总线网延伸为了现在的以太网。
接下来我要抛出共享信道这个问题,它要解决的时如何让数以亿计的用户合理方便的共享通信媒体资源,之前再物理层我们讲过了时分复用,频分,码分复用,这种方式用户分配到了信道就不会和其他用户发生冲突,可是代价很高,不适合局域网使用,于是就有了后面的随机接入,用户随机发送请求,如果恰巧有两个或者更多的用户同一时刻发送请求,在共享媒体上就出现碰撞冲突,使这些用户发送失败,所以CSMA/CD协议来解决这个问题。

我们接下来研究一下计算机连入到局域网的过程
二者通过适配器连接,适配器位于计算机的主板上,上面装有ROM和RAM,适配器和局域网之间通信时通过电缆或双绞线串行传输方式传输,而适配器与计算机之间通过I/O总线并行传输数据,所以适配器要做到串行和并行的转换,网络的数据率和计算机总线的数据率不同,也需要适配器里装有对数据进行缓存的存储芯片,通过OS里的驱动程序告诉适配器在存储器什么位置把多长数据发出去,把收到的数据存储到存储器什么位置,适配器要实现以太网协议。


Paste_Image.png

适配器发送和接收帧时,CPU和适配器互不影响,适配器收到错误的帧直接丢弃,收到正确的帧就中断通知计算机,交付给网络层,同理发送数据时网络层把IP数据报给适配器组装成帧发到局域网。计算机MAC地址在适配器ROM里,计算机IP地址在计算机存储器里。

3.3.2CSMA/CD协议
这个协议是数据链路层这一章最重点的地方了,我将详细讲解这一协议。
总线的特点是一个主机发送数据,别的连接在该总线的主机都能够收到,如果做成一对一通信,那么就要在帧的首部写明接收站的MAC地址,当数据帧的目的地址与适配器ROM中的MAC地址一样时,适配器接收这个数据帧,否则丢弃掉,为了通信简单,以太网做出如下几点措施:
第一采用无连接方式,即不需要建立连接就发送数据,发送方不需要对方发回确认,接收方需要差错检测,如果有差错就丢弃掉什么也不做,重传机制由上层的TCP决定,如果TCP发现丢失了一些数据,过一段时间就把数据重新传给以太网,以太网当成新帧传递出去。
然而总线上只允许同一时刻内一台计算机发送数据,否则计算机之间会互相干扰,所以需要CSMA/CD协议来规范化不同计算机对总线的占用。
曼彻斯特编码比如发送比特流1000100111,有一长串的1和0,接收端无法从收到的比特流提取位同步信号,所以把每一个码元分成两个相等的间隔,1可以时前高后低,0相反,这样保证每一个码元正中间出现一次电压转换,接收端可以很方便把位同步信号提取出来。

Paste_Image.png

CSMA/CD协议是在总线型网络里面,载波监听就是不管在发送前还是发送中,每个站都需要不停的检测信道,发送前检测是为了获取发送全,如果有其他站在发送,自己就暂时不能发,等信道空闲再能发送,在发送中检测就是适配器随时监听信道上电压变化,当几个站同时发送数据,总线上信号电压会幅度增大,这时超过一定的门限值,发送的信号会失真,适配器停止发送数据,我们举一个例子来说明这个情况,我们规定总线上单程端到端传播时延记为τ
τ>δ>0


Paste_Image.png

在t=τ-δ时刻B检测到信道空闲,发送数据

Paste_Image.png

t'=τ-δ/2时发生碰撞
t‘’=τ时B检测到碰撞,停止发送数据
t‘’‘=2τ-δ时A检测到碰撞
注意数据发生碰撞时,AB都不知道发生了碰撞
在使用CSMA/CD协议时一个站不能既发送和接收,使用CSMA/CD协议的以太网必须是半双工通信。
如果希望以太网上发生碰撞的机会很小,必须使整个以太网的平均通信量远小于以太网的最高数据率。当δ →0,在发送数据帧后最多经过2τ就可以知道发送的数据帧是否遭到了碰撞,以太网上端到端的往返时间2τ称为争用期,如果经过争用期这段时间还没有检测到碰撞,才能肯定这次发送不会发生碰撞。
以太网使用截断二进制指数退避算法确定碰撞后的重传时机。当发生碰撞后,可能有好多站都在监听信道,都会检测到信道空闲,就需要彼此推迟一个随机的时间重传。
接下来讲到的是截断二进制指数避退算法,从离散的整数集合[0,1,…,2k次幂-1]中随机取出一个一个数,记为r,重传应推后的时间就是r倍的争用期,即2rτ,上面的参数k按下面的公式计算k=min[重传次数,10],当重传次数不超过10,参数k等于重传次数,当重传次数超过10次,k=10不变了。当重传次数超过16次仍不成功,则丢弃该帧,并向高层报告。比如k=1,随机数从{0,1}选一个数字,重传推迟时间可以是0或者2τ,这两个时间随机选一个,如果再次发生碰撞,k=2,r从{0,1,2,3}中选择一个数,重传时间可以是0,2τ,4τ,6τ,随机选择一个,以此类推…
重传推迟的平均时间随重传次数而增大,减少发生碰撞的概率,有利于整个系统的稳定。如果一个帧和别的站发送的帧发生了碰撞,然而发送站不能检测出碰撞,为了避免这种情况,以太网规定了最短帧长,如果发送的数据非常小,要做字节填充,比如让帧长不小于64字节,所以在以太网发送数据时,超过争用期(64字节)没有发生碰撞,后面发送的数据一定不会发生冲突,如果检测到冲突,立即终止发送,所以发送出去的数据一定小于64字节,所以只要长度小于64字节的帧都是由于冲突而异常终止的无效帧,接收端会丢弃这个帧。一条链路最大传播时延是争用期的一半(这个地方我不是很理解,希望读者指出来),
接下来我讲解强化碰撞的概念,当数据发生碰撞的时候,需要继续发送人为干扰信号,让所有用户都知道现在已经发生了碰撞。以太网还规定了帧最小间隔是9.6μs,这样为了使刚刚收到数据帧的站清空缓存等待下一帧。
发送方一定要把发送的帧缓存起来,万一发生碰撞了还要把这个帧重发。
所以归纳一下CSMA/CD协议的要点

CSMA/CD协议的要点归纳:
①准备发送:适配器从网络层获得一个分组,加上以太网的首部和尾部,组成以太网帧,放入适配器的缓存中,但在发送之前,必须先检测信道;
②检测信道:若检测到信道忙,则应不停地检测,一直等待信道转为空闲。若检测到信道空闲,并在96比特时间内信道保持空闲,就发送这个帧;
③在发送过程中仍不停地检测信道,即网络适配器要边发送边监听,这里只有两种可能性:
④一是发送成功:在争用期内一直没有检测到碰撞,这个帧肯定能够发送成功;
⑤二是发送失败:在争用期内检测到碰撞,这是立即停止发送数据,并按照规定发送人为干扰信号;适配器接着就执行指数退避算法,等待r倍512比特时间后,返回步骤2,继续检测信道;但若重传16次还不能成功,则停止重传而向上报错;
⑥以太网每发送完一帧,一定要把已发送的帧暂时保留一下。

这样你就已经把CSMA/CD协议知识点完整的过了一遍。
3.3.3使用集线器的星形拓扑
集线器的特点(这里我挑重点的讲):
(1)使用集线器的以太网逻辑上仍然使一个总线网,各站共享逻辑总线,使用的还是CSMA/CD协议,所以同一时刻最多只允许一个站发送数据。
(2)集线器构造上类似于一个多接口的转发器。
(3)集线器工作在物理层,不进行碰撞检测,如果两个接口同时输入信号会发生碰撞,所有接口会收不到正确的帧。
如果一个适配器出现故障,集线器能检测出来并断开与之的连接。
3.3.4以太网的信道利用率
下面这个图能够说明信道被占用的情况,其中发送帧时间T0=帧长/发送速率。

Paste_Image.png

令α=τ/T0 α→0时,信道利用率非常高,反之表明争用期比例越大,每发生一次碰撞就浪费了不少的信道资源,信道利用率明显降低。
要让α变小,数据率一定,以太网的连线长度要受到限制,否则τ会太大,以太网帧长不能太短,否则T0太小了。
理想的极限信道利用率Smax=T0/(T0+τ)=1/(1+α),α<<1才能有高的极限信道利用率,反之α>>1,每一次碰撞都要浪费相对较多的传输数据时间,极限信道利用率就远远小于1,而以太网利用率达到30%就已经处于重载的情况了。
3.3.5以太网的MAC层
1.MAC层的硬件地址
局域网里硬件地址又成为MAC地址,或物理地址。
名字指出我们所要找的那个资源,地址指出那个资源在何处,路由告诉我们如何到达该处。
地址是指局域网上的每一台电脑中固化在适配器的ROM中的地址,即使地理位置变了,电脑在局域网中的地址不会变。目前局域网适配器都用6字节的地址字段作为MAC地址,MAC地址也作为适配器地址或者适配器标识符。
适配器有过滤功能,当发送过来MAC帧,用硬件检查MAC帧的目的地址,如果是发到本站的收下,不然就丢掉。
1.MAC帧分为以下几种:
(1)单播帧,收到的帧的MAC地址和本站的硬件地址一样
(2)广播帧,发送给本局域网的所有站点的帧
(3)多播帧,发送给本局域网一部分站点的帧
只有目的地址才能够使用广播地址和多播地址
2.MAC帧的格式如下:

Paste_Image.png

2字段的类型代表上一层使用什么网络协议,来把收到的MAC帧的数据交给上一层这个协议,46字节这样得出:帧的最短长度64-6-6-2-4=46
FCS是本篇文章讲的差错检测序列。
MAC子层找到帧结束的位置(通过曼彻斯特编码)往前数4个字节找到数据部分交付给上一层协议。
当IP数据报不足46个字节,会填充字符,上层使用IP协议的时候,首部就有总长度,接收端就很容易去掉填充的字节还原数据。
传输媒体上插入8个字节,7个字节是前同步码,它用来让接收端的适配器接收MAC帧迅速调整时钟频率,和发送端时钟同步,第二个字段是帧开始定界符,通知接收端准备接收MAC帧,FCS不用来检测这8个字节。
注意以太网不需要使用帧结束定界符,不需要使用字节插入来保证透明传输(因为以太网传送帧,帧之间有间隙),如果MAC帧有差错,即无效,就丢掉,以太网不负责重传丢弃的帧。

<h5> 3.4拓展以太网</h5>
3.4.1在物理层拓展以太网
物理层拓展以太网使用的是集线器,把独立的以太网通过集线器连接起来实现通信,不过这样增大了数据碰撞的可能性。
3.4.2在数据链路层拓展以太网
1.以太网交换机的特点
交换机实质上是多接口的网桥,它的每一个接口都与一个主机或另一个交换机相连,都是全双工模式,具有并行性,同时连接多个接口,让多对主机同时通信,相互通信的主机独占传输媒体,无碰撞传输。
交换机的总带宽是各部分带宽之和,并且每个用户独占这个资源, 所以每个用户分配到的带宽是交换机总带宽。
以太网交换机有存储器,可以缓存帧,采用存储转发的方式进行差错检测。
2.交换机的自学习能力

Paste_Image.png

A向B发送一帧,帧通过接口1进入交换机,查找转发表,刚开始是空的,所以查找不到,将把A 的MAC地址和接口名字写在了交换表里,然后需要广播给剩下的接口,2 4接口分别过滤掉,3接口收到这一帧后,以后如果目的地址是A,就会自动发送到1端口。比如B给A发送帧,查找交换表找到后会自动发给1端口,然后把B的MAC地址和3写入到交换表里面,没写入一行数据都会设置好类似于浏览器的Cookie,过期后会清空,这样保证交换表的数据符合当前的网络情况。
3.4.3虚拟局域网VLAN

Paste_Image.png

我通过下面的例子介绍VLAN

Paste_Image.png

LAN1:A1 A2 B1 C1
LAN2:A3 B2 C2
LAN3:A4 B3 C3
还可以划分为三个VLAN:
VLAN1:A4 A3 A1 A2
VLAN2:B3 B2 B1
VLAN3:C3 C2 C1
B1向VLAN2工作组广播消息,B2 B3可以接收到,而A1 A2 C1不会收到,VLAN限制了接收广播信息的计算机数,让网络不会因为传播过多的广播信息导致性能恶化。

Paste_Image.png

支持VLAN的帧格式,是对以太网帧格式的拓展,VLAN标记指明发送该帧的计算机属于哪一个VLAN,上面第二个图粗线部分链路上面传输的帧是802.1Q帧,在其他链路上传输的帧仍然是以太网帧。
数据链路层检测到MAC帧源地址后面有802.1Q标记类型就认为这是一个VLAN标记,而后面的VID表明这个帧属于哪一个VLAN。
<h5>3.5高速以太网</h5>
这里我介绍一下吉比特以太网,它可用作现有网络的主干网,也可以在高宽带的应用场合中连接计算机和服务器,它有半双工和全双工工作模式。在半双工模式下,吉比特以太网增加了分组突发的功能,当很多短帧发送的时候,第一个帧填充字符后剩下的帧一个一个发送,他们之间留有帧间最小间隔,组成一串分组转发,直到达到1500字节以上位置。
以太网已经从局域网拓展到了广域网上面。如果需要用以太网进行宽带接入,需要用到PPPoE,在以太网上运行PPP协议,用户键入在网络运营商购买的用户名和密码就可以上网。
以上就是数据链路层的大致知识内容了。本篇博客重点还是CSMA/CD协议,这也是考研里经常考的一个点。
本系列下一篇文章我们开始研究网络层。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,362评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,330评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,247评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,560评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,580评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,569评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,929评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,587评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,840评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,596评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,678评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,366评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,945评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,929评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,165评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,271评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,403评论 2 342

推荐阅读更多精彩内容