IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> OSI七层网络模型和TCP/IP四层网络模型理解 -> 正文阅读

[网络协议]OSI七层网络模型和TCP/IP四层网络模型理解

前奏知识

OSI网络七层模型

OSI 是 Open System Interconnection的缩写,译为“开放式系统互联”
在这里插入图片描述

  1. 应用层
  2. 表示层
  3. 会话层
  4. 传输层
  5. 网络层
  6. 数据链路层
  7. 物理层

OSI模型把网络通信的工作氛围7层,从下到上分别是物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。

OSI七层网络模型的作用

  1. 物理层: 物理层的作用就是保证双向传输,双向通信。就好比修路,把两个地方之间的路修通,至于上边是跑货车、跑车、自行车等等,就不管了。所以物理层的作用就是提供了网络的双向通信,为双向通信提供了有保障的通路。
  2. 数据链路层: 交换机就是工作在二层数据链路层。链路层主要有三个功能
    1. 提供了通讯过程中要用到的MAC地址。在通信过程中,一共要用到两个地址,一个是逻辑IP地址,一个是物理MAC地址,MAC地址是数据链路层提供的。MAC地址就是物理地址,而物理地址就是我们的网卡地址。
    2. 负责数据帧的转发,数据链路层传输的数据被称为数据帧。
    3. 提供错误检测机制,例如通过交换机,两个PC在相互通信,PC1作为发送方,PC2作为接收方,交换机会发送的数据进行数据检测,如果它发送传输的数据有丢失的情况,它会通知接收方丢失的数据并通知发送方重新发送数据
  3. 网络层:路由器主要工作在网络层。网络层一共有四个功能
    1. 提供逻辑ip地址
    2. 连接不同的媒介类型(内网和外网),使不同的媒介之间可以相互通信。比如我们的路由器连接着单位内网,一端连接着外网,此时路由器的功能就是连接内网和外网,能够相互通信。
    3. 根据路由器运行的不同的路由协议选择最佳的路径。比如说早上起来从家到公司上班,可以有好多条路可以走,如果是开车的人,可能会选择不堵车的路,如果是坐公交的人,会选择尽量换乘少的路,所以都是一个结论,同一个源到同一个目的地,根据出行方式不同,可以有不同的最佳路径。在网络层也是同一个道理,在整个网络层中,一共有6种动态路由协议,每一种路由协议都有自己不同的选路方式,比如说RIP路由协议,这个协议选路的方式就是哪近走哪,还有的协议是根据最大带宽来选择最佳路径。所以工作在网络层的路由,就会根据自身运行的不同路由协议来选择自己认为的最佳路径。
    4. 在选好的最佳路径上负责路由数据包。
  4. 传输层传输层的功能是提供了端口号的概念,比如说我用微信给小明发信息,小明用微信接收信息并查看,但是谁规定的我从微信给他发的信息,他必须用微信接收呢?他为什么不打开微信,word接收呢?这个就是传输层规定的。换句话说,在通信的过程中,我们需要MAC地址和IP地址来通信,我们还需要知道对方的MAC和IP,因为我需要MAC和IP才能找到你,所以可以理解为这两个地址是定位你存在的。但是找到你只代表能ping通你,但是我要怎么和你发生通信和服务请求呢?IANA规定,网络中的每一种应用或者每服务都有自己的一个或者多个固定的端口号码,比如网页一般是80端口,SMTP是25端口,DNS是53端口,FTP是20,21端口等等。我们可以根据端口号来识别对应的服务。比如微信是3346端口,我在给小A发信息时,数据中会带着3346的端口号,所以小明的电脑会根据端口号也用微信接收信息。
  5. 会话层: ,会话主要的作用就是建立和管理应用程序之间的通信。就是自动收发包,不需要用户手动打TCP/UDP包,然后调用IP协议去找路由, 在会话层都已经自动处理好了。
  6. 表示层: 表示层主要的作用就是,帮助我们解决不同系统之间通信语法问题。 例如 Linux 系统给window系统发包。
  7. 应用层: 应用层主要的作用就是,说白了应用层就是之间与用户对接的,比如我们要通过谷歌浏览器去逛淘宝或者通过formail去发邮件等等,这个环节都是属于应用层的范围。

TCP/IP四层网络模型

OSI网络模型 只是存在于概念和理论上的一种模型,缺点是分层太多,增加了网络工作的复杂性,所以没有大规模应用。后来对 OSI 进行了简化,合并了一些层,最终只保留了 4 层,从下到上分别是接口层、网络层、传输层和应用层,这就是大名鼎鼎的 TCP/IP 模型。
在这里插入图片描述

  1. 应用层
  2. 传输层
  3. 网络层
  4. 网络接口层

TCP/IP层次网络模型的作用

  1. 网络接口层:也称作数据链路层,通常包括操作系统中的设备驱动程序和计算机中对应的网络接口卡。它们一起处理与电缆(或其他任何传输媒介)的物理接口细节,将IP数据报组装成帧,加入必要的控制信息(地址信息、同步信息、差错控制CRC编码)。
  2. 网络层:处理分组在网络中的活动,例如分组的选路。在TCP/IP协议族中,网络层协议包括IP协议(网际协议),ICMP协议(Internet控制报文协议),ARP(地址解析协议)和RARP(逆地址解析协议)。 ping 命令就是应用icmp协议。
    IP是一种网络层协议,提供的是一种不可靠的服务,它只是尽可能快地把分组从源结点送到目的结点,但是并不提供任何可靠性保证。CP和UDP的每组数据都通过端系统和每个中间路由器中的IP层在互联网中进行传输。
    ICMP是IP协议的附属协议。IP层用它来与其他主机或路由器交换错误报文和其他重要信息。
    IGMP是Internet组管理协议。它用来把一个UDP数据报多播到多个主机。
  3. 传输层:主要为两台主机上的应用程序提供端到端的通信。主要功能是数据格式化、数据确认和丢失重传等。在TCP/IP协议族中,有两个互不相同的传输协议:TCP(传输控制协议)和UDP(用户数据报协议)。
    TCP为两台主机提供高可靠性的数据通信。它所做的工作包括把应用程序交给它的数据分成合适的小块交给下面的网络层,确认接收到的分组,设置发送最后确认分组的超时时钟等。由于运输层提供了高可靠性的端到端的通信,因此应用层可以忽略所有这些细节。为了提供可靠的服务,TCP采用了超时重传、发送和接收端到端的确认分组**等机制。
    UDP则为应用层提供一种非常简单的服务。它只是把称作数据报的分组从一台主机发送到另一台主机,但并不保证该数据报能到达另一端。一个数据报是指从发送方传输到接收方的一个信息单元(例如,发送方指定的一定字节数的信息)。UDP协议任何必需的可靠性必须由应用层来提供。
  4. 应用层:应用层提供了应用程序间的沟通。TCP/IP 协议族内预存了各类通用的应用服务。包括 HTTP,FTP(File Transfer Protocol,文件传输协议),DNS(Domain Name System,域名系统)服务。

OSI七层网络模型和TCP/IP四层网络模型对比

在这里插入图片描述

具体是干嘛的?

我们平常使用的程序(或者说软件)一般都是通过应用层来访问网络的,程序产生的数据会一层一层地往下传输,直到最后的物理层就通过网络发送到互联网上去了。数据每往下走一层,就会被这一层的协议添加一层包装,等到发送到互联网上时,已经比原始数据层多了四层(后面会讲具体哪四层)包装。整个数据封装的过程就像俄罗斯套娃。

当其它计算机接收到数据包时,就会从物理层再一层一层往上传输,每传输一层就拆开一层包装,直到最后的应用层,就得到了最原始的数据,这才是程序要使用的数据。

TCP/IP协议

TCP/IP协议是一组协议的组合,它还包含其他一些协议,比如TCP、UDP、ICMP、ARP/RARP等。之所以用TCP/IP来命名这个互联网协议簇,因为TCP/IP协议是两个很重要的协议,以此来实现互联网上主机之间的相互通信,这些协议分属不同的分层,承担不同的作用(这里我们就不做细讲)。
在这里插入图片描述

TCP/IP四层模型

应用层包括:

HTTP超文本传输协议:万维网的基本协议
TFTP文件传输协议:简单文件传输协议
Telnet远程登录协议,提供远程访问其它主机功能,它允许用户登录internet主机,并在这台主机上执行命令
SNMP简单网络管理协议:该协议提供了监控网络设备的方法,以及配置管理,统计信息收集,性能管理及安全管理等
DNS域名系统:该系统用于在internet中将域名及其公共广播的网络节点转换成IP地址

传输层包括:

TCP协议:传输控制协议
UDP协议:用户数据报协议

网络层包括:

Internet协议 (IP):网络层的主要协议
Internet控制信息协议(ICMP):是互联网控制报文协议,是IP的附属协议,IP层用它来与其他主机或路由器交换错误报文和其他重要信息。

链路层包括:

地址解析协议(ARP):转换IP层和链路层的地址
逆向地址解析协议(RARP):转换IP层和链路层的地址

当然这里说的不够完善,每一个分支都是一个很复杂的流程,这里不做细讲,TCP和UDP协议便属于TCP/IP协议簇中的两个重要的核心协议。分别是传输控制协议TCP,用户数据报协议UDP。也就是我们OSI网络七层模型中的第五层也就是传输层,同时也是我们七层模型中最为重要的一环。

TCP (Transmission Control Protocol)协议和UDP(User Datagram Protocol)协议属于传输层协议。其中TCP提供IP环境下的数据可靠传输,它提供的服务包括数据流传送、可靠性、有效流控、全双工操作和多路复用。通过面向连接、端到端和可靠的数据包发送。通俗说,它是事先为所发送的数据开辟出连接好的通道,然后再进行数据发送;而UDP则不为IP提供可靠性、流控或差错恢复功能。一般来说,TCP对应的是可靠性要求高的应用,而UDP对应的则是可靠性要求低、传输经济的应用。

现在我们就分别来说说这两个协议。

TCP协议:

TCP全名为Transmission Control Protocol也就是传输控制协议。提供可靠的字节流服务,所谓的字节流服务(Byte Stream Service)是指为了方便传输,将大块数据分割成以报文段(segment)为单位的数据包进行管理。而可靠的传输服务是指,能够把数据准确可靠地传给对方。
TCP 协议为了更容易传送大数据才把数据分割,而且 TCP 协议能够确认数据最终是否送达到对方。所以,TCP连接相当于两根管道(一个用于服务器到客户端,一个用于客户端到服务器),管道里面数据传输是通过字节码传输,传输是有序的,每个字节都是一个一个来传输。也可以把这个管道的两头称之为套接字(socket)。它的构成为:IP地址+端口号,如:192.3.4.16:80。

TCP数报报文格式:

在这里插入图片描述
TCP报文的作用就是规定发送方和接收方的格式以及显示发送方和接收方的各种信息。比如我仍一条信息给对方,对方得怎么去接收,用多大容量来接收等等,下面就是TCP报头的各个字段的含义:

  1. 源端口和目的端口:各占2个字节,分别写入源端口和目的端口(端口到端口)
  2. 序号:占4个字节,TCP连接中传送的字节流中的每个字节都按顺序编号。好比我们java中得数组,每个元素都有自己的index。例如,一段报文的序号字段值是 301 ,而携带的数据共有100字段,显然下一个报文段(如果还有的话)的数据序号应该从401开始;
  3. 确认序号:占4个字节,是期望收到对方下一个报文的第一个数据字节的序号也就是图中的ACK。例如,B收到了A发送过来的报文,其序号字段值依旧是301,数据长度是依然是100字节,这表明B正确的收到了A发送的到序号400为止的数据,也就是收到了400个字节。因此,B期望收到A的下一个序号是401,于是B在发送给A的确认报文段中把确认号置为401;
  4. 数据偏移/首部长度:占4bits。由于首部可能含有可选项内容,因此TCP报头的长度是不确定的,报头不包含任何任选字段则长度则为20字节,4位首部长度字段所能表示的最大值为1111,转化为10进制为15,15*32/8 = 60,故报头最大长度为60字节。首部长度也叫数据偏移,是因为首部长度实际上指示了数据区在报文段中的起始偏移值。
  5. 保留:占6位,为将来定义新的字段所预留,但目前应都为0;
  6. 标识:
    紧急URG:当URG=1,表明紧急指针字段有效。告诉系统此报文段中有紧急数据;
    确认ACK:仅当ACK=1时,确认号字段才有效。TCP规定,在连接建立后所有报文的传输都必须把ACK置1;
    推送PSH:当两个应用进程进行交互式通信时,有时在一端的应用进程希望在键入一个命令后立即就能收到对方的响应,这时候就将PSH=1;
    复位RST:当RST=1,表明TCP连接中出现严重差错,必须释放连接,然后再重新建立连接;
    同步SYN:在连接建立时用来同步序号。当SYN=1,ACK=0,表明是连接请求报文,若同意连接,则响应报文中应该使SYN=1,ACK=1;
    终止FIN:用来释放连接。当FIN=1,表明此报文的发送方的数据已经发送完毕,并且要求释放;
  7. 窗口:占2字节,指的是通知接收方,发送本报文你需要有多大的空间来接受;
  8. 检验和:占2字节,校验首部和数据这两部分;
  9. 紧急指针:占2字节,指出本报文段中的紧急数据的字节数;
  10. 选项和填充:长度可变,最常见的可选字段是最长报文大小,又称为MSS(Maximum Segment Size),每个连接方通常都在通信的第一个报文段(为建立连接而设置SYN标志为1的那个段)中指明这个选项,它表示本端所能接受的最大报文段的长度。选项长度不一定是32位的整数倍,所以要加填充位,即在这个字段中加入额外的零,以保证TCP头是32的整数倍。
  11. 数据:TCP 报文段中的数据部分是可选的。在一个连接建立和一个连接终止时,双方交换的报文段仅有 TCP 首部。如果一方没有数据要发送,也使用没有任何数据的首部来确认收到的数据。在处理超时的许多情况中,也会发送不带任何数据的报文段。

所以TCP报文头的格式为:
12. 源端口 16位
13. 目标端口 16位
14. 序列号 32位
15. 回应序号 32位
16. TCP头长度 4位
17. reserved 6位
18. 控制代码 6位
19. 窗口大小 16位
20. 偏移量 16位
21. 校验和 16位
22. 选项 32位(可选)

建立连接需要经过三次握手,握手成功才可以进行通信,为什么要建立三次握手?
在网络通信中,网络存在拥塞,发送的报文可能会由于网络拥塞的原因,导致对方收不到。若采用直接开启连接,当客户端发送连接建立请求后,不等待确认服务器可以打开连接就直接打开连接,这样如果服务器收不到报文,根本不知道客户端,那么客户端的打开的物理连接是无效的,但客户端不知道,还一直发送数据,做无用的工作。三次握手:握手过程中使用了 TCP 的标志(flag) —— SYN(synchronize)和ACK(acknowledgement)。

  • 第一次握手:建立连接时,客户端A发送SYN包(SYN=j)到服务器B,并进入SYN_SEND状态,等待服务器B确认。
  • 第二次握手:服务器B收到SYN包,必须确认客户A的SYN(ACK=j+1),同时自己也发送一个SYN包(SYN=k),即SYN+ACK包,此时服务器B进入SYN_RECV状态。
  • 第三次握手:客户端A收到服务器B的SYN+ACK包,向服务器B发送确认包ACK(ACK=k+1),此包发送完毕,完成三次握手。

在这里插入图片描述
在这里插入图片描述
如果讲的通俗一点就是:
假设A城市往B城市发送信件,先A发到B,B收到再发给A,A收到再发给B,建立起初步通信。三次握手是为了证明A,B的收信和发信能力是ok的,这样就证明连接是通常的。
第一次握手:当A发到B时,B收到信后,此时B城市就明白了,A城市的发信能力和B城市的收信能力是ok。
第二次握手:当B发到A时,A收到信后,此时A城市就明白了,B城市的发信能力和A城市的收信能力是ok,加上之前的发信,同时也就知道了A(自己)的发信能力和B城的收信能力是ok的,这就相当于A知道了双方都是OK的,但B还疑惑,因为它第一次虽然知道了A的发信能力个自身的收信能力是OK的,但并不不知道城B(自身)的的发信能力和A城市的收信能力如何,所以需要第三次握手。
第三次握手:A发给B 当B收到后,就知道了B(自身的发信能力)和A城市的收信能力同样是ok的,既然双方都知根知底,那就掏心掏肺喜结连理吧。即完成首次通信的建立。

当双方通信结束时,为什么需要四次挥手来关闭连接?
TCP 连接是双向的,一个是从客户端到服务端,另一个是从服务端到客户端。假设当前客户端已经发送完所有数据到服务器,则此时可以告知服务器,我已经发送完数据了,可以关闭我这端到另一端的通道,服务器收到关闭报文则可发送一个确认,确认关闭;但此时由于服务器可能还需要发送数据到客户端,因此并不会关闭从服务端到客户端方向的通道;等服务端发完了,才发送一个 FIN 报文给客户端,客户端收到之后发送确认,则此时 TCP 连接才正式关闭。

  • 客户端A发送一个FIN,用来关闭客户A到服务器B的数据传送。
  • 服务器B收到这个FIN,它发回一个ACK,确认序号为收到的序号加1。
  • 服务器B关闭与客户端A的连接,发送一个FIN给客户端A。
  • 客户端A发回ACK报文确认,并将确认序号设置为收到序号加1。

在这里插入图片描述
在TCP连接中(三次握手),服务器端的SYN和ACK向客户端发送是一次性发送的,而在断开连接的过程中,B端向A端发送的ACK和FIN是分两次发送的。因为在B端接收到A端的FIN后,B端可能还有数据要传输,所以先发送ACK,等B端处理完自己的事情后就可以发送FIN断开连接了。
就好比你给你女朋友打电话,你说:“你怎么还没出门啊”,女朋友回复到:“好的,但是我在化妆,你等下我”。等她化完妆说到:“好了,可以出发了”。你回复到:“ojbk”

为什么客户端挥手时最后还要等待2MSL?
MSL(Maximum Segment Lifetime):TCP允许不同的实现可以设置不同的MSL值。
第一:保证客户端发送的最后一个ACK报文能够到达服务器,因为这个ACK报文可能丢失,站在服务器的角度看来。我已经发送了FIN+ACK报文请求断开了,客户端还没有给我回应,应该是我发送的请求断开报文它没有收到,于是服务器又会重新发送一次,而客户端就能在这个2MSL时间段内收到这个重传的报文,接着给出回应报文,并且会重启2MSL计时器。
第二:防止类似与“三次握手”中提到了的“已经失效的连接请求报文段”出现在本连接中。客户端发送完最后一个确认报文后,在这个2MSL时间中,就可以使本连接持续的时间内所产生的所有报文段都从网络中消失。这样新的连接中不会出现旧连接的请求报文。

TCP 协议是一种可靠的传输协议,那么它是如何保证可靠性的呢?
在讲解 TCP 如何保证可靠性前,首先得理解什么是可靠。在通信的角度来看,可靠即要确保通信双方的通信信息不会丢失,若丢失了保证能够对其进行恢复,并且收到的信息内容与原发送内容一样。
在 TCP中,传输报文都是通过建立的虚拟连接来进行传输,发送端传输的每一个 TCP 报文,都会对其进行编号(编号是由于网络传输的原因,发送的报文可能会乱序到达,因此需要根据编号对报文进行重排),并且开启一个计时器;当接收端收到报文后,并且通过校验和对收到的报文数据进行校验,若校验成功则会返回一个确认报文,告知发送端我已经成功收到该报文了;若发送端在计时器结束前仍未收到确认报文,则认为接收端接收失败,则会重传该报文;服务端若收到重复报文(根据编号发现已经是收到了),则会将该报文丢弃。因此,从上面的机制可以知道,TCP 是通过重传、确认和校验和的方式来确保可靠。

UDP协议:

UDP全名为User Data Protocol,也就是传输控制协议。UDP 是一种面向无连接且不可靠的协议,在通信过程中它并不像 TCP 那样需要先建立一个连接。只要(目的地址,端口号,源地址,端口号)确定了,就可以直接发送信息报文,并且不需要确保服务端一定能收到或收到完整的数据。它仅仅提供了校验和机制来保障一个报文是否完整,若校验失败,则直接丢弃报文,不做任何处理。
由于使用UDP协议消耗资源小,通信效率高,所以通常都会用于音频、视频和普通数据的传输例如视频会议都使用UDP协议,因为这种情况即使偶尔丢失一两个数据包,也不会对接收结果产生太大影响。

UDP协议一下特点:

  1. UDP是一个非连接的协议,传输数据之前源端和终端不建立连接,当它想传送时就简单地去抓取来自应用程序的数据,并尽可能快地把它扔到网络上。在发送端,UDP传送数据的速度仅仅是受应用程序生成数据的速度、计算机的能力和传输带宽的限制;在接收端,UDP把每个消息段放在队列中,应用程序每次从队列中读一个消息段。
  2. 由于传输数据不建立连接,因此也就不需要维护连接状态,包括收发状态等,因此一台服务机可同时向多个客户机传输相同的消息。
  3. UDP信息包的标题很短,只有8个字节,相对于TCP的20个字节信息包的额外开销很小。
  4. 吞吐量不受拥挤控制算法的调节,只受应用软件生成数据的速率、传输带宽、源端和终端主机性能的限制。
  5. UDP使用尽最大努力交付,即不保证可靠交付,因此主机不需要维持复杂的链接状态表(这里面有许多参数)。
  6. UDP是面向报文的。发送方的UDP对应用程序交下来的报文,在添加首部后就向下交付给IP层。既不拆分,也不合并,而是保留这些报文的边界,因此,应用程序需要选择合适的报文大小。

经常使用“ping”命令来测试两台主机之间TCP/IP通信是否正常,其实“ping”命令的原理就是向对方主机发送UDP数据包,然后对方主机确认收到数据包,如果数据包是否到达的消息及时反馈回来,那么网络就是通的。
UDP数据报分为首部和用户数据部分,整个UDP数据报作为IP数据报的数据部分封装在IP数据报中,

UDP数据报文格式:

在这里插入图片描述
UDP首部有8个字节,由4个字段构成,每个字段都是两个字节,
7. 源端口: 源端口号,需要对方回信时选用,不需要时全部置0.
8. 目的端口:目的端口号,在终点交付报文的时候需要用到。
9. 长度:UDP的数据报的长度(包括首部和数据)其最小值为8(只有首部)
10. 校验和:检测UDP数据报在传输中是否有错,有错则丢弃。

UDP报文头的格式为:

  1. 源端口 16位
  2. 目的端口 16位
  3. 长度 16位
  4. 校验和 16位
  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-10-17 13:08:02  更:2022-10-17 13:08:34 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 8:38:24-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码