软件测试工程师面试题之(计算机网络下)

● 请你说说HTTP常见头

参考回答:

1、Accept:text/html, application/xhtml+xml, application/xml;q=0.9, image/webp, image/apng, /; q=0.8
作用:向服务器申明客户端(浏览器)可以接受的媒体类型(MIME)的资源

解释:浏览器可以接受text/html、application/xhtml+xml、application/xml类型,通配符*/* 表示任意类型的数据。并且浏览器按照该顺序进行接收。( text/html —> application/xhtml+xml —> application/xml)

2、Accept-encoding: gzip, deflate, br

作用:向服务器申明客户端(浏览器)接收的编码方法,通常为压缩方法

解释:浏览器支持采用经过gzip,deflate 或 br 压缩过的资源

3、Accept-Language: en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7

作用:向服务器申明客户端(浏览器)接收的语言

解释:浏览器能够接受en-US, en 和 zh-CN 三种语言,其中 en-US 的权重最高 ( q 最高为1,最低为 0),服务器优先返回 en-US 语言

延伸:语言与字符集的区别:zh-CN 为汉语,汉语中有许多的编码:gbk2312 等

4、Cache-control: max-age=0

作用:控制浏览器的缓存,常见值为private、no-cache、max-age、alidate,默认为 private,根据浏览器查看页面不同的方式来进行区别

解释:浏览器在访问了该页面后,不再会访问服务器

5、Cookie:

作用:告诉服务器关于Session 的信息,存储让服务器辨识用户身份的信息。

6、Refer:https://www.baidu.com/xxxxxxxxxx

作用:告诉服务器该页面从哪个页面链接的

解释:该页面从https://www.baidu.com 中的搜索结果中点击过来的

7、Upgrade-insecure-requests:1

作用:申明浏览器支持从http 请求自动升级为 https 请求,并且在以后发送请求的时候都使用 https

解释:当页面中包含大量的http 资源的时候(图片、iframe),如果服务器发现一旦存在上述的响应头的时候,会在加载 http 资源的时候自动替换为 https 请求

8、User-agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36

作用:向服务器发送浏览器的版本、系统、应用程序的信息。

解释:Chrome 浏览器的版本信息为 63.0.3239.132,并将自己伪装成 Safari,使用的是 WebKit 引擎,WebKit伪装成 KHTML,KHTML伪装成Gecko(伪装是为了接收那些为Mozilla、safari、gecko编写的界面)

延伸:可以随便填(但不应该随便填)不过一般用于统计。

9、X-Chrome-UMA-Enabled、X-Client-Data :与 Chrome 浏览器相关的数据

Response Headers

如果对软件测试有兴趣,想了解更多的测试知识,解决测试问题,以及入门指导,帮你解决测试中遇到的困惑,我们这里有技术高手。如果你正在找工作或者刚刚学校出来,又或者已经工作但是经常觉得难点很多,觉得自己测试方面学的不够精想要继续学习的,想转行怕学不会的, 都可以加入我们,群内可领取最新软件测试大厂面试资料和Python自动化、接口、框架搭建学习资料!

更多软件测试资源分享微信公众号:【程序员阿沐】

● 请你说说HTTP状态码

参考回答:

状态码,100199表示请求已收到继续处理,200299表示成功,300399表示资源重定向,400499表示客户端请求出错,500~599表示服务器端出错
200:响应成功

302:跳转,重定向

400:客户端有语法错误

403:服务器拒绝提供服务

404:请求资源不存在

500:服务器内部错误

● 请你说说soket编程和http协议

参考回答:

由于通常情况下Socket连接就是TCP连接,因此Socket连接一旦建立,通信双方即可开始相互发送数据内容,直到双方连接断开。但在实际网络应用中,客户端到服务器之间的通信往往需要穿越多个中间节点,例如路由器、网关、防火墙等,大部分防火墙默认会关闭长时间处于非活跃状态的连接而导致 Socket 连接断连,因此需要通过轮询告诉网络,该连接处于活跃状态。
而HTTP连接使用的是“请求—响应”的方式,不仅在请求时需要先建立连接,而且需要客户端向服务器发出请求后,服务器端才能回复数据。

很多情况下,需要服务器端主动向客户端推送数据,保持客户端与服务器数据的实时与同步。此时若双方建立的是Socket连接,服务器就可以直接将数据传送给客户端;若双方建立的是HTTP连接,则服务器需要等到客户端发送一次请求后才能将数据传回给客户端,因此,客户端定时向服务器端发送连接请求,不仅可以保持在线,同时也是在“询问”服务器是否有新的数据,如果有就将数据传给客户端。

● 请你说说tcp三次握手四次挥手

参考回答:

软件测试工程师面试题之(计算机网络下)
由于TCP连接是全双工的,因此每个方向都必须单独进行关闭。这个原则是当一方完成它的数据发送任务后就能发送一个FIN来终止这个方向的连接。收到一个 FIN只意味着这一方向上没有数据流动,一个TCP连接在收到一个FIN后仍能发送数据。首先进行关闭的一方将执行主动关闭,而另一方执行被动关闭。四次挥手过程:

(1)客户端A发送一个FIN,用来关闭客户A到服务器B的数据传送。

(2)服务器B收到这个FIN,它发回一个ACK,确认序号为收到的序号加1。和SYN一样,一个FIN将占用一个序号。

(3)服务器B关闭与客户端A的连接,发送一个FIN给客户端A。

(4)客户端A发回ACK报文确认,并将确认序号设置为收到序号加1。

四次挥手原因:这是因为服务端的LISTEN状态下的SOCKET当收到SYN报文的建连请求后,它可以把ACK和SYN(ACK起应答作用,而SYN起同步作用)放在一个报文里来发送。但关闭连接时,当收到对方的FIN报文通知时,它仅仅表示对方没有数据发送给你了;但未必你所有的数据都全部发送给对方了,所以你可以未必会马上会关闭SOCKET,也即你可能还需要发送一些数据给对方之后,再发送FIN报文给对方来表示你同意现在可以关闭连接了,所以它这里的ACK报文和FIN报文多数情况下都是分开发送的。

● 请你说说post和get的区别

参考回答:

GET – 从指定的资源请求数据。
POST – 向指定的资源提交要被处理的数据。

由于HTTP的规定和浏览器/服务器的限制,导致它们在应用过程中体现出一些不同。

软件测试工程师面试题之(计算机网络下)
1、请求方法

GET:请求获取Request——URL所标识的资源

POST:在Request——URL所标识的资源后附加资源

HEAD:请求获取由Request——URL所标识的资源的响应消息报头

PUT:请求服务器存储一个资源,由Request——URL作为其标识

DELETE:请求服务器删除由Request——URL所标识的资源

TRACE:请求服务器回送收到的请求信息(用于测试和诊断)

CONNECT:保留

OPTIONS:请求查询服务器性能

2、URL

URI全名为Uniform Resource Indentifier(统一资源标识),用来唯一的标识一个资源,是一个通用的概念,URI由两个主要的子集URL和URN组成。URL全名为Uniform Resource Locator(统一资源定位),通过描述资源的位置来标识资源。URN全名为Uniform Resource Name(统一资源命名),通过资源的名字来标识资源,与其所处的位置无关,这样即使资源的位置发生变动,其URN也不会变化。

3、协议版本

格式为HTTP/主版本号.次版本号,常用为:HTTP/1.1 HTTP/1.0

4、请求头部

Host:接受请求的服务器地址,可以是IP或者是域名

User-Agent:发送请求的应用名称

Connection:指定与连接相关的属性,例如(Keep_Alive,长连接)

Accept-Charset:通知服务器端可以发送的编码格式

Accept-Encoding:通知服务器端可以发送的数据压缩格式

Accept-Language:通知服务器端可以发送的语言

● 请你说一说http缓存问题,缓存寿命,以及怎么判断文件在服务器是否更改的

参考回答:

1 缓存的类型:

缓存是一种保存资源副本并在下次请求中直接使用该副本的技术,缓存能够节约网络资源,提升页面响应速度。常见的缓存类型分为共享缓存和私有缓存

1.1 私有缓存

私有缓存只能用于单独用户,常见的浏览器缓存便是私有缓存。私有缓存能够存储用户通过http下载过的文档,从而在用户再次访问时直接提供给用户,而不用向服务器发送请求。

1.2 共享缓存

共享缓存能够被多个用户使用,常用的web代理中便使用的共享缓存

缓存寿命

缓存寿命的计算的依据依次是:

请求头中的Cache-Control: max-age=N。相应的缓存寿命即为 N,从设置开始,N秒之后过期。

Expires属性,Expires属性的值为过期的时间点,在这个时间点后,该缓存被认为过期

Last-Modified信息。缓存的寿命为头里面 Date表示的事件点减去 Last-Modified的时间点的结果乘以 10%

判断文件是否更改可以看文件时间戳

● 请你回答一下搜索敏感词汇时,页面被重置的原理

参考回答:

根据TCP协议的规定,用户和服务器建立连接需要三次握手:第一次握手用户向服务器发送SYN数据包发出请求(SYN, x:0),第二次握手服务器向用户发送SYN/ACK数据包发出回应(SYN/ACK, y:x+1),第三次握手用户向服务器发送ACK数据包发出确认(ACK, x+1:y+1),至此一个TCP连接建立成功。其中x为用户向服务器发送的序列号,y为服务器向用户发送的序列号。
关键字检测,针对明文或者base64等弱加密通讯内容,与准备好的敏感词库进行匹配,当发现敏感词时,将服务器发回的SYN/ACK包改成SYN/ACK, Y:0,这代表TCP连接被重置,用户便主动放弃了连接,提示连接失败。让用户误认为服务器拒绝连接,而主动放弃继续与服务器连接,自动阻断记录含有敏感词的网页

● 请你说一说两个机器之间的通讯过程及计算机网络为什么有七层/h2>

参考回答:

PC1 首先判断目标ip是否和自己在同一网段,是就进行ARP广播,解析出MAC地址。不是,则将网关的MAC地址作为MAC地址。
PC1封装的数据包括目标、源的端口号、IP、MAC地址。
交换机收到数据后,对比MAC地址表,知道从哪个口发出数据。
路由收到数据后根据路由表将数据发往下一个目标地。
最后一个路由通过ARP解析出PC2的MAC地址。
路由封装的数据包括目标、源的端口号、IP、MAC地址。

建立七层模型的主要目的是为解决异种网络互连时所遇到的兼容性问题。它的最大优点是将服务、接口和协议这三个概念明确地区分开来:服务说明某一层为上一层提供一些什么功能,接口说明上一层如何使用下层的服务,而协议涉及如何实现本层的服务;这样各层之间具有很强的独立性,互连网络中各实体采用什么样的协议是没有限制的,只要向上提供相同的服务并且不改变相邻层的接口就可以了。网络七层的划分也是为了使网络的不同功能模块(不同层次)分担起不同的职责,从而带来如下好处:
● 减轻问题的复杂程度,一旦网络发生故障,可迅速定位故障所处层次,便于查找和纠错;
● 在各层分别定义标准接口,使具备相同对等层的不同网络设备能实现互操作,各层之间则相对独立,一种高层协议可放在多种低层协议上运行;
● 能有效刺激网络技术革新,因为每次更新都可以在小范围内进行,不需对整个网络动大手术;

● 请你说一说http缓存问题,缓存寿命,怎么判断文件在服务器是否更改的

参考回答:

1 缓存的类型:

缓存是一种保存资源副本并在下次请求中直接使用该副本的技术,缓存能够节约网络资源,提升页面响应速度。常见的缓存类型分为共享缓存和私有缓存

1.1 私有缓存

私有缓存只能用于单独用户,常见的浏览器缓存便是私有缓存。私有缓存能够存储用户通过http下载过的文档,从而在用户再次访问时直接提供给用户,而不用向服务器发送请求。

1.2 共享缓存

共享缓存能够被多个用户使用,常用的web代理中便使用的共享缓存

缓存寿命

缓存寿命的计算的依据依次是:

请求头中的Cache-Control: max-age=N。相应的缓存寿命即为 N,从设置开始,N秒之后过期。

Expires属性,Expires属性的值为过期的时间点,在这个时间点后,该缓存被认为过期

Last-Modified信息。缓存的寿命为头里面 Date表示的事件点减去 Last-Modified的时间点的结果乘以 10%

判断文件是否更改可以看文件时间戳

● 请你说一说什么是http协议,http的数据段包括什么ttp 为什么是无状态的,http和https的区别p地址的abcd类是怎样分的,ABCD分层协议为什么如此分层,什么是长连接和短链接

参考回答:

什么是http协议/p>

http(hyperText transport Protocol)是超文本传输协议的缩写,它用于传送www方式的数据,关于http协议采用了请求/响应模型,客户端向服务器发送了一个请求,服务器以一个状态行作为响应

http的数据段包括什么/p>

通常http消息包括客户机向服务器请求消息和服务器向客户机的响应消息,这两种类型的消息由一个起始行,一个或多个头域,一个指示头域结束的空行和可选的消息体组成,http的头域包括通用头,请求头,响应头,和实体头四个部分,每个头域由一个域名,冒号,和域值三部分组成,域名是大小写无关的,域值前可以添加任何数量的空格符,头域可以被扩张成多行,在每行开始处,使用至少一个空格或制表符。

http为什么是无状态的/p>

无状态是指协议对于事务处理没有记忆能力,因为http协议目的在于支持超文本的传输,更加广义一点就是支持资源的传输,那么在客户端浏览器向服务器发送请求,继而服务器将相应的资源发回客户这样一个过程中,无论对于客户端还是服务器,都没有必要记录这个过程,因为每一次请求和响应都是相对独立的,一般而言,一个url对应唯一的超文本,正因为这样d唯一性,所以http协议被设计为无状态的链接协议符合他本身的需求。

http和https的区别/p>

http和https的区别主要如下:

1、https需要到ca申请证书,因而需要一定费用

2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议

3、http的连接很简单,是无状态的,https协议是由ssl+http协议构建的可进行加密串苏,身份验证的网络协议

4、http用的端口是80,https用的端口是443

ip地址的abcd类是怎样分的

A类地址的表示范围是:0.0.0.0-126.255.255.255,默认网络掩码为:255.0.0.0,A类地址分配给规模特别大的网络使用,

B类地址表示范围是:128.0.0.0-191.255.255.255,默认网络掩码为欸:255.255.0.0,B类地址分配给一般的中型网络

C类地址的表示范围是192.0.0.0-223.255.255.255,默认网络掩码是:255.255.255.0,C类地址分配给小型网络,如局域网

D类地址称为广播地址,共特殊协议向选定的节点发送信息使用。

这样便于寻址和层次化的构造网络。

什么是长连接和短连接/p>

http1.0中默认使用短连接,服务器和客户端没进行一次http操作,就建立一次连接,任务结束就终端连接,http1.1起。默认使用长连接,用以保持连接特性,当一个网页打开完成后,服务器和客户端之间用于传输http数据的tcp连接不会关闭,客户端再次访问这个服务器时,会继续使用这一条已经建立好的连接。

● 请你说一说tcp数据段都包括什么cp三次握手四次挥手过程、为什么挥手是四次

参考回答:

TCP数据段:

源端口(Source port) 和 目的端口(Destination port):

字段标明了一个连接的两个端点用来跟踪同一时间内通过网络的不同会话。一般每个端口对应一个应用程序

序列号(Sequence number):字节号 (32 位),表示一个字节的编号

初始序列号ISNs(initial sequence numbers ):随机产生的

SYN:携带了ISNs 和SYN 控制位的数据段

确认号(Acknowledgement number):期望接收的字节号 (32位)

TCP段头长度(TCP header length): TCP段头长度, 单位32位(4字节)

保留域/字段:逐步启用,如做拥塞控制等

URG:当紧急指针使用的时候,URG 被置为1。紧急指针是一个对于当前序列号的字节偏移量,标明紧急数据从哪里开始

当URG=1时,表明有紧急数据,必须首先处理收方收到这样的数据后,马上处理,处理完后恢复正常操作即使win=0,也可以发送这样的数据

ACK:为1 表示确认号有效,为0 标明确认号无效

PSH:表示这是带有PUSH标志的数据,接收方收到这样的数据,应该立刻送到上层,而不需要缓存它

RST:被用来重置一个已经混乱的连接

SYN:用在连接建立过程中

SYN=1,ACK=0 连接请求,当SYN=1,ACK=1 连接接受

FIN: 被用来释放连接,它表示发送方已经没有数据要传输了,但是可以继续接收数据

Window size: 告诉对方可以发送的数据字节数,从确认字节号开始(决定于接收方)

Checksum:提供额外的可靠性,校验的范围包括头部、数据和概念性的伪头部

选项域:选项域提供了一种增加基本头没有包含内容的方法

Tcp三次握手:

1、第一次握手,客户端发送syn=j到服务器

2、服务器返回syn=k,ack=j+1,

3、客户端再向服务器发送ack=k+1;

三次握手结束,客户端和服务器建立连接

TCP四次挥手:

1、客户端发送fin=j包关闭连接

2、服务器返回ack=j+1

3、服务器发送fin=k包关闭连接

4、客户端返回ack=k+1

四次挥手结束,连接断开

为什么连接三次,断开连接四次/p>

在连接中,服务器的ack和syn包是同时发送的,而在断开连接的时候,服务器向客户端发送的ack和fin包是分两次发送的,因为服务器收到客户端发送的fin包时,可能还有数据要传送,所以先发送ack,等数据传输结束后再发送fin断开这边的连接。

● 请你说一下tcp与udp的区别,以及tcp为什么可靠,tcp滑动窗口,同传,拆包组装包是如何实现的

参考回答:

TCP和UDP区别在于:

1、TCP提供面向对象的连接,通信前要建立三次握手机制的连接,UDP提供无连接的传输,传输前不用建立连接

2、TCP提供可靠的,有序的,不丢失的传输,UDP提供不可靠的传输

3、TCP提供面向字节流的传输,它能将信息分割成组,并在接收端将其充足,UDP提供面向数据报的传输,没有分组开销

4、TCP提供拥塞控制,流量控制机制,UDP没有

TCP为什么可靠

1、确认和重传机制

建立连接时三次握手连接机制是确认重传流量控制的基础,传输过程中如果校验失败,丢包或延时,发送端重传

2、数据排序

TCP有专门的序列号字段,可提供数据reorder

3、流量控制

TCP窗口会指明双方能够发送接收的最大数据量

4、拥塞控制

TCP滑动窗口

TCP建立连接时,各端分配一个缓冲区用来存储接受的数据,并将缓冲区的尺寸发送给另一端,接收方发送的确认消息中包含了自己剩余的缓冲区尺寸,剩余缓冲区空间的数量叫做窗口,所谓滑动窗口,就是接收端可以根据自己的状况通告窗口大小,从而控制发送端的接收,进行流量控制.

Tcp如何进行拆包、组装包/p>

拆包:
对于拆包目前常用的是以下两种方式:
1、动态缓冲区暂存方式。之所以说缓冲区是动态的是因为当需要缓冲的数据长度超出缓冲区的长度时会增大缓冲区长度。
大概过程描述如下:
A 为每一个连接动态分配一个缓冲区,同时把此缓冲区和 SOCKET 关联,常用的是通过结构体关联。
B 当接收到数据时首先把此段数据存放在缓冲区中。
C 判断缓存区中的数据长度是否够一个包头的长度,如不够,则不进行拆包操作。
D 根据包头数据解析出里面代表包体长度的变量。
E 判断缓存区中除包头外的数据长度是否够一个包体的长度,如不够,则不进行拆包操作。
F 取出整个数据包,这里的”取”的意思是不光从缓冲区中拷贝出数据包,而且要把此数据包从缓存区中删除掉。删除的办法就是把此包后面的数据移动到缓冲区的起始地址。

这种方法有两个缺点:

1)为每个连接动态分配一个缓冲区增大了内存的使用;

2)有三个地方需要拷贝数据,一个地方是把数据存放在缓冲区,一个地方是把完整的数据包从缓冲区取出来,一个地方是把数据包从缓冲区中删除。这种拆包的改进方法会解决和完善部分缺点。

2、利用底层的缓冲区来进行拆包
由于TCP也维护了一个缓冲区,所以我们完全可以利用TCP的缓冲区来缓存我们的数据,这样一来就不需要为每一个连接分配一个缓冲区了。另一方面我们知道 recv 或者 wsarecv 都有一个参数,用来表示我们要接收多长长度的数据。利用这两个条件我们就可以对第一种方法进行优化了。
对于阻塞 SOCKET 来说,我们可以利用一个循环来接收包头长度的数据,然后解析出代表包体长度的那个变量,再用一个循环来接收包体长度的数据。

● 请你说一下tcp/ip四层网络协议

参考回答:

TCP/IP四层网络协议分别是应用层,网络层,传输层,数据链路层

● 手写代码:从网络日志中,提取出date 字段,并排序。

参考回答:

首先在grok中要用%{DATESTAMP:date}或者自定义模式去匹配你的时间
然后在filter里,

● 从打开浏览器输入url到到达服务器上项目中某一个Controller上,请你来描述一下这一串过程

参考回答:

这个过程中发生了网络通信,即利用tcp/ip协议簇进行网络通信,发送端由应用层往下走,接收端由数据链路层往上走,步骤如下:
1、浏览器输入url,其中http是协议

2、应用层DNS解析,返回对应的ip地址

3、应用层客户端发送http请求,

4、网络层ip查询mac地址,

5、传输层tcp传输报文

6、数据到达数据链路层,此时客户端发送请求结束

7、服务器在数据链路层收到数据包,再层层下上直到应用层,

8、服务器响应请求,查找客户端请求的资源并返回响应报文

● 请你介绍下session

参考回答:

Session:在web开发中,服务器可以为每个用户创建一个会话对象(session对象),默认情况下一个浏览器独占一个session对象,因此在需要保存用户数据时,服务器程序可以把用户数据写到用户浏览器独占的session中,当用户使用浏览器访问其他程序时,其他程序可以从用户的session中取出该用户的数据,为用户服务,其实现原理是服务器创建session出来后,会把session的id号,以cookie的形式回写给客户机,这样只要客户机的浏览器不关,再去访问服务器时,都会带着session的id号去,服务器发现客户机浏览器带session id过来了,就会使用内存中与之对应的session服务。
Session和cookie的区别:

1、cookie是把用户的数据写给用户浏览器

2、session是把用户的数据写到用户独占的session中

3、session对象由服务器创建,开发人员可以调用request对象的getsession方法得到session对象

● 请问你知道跨域吗,条件是什么,在header里需要加什么,有几种方案

参考回答:

什么是跨域/p>

浏览器从一个域名的网页去请求另一个域名的资源时,域名、端口、协议任一不同,都是跨域

跨域的几种方案:

1:基于script标签实现跨域

3: 基于jquery跨域

4: 通过iframe来跨子域

● 请你来回答一下,比如淘宝的搜索算法,输入关键词,会给出搜索出来的商品结果,对于这样的算法,如何评价它的好坏/h2>

参考回答:

淘宝的搜索算法:

1、目标性比较强,当然,这个相对而言,从query来看,用户对目标商品的认知度相对较强

2、短query/符合query较多,传统搜索引擎里的xxx的商品这种query较少,当然,这与淘宝搜索的处理能力也有关系,用户对query进行分词的情况很常见

3、属性类query较为常见,如雪纺、鱼嘴等等表明用户特征的query较为常见

4、用户对结果的判断,基本上是价格敏感+信用敏感+销量敏感,其中销量敏感和信用敏感其实是一回事,来自知乎用户李杰。

对于这样的算法,笔者认为是很符合淘宝搜索要求的,能够更加精准,

软件测试工程师面试题之(计算机网络下)

如果对软件测试有兴趣,想了解更多的测试知识,解决测试问题,以及入门指导,帮你解决测试中遇到的困惑,我们这里有技术高手。如果你正在找工作或者刚刚学校出来,又或者已经工作但是经常觉得难点很多,觉得自己测试方面学的不够精想要继续学习的,想转行怕学不会的, 都可以加入我们,群内可领取最新软件测试大厂面试资料和Python自动化、接口、框架搭建学习资料!

更多软件测试资源分享微信公众号:【程序员阿沐】

● 商品的种类有几十万种,在这种大数据的情况下,如何评价搜索算法的好坏/h2>

参考回答:

在大数据时代,搜索算法最重要有三点,足够快,能够将用户所潜在需要的商品全部搜索出来,性能稳定。

文章知识点与官方知识档案匹配,可进一步学习相关知识网络技能树认识身边的计算机网络常见的网络设备22053 人正在系统学习中

来源:程序员阿沐

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年1月23日
下一篇 2021年1月23日

相关推荐