TCP连接一个IP或端口不存在的主机时,会发生什么?

30 篇文章 14 订阅
订阅专栏

目录

一.要点回顾

二.连一个 IP 不存在的主机时,握手过程是怎样的

1、局域网内

2、局域网外

三.连IP 地址存在但端口号不存在的主机的握手过程

1、目的IP是回环地址

2、目的IP局域网内

3、 目的IP局域网外

4.总结 


一.要点回顾

戳我,回顾正常情况下TCP的连接过程。

二.连一个 IP 不存在的主机时,握手过程是怎样的

不存在的IP,分两种,局域网内和局域网外的。

1、局域网内

我们可以假设  192.168.31.xx  形式的IP,就是局域网内的IP。否则就是局域网外的IP

假设我们当前设备的IP地址为192.168.31.6,现在尝试与目的IP地址为192.168.31.7的主机建立TCP连接,但实际上这个目的主机并不存在。

 我们使用Wireshark进行抓包

可以发现根本没有三次握手的包,只有一些 ARP 包,在询问“谁是 192.168.31.7。

这里有三个问题

  • 为什么会发ARP请求?

  • 为什么没有TCP握手包?

  • ARP本身是没有重试机制的,为什么ARP请求会发那么多遍?

首先我们看下正常情况下执行connect,也就是第一次握手 的流程。

图片

应用层执行connect过后,进程会从用户态进入到内核态,此时进入 传输层,因为是TCP第一次握手,会加入TCP头,且置SYN标志。

图片

然后进入网络层,我想要连的是 192.168.31.7 ,虽然它是瞎编的,但IP头还是得老老实实把它加进去。

此时需要重点介绍的是邻居子系统,它在网络层和数据链路层之间。可以通过ARP协议将目的IP转为对应的MAC地址,然后数据链路层就可以用这个MAC地址组装帧头

我们看下那么ARP协议的流程

  1. 先到本地ARP表查一下有没有 192.168.31.7 对应的 mac地址,有的话就返回,这里显然是不可能会有的。
  2. 看下 192.168.31.7  跟本机IP  192.168.31.6在不在一个局域网下。如果在的话,就在局域网内发一个 arp 广播,内容就是 前面提到的 “谁是 192.168.31.7,告诉一下 192.168.31.6”。 
  3. 如果目的IP跟本机IP不在同一个局域网下,那么会去获取默认网关的MAC地址,然后把消息发给默认网关,让默认网关发到互联网,找到下一跳路由器,一跳一跳的发送数据,直到把消息发到目的IP上,又或者找不到目的地最终被丢弃。
  4. 第2和第3点都是本地没有查到 ARP 缓存记录的情况,这时候会把SYN报文放进一个队列(叫unresolved_queue)里暂存起来,然后发起ARP请求;等ARP层收到ARP回应报文之后,会再从缓存中取出 SYN 报文,组装 MAC 帧头,完成刚刚没完成的发送流程。

如果经过 ARP 流程能正常返回 MAC 地址,那皆大欢喜,直接给数据链路层,经过 ring buffer 后传到网卡,发出去。

但因为现在这个IP是瞎编的,因此不可能得到目的地址 MAC ,所以消息也一直没法到数据链路层。整个流程卡在了ARP流程中。

抓包是在数据链路层之后进行的,因此 TCP 第一次握手的包一直没能抓到,只能抓到为了获得  192.168.31.7 的MAC地址的ARP请求。

此时 因为 TCP 协议是可靠的协议,对于 TCP 层来说,第一次握手的消息,已经发出去了,但是一直没有收到 ACK。也不知道消息是出去后是遇到什么事了。为了保证可靠性,它会不断重发。

而每一次重发,都会因为同样的原因(没有目的 MAC 地址)而尬在了 ARP 那个流程里。因此,才看到好几次重复的 ARP 消息。

那回到刚刚的三个问题

  • 为什么会发 ARP 请求?

    因为目的地址是瞎编的,本地ARP表没有目的机器的MAC地址,因此发出ARP消息。

  • 为什么没有 TCP 握手包?

    因为协议栈的数据到了网络层后,在数据链路层前,就因为没有目的MAC地址,没法发出。因此抓包软件抓不到相关数据。

  • 为什么 ARP 请求会发那么多遍?

    因为 TCP 协议的可靠性,会重发第一次握手的消息,但每一次都因为没有目的 MAC 地址而失败,每次都会发出ARP请求。

小结

连一个 IP 不存在的主机时,如果目的IP在局域网内,则第一次握手会失败,接着不断尝试重发握手的请求。同时,本机会不断发出ARP请求,企图获得目的机器的 MAC 地址。并且,因为没能获得目的 MAC 地址,这些 TCP 握手请求最终都发不出去,

2、局域网外

上面提到的是,目的 IP 在局域网内的情况,下面讨论目的IP在局域网外的情况。

我们将10.225.31.11作为这次要用的局域网外IP。

先抓包看一下。

图片

这次的现象是能发出 TCP 第一次握手的 SYN包

这里有个问题

  • 为什么连局域网外的 IP 现象跟连局域网内不一致?

这个问题的答案其实在上面 ARP 的流程里已经提到过了,如果目的 IP 跟本机 IP 不在同一个局域网下,那么会去获取默认网关的 MAC 地址,这里就是指获取家用路由器的MAC地址

此时ARP流程成功返回家用路由器的 MAC 地址,数据链路层加入帧头,消息通过网卡发到了家用路由器上

消息会通过互联网一直传递到某个局域网为  10.225.31.xx 的路由器上,那个路由器 发出ARP 请求,询问他们局域网内的机器有没有叫 10.225.31.11的 (结果当然没有)。

最终没能发送成功,发送端也就迟迟收不到目的机的第二次握手响应。

因此触发TCP重传。

三.连IP 地址存在但端口号不存在的主机的握手过程

前面提到的是IP地址压根就不存在的情况。假如IP地址存在但端口号是瞎编的呢?

1、目的IP是回环地址

图片

现象也比较简单,已经IP地址是存在的,也就是在互联网中这个机器是存在的。

那么我们可以正常发消息到目的IP,因为对应的MAC地址和IP都是正确的,所以,数据从数据链路层到网络层都很OK。

直到传输层,TCP协议在识别到这个端口号对应的进程根本不存在时,就会把数据丢弃,响应一个RST消息给发送端。

图片

连回环地址时端口不存在

RST是什么?

我们都是到TCP正常情况下断开连接是用四次挥手,那是正常时候的优雅做法。

异常情况下,收发双方都不一定正常,连挥手这件事本身都可能做不到,所以就需要一个机制去强行关闭连接。

RST 就是用于这种情况,一般用来异常地关闭一个连接。它在TCP包头中,在收到置了这个标志位的数据包后,连接就会被关闭,此时接收到 RST的一方,一般会看到一个 connection reset 或  connection refused 的报错。

图片

2、目的IP局域网内

刚刚提到本机IP是 192.168.31.6 ,局域网内有台 192.168.31.1 。同样尝试连一个不存在的端口。

图片

连存在的局域网内IP,端口不存在抓包

此时现象跟前者一致。

唯一不同的是,前者是回环地址,RST数据是从本机的传输层返回的。而这次的情况,RST数据是从目的机器的传输层返回的。

图片

3、 目的IP局域网外

找一个存在的外网ip,例如 47.102.221.141 。

进行连接连接,发现与前面两种情况是一致的,目的机器在收到我的请求后,立马就通过 RST标志位 断开了这次的连接。

图片

这一点跟前面两种情况一致。

熟悉小白的朋友们都知道,每次搞事情做测试,都会用  baidu.com 。

这次也不例外,ping 一下 baidu.com ,获得它的 IP: 220.181.38.148  。

$ ping baidu.com
PING baidu.com (220.181.38.148): 56 data bytes
64 bytes from 220.181.38.148: icmp_seq=0 ttl=48 time=35.728 ms
64 bytes from 220.181.38.148: icmp_seq=1 ttl=48 time=38.052 ms
64 bytes from 220.181.38.148: icmp_seq=2 ttl=48 time=37.845 ms
64 bytes from 220.181.38.148: icmp_seq=3 ttl=48 time=37.210 ms
64 bytes from 220.181.38.148: icmp_seq=4 ttl=48 time=38.402 ms
64 bytes from 220.181.38.148: icmp_seq=5 ttl=48 time=37.692 ms
^C
--- baidu.com ping statistics ---
6 packets transmitted, 6 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 35.728/37.488/38.402/0.866 ms

发消息到给百度域名背后的 IP,且瞎随机指定一个端口 8080, 抓包。

图片

现象却不一致。没有 RST 。而且触发了第一次握手的重试消息。这是为什么?

这是因为baidu的机器,作为线上生产的机器,会设置一系列安全策略,比如只对外暴露某些端口,除此之外的端口,都一律拒绝。

所以很多发到 8080端口的消息都在防火墙这一层就被拒绝掉了,根本到不了目的主机里,而RST是在目的主机的TCP/IP协议栈里发出的,都还没到这一层,就更不可能发RST了。因此发送端发现消息没有回应(因为被防火墙丢了),就会重传。所以才会出现上述抓包里的现象。

图片

4.总结 

连一个 IP 不存在的主机时

  • 如果IP在局域网内,会发送N次ARP请求获得目的主机的MAC地址,同时不能发出TCP握手消息。

  • 如果IP在局域网外,会将消息通过路由器发出,但因为最终找不到目的地,触发TCP重试流程。

连IP 地址存在但端口号不存在的主机时

  • 不管目的IP是回环地址还是局域网内外的IP地址,目的主机的传输层都会在收到握手消息后,发现端口不正确,发出RST消息断开连接。

  • 当然如果目的机器设置了防火墙策略,限制他人将消息发到不对外暴露的端口,那么这种情况,发送端就会不断重试第一次握手。

Apache实现多端口主机名配置
01-20
1.基于域名的虚拟主机(不同域名相同IP端口) 向DNS服务提供虚拟Web站点的域名,以便当访问其中任何一个虚拟Web站点,最终访问的都是同一个IP地址。 2.基于端口的虚拟主机(不同端口相同IP) 通常只用于同一个Web站点,其网站的名称、IP地址往往是相同的,但通过不同的TCP端口来提供访问不同网页内容的服务入口。在浏览器中访问非80端口的Web服务器,需要明确指出服务器的端口号。 实验环境:一台RHEL6.5 一台window7 操作步骤 进入httpd的主配置文件 修改监听端口和域名 启动httpd服务,关闭防火墙 html 在httpd的站点目录下写一段
Why Can't I Connect?:更轻松地解决 TCP/IP 连接错误。-开源
06-01
“为什么我无法连接?” 可以更轻松地解决 TCP/IP 连接错误。 使用它来诊断与常见服务器类型的连接并创建通用客户端和/或服务器。 一个源 tar、一个 32 位和 64 位 rpm、一个 32 位、64 位和 Raspbian/armhf deb,以及一个 32 位的 Windows 安装 exe 可用。 32 位 Windows 可执行文件在 64 位 Windows 系统中运行良好。 转到:https://www.whycanticonnect.com/?q=instructions 获取帮助/说明。 转到:https://www.whycanticonnect.com/?q=knowledge-base 提出请求、报告错误、提出问题和查看解决方案。
sender:tcp / ip实用程序,用于测试网络连接/端口-开源
04-26
发件人是Windows tcp / ip客户端/主机,可让您在tcp / ip端口之间收发文本。 现在,它具有十六进制模式,因此您可以发送任何8位字节组合。 它可用于测试简单的pop和smtp连接(原始项目原因)或用于您可能希望从Windows手动对其进行测试的任何其他协议。
计算机网络课程设计 多线程端口扫描器(TCP/UDP端口扫描)(java实现)带GUI界面
07-10
计算机网络课程设计——端口扫描器的实现 1.利用Socket通信机制实现一个多线程的端口扫描器。 2.设计要求: 2.1用户界面:用户可以输入IP地址IP地址段;输入端口号或端口号范围;列表显示主机名、开放的端口及开放端口上相应的服务名称。 2.2端口的有效范围是1~65535,在该范围内使用多线程机制循环创建客户端套接字对象,对某一地址(段)的主机端口进行扫描,若套接字没有发生异常,说明该端口打开并提供服务,返回该开放端口的类型(如UDP端口还是TCP端口)。 2.3 采用Java网络编程包java.io中提供的编程接口实现。
连接一个 IP 不存在主机,握手过程是怎样的?
vertor11的博客
09-25 425
文章首发于个人公众号「小白debug」 原文链接:连接一个 IP 不存在主机,握手过程是怎样的? 连接一个IP 不存在主机,握手过程是怎样的? 连接一个IP 地址存在但端口不存在主机,握手过程又是怎样的呢? 让我回想起曾经也被面试官问过类似的问题,意识到应该很多朋友对这个问题感兴趣。 所以来给大家唠唠。 这两个问题可以延伸出非常多的点。 看完了,说不定能加分! 一. 正常情况的握手过程是怎么样的 上面提到的问题,其实是指TCP的三次握手流程。这绝对是面试八股...
网络笔记:客户端连接一个存在的 IP 地址但是端口不存在发生什么
qq_42418433的博客
02-17 296
客户端连接一个存在的 IP 地址但是端口不存在
连接不存在IP发生什么?
IT界那些事儿
02-27 210
因为目标地址不存在 IP 地址,客户端的内核在发 arp 请求的候,广播询问这个目标 IP 地址是谁的,由于网络中不存在该目标 IP 地址,所以没有设备应答客户端的 arp 请求。第二题不难,难在的是第一题,如果你没有把两台电脑之间是怎么通信的搞清楚,那么你是无从下手回答的,所以建立好体系化的网络知识,面对这类的场景题目,就能做到举一反三了。这候数据链路层的 arp 请求,广播询问 IP 地址(路由器 IP 地址)是谁的,路由器发现是自己的 IP 地址,于是就将自己的 MAC 地址告诉客户端。
字节面试:连接一个不存在IP 地址,发生什么?
<sdffdsfsdfdfs>sfsfsfsdfsdffds</sdfsDS>Fsd
03-08 128
????????关注后回复“进群”,拉你进程序员交流群????????作者丨小林coding来源丨小林coding(ID:CodingLin)大家好,我是小林。分享两个字节面试题,都是基于场景问的网络问题。Q1:客户端连接一个不存在IP 地址,发生什么?Q2:客户端连接一个存在的 IP 地址但是端口不存在发生什么?PS:这里的「连接」指的是 TCP 连接。这类的场景问题,如果你没有系统化的网络知识体系,只靠...
网络笔记:客户端连接一个不存在IP 地址
qq_42418433的博客
02-17 339
客户端连接TCP 连接一个不存在IP 地址
通过端口1433连接主机127.0.0.1的 TCP/IP 连接失败,错误:“connect timed out”的解决方法
09-03
主要介绍了通过端口1433连接主机127.0.0.1的 TCP/IP 连接失败,错误:“connect timed out”的解决方法,需要的朋友可以参考下
20221909 2022-2023-2 《网络攻防实践》第5周作业
zxr287的博客
03-29 212
输入vim /etc/init.d/hw-snort_inline可以看到Snort_inline运行参数,-D表示Daemon模式,-c表示读取config文件,-Q表示使用QUEUE模式,-l表示输出log文件的目录,-t表示改变程序执行所参考的根目录位置。输入snort -c /etc/snort/snort.conf -r listen.pcap -K ascii,可以看到检测到的数据包信息,有TCP,ARP,主要是TCP。完成后,IP筛选列表看到添加的信息,如下图,再点击确定。
记一次通过ip访问不到主机的问题
fish_fish_java的博客
08-05 230
问题描述: 服务a部署在机器192.168.0.206上,前端通过Nginx代理访问后端,一个springbean类中有如下代码(图一): 看第575行,相关代码如下(图二): 请求到图一中该方法抛出类找不到的异常。 经分析,原因可能如下: 由于图一方法中有图二类的引用,调用图一方法前该类创建实例初始化,这导致图二类的初始化,然后调用图二中的方法,图二红框中的方法根据主机名来获取ip,由于host文件中没有配置主机名和127.0.0.1的映射,所以导致了异常...
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
zy0412326的专栏
02-10 515
net
如何判断某一个IP地址是否被占用
Keep Moving~
01-30 1万+
背景 由于目前从事桌面云相关的工作,需要经常创建虚拟机以及为该虚拟机分配IP地址。在一个局域网中,我们的IP地址要求唯一性,如果设置的IP地址已经被利用,虚拟机就无法创建成功或者出现其他无法预料的事情。 那么我们应该用什么办法来判断某个IP地址是否已经被占用呢?我们我知道的有两个方法: ping命令 arping命令 ping命令 从事IT工作的基本都知道这个命令,它用来判断目标地址网络通路是...
主机TCP/IP连接失败。
weixin_42226094的博客
12-06 2635
java编程中遇到问题:到主机TCP/IP连接失败。java.net.ConnectException:Connectionrefused:connect 今天重装了电脑系统,所有的环境都是新配置的,在连数据库的候报错,第一反应是数据库服务没有开,但后来发现不是。百度了后甚至关掉了防火墙都没有用,最后看到把IPALL设置成1433。于是照办,竟然行了!! 很奇怪,于是又google了一下,找到...
端口号的作用,及为什么需要端口
热门推荐
flying_man_的博客
02-27 2万+
所谓端口号就是具有网络功能的应用软件的标识号。注意,端口号是不固定的,即可以由用户手工可以分配(当然,一般在软件编写就已经定义)。当然,有很多应用软件有公认的默认的端口,比如FTP:20和21,HTTP:80,TELNET:23等等,这里就不一一列举了。一个软件可以拥有多个端口号,这证明这个软件拥有不止一个网络功能。0-1023是公认端口号,即已经公认定义或为将要公认定义的软件保留的,而1024...
HCIP-Datacom-ARST自选题库__BGP/MPLS IP VPN简答【3道题】
2301_80961833的博客
05-29 280
RD。
IP添加到基础设计
最新发布
cckkppll的博客
05-29 737
IP添加到基础设计
socket怎么在tcp连接之前设置本地的端口IP
07-12
在建立 TCP 连接之前,你可以使用 Python 的 socket 模块来设置本地的端口IP。具体的操作是通过调用 `bind()` 函数来绑定本地地址。 下面是一个示例代码,演示了如何在建立 TCP 连接之前设置本地的端口IP: ```python import socket # 创建 TCP 套接字 sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 设置本地 IP端口 local_ip = '127.0.0.1' # 本地 IP 地址 local_port = 12345 # 本地端口号 # 绑定本地地址 sock.bind((local_ip, local_port)) # 连接远程服务器 remote_ip = '192.168.0.100' # 远程服务器 IP 地址 remote_port = 8080 # 远程服务器端口号 sock.connect((remote_ip, remote_port)) # 在这里进行后续操作,比如发送和接收数据 # 关闭连接 sock.close() ``` 在上述代码中,首先创建了一个 TCP 套接字对象 `sock`。然后,使用 `bind()` 函数将本地 IP 地址和端口号绑定到套接字上。接下来,使用 `connect()` 函数连接到远程服务器。 请注意,本地 IP 地址可以是你的主机的任何有效 IP 地址,而本地端口号可以是任何未被其他进程使用的可用端口。 希望这能解答你的问题!如果还有其他疑问,请随提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • 算法 | 全排列问题(图文详解) 44956
  • 数据库优化的四大方法 36376
  • 七、最短路径——弗洛伊德(Floyd)算法 22271
  • 什么是协程? 22103
  • 计算机网络 | 思科网络 | 无状态地址自动配置 (SLAAC) | 什么是SLAAC 20030

分类专栏

  • Redis 付费 31篇
  • 流媒体 1篇
  • 日常心得 39篇
  • 计算机网络 30篇
  • chatgpt 2篇
  • Linux 24篇
  • docker 3篇
  • 数据结构 14篇
  • 人文常识 2篇
  • 7篇
  • SQL 15篇
  • 剑指offer 38篇
  • C++ 34篇
  • goland 3篇
  • 思科网络 12篇
  • 算法 17篇

最新评论

  • 关于C++缺省构造函数的讲解——精解

    Cc_347: 终于解决疑惑了

  • 32位和64位到底有什么区别?

    炸了噻: 提壶(bushi)灌顶

  • 一致性哈希是什么,使用场景,以及它解决了什么问题?

    weixin_43834423: 引入虚拟节点,虽然请求分布均衡了,但会有一个问题,就是添加,或者删除物理节点,会导致大量的添加或删除的虚拟节点对应的数据需要迁移,而迁移到其他真实的物理节点可能有很多个,极端情况下,可能每个物理节点都要处理部分数据迁移。

  • C++ | STL deque容器

    function_9: 讲得很好

  • 32位和64位到底有什么区别?

    凝烬而冽: 真是从小到大,现在才来搜这问题,深切感觉自己是个懒狗表情包

您愿意向朋友推荐“博客详情页”吗?

  • 强烈不推荐
  • 不推荐
  • 一般般
  • 推荐
  • 强烈推荐
提交

最新文章

  • ffmpeg常用命令
  • Centos安装Python3、更新pip3源
  • CNAME记录
2024年4篇
2023年16篇
2022年38篇
2021年75篇
2020年100篇
2019年48篇

目录

目录

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

深圳SEO优化公司汕尾营销网站哪家好贵港百度网站优化排名公司鞍山网站搜索优化推荐伊春企业网站改版价格光明seo公司绥化网站排名优化哪家好云浮网站推广方案报价盘锦网站优化软件推荐六安百度关键词包年推广多少钱开封网页制作推荐滁州网络推广多少钱南宁企业网站改版价格双龙seo多少钱横岗网站开发价格银川SEO按天扣费价格四平建站公司保山网站改版多少钱福田SEO按天收费推荐株洲seo网站推广公司天津企业网站建设价格黔西南网站优化按天计费多少钱绍兴外贸网站建设公司阳江关键词排名报价大理百度关键词包年推广哪家好阳江外贸网站制作报价厦门网站设计模板推荐郴州网站改版公司合肥网站制作哪家好崇左优化价格常州企业网站改版歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化