TCP/IP小总结

一、计算机网络的基本概念

利用通信线路和通信设备,将地理位置不同、功能独立的计算机互连起来,实现资源共享和信息传递。

二、网络类型

1、局域网:范围小于10km,通常采用双绞线(网线)的方式连接起来,双绞线最大有效传输距离100m (10baseT,100baseTX,1000baseT)

2、城域网:规模局限在一个城市之内,范围10km-100km

3、广域网:跨国、跨洲、甚至全球范围

4、个人网:10m

三、性能指标

1、速率:主机在数字信道上传输数据的速率,单位b/s,如100M以太网,100Mbit/s的以太网

2、吞吐率:单位时间内通过某个网络的(数据量),受带宽和速率的影响,单位b/s,100Mbit/s的以太网可能吞吐率只有70Mbit/s

3、带宽:单位时间内从网络的一端到另一端所能通过的最高数据率,单位b/s

4、时延:数据从一端到另一端所需时间

5、时延带宽积:时延×带宽

6、往返时间RTT:它从发送方发出数据开始,到发送方收到接收方的确认,总共经历的时间

7、利用率:某信道有百分之几的时间被利用了

8、负载:占用带宽的大小

四、计算机网络参考模型

osi七层模型 (opening system interconnection)

应用层:提供应用服务

表示层:处理数据表示及传输有关的问题,包括加密、压缩

会话层:建立、维护会话

传输层:建立端到端的连接,将数据传输到相应的端口

网络层:寻址和路由选择

数据链路层:提供介质访问,链路管理(传输数据时,要维护数据管理,通信完毕时要释放数据链路)

物理层:建立、维护、断开物理连接,传输比特流(搭管子,传数据)

设备:

物理层:网线,集线器,转换器,中继器

数据链路层:交换机,网桥,网卡

五、封装和解封装过程

封装:用户信息转化为数据,以便在网络上传输

数据转化为数据段,并在发送方和接收方之间建立一条可靠的连接

数据段转化为数据包或数据报,并在报头放上逻辑地址,这样每一个数据包都可通过互联网进行传送

数据包或数据报转化为帧,以便在本地网络中传输

帧转化为比特流,在介质上传输

解封装:根据头部信息,寻找目的地,和提供对应的服务

六、以太帧的格式 (Ethernet 2)

前同步码:使接收端的适配器在接收mac帧时能迅速调整时钟频率,使他与发送端的频率一致,7字节

帧开始定界符:1字节,最后两个1,告诉适配器,帧要来,准备接收

目的地址:48位,接收帧网络适配器的mac地址

源地址:发送帧网络适配器的mac地址

类型:上层协议的类型,标识数据交付哪个协议处理,例如0x0800,交给IP协议(802.3帧是长度)

数据:也称有效载荷,交付给上层的数据,最小46字节

帧检验序列FCS:检验帧是否出现差错

有两种帧格式:Ethernet 2、802.3

length/type >= 1536 使用Ethernet 2 (其他一般使用这个)

length/type <= 1500 使用802.3  (stp中的BPDU)

七、IP报文格式

ip报文=首部+数据部分

首部 固定部分20字节,可变部分0-40字节

1、版本:占四位、ipv4、ipv6

2、首部长度:占四位,单位4字节,所以ip分组的首部长度不是4字节的整数倍时,必须使用最后的填充字段填充

3、区分服务:也叫服务类型,占8位,只有使用区分服务时才起作用

4、总长度:首部+数据部分,占16位,单位为1字节数据报的最大长度为2^16-1=65535字节

5、标识:占16位,每个数据报都有一个id,数据报分片时该字段的值为原数据报id的值,以方便重组

6、标志:占3位,第一位未使用,第二位称位DF(不分片)为1,表示不允许分片;第三位MF(更多分片)为1,表示还有其他分片正在传输

7、片位移:占13位,表示数据报分片后,该分片在原数据报中的相对位置,8个字节为偏移单位,除最后一个分片,其他都是8的整数倍

8、生存时间TTL:占8位,表示数据报在网络中的寿命

9、协议:该报文携带的数据所使用的协议,占8位,不同协议有不同协议号

10、首部检验和:占16位,用于检验数据报的首部

11、源地址,占32位

12、目的地址,占32位

13、可选字段:包括严格源路由(数据报必须经过指定的路由)、网际时间戳(经过每个路由器时的时间戳记录)和安全限制。

14、填充:使用0填充,保证报头长度4字节的整数倍

15、数据部分:表示传输层的数据,如保存 TCP、UDP、ICMP 或 IGMP 的数据。数据部分的长度不固定

八、IP地址分类

ip地址 = 网络位 + 主机位

网络位用于识别主机所在网络

主机位用于识别该网络中的主机

A 前8位为网络位  首位为0  分配给政府            0.0.0.0~127.255.255.255

B 前16位为网络位 首位为10  分配给中等规模的企业  128.0.0.0~191.255.255.255

C 前24位为网络位 首位为110 分配给任何需要的人    192.0.0.0~223.255.255.255

D 不分网络位和主机位 该地址用于多播 首位为1110    224.0.0.0~239.255.255.255

E 不分网络位和主机位 该地址用于实验 首位为1111    240.0.0.0~255.255.255.254

特殊地址:私有地址,保留地址

私有地址

10.0.0.0~10.255.255.255

172.16.0.0~172.31.255.255

192.168.0.0~192.168.0.0

保留地址

127.0.0.0~127.255.255.255

169.254.x.x

九、子网划分、子网掩码

将(主机id)部分划分为子网id和主机id。其中子网id用来寻找网络中的子网,主机id用来寻找子网里的主机

子网掩码用来指明地址中多少位用于子网id,保留多少位用于实际的主机id

CIDR:无类域间路由,减少路由条目,将多条路由汇总为一条,计算路由二进制位数相同的位

十、网络设备的基本操作、常用功能的配置

enable 密码设置 :enable password ?

配置用户名密码,用于设备登陆 : user ? password 0 ?

con接口登陆:line con 0

开启远程登陆:login local

允许同时登陆的用户数量:line vty 0 15 (16个)

查看所有配置:show running-config

查看接口配置:show ip interface brief

十一、二层转发的交互过程

A判断B是否在一个网段,在则采用二层转发

1、A 向全网段发送一个ARP广播报文,源mac = Amac ,目的mac = 全f,内容:询问B(ip)的mac地址多少?

2、B看到数据包目的ip为自己,则发送应答给A,源mac = Bmac ,目的mac = Amac ,内容:B(ip)的mac地址是。

3、B将A的mac地址加入arp表

4、A收到B的应答后,将B的mac地址加入arp表中,同时将ip数据包封装转发给B

十二、三层转发的交互过程  (A-路由器-B)

A、B不在同一网段,则采用三层转发

1、A知道B的ip地址不在同一网段,所以要找网关,但不知道网关的mac地址,它会先发送一个arp广播报文

2、网关收到后发回应答,并把a的mac地址登记在自己的arp表里

3、A得到网关的mac地址后,A会把源地址 = Aip,目的地址 =Bip,源mac = Amac,目的mac = 网关mac的数据包发出去

4、网关收到报文后,确认目的mac是否是自己

5、确认之后解封装,查询路由表,目的ip是否在路由表里

6、发现是直连路由,会查看是否有B的mac地址

7、没有则发送arp请求,获取B的mac地址

8、然后以自己另一接口的mac地址作为源mac ,目的mac = Bmac,源目的ip不变 的数据包发送给B

十三、TCP/UDP协议特点

TCP:可靠面向连接(三次握手),流量控制,拥塞控制,丢包重传

UDP:无连接,不用确定,没有报文排序,数据可能不完整,实时性好

十四、vlan技术

作用:减小广播域

将一个物理LAN在逻辑上划分为多个广播域的通信技术

vlan内部的主机可以在二层互相通信,不同vlan的主机无法实现二层通信。

不同vlan间通信需要使用三层设备,并且给不同vlan配上不同网关地址,才可能实现通信。

1、vlan帧格式

TPID(Tag Protocol Identifier):长度为2字节,表示帧类型,取值为0x8100表示802.1q帧

PRI:帧的优先级,长度为3比特,值越大优先级越高

CFI:表示mac地址是否是经典模式,0是,1非经典

VID:VLAN ID,长度为12比特,

2、vlan链路类型

接入链路access link:常用在主机和交换机之间,主机并不知道自己属于哪个VLAN,所以主机接受和发送的帧,一般不带tag。

干道链路trunk link:常用在交换机和交换机之间或路由器,可以承载多个不同vlan数据。

PVID(Port-baseID)代表端口的缺省VLAN,交换机从对端设备收到的帧有可能是Untagged的数据帧,但所有以太网帧在交换机中都是以Tagged的形式来被处理和转发的,因此交换机必须给端口收到的Untagged数据帧添加上Tag。为了实现此目的,必须为交换机配置端口的缺省VLAN。

3、vlan端口类型

access端口:进口打标,出口去标

trunk端口:进口,该帧不含tag,则加上端口的PVID;含tag,则不用管

  出口,与PVID相同,则去标;与PVID不同,则不用管

十五、路由表基础

通过路由表实现局域网/网段间的互通

路由的由来

直连路由:本端口所属网段

静态路由:手工配置

动态路由:使用动态路由协议(RIP,OSPF,EIGRP等)

管理距离AD:路由协议的路由可靠性(越小越可靠)

直连:0

静态:1

RIP:120

OSPF:110

内部EIGRP:90 外部EIGRP:170

耗费值指到达目的地址的代价

线路延迟、带宽

线路占用率、可靠性

跳数、最大传输单元

路由加表原则

多条路由先比较管理距离、小的加表;相同则比较度量值,小的加表;AD和度量值相同,则一起加表,并进行负载均衡

路由的匹配原则

目的ip与多条路由同时匹配时,选择掩码最长的条目

直连路由配置

进入接口模式,配置ip和掩码

静态路由配置

进入全局配置模式,ip route 目的网段 掩码 本路由器连接下一跳的接口或下一跳的入口ip地址(以太网网络不要指定出接口,原因会被误以为目的路由是直连路由,ARP广播可能寻找不同网段的ip本来应该要寻找网关的mac)

解决办法:对端启用代理ARP,或者下一跳的入口ip地址

默认路由配置(所有路由都与此条匹配)

进入全局配置模式,ip route 0.0.0.0 0.0.0.0 本路由器连接下一跳的接口或下一跳的入口ip地址

浮动路由配置

进入全局配置模式,路由器之间一条路的管理距离大,另一条路的管理距离不变,AD小则作主干路线,

只有主干路线不故障,数据永远走主干路线,可以用tracert 目的ip命令查看

tracert的实现原理

用来定位到目标之间的所有路由器

每次发送3个ICMP请求包,TTL减到0时,会返回一个ICMP超时数据包,从而得到路由器的ip,如果到达目的主机,主机回返回一个ICMP回显应答,

TTL从1开始加上去然后逐步寻找。

traceroute实现原理

每次发送3个UDP请求包,目的端口是一个很大的端口,TTL减到0时,会返回一个ICMP超时数据包,从而得到路由器的ip,如果到达目的主机,主机回返回一个目的端口不可达,

TTL从1开始加上去然后逐步寻找。

十六、RIP协议

RIPv2(routing information protocol) -- 路由信息协议,无类别路由选择协议

算法:距离矢量算法

基于UDP,端口号为520

一次只能传最大包含25个路由条目

度量值:跳数

使用组播向其他宣告RIPv2的路由器发出更新信息,组播地址:224.0.0.9

16跳表示网络不可达

RIP两种信息类型:请求信息和响应信息

工作原理

RIP从每个启用RIP协议的接口组播出带有请求信息的数据包,然后RIP程序进入一个循环状态,不断侦听来自其他路由器的RIP请求或响应信息,而接收请求的邻居路由器则回送包含它们路由表的响应信息。

路由更新中,路由条目时新的,则路由器将其与通告路由 器的地址一起加入表中。

如果路由条目已存在,新的条目跳数更小时才能替换原来的条目。

新的条目跳数更大,并且是原来记录的下一跳路由器时,那么该路由将在一个指定抑制时间段内被标记不可达,过后,同一邻居路由器仍通告这个较大跳数的路由,则接受该路由的新度量值。(抑制计时器生效)

RIP的计时器

1、更新计时器:平均30s从启动RIP协议的接口不断地发送响应(更新)消息,目的地址是组播地址。

2、超时(无效)计时器:如果180s内未收到邻居的更新信息,那么设置邻居的路由跳数为16,也标记为不可达路由。

3、刷新计时器:180s-240s之内仍未收到更新信息,该邻居被通告为一条不可达路由,同时从路由表中删除。(这里60s,RFC为120s)

4、抑制计时器:如果一条路由更新的跳数大于路由表已记录的该路由跳数,那么该路由进入180s的抑制状态阶段。

RIP的更新机制

1、定期更新:30s

2、触发更新:只要在有路由的度量值发生改变时就会立即发送更新信息,不等更新计时器

RIP防环机制

1、简单水平分隔法:从某接口发送的更新信息不能包含从该接口收到的更新所包含的网络

2、毒性逆转水平分隔法:路由器从某个接口学到路由后,将该路由的跳数设置为16,并从原接口发回给邻居路由器

3、触发更新

RIP报文结构

1、命令:1表示请求信息,2表示响应信息

2、版本号:RIPv2,设置为2

3、地址族标识:对于IPv4协议,该项总设置为2

4、路由标记:

5、IP地址:路由条目的IPv4目的地址

6、子网掩码:用来标识IPv4地址的网络和子网部分

7、下一跳:下一跳地址

8、度量:1-16

RIP认证

以降低设备接受非法路由选择更新消息的可靠性,非法的更新消息可能来自试图破坏网络的攻击者,或试图通过欺骗路由器发送数据到错误的目的地址的方法来捕获数据包。

1、简单认证

2、md5密文认证

RIPv2自动汇总

自动汇总是在路由器发送路由更新时进行的,而不是在接收到路由更新后进行的

开启自动汇总,路由器会将路由进行主网络汇总,不管子网掩码是什么

关闭自动汇总,路由器会按宣告路由本身来发出路由

RIP的配置

router rip --宣告动态路由协议

version 2  --RIPv2

network ip  --宣告接口的ip网段(不用掩码)

no auto-summary --关闭自动汇总


RIPng

RIPng发送路由更新目的地址为组播ff02::9/8

RIPng报文格式

命令 | 版本 | 没使用 | RTE 路由信息

RTE:IPv6地址 | 路由标记 | 前缀长度 | 度量

路由条目的下一条用的是本地链路地址,而不是全局地址

十七、OSPF协议

OSPFv2 (Open Shortest Path First)--开放最短路径优先 ,无类别路由选择协议

算法:链路状态路由算法

组播地址:224.0.0.5

管理距离:110  ip协议号:89  只运行在网络层

度量值:10^8/链路带宽,例如100M/b的度量是1,出口代价之和

路由选择是依据整个链路cost值的总和

三大特点:收敛快、无环、适用于大型网络

五种报文:hello、DD、LSR、LSU、LSACK

三个阶段:邻居建立、路由通告、路由计算

三张表:邻居表、链路状态数据库、路由表

基本原理:

1、宣告OSPF的路由器从所有启动OSPF的接口上发出hello包,如果两台路由共享一条公共数据链路,且能与hello包中指定的参数一致,那么他们就成为邻居关系(并不是邻接关系),进入2-way阶段

路由器无效时间后,宣告它的邻居路由器无效,是hello时间间隔的4倍。

2、依据网络类型,建立邻接关系(选取DR\BDR,用于广播网络或非广播多路访问)

3、每一台路由器会在所有形成邻接关系的邻居之间发送LSA,LSA描述路由器所有的链路、接口、路由器的邻居以及链路状态信息。

4、每一台收到从邻居路由器发出的LSA的路由器,会将该LSA记录在链路状态数据库中,并且发送一份LSA拷贝给其他所有邻居。

5、通过LSA泛洪扩散到整个区域,所有的路由器都会形成同样的链路状态数据库。

6、当这些数据库完全相同时,每台路由器会以自身为根,使用SPF算法计算一个最短(最小代价)路径树

7、每一台路由器从SPF算法树构建自己的路由表。当链路状态数据库同步时,邻居之间交换的hello包称为keepalive,并且30min重传一次LSA

Router-id配置

1、手工配置

2、环回口中ip地址最大的

3、up的三层接口中ip地址最大的

三大特点解释:

1、DR\BDR,区域划分,收到其他路由器的LSA,立刻存储和转发LSA,RIP则经过计算之后再进行转发。

2、使用SPF算法计算出路由

3、区域划分

网络类型:

都是基于接口,接口起什么协议,就是什么网络类型

1、点到点网络:单独一对路由器,有效邻居总可以形成邻接关系,例如PPP,HDLC

2、广播型网络:DR\BDR使用组播地址224.0.0.5泛洪扩散更新数据包到其他路由器,其他路由器发送LSU\LSACK到目的地址是224.0.0.6,例如Ethernet

3、非广播多路访问(NBMA)网络:可以连接两台以上的路由器,但没有广播数据包的能力,需要选DR、BDR,所有OSPF包都是单播,比如帧中继网络,**可以手动指定邻居

4、点到多点网络(P2MP):单播方式发送给每一个已知邻居,比如非完全帧中继网络

5、虚链路:建立一条逻辑上的链路,网络设计、升级、合并、改造时可能使用,比如后面新增的一个非骨干区域不与骨干区域相连,这时可以创建一条虚链路,与骨干区域相连,配置加vlink-peer x.x.x.x(对端ABR的router-id)

虚链路可以看作为一个标明网络的某个部分是否需要重新规划设计的标志,还有做骨干区域的冗余备份

DR\BDR选举

是基于接口的,一台路由器可能一个接口是DR,另一个接口是BDR,优先级0不参与选举

为什么要选举?

1、在多址网络中,构建相关路由器之间的邻接关系时,会创建很多不必要的LSA。

2、在同一个网络上创建很多个相同的LSA副本

选举过程:

首先建立双向通信,接着检查每台邻居路由器的hello包优先级、DR和BDR字段。

选出最高优先级(相等则看router id)作为BDR,如果没有有效的DR,BDR会成为DR,再重新选取一个BDR。

DR\BDR都在,如果后续有优先级更高的路由器也不会替代原DR\BDR(终身制,非抢占模式)

建立邻居的条件

Routerid、网络掩码、hello时间间隔、路由器无效时间间隔、区域号、认证类型、Option里的相关区域配置、和接收接口配置必须一致

邻居状态机

1、失效状态(down):用来指明最近一个路由无效时间没有收到邻居路由器的hello包

2、初始状态(init):在最近的路由无效时间内收到邻居的hello包,不过没发现自己的router id

3、双向通信状态(2-way):hello包中发现自己的router id,如果是广播网络或非广播多路访问网络,将进行DR\BDR的选举

4、信息交换初始状态(ExStart):本地路由器和邻居路由器建立主从关系,并确定数据库描述包的序列号,为dd包信息交换做准备

5、信息交换状态(ExChange):本地路由器会发送dd包和LSR给邻居

6、信息加载状态(Loading):本地路由器继续向邻居发送LSR,用来请求最新的LSA,ExChange状态下本地没收到LSA

7、完全邻接状态(Full):邻居之间建立完全邻接关系

邻居与邻接关系:

DRother之间只建立邻居关系(永远处于2-way阶段),DR或BDR与DRother之间要建立邻接关系(处于FULL阶段)

报文:hello、DD、LSR、LSU、LSACK

hello包:建立邻居、选举DR\BDR、邻居路由器之间担任keepalive角色

DD:描述链路状态数据库里的内容、选主从路由器,主路由器发送DD包

LSR:请求不在自己的数据库的LSA

LSU:用于LSA泛洪和响应LSR

LSACK:收到的每一个LSA都必须在LSACK中进行明确的确认

LSA的类型(11种)

1、路由器LSA:每一个路由器都会产生路由器LSA,通告路由器所有的链路或接口、代价和已知邻居,只会在区域内部泛洪,只在区域内泛洪

2、网络LSA:DR将会产生网络LSA,通告所有与之相连的路由器,包括本身,没有度量字段,伪节点到任何路由器的代价为0,只在区域内泛洪

3、网络汇总LSA:由ABR产生,发送网络汇总LSA到一个区域,用来通告该区域外的目的地址,区域间泛洪

4、ASBR汇总LSA:由ABR产生,通告的目的地址是一台ASBR路由器,在ASBR区域之外的区域泛洪

5、AS外部LSA:或称外部LSA,始发于ASBR路由器,通告OSPF自主系统外部的目的地址或外部的缺省路由的LSA,泛洪到内部所有区域

LSA更新规则

序列号

每个LSA都有一个序列号以0x80000001开始,以0x7FFFFFFF结束

每30分钟泛洪一次LSA,每次序列号增加1

年龄

LSA年龄到达LSRefreshTime(30分钟),重新生成该LSA

如果路由器希望从网络中删除一条自己此前生成的LSA,则将LS age设置为Max Age(1小时)即可,并用LSU泛洪出去

区域:

1、末梢区域(stub):允许1,2,3类LSA和缺省路由,不能有虚链路,不需要引入外部路由

2、完全末梢区域:允许1,2和缺省路由

3、非纯末梢区域(nssa):允许1,2,3类LSA,3类缺省路由,7类,进入正常区域7类要转化为5类,如果此区域要引入外部路由,则配置为nssa

4、完全非纯末梢区域:允许1,2,3类和7类的缺省路由,7类,进入正常区域7类要转化为5类,(7类缺省路由是去往其他区域通告的外部路由器)

5、普通区域(骨干、非骨干):基于接口划分的区域,一个路由器可能被划分成很多个区域。只有多于一个的区域才需要骨干区域。


OSPFv3

ff02::5是OSPFv3路由协议预留的IPv6组播地址

OSPFv3认证 IP | AH | ESP | OSPFv3

本身不提供认证功能,而是通过IPv6提供的安全机制保证报文合法性

IPv4要用IPSec VPN

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

推荐阅读更多精彩内容