4网络层(1)

4.1网络层服务

v ■从发送主机向接收主机传送数据段(segment)

v ■发送主机:将数据段封装到数据报(datagram)中

v ■接收主机:向传输层交付数据段(segment)

v ■每个主机和路由器都运行网络层协议

v ■路由器检验所有穿越它的IP数据报的头部域

§ 决策如何处理IP数据报

网络层核心功能-转发与路由

路由器必须维护一个转发表

v ■转发(forwarding):将分组从路由器的输入端口转移到合适的输出端口

v ■路由(routing):确定分组从源到目的经过的路径

§ 路由算法(routingalgorithms)

网络层核心功能-连接建立

v■某些网络的重要功能:

§ATM,帧中继, X.25

v ■数据分组传输之前两端主机需要首先建立虚拟/逻辑连接

§ 网络设备(如路由器)参与连接的建立(网络层每一个设备都要参与连接)

v ■网络层连接与传输层连接的对比:

§ 网络层连接:两个主机之间(路径上的路由器等网络设备参与其中)

§ 传输层连接:两个应用进程之间(对中间网络设备透明)

网络层服务模型

v■无连接服务(connection-less service):

§ 不事先为系列分组的传输确定传输路径

§ 每个分组独立确定传输路径

§ 不同分组可能传输路径不同

§ 数据报网络(datagram network )

v■连接服务(connection service):

§ 首先为系列分组的传输确定从源到目的经过的路径(建立连接)

§ 然后沿该路径(连接)传输系列分组

§ 系列分组传输路径相同

§ 传输结束后拆除连接

§ 虚电路网络(virtual-circuit network )

4.2虚电路网络与数据报网络

4.2.1虚电路网络

连接服务与无连接服务

v■数据报(datagram)网络与虚电路(virtual-circuit)网络是典型两类分组交换网络

v■数据报网络提供网络层无连接服务

v■虚电路网络提供网络层连接服务

v■类似于传输层的无连接服务(UDP)和面向连接服务(TCP),但是网络层服务:(传输层是进程与进程之间的连接服务,而网络层是主机到主机之间的服务)

§ 主机到主机服务

§ 网络核心实现

虚电路(Virtual circuits)

■虚电路:一条从源主机到目的主机, 类似于电路的路径(逻辑连接)

§ 分组交换

§ 每个分组的传输利用链路的全部带宽

§ 源到目的路径经过的网络层设备共同完成虚电路功能

v ■通信过程:

§ 呼叫建立(call setup)→数据传输→拆除呼叫

v ■每个分组携带虚电路标识(VC ID), 而不是目的主机地址

v ■虚电路经过的每个网络设备(如路由器) , 维护每条经过它的虚电路连接状态

v ■链路、 网络设备资源(如带宽、 缓存等)可以面向VC进行预分配

§ 预分配资源=可预期服务性能

§ 如ATM的电路仿真(CBR)

VC的具体实现

■每条虚电路包括:

1.从源主机到目的主机的一条路径

2.虚电路号(VCID) , 沿路每段链路一个编号

3.沿路每个网络层设备(如路由器), 利用转发表记录经过的每条虚电路

v ■沿某条虚电路传输的分组,携带对应虚电路的VCID,而不是目的地址

v ■同一条VC,在每段链路上的VCID通常不同

§ 路由器转发分组时依据转发表改写/替换虚电路号

VC转发表

虚电路信令协议(signaling protocols)

v■用于VC的建立、维护与拆除

§ 路径选择

v■应用于虚电路网络

§ 如ATM、帧中继(frame-relay)网络等

v■目前的Internet不采用

4.2.2数据报网络

v ■网络层无连接

v ■每个分组携带目的地址

v ■路由器根据分组的目的地址转发分组

§ 基于路由协议/算法构建转发表

§ 检索转发表

§ 每个分组独立选路

数据报转发表

最长前缀匹配优先

在检索转发表时,优先选择与分组目的地址匹配前缀最长的入口(entry)。

数据报网络or VC网络?

Internet (数据报网络)

v ■计算机之间的数据交换

§ “弹性” 服务,没有严格时间需求

v ■链路类型众多

§ 特点、性能各异

§ 统一服务困难

v ■“智能” 端系统(计算机)

§ 可以自适应、性能控制、差错恢复

v■简化网络,

复杂“边缘”

ATM (VC网络)

v ■电话网络演化而来

v ■核心业务是实时对话:

§ 严格的时间、可靠性需求

§ 需要有保障的服务

v ■“哑(dumb)” 端系统(非智能)

§ 电话机

§ 传真机

v■简化“边缘” ,

复杂网络

4.3IPv4协议

4.3.1IP数据报

Internet网络层

IP数据报(分组)格式

v ■版本号字段占4位:IP协议的版本号

§E.g. 4→IPv4,6→IPv6

v ■首部长度字段占4位:IP分组首部长度

§ 以4字节为单位

§E.g. 5→IP首部长度为20(5×4)字节

v ■服务类型(TOS)字段占8位:指示期望获得哪种类型的服务

§1998年这个字段改名为区分服务

§ 只有在网络提供区分服务(DiffServ)时使用

§ 一般情况下不使用,通常IP分组的该字段(第2字节)的值为00H

v ■总长度字段占16位:IP分组的总字节数(首部+数据)

§ 最大IP分组的总长度:65535B

§ 最小的IP分组首部:20B

§IP分组可以封装的最大数据:65535-20=65515B

v ■生存时间(TTL) 字段占8位:IP分组在网络中可以通过的路由器数(或跳步数)

§ 路由器转发一次分组,TTL减1

§ 如果TTL=0,路由器则丢弃该IP分组

v ■协议字段占8位: 指示IP分组封装的是哪个协议的数据包

§ 实现复用/分解

§E.g. 6为TCP,表示封装的为TCP段;17为UDP, 表示封装的是UDP数据报

■首部校验和字段占16位:实现对IP分组首部的差错检测

§ 计算校验和时,该字段置全0

§ 采用反码算数运算求和,和的反码作为首部校验和字段

§ 逐跳计算、逐跳校验

路由器转发的时候因为TTL的更改每次转发都要重新校验和计算校验和

■源IP地址、目的IP地址字段各占32位:分别标识发送分组

的源主机/路由器(网络接口)和接收分组的目的主机/路由器

(网络接口)的IP地址

■选项字段占长度可变,范围在1~40B之间:携带安全、源选路径(发送数据报的时候就把源主机和目的主机的路径以及确定下来)、时间戳和路由记录等内容

§ 实际上很少被使用(主要用于网络探测和度量)

v ■填充字段占长度可变,范围在0~3B之间:目的是补齐整个首部,符合32位对齐,即保证首部长度是4字节的倍数

4.3.2IP分片

最大传输单元(MTU)

v 网络链路存在MTU (最大传输单元)—链路层数据帧可封装数据的上限

§ 不同链路的MTU不同

IP分片与重组

v ■大IP分组向较小MTU链路转发时, 可以被“分片”(fragmented)(也可以不分,不允许路由分片就把该MTU扔掉)

§1个IP分组分为多片IP分组

§IP分片到达目的主机后进行“重组”(reassembled)

v■IP首部的相关字段用于标识分片以及确定分片的相对顺序

§ 总长度、标识、标志位和片偏移

IP分组格式

v ■标识字段占16位:标识一个IP分组

§IP协议利用一个计数器,每产生IP分组计数器加1,作为该IP分组的标识(标识位加1)

v ■标志位字段占3位:

§DF (Don't Fragment)

§MF (More Fragment)

§DF =1:禁止分片;

DF =0:允许分片

§MF =1:非最后一片;

MF =0:最后一片(或未分片)

v ■片偏移字段占13位:一个IP分组分片封装原IP分组数据的相对偏移量

§ 片偏移字段以8字节为单位

IP分片过程

v ■假设原IP分组总长度为L,待转发链路的MTU为M

v ■若L>M,且DF=0,则可以/需要分片

v ■分片时每个分片的标识复制原IP分组的标识

v ■通常分片时,除最后一个分片,其他分片均分为MTU允许的最大分片

v ■一个最大分片可封装的数据应该是8的倍数, 因此, 一个最大分片可封装的数据为:

v■需要的总片数为:

v ■每片的片偏移字段取值为:

v ■每片的总长度字段为:

v ■每片的MF标志位为:

4.3.3IP编址(addressing)

v ■IP分组:

§ 源地址(SA)-从哪儿来

§ 目的地址(DA)-到哪儿去

v ■接口(interface):主机/路由器与物理链路的连接

§ 实现网络层功能

§ 路由器通常有多个接口

§ 主机通常只有一个或两个接口(e.g.,有线的以太网接口,无线的802.11接口)

v■IP地址: 32比特(IPv4)编号标识主机、路由器的接口

v ■IP地址与每个接口关联

IP子网(Subnets)

v■IP地址:

§ 网络号(NetID)– 高位比特

§ 主机号(HostID)– 低位比特

v■IP子网:

§IP地址具有相同网络号的设备接口

§ 不跨越路由器(第三及以上层网络设备)可以彼此物理联通的接口

4.3.4有类IP地址

特殊IP地址

私有(Private)IP地址

4.3.5IP子网划分与子网掩码

子网划分

■区别一个IP子网更小范围网络(子网)

v■IP地址:

§ 网络号(NetID)– 高位比特

§ 子网号(SubID)– 原网络主机号部分比特

§ 主机号(HostID)– 低位比特

子网掩码

v■形如IP地址:

§32位

§ 点分十进制形式

v ■取值:

§NetID、SubID位全取1

§HostID位全取0

v■例如:

§A网的默认子网掩码为:255.0.0.0

§B网的默认子网掩码为:255.255.0.0

§C网的默认子网掩码为:255.255.255.0

§ 借用3比特划分子网的B网的子网掩码为:255.255.224.0

子网掩码的应用

v将IP分组的目的IP地址与子网掩码按位与运算,提取子网地址

4.3.6CIDR与路由聚合

CIDR

无类域间路由(CIDR: Classless InterDomain Routing)

§ ■消除传统的A类、B类和C类地址界限

§NetID+SubID→Network Prefix (Prefix)可以任意长度

§ ■融合子网地址与子网掩码,方便子网划分

§ 无类地址格式:a.b.c.d/x,其中x为前缀长度

CIDR与路由聚合

无类域间路由(CIDR: Classless InterDomain Routing)

§ ■提高IPv4地址空间分配效率

§ ■提高路由效率

§ 将多个子网聚合为一个较大的子网

§ 构造超网(supernetting)

§ 路由聚合(route aggregation)

路由聚合

使用单个网络前缀通告多个网络的方式称为路由聚合

层级编址使得路由信息通告更高效:

选用更具体的路由:最长前缀匹配优先!

4.4DHCP协议

如何获得IP地址?

v ■“硬编码”

§ 静态配置

v ■动态主机配置协议-DHCP: Dynamic Host Configuration Protocol

§ • 从服务器动态获取:

IP地址

子网掩码

默认网关地址(即第一跳路由器的地址:当这个子网内IP报要离开子网的时候应该向哪个网络转发)

DNS服务器名称与IP地址

§ • “即插即用”

§ • 允许地址重用(用完某一个ip地址,用完可以还回去给别的主机用)

§ • 支持在用地址续租

§ • 支持移动用户加入网络

动态主机配置协议(DHCP)

v ■主机广播 “DHCP discover”(发现报文)

v ■DHCP服务器利用 “DHCP offer”(提供报文)进行响应(可以提供DHCP服务)

v ■主机请求IP地址:“DHCP request”(请求报文)

v ■DHCP服务器分配IP地址:“DHCP ack”(确认报文)

DHCP工作过程示例

vDHCP协议在应用层实现

§ 请求报文封装到UDP数据报中

§IP广播(映射为链路层广播)

§ 链路层广播(e.g.以太网广播)

■DHCP服务器构造ACK报文

§ 包括分配给客户的IP地址、子网掩码、默认网关、DNS服务器地址

4.5网络地址转换(NAT)

动机:

§ ■只需/能从ISP申请一个IP地址

•IPv4地址耗尽

§ ■本地网络设备IP地址的变更,无需通告外界网络

§ ■变更ISP时,无需修改内部网络设备IP地址

§ ■内部网络设备对外界网络不可见,即不可直接寻址(安全)

实现:

§ ■替换

• 利用(NAT IP地址,新端口号)替换每个外出IP数据报的(源IP地址,源端口号)

§ ■记录

• 将每对(NAT IP地址,新端口号)与(源IP地址,源端口号)的替换信息存储到NAT转换表中

§ ■替换

• 根据NAT转换表,利用(源IP地址,源端口号)替换每个进入内网IP数据报的(目的IP地址,目的端口号),即(NAT IP地址,新端口号)

v■16-bit端口号字段:

§ 可以同时支持60,000多并行连接!

v■NAT主要争议:

§ • 路由器应该只处理第3层功能

§ • 违背端到端通信原则

应用开发者必须考虑到NAT的存在,e.g., P2P应用

§ • 地址短缺问题应该由IPv6来解决

NAT穿透问题

v■客户期望连接内网地址为10.0.0.1的服务器

§ 客户不能直接利用地址10.0.0.1直接访问服务器

§ 对外唯一可见的地址是NAT地址: 138.76.29.7

v■解决方案1:静态配置NAT,将特定端口的连接请求转发给服务器

§e.g., (138.76.29.7, 2500)总是转发给(10.0.0.1, 25000)

v■解决方案2:利用UPnP(Universal Plug and Play)互联网网关设备协议(IGDInternet Gateway Device )自动配置:v

学习到NAT公共IP地址(138.76.29.7)

v 在NAT转换表中,增删端口映射

■解决方案3:中继(如Skype)

§NAT内部的客户与中继服务器建立连接

§ 外部客户也与中继服务器建立连接

§ 中继服务器桥接两个连接的分组

4.6互联网控制报文协议(ICMP)

v ■互联网控制报文协议ICMP (Internet Control Message Protocol)支持主机或路由器:

§ 差错(或异常)报告

§ 网络探询(发送特殊报文来实现)

v ■两类ICMP报文:

§ 差错报告报文(5种)

• 目的不可达

• 源抑制(Source Quench)(设计目的是用于拥塞控制,目前路由器已满,发送到源主机,控制发送速率,目前未使用)

• 超时/超期

• 参数问题(报文头部某些参数有问题,丢弃并发送)

• 重定向(Redirect)

§ 网络探询报文(2组)

• 回声(Echo)请求与应答报文(Reply)(eig:ping)

• 时间戳请求与应答报文

例外情况

v ■几种不发送ICMP差错报告报文的特殊情况:

§ 对ICMP差错报告报文不再发送ICMP差错报告报文(如果已经有一个ICMP差错报文,这个报文出错不会再次发送ICMP报文)

§ 除第1个IP数据报分片外, 对所有后续分片均不发送ICMP差错报告报文

§ 对所有多播IP数据报均不发送ICMP差错报告报文

§ 对具有特殊地址(如127.0.0.0或0.0.0.0) 的IP数据报不发送ICMP差错报告报文

v ■几种ICMP报文已不再使用

§ 信息请求与应答报文

§ 子网掩码请求和应答报文

§ 路由器询问和通告报文

ICMP报文的格式

vICMP报文封装到IP数据报中传输

ICMP差错报告报文数据封装

4.7IPv6简介

IPv6:动机

v ■最初动机: 32位IPv4地址空间已分配殆尽

v ■其他动机:改进首部格式

§ 快速处理/转发数据报

§ 支持QoS

■IPv6数据报格式:

§ 固定长度的40字节基本首部

§ 不允许分片

IPv6数据报格式

优先级(priority):标识数据报的优先级

流标签(flow Label):标识同一“流”中的数据报(根据不同流标签用于不同服务)

下一个首部(next header):标识下一个选项首部或上层协议首部(如TCP首部)(指向下一个扩展首部,没有就指向上层协议首部)

其他改变vs IPv4

v■校验和(checksum):彻底移除,以减少每跳处理时间

v■选项(options):允许,但是从基本首部移出,定义多个选项首部,通过“下一个首部”字段指示

v■ICMPv6:新版ICMP

§ 附加报文类型,e.g.“Packet Too Big”

§ 多播组管理功能(IPv4中的IGMP集成到ICMPv6上)

IPv6地址表示形式

IPv6基本地址类型

IPv4向IPv6过渡

v■不可能在某个时刻所有路由器同时被更新为IPv6

§ 不会有 “标志性的日期”

§IPv4和IPv6路由器共存的网络如何运行?

v■隧道(tunneling): IPv6数据报作为IPv4数据报的载荷进行封装,穿越IPv4网络

隧道(tunneling)

4.8路由算法

路由与转发

网络抽象:图

路由算法分类

■静态路由vs动态路由?

·静态路由:

v 手工配置

v 路由更新慢

v 优先级高

·动态路由(基于算法):

v 路由更新快

§ 定期更新

§ 及时响应链路费用或网络拓扑变化

■全局信息vs分散信息?

·全局信息:

v 所有路由器掌握完整的网络拓扑和链路费用信息

vE.g.链路状态(LS)路由算法

·分散(decentralized)信息:

v 路由器只掌握物理相连的邻居以及链路费用

v 邻居间信息交换、运算的迭代过程

vE.g.距离向量(DV)路由算法

4.8.2链路状态路由算法

Dijkstra算法

v ■所有结点(路由器)掌握网络拓扑和链路费用

§ 通过“链路状态广播”

§ 所有结点拥有相同信息

v ■计算从一个结点(“源”)到达所有其他结点的最短路径

§ 获得该结点的转发表

v ■迭代: k次迭代后,得到到达k个目的结点的最短路径

符号:

v■c(x,y):结点x到结点y链路费用;如果x和y不直接相连,则=∞

v■D(v):从源到目的v的当前路径费用值

v■p(v):沿从源到v的当前路径,v的前序结点

v■N’:已经找到最小费用路径的结点集合

Dijkstra算法:讨论

算法复杂性:n个结点

v ■每次迭代:需要检测所有不在集合N’中的结点w

v ■n(n+1)/2次比较: O(n2)

v ■更高效的实现: O(nlogn)

存在震荡(oscillations)可能:(由于不断更新的路由状态信息而出现的)

v ■e.g.,假设链路费用是该链路承载的通信量:

4.8.3距离向量路由算法

距离向量路由算法

距离向量DV:链路费用变化

链路费用变化:

v ■结点检测本地链路费用变化

v ■更新路由信息,重新计算距离向量

v ■如果DV改变,通告所有邻居

t0 : y检测到链路费用改变 ,更新DV,通告其邻居.

t1 : z收到y的DV更新,更新其距离向量表,计算到达x的最新最小费用,更新其DV,并发送给其所有邻居.

t2 : y收到z的DV更新, 更新其距离向量表,重新计算y的DV,未发生改变,不再向z发送DV.

好消息传播快

距离向量DV:无穷计数问题

解决办法:

(1)毒性逆转(poisoned reverse):

v 如果一个结点(e.g. Z)到达某目的(e.g.X)的最小费用路径是通过某个邻居(e.g.Y),则:

§ 通告给该邻居结点到达该目的的距离为无穷大

(如果一个节点z到达某目的x的最小路径是通过z的邻居y实现,则通过z通告y它(z)去x的距离无无穷大)

(2)定义最大度量(maximum metric):

v (从一个点到另一个点)定义一个最大的有效费用值,如15跳步,16跳步表示∞

4.9Internet路由

4.9.1层次路由

将任意规模网络抽象为一个图计算路由-过于理想化

v 标识所有路由器

v “扁平”网络

——在实际网络(尤其是大规模网络)中, 不可行!

网络规模:考虑6亿目的结点的网络

v ■路由表几乎无法存储!

v ■路由计算过程的信息(e.g.链路状态分组、DV)交换量巨大,会淹没链路!

管理自治:

v ■每个网络的管理可能都期望自主控制其网内的路由

v ■互联网(internet) =网络之网络(network of networks)

v■聚合路由器为一个区域:自治系统AS(autonomous systems)

v■同一AS内的路由器运行相同的路由协议(算法)

§ 自治系统内部路由协议(“intra-AS”routing protocol)

§ 不同自治系统内的路由器可以运行不同的AS内部路由协议

■网关路由器(gateway router):

v 位于AS“边缘”

v 通过链路连接其他AS的网关路由器

互连的AS

自治系统间(Inter-AS)路由任务

v ■假设AS1内某路由器收到一个目的地址在AS1之外的数据报:

§ 路由器应该将该数据报转发给哪个网关路由器呢?

AS1必须:

1.学习到哪些目的网络可以通过AS2到达,哪些可以通过AS3到达

2.将这些网络可达性信息传播给AS1内部路由器

4.9.2RIP协议

AS内部路由

v■Internet采用层次路由

v■AS内部路由协议也称为内部网络协议IGP(interior gateway protocols)

v■最常见的AS内部路由协议:

§ 路由信息协议:RIP(Routing Information Protocol)

§ 开放最短路径优先:OSPF(Open Shortest Path First)

§ 内部网关路由协议:IGRP(Interior Gateway Routing Protocol)

§ ·Cisco私有协议

RIPv

■早于1982年随BSD-UNIX操作系统发布

v ■距离向量路由算法

§ 距离度量:跳步数(max = 15 hops),每条链路1个跳步

§ 每隔30秒,邻居之间交换一次DV,成为通告(advertisement)

§ 每次通告:最多25个目的子网(IP地址形式)

RIP:链路失效、恢复

如果180秒没有收到通告→邻居/链路失效

§ ■经过该邻居的路由不可用

§ 重新计算路由

§ ■向邻居发送新的通告

§ ■邻居再依次向外发送通告(如果转发表改变)

§ ■链路失效信息能否快速传播到全网?

§ 可能发生无穷计数问题

§ ■毒性逆转技术用于预防乒乓(ping-pong)环路(另外:无穷大距离= 16 hops)

RIP路由表的处理

v■RIP路由表是利用一个称作route-d (daemon)的应用层进程进行管理(根据功能划分层次)

v应用进程实现

v■通告报文周期性地通过UDP数据报发送

4.9.3OSPF协议简介

OSPF (Open Shortest Path First)(自治系统内部协议)

■v“开放”:公众可用

v■采用链路状态路由算法

§LS分组扩散(通告)

§ 每个路由器构造完整的网络(AS)拓扑图

§ 利用Dijkstra算法计算路由

v■OSPF通告中每个入口对应一个邻居

v■OSPF通告在整个AS范围泛洪

§OSPF报文直接封装到IP数据报中

v■与OSPF极其相似的一个路由协议:IS-IS路由协议

OSPF优点(RIP不具备)

v■安全(security):所有OSPF报文可以被认证(预防恶意入侵)(通过每台路由器配置相同的口令;MD5校验)

v■允许使用多条相同费用的路径(RIP只能选一条)

v■对于每条链路,可以针对不同的TOS设置多个不同的费用度量(e.g.,卫星链路可以针对“尽力”(best effort) ToS设置“低”费用;针对实时ToS设置“高”费用)

v■集成单播路由与多播路由:

§ 多播OSPF协议(MOSPF)与OSPF利用相同的网络拓扑数据

v■OSPF支持对大规模AS分层(hierarchical)

分层的OSPF

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

推荐阅读更多精彩内容