CTFer成长记-计算机网络原理

前言

这一切的一切,都是因为“虚拟机如何走物理机代理”这件事捞起来的,初入计网,感觉一头雾水,交换机是啥?路由器是啥?nat又是什么鬼东西???,然后顺手百度了一下,就感觉还是不能彻底理解,最后只能用模拟器来模拟了,然后就各种模拟加虚拟机折腾了两天。最终,可算有个自我感觉良好的见解了哈哈。

网络协议

这些东西主要涉及在局域网,osi模型中处在第二层和第三层,也就是数据链路层和网络层

会遇见的网络设备

  1. 交换机——遇到次数最多的设备,连接局域网用的
  1. 路由器——第二层到第三层的桥梁,可以连接不同网段的设备,同时也会涉及到nat
  1. 网卡——计算机连接网络必备网络设备
  1. 猫(modem调制解调器)——信号转换的设备
  1. 网桥——交换机的缩小版
  1. 集线器(HUB)——顾名思义
  1. DHCP服务器——动态分配IP

IP地址、子网掩码、MAC地址

这些你去百度,都有,也都很详细

这里稍微说一下IP地址为什么不能取0和255:

其中0代表的时该子网的网段,255是广播地址

广播地址的作用就是向255发送的数据包会广播到这个子网网段中所有的设备

网卡

网卡是一块被设计用来允许计算机在计算机网络上进行通讯的计算机硬件。由于其拥有MAC地址,因此属于OSI模型的第1层和2层之间。它使得用户可以通过电缆或无线相互连接

网卡的主要功能包括:

1、数据的封装与解封,发送时将上一层传递的数据加上首部和尾部,成为以太网的帧;

2、链路管理,通过CSMA/CD协议来实现;3、数据编码与译码,即曼彻斯特编码与译码。

需要注意的是网卡没有路由的功能,也没有交换机的功能

交换机(Switch)

这里说的主要是第二层交换机

交换机的功能就是桥接能够桥接网络,这是第二层交换机的功能,第三层交换机还会有路由功能

交换机实现交换功能靠的不是ip(交换机本身也没有ip地址),而是mac地址

也就是说,他会根据设备所请求的mac地址进行转发,而不是根据ip地址转发,因为ip地址属于第三层的协议

下面以这个网络结构为例子

在这个网络里面只有三台电脑和一个交换机

其ip 和MAC分别为:

电脑1192.168.1.1MAC1

电脑2192.168.1.2MAC2

电脑3192.168.1.3MAC3

注意真MAC不长这样哦,这里是因为mac地址太长了,所以就简写了

假设这是一个刚整好的网络,他们设备之间还没有进行任何一次通讯,这时,电脑1想向电脑2发送ping,这时,他就会先发送一个arp(广播帧)请求,询问192.168.1.2的mac地址是多少就像这样

其数据包是长这样的

数据包中的会有源mac和和源ip,以及目标ip,但是没有目标mac,其实这个arp数据包会发送到这个网段内的所有设备上(交换机查看到目标mac全是ff时就会将这个arp包广播到所有设备上,拓展一个广播风暴,下面会说),当某个设备(电脑2)发现自己的ip刚好是那个目标ip,这时,这个设备会把这个源ip和源mac写道自己的arp表中,然后这个设备(电脑2)就会回复一条arp响应

就像这个对话,同时也会把自己的mac告诉电脑1

其他的设备发现目标ip不是自己时,就会丢弃数据包,不予以response(响应)。

当电脑1收到目标ip发过来的mac地址后,就会将这个ip和arp写到自己的arp表中,这个表长这样

这个时候电脑1就会发送ping数据包,ping数据包中就会写上目标ip和mac

然后交换机根据目标mac 并结合自己的mac-address表,选择目标mac所在的网口,把数据包传给电脑2,电脑2也会以同样的办法响应给电脑1

上面不是提到了arp表和mac表嘛?

arp表:

路由器和主机会有arp表,arp表中记录了ip和与之对应的mac,端口号

mac表:

mac表记录了mac地址和对应的端口号,端口号指的时交换机上的网口,因为一个网口对应一台主机,通过这个方法,交换机就可以准确无误的将数据包交给目标主机,此外,mac表是在不断变化的,就比如说电脑1发arp时,交换机就已经将电脑的1的mac和端口号记录到mac表上了

广播风暴

简单的讲,当广播数据充斥网络无法处理,并占用大量网络带宽,导致正常业务不能运行,甚至彻底瘫痪,这就发生了“广播风暴”。一个数据帧或包被传输到本地网段 (由广播域定义)上的每个节点就是广播;由于网络拓扑的设计和连接问题,或其他原因导致广播在网段内大量复制,传播数据帧,导致网络性能下降,甚至网络瘫痪,这就是广播风暴。(转自百度知道),广播风暴指数据帧形成环路,而帧头中无ttl的结构,所以帧始终有效,由于广播没有特定目标地址,所以hub/swtich会永远转发下去。

链接

四种IP广播地址

hub就是集线器,功能和交换机差不多,但是不能根据mac和端口号将数据包发送到指定的主机,只能全都发,是谁的谁要那种

第二层交换机性质:

  1. 交换机可以将多个网络设备连接起来组成一个网络
  1. 交换允许不同网段的ip接入,但不同网段之间需要有第三层设备加入才能进行数据通讯
  1. 交换机不会解析ip,只解析第二层的mac地址
  1. 交换机搭配DHCP服务器可以动态为设备分配IP

以上仅仅是自己总结的,看看就行了

路由器(router)

百度百科是这样解释的:

路由器(Router)是连接两个或多个网络的硬件设备,在网络间起网关的作用,是读取每一个数据包中的地址然后决定如何传送的专用智能性的网络设备。它能够理解不同的协议,例如某个局域网使用的以太网协议,因特网使用的TCP/IP协议。这样,路由器可以分析各种不同类型网络传来的数据包的目的地址,把非TCP/IP网络的地址转换成TCP/IP地址,或者反之;再根据选定的路由算法把各数据包按最佳路线传送到指定位置。所以路由器可以把非TCP/IP网络连接到因特网上。

通俗来讲就是路由器能把不同网段的设备连接起来,拥有nat功能的路由器还可以将内网ip映射到外网ip,而内网ip和外网ip是截然不同的两个ip

路由器有两个ip,一个是对应左边的网段(192.168.2.0),ip为192.168.2.1;

一个是对应邮编网段(192.168.1.0),ip为192.168.1.254。

电脑4的ip为192.168.2.2,默认网关为192.168.2.1,右边所有的电脑默认路由器都是192.168.1.254

当右边的电脑想要访问192.168.2.2时,交换机会把数据包发送到路由器,路由器再根据自己的路由表,发现目标ip在左侧的网段中,然后又查找arp表,找到了目标ip对应的mac地址,然后将数据包的源ip和mac修改后发送到电脑4,至此通讯完成。

在这个交互中,路由器会将传到路由器的数据包的源mac地址修改为自己的mac地址,随后才会发到左侧网段中的交换机或者主机上面

还有一点需要注意,如果电脑1向ip为192.168.1.0网段中的设备发送请求,路由器检索这个ip发现这个ip和电脑1处在同一网段中,便不会进行然和动作,电脑1和其他同网段设备的交互全依靠交换机;另外路由器不会对arp广播帧进行传输,也就是说右侧网段(192.168.1.0)的广播不会发送到左侧网段(192.168.2.0),左侧网段(192.168.2.0)的广播也不会发送到右侧网段(192.168.1.0)。这是因为路由器属于第三层,通过多级路由,就可以很好的解决交换机的广播风暴问题

静态路由

路由(routing)就是通过互联的网络把信息从源地址传输到目的地址的活动。路由发生在OSI网络参考模型中的第三层即网络层。

静态路由就是路由表由管理员手动输入的,是单向的,不灵活的;静态路由适用于网络规模不大,拓扑结构相对固定的网络中

下面以思科模拟器做静态路由演示:

路由器本身是能连接两个网段的,这两个网段叫做直连网段,直连网段一般不需要手动配置路由表,路由器自己就可以生成直连路由(对连接在同一个路由器上的网段执行数据交换的活动)所需要的路由表

而如果出现多个路由器, 比如说这样的就是非直连网段

192.168.3.0网段和192.168.1.0网段中间隔了一个192.168.2.0网段,此时,如果不设置动态路由,两个路由器将不会知道与他们不相连的网段,可以从电脑4ping电脑1看出:

电脑4根本无法将数据包发送到电脑1。

简单说一下这个过程:电脑1先发送数据包到路由器2(左边的路由器)路由器2会检索路由表,但在这之前我并没有在路由表里面写任何东西,那么路由器将不知道该把数据包发给哪个端口,接着就会将数据包丢弃。

编辑路由表

下面我将会将路由信息写入路由表中(手动写入路由信息的路由方式叫做静态路由)

因为静态路由是单向的,所以需要在两个路由器上都写入路由信息,而且还需要把所有的需要路由的网段都写进去(挺麻烦的)

next hop :下一个跳板,即当路由器收到目标ip网段在路由表中的数据包时,就会将数据包发送到下一个跳板(跳板是相邻的路由器)

下面看看路由表

路由表中都有了刚才编辑的路由信息

现在再ping个试试

看,ping的通了!!!

静态路由的特点:(1)静态路由固定了路径的转发,因此对路由器的路由选择进行控制,节省了网络带宽,减少了额外开支;(2)静态路由是单向的,它只设定了从此路由设备转发到目标出去的路径;(3)静态路由是缺乏灵活性的,网络发送变化时需要人工进行配置修改。

动态路由

说完静态路由,该说一下动态路由了。

wiki中这样解释动态路由:

动态路由又称自适应路由,是指路由器能根据系统内通信电路的当前状况,通过不同的路由或指定的目的地转发数据的过程(如遇到有故障的节点直接绕过或选择其他正常的路径)

百度百科中这样解释的:

动态路由是指路由器能够自动地建立自己的路由表,并且能够根据实际情况的变化适时地进行调整。

通过上面的解释,我们大概可以知道,动态路由就是比静态路由更智能点,可以自动去生成路由表,而不再需要手动填写,同时也可以自动修改修正路由表。如果在比较复杂的拓扑结构中,动态路由还能自动选择最短最高效的那条路,而且配置起来更加容易,更加适合复杂且大型的拓扑结构的网络中。

动态路由机制的运作依赖路由器的两个基本功能:

  1. 路由器之间适时地交换路由信息。
  1. 路由器根据某种路由算法(不同的动态路由协议算法不同)把收集到的路由信息加工成路由表,供路由器在转发IP报文时查阅。

下面就是一个稍稍复杂点的环形拓扑结构:

当前使用的是静态路由,而且所有的下一个跳板都是逆时针旋转的下一个,那么其中的数据传递就必须要逆时针旋转,即主机1发送请求pc5的数据包必须要转一大圈才能到pc5,pc5发送的响应包也要接着逆时针转到主机1才行,这样子就太低效,太繁琐

下面改为动态路由

使用rip协议的动态路由时,只需要写入路由器接入的网段即可,然后路由器便会向刚才写入的网段中发送自己的路由信息,让那个网段中的另一个路由器接收到自己的路由信息,并更新自己的路由表

这个时候主机1向pc5发送的请求传给离他最近的路由器的时候,路由器会根据距离的远近,选择最近的那条路,pc5向主机1发送响应的时候也会选择最近的那一条陆,这样子路由的距离比较近,所需要的时间也就会少,路由效率自然也就高了

NAT

wiki这样解释NAT的:

网络地址转换(英语:Network Address Translation,缩写:NAT;又称网络掩蔽IP掩蔽)在计算机网络中是一种在IP数据包通过路由器或防火墙时重写来源IP地址或目的IP地址的技术。这种技术被普遍使用在有多台主机但只通过一个公有IP地址访问互联网的私有网络中。它是一个方便且得到了广泛应用的技术。当然,NAT也让主机之间的通信变得复杂,导致了通信效率的降低。

博客园这样介绍:

NAT英文全称是“Network Address Translation”,中文意思是“网络地址转换”,它是一个IETF(Internet Engineering Task Force, Internet工程任务组)标准,允许一个整体机构以一个公用IP(Internet Protocol)地址出现在Internet上。顾名思义,它是一种把内部私有网络地址(IP地址)翻译成合法网络IP地址的技术。因此我们可以认为,NAT在一定程度上,能够有效的解决公网地址不足的问题。

NAT是路由器的一种技术,也是一种协议,处在第三层(网络层),

下面以思科模拟器来模拟一个场景

然后在路由器1添加nat映射表

这是添加好后nat映射表

最后一条是手动添加的,其他事路由器自动映射的端口,域名都是一样的哈

实验:

然后我用pc6 ping 192.168.1.1试试

ping通了,但是有没有发现响应的ip不是192.168.1.1,这是为什么呢?

这正是刚才配置的nat的功劳,nat可以将内网ip转变成外网ip,也可以将外网ip转化成内网ip

192.168.1.1对应的是电脑1,这是他的内网ip,他的外网ip由nat设备(路由器)映射表决定,上面的映射表中我给192.168.1.1映射的是192.170.1.10,那么电脑的外网ip就是192.170.1.10。

但这里还有个疑问,那就是为什么我ping电脑1的内网能ping通???这其实是因为我设置的是动态路由模式,路由器2能知道电脑1的外网ip,同时他也能知道电脑脑1的内网ip。

随后我把路由器1改为静态路由模式:

这样子,路由器2就不会知道电脑1的内网ip了

然后再尝试一下:

看,现在就正常了

分析:接着分析一下上面实验的流程

请求:首先是左侧的pc6向192.170.1.10发送请求,路由器2接收到数据包后检索了路由表,发现这个ip数据右侧的相邻网段,于是将数据包传到右侧端口,然后路由器1接受了数据包,随后路由器检索nat隐射表,找到了对应的内网ip,便把数据包的目的ip改为电脑1的内网ip,并发送给电脑1

响应:电脑1接受到数据包时,数据包的目的ip时192.168.1.1(就是自己),源ip为192.170.2.2(pc6);接着电脑1响应请求,响应的数据包中的目的ip为192.170.2.2,源ip为192.168.1.1,发送给路由器1,路由器检索nat映射表后将响应数据包的源ip改为电脑1对应的外网ip(192.170.1.10),发送给了路由器2,路由器2再将数据包发送给pc6,pc6接受数据包,接受数据包时数据包的目的ip是自己(192.170.2.2)源ip是电脑1的外网ip(192.170.1.10)。至此,传输结束。

总结:

NAT设备能够伪装真实的内网IP,保护了内网的计算机安全,同时还允许了内网IP和外网IP相同,在一定程度上缓解了IPV4匮乏,但这并不能完美的解决IPV4的匮乏,真正解决了这个问题的是NAPT技术。

NAPT

NAPT(Network Address Port Translation,网络地址端口转换)是基本地址转换的一种变形,它允许多个内部地址映射到同一个公有地址上,也可称之为“多对一地址转换”。NAPT同时映射IP地址和端口号:来自不同内部地址的数据报的源地址可以映射到同一外部地址,但它们的端口号被转换为该地址的不同端口号,因而仍然能够共享同一地址,也就是“私有地址+端口号”与“公网IP地址+端口号”之间的转换

NAPT是NAT技术的衍生,NAPT能够更好的解决IPV4匮乏的问题,是当前重要的解决IPV4匮乏问题的技术

NAPT技术和NAT技术很相近,这里就不过多赘述。

VLAN

VLAN即虚拟局域网,不同的局域网之间无法相互访问

虚拟局域网由交换机依据端口划分,为每个端口加上对应的VLAN TAG(标签)

在学习VLAN中会遇到一下的端口类型,他们都属于二层端口的类型:

Access,Trunk

以下摘选一博客对这两种端口类型的解释:

access端口:

通过access端口的数据包都是不带VLAN tag的,且只属于一个VLAN;

在access端口进方向,交换机接收到数据包后,先判断是否带VLAN tag,有则丢弃数据包,没有则打上该端口已配置的VLAN tag;

在access端口出方向,交换机将打了与端口相同VLAN tag的数据包转发出去,并且去掉VLAN tag变成普通数据包。

trunk端口:

通过trunk端口的数据包都必须带上VLAN tag;

在trunk端口进方向,交换机接收到数据包后,先判断是否带VLAN tag,没有则丢弃数据包,有则按照对应VLAN进行转发;

在trunk端口出方向,交换机将带VLAN tag的数据包原封不动转发出去,没有带VLAN tag数据包不会从trunk端口转发出去。

在trunk端口上有一种特殊情况,如果配置了native VLAN(也叫PVID),转发方式等同于access端口,当从端口进来的报文不带vlan tag时,就打上Native vlan tag; 当从端口出去的报文带Native vlan tag时,会剥TAG。

实验1

根据上面的端口描述,做如下实验:

拓扑结构如下

现将pc20和pc22以及pc24所连接的交换机端口设置为VLAN101

将pc21和pc23以及pc25所连接的交换机端口设置为VLAN102

将两交换机相互连接的端口设置为Trunk模式

PC20 ping PC22

可以ping的通,流程如下:

PC20将数据包发送到交换机的端口(该端口为VLAN101),端口对数据包打上VLAN101 TAG,交换机再根据MAC表,查询到应该将数据包发送到PC22所在端口,并且此时PC22所在端口为Access模式,并且同为VLAN101,数据包可以从PC22所在端口流出,流出时,PC22所在端口会将数据包上的VLAN101 TAG去掉,流入到PC22的数据包便没有了VLAN101 TAG

PC20 ping PC21

不能ping通,流程如下:

PC20将数据包发送到交换机端口(该端口为VLAN101),端口对数据包打上VLAN101 TAG,交换机再根据MAC表,查询到应该将数据包发送到PC21所在的端口,但因为PC21所在端口为Access,并且属于VLAN102,则无法使数据包通过,则无法ping通

PC20 ping PC24

可以ping通,流程如下:

PC20将数据包发送到交换机端口(该端口为VLAN101),端口对数据包打上VLAN101 TAG,交换机再根据MAC表,查询到应该将数据包发送到下一交换机所在的端口,并且该接口为Trunk,只允许带VLAN TAG的数据包通过,并且不会删去VLAN TAG,数据包流向下一交换机的端口,并且该端口同样为Trunk模式,只允许携带VLAN TAG 的数据包流入,右侧交换机查询MAC表后,将数据包发送到了与PC24相连的端口,与PC24相连的端口也是VLAN101,与数据包自带的VLAN TAG相同,便允许数据包通过,通过时摘除标签

PC20 ping PC25

不能ping通,流程基本和上面一个差不多:

PC20将数据包发送到交换机端口(该端口为VLAN101),端口对数据包打上VLAN101 TAG,交换机再根据MAC表,查询到应该将数据包发送到下一交换机所在的端口,并且该接口为Trunk,只允许带VLAN TAG的数据包通过,并且不会删去VLAN TAG,数据包流向下一交换机的端口,并且该端口同样为Trunk模式,只允许携带VLAN TAG 的数据包流入,右侧交换机查询MAC表后,将数据包发送到了与PC25相连的端口,与PC24相连的端口是VLAN102,与数据包自带的VLAN TAG不相同,便阻止数据包通过

实验2

电脑或者路由器能够接受含VLAN TAG的数据包吗?

先说结论,不能

实验如下:

经过分析,数据包是能流入到PC26网卡的,但是因为数据包由VLAN TAG,网卡便将数据包丢弃,如果PC26向PC20发送数据包也不行,因为Trunk端口不允许不含VLAN TAG的数据包进入

下面是测试路由器的实验:

ping路由器都ping不通,

ping路由器对面的电脑肯定更ping不同,原因是因为路由器不允许携带VLAN TAG的数据包通过。

思考:如何让两个VLAN中的电脑相互访问呢?

答案是使用单臂路由

单臂路由(router-on-a-stick)是指在路由器的一个接口上通过配置子接口(或“逻辑接口”,并不存在真正物理接口)的方式,实现原来相互隔离的不同VLAN(虚拟局域网)之间的互联互通。

单臂路由就是为路由器的物理端口虚拟出子端口,再为每个子端口分配独立的IP网段

拓扑结构如图

分别为两台电脑分配不同网段的IP

再为其分配不同的VLAN

将与路由器相连的端口设置为Trunk

下面设置路由器:

en //进入特权模式

conf t //进入全局配置模式

int fa0/0 //进入fa0/0端口

no shut //启动端口

exit //返回全局配置模式

int fa0/0.101 //创建fa0/0的子端口fa0/0.101

en dot1q 101 //为子端口分配101VLAN

no shut //启动子端口

exit //返回全局配置模式

int fa0/0.102 //创建fa0/0的子端口fa0/0.102

en dot1q 102 //为子端口分配102VLAN

no shut //启动子端口

然后就能ping通了

DHCP服务器

百度对DHCP服务器的解释:

动态主机配置协议是一个局域网的网络协议。指的是由服务器控制一段IP地址范围,客户机登录服务器时就可以自动获得服务器分配的IP地址和子网掩码。担任DHCP服务器的计算机需要安装TCP/IP协议,并为其设置静态IP地址、子网掩码、默认网关等内容。

猫(modem-调制解调器)

将不类型的型号进行转换的设备,比如说光信号转为电信号,模拟信号转为数字信号,这些转化都需要调制解调器的参与

调制解调器属于第一层(物理层)

网桥

网桥可以视为交换机的双端口版本,只有两个端口,能对数据链路层进行分析,不会盲目传送数据包

以下是百度对网桥的解释:

网桥(Bridge)是早期的两端口二层网络设备。网桥的两个端口分别有一条独立的交换信道,不是共享一条背板总线,可隔离冲突域。网桥比集线器(Hub)性能更好,集线器上各端口都是共享同一条背板总线的。后来,网桥被具有更多端口、同时也可隔离冲突域的交换机(Switch)所取代。

网桥(Bridge)像一个聪明的中继器。中继器从一个网络电缆里接收信号, 放大它们,将其送入下一个电缆。相比较而言,网桥对从关卡上传下来的信息更敏锐一些。网桥是一种对帧进行转发的技术,根据MAC分区块,可隔离碰撞。网桥将网络的同一网段在数据链路层连接起来,只能连接同构网络(同一网段),不能连接异构网络(不同网段)。

网桥也叫桥接器,是连接两个局域网的一种存储/转发设备,它能将一个大的LAN分割为多个网段,或将两个以上的LAN互联为一个逻辑LAN,使LAN上的所有用户都可访问服务器。

网桥和交换机的区别

集线器

百度对集线器的解释

集线器的英文称为“Hub”。“Hub”是“中心”的意思,集线器的主要功能是对接收到的信号进行再生整形放大,以扩大网络的传输距离,同时把所有节点集中在以它为中心的节点上。它工作于OSI(开放系统互联参考模型)参考模型第一层,即“物理层”。集线器与网卡网线等传输介质一样,属于局域网中的基础设备,采用CSMA/CD(即带冲突检测的载波监听多路访问技术)介质访问控制机制。集线器每个接口简单的收发比特,收到1就转发1,收到0就转发0,不进行碰撞检测。

集线器(hub)属于纯硬件网络底层设备,基本上不具有类似于交换机的”智能记忆”能力和”学习”能力。它也不具备交换机所具有的MAC地址表,所以它发送数据时都是没有针对性的,而是采用广播方式发送。也就是说当它要向某节点发送数据时,不是直接把数据发送到目的节点,而是把数据包发送到与集线器相连的所有节点。

如何不经过路由器只经过交换机访问处在不同网段的设备

别笑🤤🤤我认真的

以上就是我成功的方法

没错就是将默认网关指向目标主机

下面说一下为什么连在同一交换机上,为什么不同网段的设备不能相互访问,又为什么设置成这样就又可以访问

首先,如果电脑向另一个网段的的IP发送请求的时候,电脑会自动将请求直接发给路由器。

这与在同一网段中的不同,如果是向同一网段中的电脑发送请求,电脑会先发送arp广播,寻找目标设IP的MAC地址,然后再把请求发送到目标MAC。

所以,连接在同一个交换机上的设备无法相互访问,因为电脑会先将数据包发送到路由器上,而不是直接发送到另一个网段的中的目标电脑上。

所以如果不设置单臂路由或者使用其他的技术,将无法使连接在同一交换机上但网段不同的设备通信。

那么为什么像我那样设置就又可以呢??

答案如下:

我们知道电脑在向另一个网段的局域网的时候会直接发送到网关,那么我可以直接把连在同一交换机上的处在不同网段中的电脑(甲)设置为该电脑(乙)的网关,让数据包直接发送到电脑甲中不就行了,电脑甲也直接把电脑乙设置为网关,这样就可以相互通信了

(手动滑稽)

结束撒花

评论

  1. kaka
    kaka
    Android
    2 年前
    2022-12-27 14:22:01

    好厉害!前途无量!ヾ(≧∇≦*)ゝ

    • First
      kaka
      Android
      2 年前
      2022-12-27 14:29:51

      哈哈哈

  2. facker
    Android
    2 年前
    2022-12-27 15:10:38

    :ஐ٩(๑´ᵕ`)۶ஐ:

  3. 头像
    博主
    Windows
    2 年前
    2022-12-28 0:12:31

    ヾ(≧∇≦*)ゝ

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
下一篇