网络基础以及作业和进程的管理

简述osi七层模型和TCP/IP五层模型

osi七层模型:

osi七层模型主要分为:

(1)应用层(Applicattion)

(2)表示层(Presentation)

(3)会话层(Session)

(4)传输层(Transport)

(5)网络层(Network)

(6)数据链路层(Data Link)

(7)物理层(Physical)

(1)应用层:OSI参考模型中最靠近用户的一层,为计算机用户提供应用接口,也为用户直接提供各种网络服务。我们常见应用层的网络服务协议有:HTTP,HTTPS,FTP,POP3,SMTP等。

(2)表示层:这个层级上面主要是定义网络服务(或程序)之间的数据模式的转换,包括数据的加密,用于将计算机内部的多种数据格式转换成通信中采用的标准表示形式。确保一个主机的应用层发送的数据能被另一个主机的应用层识别。

(3)会话层:负责建立、管理和终止表示层实体之间的通信会话。这个层级当中主要定义了两个地址之间的联机信道的连接与挂断。

(4)传输层:建立了主机之间的端到端的连接。传输层的作用是为上层协议提供端到端的可靠的透明的数据传输服务,包括差错控制和流量控制等问题。我们通常说的TCP协议、UDP协议就是在这一层。端口号即是这里的“端”。

(5)网络层:网络层定义出计算机之间的联机建立、终止与维持等。通过IP寻址来建立两个网络节点之间的连接,为源主机的传输层送来的分组,选择合适的路由和交换节点,数据传输单位是分组。

(6)数据链路层:将比特组合成字节,再将字节组合成帧,使用数据链路层地址(以太网使用的是MAC地址)来访问介质,并进行差错检测。在物理层提供的服务基础之上,负责在通信的实体之间建立数据链路(载波监听多路访问)。传输以帧为单位的数据包。

(7)物理层:实际的最终信号的传输是通过物理层实现的。通过物理介质实现设备间的0-1比特流传输。常用的设备有(各种物理设备)集线器、中继器、调制解调器、网线、双绞线、同轴电缆。还定义了物理电所特性(如8根网线只有1236传数据)等。

TCP/IP五层模型:

TCP/IP五层型主要分为:

(1)应用层

(2)传输层

(3)网络层

(4)数据链路层

(5)物理层

(1)应用层:对应OSI7层模型的应用层,表示层和会话层。为用户提供各种服务,如:FTP,DNS,SMTP等

(2)传输层:对应OSI7层模型的传输层,为应用层实体提供端到端的通信功能,保证数据包的顺序传送及数据的完整性。有2个主要的协议:传输控制协议(TCP)和用户数据包协议(UDP)。

(3)网络层:对应OSI7层模型的网络层,主要解决主机到主机的通讯问题,所包含的协议数据包在整个网络上的逻辑传输包括:路由的选择和中继、激活和终止网络连接、差错检测与恢复、排序和流量监控、服务选择、网络管理,有3个主要协议:网际协议(IP),互联网组管协议(IGMP),互联网控制报文协议(ICMP)。

(4)数据链路层:对应OSI7层模型的数据链路层,为网络层提供数据传送服务的。包括:链路连接的建立、拆除、分离。帧定界和帧同步。对帧的收发顺序的控制。差错检测和恢复。还有链路标识,流量控制等。

(5)物理层:对应OSI7层模型的物理层,为数据端设备提供传送数据的通路,数据通路可以是一个物理媒体,也可以是多个物理媒体连接而成。一次完整的数据传输,包括激活(在通信的两个数据终端设备间连接起来,形成一条通路)物理连接,传送数据,终止物理连接。

简述iproute家族命令

iproute家庭常用的命令有ip和ss

ip命令:显示和管理路由,设备,策略路由及隧道等功能。

ip [ OPTIONS ] OBJECT { COMMAND | help } OBJECT := { link | addr | route | netns }

        OBJECT := { link | addr | route | netns }

iproute家族:

    ip OBJECT(常用的几个,OBJECT可简写):

            addr:地址和掩码;

            link:接口

           route:路由

ip addr:管理IP地址

        ip address add - add new protocol address(添加一个新的IP地址)

                ip  addr  add   IFADDR  dev   IFACE

                        dev:指明添加到哪个网卡设备中

                        [label  Name]:为额外添加的地址指明接口别名

                        [broadcast ADDRESS]:广播地址;会根据IP和NETMASK自动计算得到

                            [scope SCOPE_VALUE]:

                                    global:全局可用

                                    link:接口可用

                                    host:仅本机可用

[root@localhost ~]# ip addr add 192.168.80.220/24 dev eth1

[root@localhost ~]# ip add

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

inet 127.0.0.1/8 scope host lo

inet6 ::1/128 scope host valid_lft forever preferred_lft forever

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000

link/ether 00:0c:29:cd:1e:ad brd ff:ff:ff:ff:ff:ff

inet 192.168.80.122/24 brd 192.168.80.255 scope global eth0

inet 192.168.80.123/24 scope global secondary eth0

inet6 fe80::20c:29ff:fecd:1ead/64 scope link

        valid_lft forever preferred_lft forever

3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000

link/ether 00:0c:29:cd:1e:b7 brd ff:ff:ff:ff:ff:ff

inet 192.168.80.220/24 scope global eth1

[root@localhost ~]# ip addr add 192.168.80.210/24 dev eth1 label eth1:0[root@localhost ~]# ip add

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN

    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

    inet 127.0.0.1/8 scope host lo

    inet6 ::1/128 scope host

        valid_lft forever preferred_lft forever

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000

    link/ether 00:0c:29:cd:1e:ad brd ff:ff:ff:ff:ff:ff

    inet 192.168.80.122/24 brd 192.168.80.255 scope globaleth0

    inet 192.168.80.123/24 scope global secondary eth0

    inet6 fe80::20c:29ff:fecd:1ead/64 scope link

        valid_lft forever preferred_lft forever

3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000

    link/ether 00:0c:29:cd:1e:b7 brd ff:ff:ff:ff:ff:ff

    inet 192.168.80.220/24 scope globaleth1

    inet 192.168.80.210/24 scope global secondary eth1:0

ip address delete - delete protocol address 删除ip地址

        ip addr  delete  IFADDR  dev  IFACE

        因此处为了演示才添加的eth1网卡,此网卡并未启用,所以可直接删除,如果在启用中的网卡,无法直接删除。

[root@localhost ~]# ip addr delet 192.168.80.220/24 dev eth1

[root@localhost ~]# ip addr

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN

    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

    inet 127.0.0.1/8 scope host lo

    inet6 ::1/128 scope host

        valid_lft forever preferred_lft forever

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000

    link/ether 00:0c:29:cd:1e:ad brd ff:ff:ff:ff:ff:ff

    inet 192.168.80.122/24 brd 192.168.80.255 scope global eth0

    inet 192.168.80.123/24 scope global secondary eth0

    inet6 fe80::20c:29ff:fecd:1ead/64 scope link

        valid_lft forever preferred_lft forever

3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000

    link/ether 00:0c:29:cd:1e:b7 brd ff:ff:ff:ff:ff:ff 

ip address show 显示ip地址的信息

        ip  addr  list   [IFACE]:显示接口的地址

[root@localhost ~]# ip addr list eth0

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000

    link/ether 00:0c:29:cd:1e:ad brd ff:ff:ff:ff:ff:ff

    inet 192.168.80.122/24 brd 192.168.80.255 scope globaleth0

    inet 192.168.80.123/24 scope global secondary eth0

    inet6 fe80::20c:29ff:fecd:1ead/64 scope link

        valid_lft forever preferred_lft forever    

ip address flush -清空所有ip地址

    ip  addr  flush  dev  IFACE

    例:ip  addr  flush  dev  eth1

此命令会清空指明的网卡所有IP地址,要确保安全情况下使用。

ip link: network device configuration(ip的配置命令)

    ip link set - change device attributes 修改设备属性

        dev NAME (default):指明要管理的设备,dev关键字可省略;

        up和    down:启用或禁用接口

        multicast on或multicast off:启用或禁用多播功能;

        name NAME:重命名接口

        mtu NUMBER:设置MTU的大小,默认为1500;

        netns PID:ns为namespace,用于将接口移动到指定的网络名称空间

[root@localhost ~]# ip link show eth0

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000

    link/ether 00:0c:29:cd:1e:ad brd ff:ff:ff:ff:ff:ff

[root@localhost ~]# ip link set mtu 2000 eth0

[root@localhost ~]# ip link show eth0

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 2000 qdisc pfifo_fast state UP qlen 1000

    link/ether 00:0c:29:cd:1e:ad brd ff:ff:ff:ff:ff:ff 

ip  link  show - display device attributes  显示设备的属性

[root@localhost ~]# ip link show

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN

    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 2000 qdisc pfifo_fast state UP qlen 1000

    link/ether 00:0c:29:cd:1e:ad brd ff:ff:ff:ff:ff:ff

3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000

    link/ether 00:0c:29:cd:1e:b7 brd ff:ff:ff:ff:ff:ff 

ip link help - 显示简要使用帮助

[root@localhost ~]# ip link help

Usage: ip link add link DEV [ name ] NAME

                  [ txqueuelen PACKETS ]

                  [ address LLADDR ]

                  [ broadcast LLADDR ]

                  [ mtu MTU ]

                  type TYPE [ ARGS ]

      ip link delete DEV type TYPE [ ARGS ]

      ip link set DEVICE [ { up | down } ]

                  [ arp { on | off } ]

                  [ dynamic { on | off } ]

                  [ multicast { on | off } ]

                  [ allmulticast { on | off } ]

                  [ promisc { on | off } ]

                  [ trailers { on | off } ]

                  [ txqueuelen PACKETS ]

                  [ name NEWNAME ]

                  [ address LLADDR ]

                  [ broadcast LLADDR ]

                  [ mtu MTU ]

                  [ netns PID ]

                  [ alias NAME ]

                  [ vf NUM [ mac LLADDR ]

                                   [ vlan VLANID [ qos VLAN-QOS ] ]

                                  [ rate TXRATE ] ]

                                  [ spoofchk { on | off} ] ]

      ip link show [ DEVICE ]

TYPE := { vlan | veth | vcan | dummy | ifb | macvlan | can }

ip netns: - manage network namespaces.

ip  netns  list:列出所有的netns

ip  netns  add  NAME:创建指定的netns

ip  netns  del  NAME:删除指定的netns

ip  netns  exec  NAME  COMMAND:在指定的netns中运行命令

ip route - routing table management  IP路由管理命令

    ip route add - add new route    添加新路由

    ip route change - change route    更改路由

    ip route replace - change or add new one    更改后添加路由

    ip route delete - delete route    删除路由

    ip route show - list routes    显示路由

    ip route flush - flush routing tables    清空所有路由

    ip route get - get a single route    获取一个路由信息

[root@zcy520 ~]# ip route get 192.168.80.254/24

192.168.80.254 dev ens33 src 192.168.80.30

    cache

[root@zcy520 ~]# ip route show

default via 192.168.80.254 dev ens33 proto dhcp metric 100

192.168.80.0/24 dev ens33 proto kernel scope link src 192.168.80.30 metric 100

[root@zcy520 ~]# ip addr add 10.0.10.100/8 dev ens33

[root@zcy520 ~]# ip route list

default via 192.168.80.254 dev ens33 proto dhcp metric 100

10.0.0.0/8 dev ens33 proto kernel scope link src 10.0.10.100

192.168.80.0/24 dev ens33 proto kernel scope link src 192.168.80.30 metric 100

ss:状态及统计数据查看

ss是另一个用来显示sockets相关数据的工具,自带过滤器功能比netstat强大

ss [options] [ FILTER ]

        选项:

                -t:TCP协议的相关连接

                -u:UDP相关的连接

                -w:raw socket相关的连接

                -l:监听状态的连接

                -a:所有状态的连接

                -n:数字格式

                -p:相关的程序及其PID

                -e:扩展格式信息

                -m:内存用量

                -o:计时器信息

FILTER := [ state TCP-STATE ]  [ EXPRESSION ]

        TCP的常见状态:

                TCP FSM:

                        LISTEN:监听

                        ESTABLISEHD:建立的连接

                        CLOSED:关闭

        EXPRESSION:

                dport =目标端口

                sport =源端口

[root@zcy520 ~]# ss -tan '( dport = :22 or sport = :22 )'

State      Recv-Q Send-Q    Local Address:Port                    Peer Address:Port             

LISTEN      0      128                    *:22                                *:*                 

ESTAB      0      216        192.168.80.30:22                    192.168.80.47:50605             

ESTAB      0      0          192.168.80.30:22                    192.168.80.47:56472             

LISTEN      0      128                  :::22                                :::* 

详细说明进行管理工具htop、vmstat等相关命令,并举例 

htop命令:

htop是一款交互式的进程查看工具,支持鼠标操作.要使用EPEL的yum源进行安装才能使用,具体操作可以参照网上教程:

https://www.cnblogs.com/renpingsheng/p/7845096.html

htop常用选项:

        -d #:指定延迟时间间隔;

        -u UserName:仅显示指定用户的进程;

        -s COLUME:以指定字段进行排序;

    子命令:

        l:显示选定的进程打开的文件列表;

        s:跟踪选定的进程的系统调用;

        t:以层级关系显示各进程状态;

        a:将选定的进程绑定至某指定的CPU核心;

htop界面

1-4:cpu运行的情况

Mem:物理内存使用情况

Swp:交换分区的使用情况

Tasks:用户空间进程的个数

thr:线程的个数

running:正在运行进程的个数

Load average:平均负载(在1分钟,5分钟,15分钟的等待进程队列的长度)

uptime:系统启动运行的时间

PRI:进行运行优先级

NI:nice值(19到-20)值越低优先级越高

VIRT:虚拟内存集

RES:常驻内存的集(KiB)

SHR:共享内存空间

S:进程状态(R:运行,S:休眠,D:不可中断休眠,T:阻塞,Z:僵死)

TIME+:进程运行时长

Command:正在运行的命令

PID:进程序号

USER:用户

vmstat- Report virtual memory statistics  虚拟内存统计数据

        vmstat显示系统进程,CPU,IO块,物理内存等信息

vmstat  [options]   [delay [count]]

选项:

        -s:显示内存统计数据;

例: 

    vmstat         2(此处表示每#秒一次)        3(此上表示#次后结束)

[root@zcy520 ~]# vmstat 2 3

procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----

r  b  swpd  free  buff  cache  si  so    bi    bo  in  cs us sy id wa st

1  0      0 411396  2084 419776    0    0    1    1  19  15  0  0 100  0  0

0  0      0 411404  2084 419776    0    0    0    0  118  98  0  0 100  0  0

0  0      0 411404  2084 419776    0    0    0    0  123  106  0  0 100  0  0

procs:

        r:等待运行的进程的个数;CPU上等待运行的任务的队列长度;

        b:处于不可中断睡眠态的进程个数;被阻塞的任务队列的长度;

memory:

        swpd:交换内存使用总量;

        free:空闲的物理内存总量;

        buffer:用于buffer的内存总量;

        cache:用于cache的内存总量;

swap

        si:数据进入swap中的数据速率(kb/s)

        so:数据离开swap的速率(kb/s)

io

        bi:从块设备读入数据到系统的速度(kb/s)

        bo:保存数据至块设备的速率(kb/s)

system

        in:interrupts,中断速率;

        cs:context switch, 上下文 切换的速率;

cpu

        us: user space   用户空间程序占用CPU的百分比

        sy:system    系统程序占用CPU的百分比

        id:idle    空间CPU百分比

        wa:wait    等待IO完成占用的CPU百分比

        st: stolen    虚拟化偷走的CPU百分比

使用until和while分别实现192.168.0.0/24 网段内,地址是否能够ping通,若ping通则输出"success!",若ping不通则输出"fail!"

while方式:

#!/bin/bash

#

declare -i i=1

while [ $i -lt 255 ]; do

        ping -c 3 -i 1 192.168.0.$i

        let i++

    if [ $i -eq 0 ]; then

        echo "success!"

    else

        echo "fail!"

fi

done

[root@zcy520 ~]# bash ping.sh

PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data.

64 bytes from 192.168.0.1: icmp_seq=1 ttl=251 time=4.35 ms

64 bytes from 192.168.0.1: icmp_seq=2 ttl=251 time=3.14 ms

64 bytes from 192.168.0.1: icmp_seq=3 ttl=251 time=2.93 ms

--- 192.168.0.1 ping statistics ---

3 packets transmitted, 3 received, 0% packet loss, time 2005ms

rtt min/avg/max/mdev = 2.939/3.478/4.350/0.623 ms

fail!

PING 192.168.0.2 (192.168.0.2) 56(84) bytes of data.

64 bytes from 192.168.0.2: icmp_seq=1 ttl=250 time=3.98 ms

64 bytes from 192.168.0.2: icmp_seq=2 ttl=250 time=4.68 ms

64 bytes from 192.168.0.2: icmp_seq=3 ttl=250 time=3.60 ms

--- 192.168.0.2 ping statistics ---

3 packets transmitted, 3 received, 0% packet loss, time 2003ms

rtt min/avg/max/mdev = 3.606/4.091/4.684/0.449 ms

fail!

PING 192.168.0.3 (192.168.0.3) 56(84) bytes of data.

64 bytes from 192.168.0.3: icmp_seq=1 ttl=251 time=2.74 ms

64 bytes from 192.168.0.3: icmp_seq=2 ttl=251 time=1.65 ms

64 bytes from 192.168.0.3: icmp_seq=3 ttl=251 time=3.01 ms

--- 192.168.0.3 ping statistics ---

3 packets transmitted, 3 received, 0% packet loss, time 2004ms

rtt min/avg/max/mdev = 1.659/2.475/3.018/0.587 ms

fail!

......以下省略

until方式:
#!/bin/bash

#

declare -i i=1

until [ $i -gt 255 ]; do

    ping -c 3 -i 1 192.168.0.$i

    let i++

  if [ $i -eq 0 ]; then

    echo "success!"

  else

    echo "fail!"

fi

done

[root@zcy520 ~]# bash ping.sh

PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data.

64 bytes from 192.168.0.1: icmp_seq=1 ttl=251 time=2.18 ms

64 bytes from 192.168.0.1: icmp_seq=2 ttl=251 time=2.81 ms

64 bytes from 192.168.0.1: icmp_seq=3 ttl=251 time=2.33 ms

--- 192.168.0.1 ping statistics ---

3 packets transmitted, 3 received, 0% packet loss, time 2003ms

rtt min/avg/max/mdev = 2.180/2.444/2.816/0.276 ms

fail!

PING 192.168.0.2 (192.168.0.2) 56(84) bytes of data.

64 bytes from 192.168.0.2: icmp_seq=1 ttl=250 time=3.57 ms

64 bytes from 192.168.0.2: icmp_seq=2 ttl=250 time=3.25 ms

64 bytes from 192.168.0.2: icmp_seq=3 ttl=250 time=4.39 ms

--- 192.168.0.2 ping statistics ---

3 packets transmitted, 3 received, 0% packet loss, time 2004ms

rtt min/avg/max/mdev = 3.259/3.744/4.397/0.479 ms

fail!

PING 192.168.0.3 (192.168.0.3) 56(84) bytes of data.

64 bytes from 192.168.0.3: icmp_seq=1 ttl=251 time=3.08 ms

--- 192.168.0.3 ping statistics ---

1 packets transmitted, 1 received, 0% packet loss, time 0ms

rtt min/avg/max/mdev = 3.082/3.082/3.082/0.000 ms

fail!

......以下省略

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

推荐阅读更多精彩内容