TCP协议详解

4 篇文章 0 订阅
订阅专栏

传输层

网络层的任务是提供网络中的两个主机提供逻辑通信。从IP层上来看,通信的是两个主机。
而传输层在网络中负责是两个主机上的应用程序进程提供逻辑通信。在传输层上看,通信双方是主机上的两个应用进程。

传输层的功能:
复用和分用

  • 多路复用: 发送方不同的应用进程都可以使用同一个运输层协议传送数据
  • 多路分用:接收方的运输层在剥去报文的首部后能够把这些数据正确交付目的应用进程

差错检测:
前提:网络层为主机之间提供逻辑通信,信道是不可靠的,它只“尽最大努力”交付,但数据报仍有可能发生:丢包,乱序,等等情况。
传输层还要对收到的报文进行差错检测。(后面细讲)

传输层的端口
传输层需要在接收到数据包后正确地交付给上层应用,准确来讲就是交付给进程,我们知道,操作系统中的每个进程都有一个唯一的标识符,但不同操作系统的标识符是不同的,必须使用一种统一的方法对应用进程进行标识:就是使用端口。

协议端口号Protocl port number,有了这个后,两个主机中的进程要相互通信,不仅要知道对方的IP地址,还要知道对方的端口号。

传输层的两个主要协议

  • UDP,User Datagram Protocol 用户数据报协议
  • TCP,Transmission Control Protocol 传输控制协议

在OSI术语中,传输层的传输数据叫运输协议数据单元,即TPDU(Transport Protocol Data)
Unit)但是在TCP/IP体系中,使用的协议是TCP或UDP,称为TCP报文端或UDP用户数据报

TCP概述

1、 TCP的特点

  • 面向连接的运输协议
  • 每一条TCP连接只能有两个端点,一对一
  • TCP提供可靠的交付
  • TCP提供全双工,TCP连接的两端都接收发送缓存和接收缓存。
  • 面向字节流

TCP发送报文的方式也和UDP不同,TCP不关心应用进程一次把多长的报文发送到TCP缓冲中,而是根据对方给出的窗口值和当前网络拥塞的程度来决定一个报文段含多少个字节。如果数据太长,TCP可以划分短一些再发送,如果数据太短,TCP可以等待积累到足够长再发送。

2、TCP连接
TCP连接的端口叫做Socket套接字或插口。 根据RFC793的定义,端口号拼接到IP地址就是套接字。

套接字socket= (ip地址:端口号)

TCP报文段的首部格式

TCp一个报文段分为首部和数据部分,而TCP的全部功能都体现在它首部中各个字段的作用。
tcp报文首部格式

  • 源端口和目的端口:各占两字节,TCP的分用功能是通过端口号实现的
  • 序号seq:占4个字节。序号范围是[0,2^32-1],使用 mod 2^32运算。TCP每一个字节都要按照顺序编号。
  • 确认号ack:占4字节,是期望对方下一个报文端的第一个数据字节的序号。
    例如,B正确收到了A发送过来的一个报文段,其序号字段为501,数据长度为200,则序号为(501~700),这表明B正确接受了A发送到700为止的数据,因此B的期望收到的下一个数据序号为701。

确认号为N,则说明到序号N-1为止的所有数据都已正确接收到。

  • 确认ACK, 仅当ACK=1时确认号字段有效,当ACK=0,确认号无效。TCP规定,在连接建立后所有传送的报文端ACK都等于1

  • 同步SYN(synchronization) 在连接建立时来同步序号,当SYN=1而ACK=1时,表明这是一个连接请求报文端。对方如果同意建立连接,则应在响应的报文段使用SYN=1和ACK=1。因此SYN置为1则是一个连接请求或连接接收报文

  • 终止FIN(FINis)用来释放一个连接,当FIN=1时,表示该报文段的发送放的数据传输完毕,要求释放连接

  • 窗口:rwnd (receiver window)[0~2^16],指的是发送本报文段的一方的接收窗口,窗口值告诉对方:从本报文段的确认号算起,接收方目前允许对方发送的数量。窗口值作为接收方让发送方设置其发送窗口的依据。 例如:A发送一个报文段,其确认号是701,窗口字段是1000,就是告诉对方:“从701开始,我还可以接收1000个字节,即701-1700

  • 选项(长度可变,最长可以为40个字节),这里重点说说MSS

TCP在建立连接的时候,就可以确定发送数据包的单位MSS(Maximum Segment Size), MSS是每一个TCP报文段中的数据字段的最大长度。 (注意,不是整个TCP报文段的最大长度)

TCP在传输大量数据的时候,是以MSS大小将数据进行分割发送的,重传时也是以MSS为单位。

❓为什么要设计一个MSS呢? 我们知道,TCP报文端的数据部分,至少还要加上40字节的首部(20字节TCP头+20字节IP头),如果选择了很小的MSS长度,比如只有一个字节的数据,却要封装上40字节的头,那么网络的利用率就很低了。但是如果设置得非常大,在IP层传输时就可能被拆分成多个数据片,在终点还要重新拼接,传输出错时还要重传,这样也会使得开销增大。 理想状态下是MSS正好是IP不会分片的最大数据长度。 (但是很难达到)

👉MSS是在TCP连接建立时,由两边的主机计算出来的:两端的主机都会将自己能够支持的MSS写入。 如果没有指定,就是默认的536字节长。

TCP可靠传输的实现

TCP发送的报文是交付给网络层的,而网络层不会保证报文不出差错的送达,所以TCP必须采取措施使得通信可靠。TCP为了保证可靠的传输,设计了以下几种机制:

  1. 重传机制
  2. 流量控制
  3. 拥塞控制
  4. 连接和断开上,使用了三次握手和四次挥手。

这一部分的之前已经做过笔记了,感兴趣的来这里: rdt协议详解

TCP拥塞控制

⭐流量控制是往往指点对点通信量的控制,是对于发送方和接收方来说的,流量控制就是抑制发送端发送数据的速率,以便接收者能接受得来。

⭐拥塞控制是防止过多的数据注入到网络中,这样可以使网络的路由器或链路不至于过载。 这是一个全局性的过程,涉及到所有主机,路由器以及降低网络传输性能有关的因素。

(流量控制是对通信两方的,拥塞控制是针对整个网络情况的)

网络拥塞是由很多因素引起的。
例如,当某个结点的缓存容量太小时,到达该节点的分组因为无存储空间不得不被丢弃,如果仅仅把结点的缓存容量扩大,于是到达该节点的分组都将在缓存中排队,而输出链路的容量和处理机速度并未提高,因此在这队列中排队的等待时间也会大大提高,直到过时,因此上层软件只能将它们重传一遍。可见简单地扩大某个结点的缓存也会造成资源浪费,解决不了问题。
网络拥塞的实质是整个系统的各个部分不匹配,只有所有部分都平衡了,问题才会解决。

TCP拥塞控制经典算法
TCP拥塞控制算法有四种: 慢开始(slow-start),拥塞避免(congestion avoidance),快重传(fast retransmit),快恢复(fast recovery)

假定:

  • 数据是单方向传送的,对方只传送确认报文
  • 接收方总有足够大的缓存空间,因而发送窗口的大小只由网络拥塞程度决定。
慢开始算法

慢启动的思想是:不着急,慢慢来。 主机开始发送数据时,不清楚此时网络的负荷情况,如果立即把大量的数据字节注入网络,可能会引起网络拥塞。 所以最好是先发少一些数据,探测一下网络情况。即由小到大增加发送窗口。

发送方维护了一个叫做 拥塞窗口cwnd(congestion window) 的状态变量,拥塞窗口的大小会动态变化,它代表着网络拥堵程度。

TCP连接成功后,cwnd初始化为1MSS
之后每收到一个ACK,cwmd就+1,
每过一个RTT(传输轮次),cwmd就翻倍,呈指数增长。
在这里插入图片描述
不过,随着包的每次往返,拥塞窗口会以1,2,4,8翻倍增长,拥堵状况会激增甚至导致网络拥塞的发生。为了防止这种情况发生,引入 慢启动阙值ssthresh(slow start threshold) 的状态变量.
当cwmd<ssthresh,使用慢开始算法
当 cwmd>ssthresh,进入拥塞避免算法
当 cwmd=ssthresh,既可以使用拥塞避免算法,也可以使用慢开始算法

拥塞避免算法

当cwnd >= ssthresh时,就会进入拥塞避免算法。ssthresh一般等于65535字节,当cwnd达到这个数字时,算法如下:

每收到一个ACK, cwmd= cwmd+ 1/cwmd
每经过一个RTT,cwnd = cwnd + 1 (而不是翻倍)
这样拥塞窗口cwnd就按照线性规律缓慢增长。
在这里插入图片描述
无论是慢开始算法还是拥塞避免算法,只要发送方判断网络出现拥塞,就要把ssthresh设置为出现拥塞时的发送方窗口值的一半,然后cwmd重新设置为1,执行慢开始算法,这样做的目的是迅速减少主机发送到网络中的分组数,使得发生拥塞的路由器有足够时间把队列中积累的分组处理完。

在这里插入图片描述
判断网络拥塞的方法
当网络丢包时,会出现两种情况:

  1. RTO超时重传
  2. 快速重传

如果发生了RTO超时重传,就会使用拥塞避免算法。

上面的慢开始和拥塞避免算法都是1988年提出的,1990年又增加了两个新的拥塞控制算法,就是快重传和快速恢复算法。

快重传算法

快重传首先要求接收方对每个失序的报文段后就立即发送重复确认(目的是让接收方及早知道报文没有发送给对方),而不是等待自己发送数据时才捎带确认。

在这里插入图片描述
如图,接收方收到了M1,M2后,都分别发送了确认,M3丢失了,所以接着收到了M4,显然接收方不能确认M4,因为M4是乱序的。根据可靠传输原理,接收方可以什么都不做,也可以发送一次对M2的确认。 但快重传算法规定,接收方应该及时发送对M2的重复确认,这样做可以让发送方尽早知道M3丢失了。 接收方接收到M4,M5,M6后,还要继续发送M2的重复确认,其中后三个都是重复确认, 快重传算法规定,接收方一连接受到三个重复确认就应该立即重传对方尚为收到的报文M3.

采用快重传算法可以使整个网络吞吐量提高20%

TCP流量控制

TCP通信会用到滑动窗口来提高通信效率,通信双方都会在操作系统的缓存区维护一个窗口。发送方可以发送一组数据出去而不需要等待接收方的应答。接收方可以采用累积确认。

但是如果这个窗口定得太大,接收方接收不过来,导致一直重传,所以,流量控制就是让发送方的发送速率不要过快,要让接收方来得及接收

在TCP报文中,有一个字段就是专门用于流量控制的,这个字段就是rwnd(有些资料也叫 window size) ,接收窗口,单位是字节。假设A告诉B,我的rwnd=400,那么B的发送窗口就不能超过A的接收窗口,即400.

在这里插入图片描述
图中接收方进行了四次流量控制。 前三次都是减小rwnd的值,说明接受窗口在缩小,减为0的时候,发送方就不会再发送数据了,而是启动了一个持续计数器 persistence timer,计数结束后就会发送一个零窗口试探报文(只携带一个字节的数据),对方就返回此时的窗口值。 如果是0,则重新启动计时器,如果不是0,就可以继续发送数据了。

❓为什么设置一个计时器? 如果接收方发送了0窗口报文后,又处理了一些数据,于是又发送了一个rwnd=300的报文,但是这个报文在传输中丢失了,则变成了发送方在等待非0窗口的通知,接收方也在等待发送方的数据,就进入一个互相等待的状态了。

TCP 连接(三次握手四次挥手)

TCP连接建立的过程叫做握手,握手需要在客户端和服务器之间交换三个TCP报文。 又叫TCP三次握手。

🤝第一次握手:客户端发送连接请求(SYN报文,将seq置为x),发送完毕后客户端进入SYN_SEND(同步已发送)状态。
🤝第二次握手: 服务器收到SYN报文,向客户端发送SYN+ACK报文, seq置为y,ack置为x+1. 发送后客户端进入SYN_RCVD状态
🤝第三次握手:客户端收到SYN+ACK报文后,明白两方收发都没有问题。但还需要向服务器发送ACK报文,ack置为y+1,seq置为x+1

在这里插入图片描述
❓为什么需要三次握手?而不是两次握手?
这是为了防止已失效的连接请求报文突然又到达服务器。什么叫做“已失效的报文”?假设客户端发出了一个连接请求报文,这个报文因为在网络中滞留的时间太长了,在这个过程中,A因为未收到确认,而重传了一次新的报文并且建立了连接,而后这个报文终于又到达了服务器这里,服务器误认为客户端又想建立连接,便同意连接,如果没有第三次握手,那么服务器就浪费了许多资源白白等待客户端。

❓TCP三次握手的目的?
用于确保可靠性和流量控制的数据,包括Socket,序列号以及窗口大小。

四次挥手:

👋 第一次挥手:客户端发送连接释放报文,并停止再发送数据,主动关闭TCP连接。 FIN=1,seq=u 发送完后进入FIN-WAIT-1 状态
👋 第二次挥手:服务器接收到后发出确认,ACK=1,seq=v,ack=u+1然后进入CLOSE_WAIT状态。

此时TCP连接处于半关闭状态,服务器到客户端的连接还未关闭,因为此时服务器可能还有数据需要传给客户端。客户端接受到确认后,进入FIN-WAIT-2状态。

👋 第三次挥手:数据传输完后,服务器发出连接释放的报文。
FIN=1,ACK=1,seq=w,ack=u+1, 发送完后进入LAST-ACK(最后确认)状态。
👋 第四次挥手:客户端收到后,将发出确认,ACK=1,ack=w+1,seq=u+1,发送完后将进入TIME-WAIT状态

此时TCP连接还没释放掉,而是等到时间计时器(TIME-WAIT
timer)设置的时间2MSL后,认为服务器已经接收到了报文,客户端才进入CLOSED状态。 服务器接收到后,比客户端先进入了CLOSED状态。

在这里插入图片描述❓为什么TIME-WAIT要等待2MSL,才进入CLOSED状态?
MSL指的是报文在网络中最大的生存时间。
2MSL : 2 Maximum Segment LifeTime,即两个最长报文段寿命。有两个理由:
①、保证客户端发送的最后一个ACK报文能到达服务器,这个报文可能会丢失,导致处于LAST-ACK的服务器接收不到,此时服务器会重新发送FIN+ACK报文,而2MSL时间内客户端就会收到这个报文,接着重传一次ACK报文,重新启动2MSL计时器。直到客户端和服务器都正常进入CLOSED状态。
②、防止已失效的连接请求报文出现在本连接中。和上面三次握手是一个道理的。经过2个MSL,使本次连接产生的所有报文段都消失在网络中,使下一个新连接不会出现这种旧的连接报文。

❓四次挥手能否变成三次挥手
是可能的,TCP是全双工通信,Client 发送FIN信号告知Server,这边已经终止了对Server传输,Server还可以继续往Client这边发送数据包,但是如果Server也没有数据发送给Client了,那么对Client的ACK包和Server自己的FIN包合并成一个包发送过去,这样就可以变成三次了。

半连接队列和SYN Flood

再次看回三次握手的过程,Linux内核会维护两个队列:
半连接队列SYN Queue 和 全连接队列 Accept Queue,用来存放这些连接
在这里插入图片描述

引入这两个队列后,再梳理一次握手过程:

  1. Client 发送SYN报文,并且进入SYN_SENT状态
  2. Server 收到 SYN请求后, 进入SYN_RECV 状态,内核将连接放到半连接队列,并返回SYN+ACK报文
  3. Client 收到SYN+ACK报文后,发送ACK报文,并进入ESTABLISHED 状态。
  4. Server 收到ACK报文后,内核会将连接从半连接队列拿出来,添加到全连接队列,然后也进入ESTABLISHED 状态
  5. Server 的应用进程调用accept函数时,就会将连接从全连接队列 Accept Queue中取出

SYN Flood 就是 客户端发送三次握手的第一个SYN报文收到服务器的报文却不回应,导致服务器资源浪费到无法接受正常的连接。

可以使用SYN Cookie解决,即将源地址和IP地址和端口号哈希为序列号。

番外:Socket、TCP、HTTP

TCP/IP只是一个协议栈,就像操作系统的运行机制一样,需要具体的实现,同时还要提供对外的编程接口,这个接口就是Socket 。通过Socket,我们才能使用TCP/IP协议。可以理解为Socket是对TCP/IP的高度封装,屏蔽了网络细节,让开发者更好地编程。 不同语言都有自己的Socket库。

HTTP是基于TCP的 ,它有一个缺点:通信只能由客户端发起,服务器不能主动向客户端推送信息。(WebSocket解决了这个缺点)

Linux的Socket编程

参考/推荐阅读 :

https://www.51cto.com/article/601908.html
https://www.infoq.cn/article/sf6cghvc20rh635nvjnw
https://www.infoq.cn/article/wwbkw31odx5muqet5gnx

TCP协议
12-03 1054
TCP协议的特点 TCP是在不可靠的IP层之上实现的可靠的数据传输协议,它主要解决传输的可靠、有序、无丢失和不重复的问题。TCPTCP/IP体系中非常复杂的一个协议,主要特点有: 1)TCP是面向连接的传输层协议。 2)每一条TCP连接有两个端点,每一条TCP连接只能是点对点的(一对一)。 3)TCP提供可靠的交付服务,保证传输的数据无差错,不丢失,不重复且有序。 4)TCP提供全双工
TCP协议详解(理论篇)
彼岸
02-09 625
本文章摘自红黑联盟 http://www.2cto.com/net/201208/149347.html 供大家学习交流 TCP协议详解 1.    与UDP不同的是,TCP提供了一种面向连接的、可靠的字节流服务。面向连接比较好理解,就是连接双方在通信前需要预先建立一条连接,这犹如实际生活中的打电话。助于可靠性,TCP协议中涉及了诸多规则来保障通信链路的可靠性,总结起来,主要有
深入理解 TCP 协议:原理、机制与应用
2401_84664550的博客
08-19 1155
TCP 协议是一种面向连接的、端到端的可靠传输协议。它的主要作用是在不可靠的网络环境中,为应用程序提供可靠的数据传输服务,确保数据能够准确无误地从源端传输到目的端。
tcp 协议详解
m0_73096566的博客
03-23 3275
一文带你搞懂 TCP 协议 2 万字详解
TCP 协议详解
最新发布
2301_76293625的博客
08-31 1684
TCP 协议详解TCP 协议报文格式,滑动窗口,快重传,拥塞控制,粘包问题。
pythonTCP协议详解.doc
10-01
Python TCP 协议详解 TCP 协议(Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由 IETF 的 RFC 793 定义。它需要经过创建连接、数据传送、终止连接三个步骤。 一、TCP ...
TCP协议详解.doc
10-07
TCP 协议详解 TCP/IP 协议族是计算机网络中最重要的协议族,它提供了计算机之间的通信标准。TCP/IP 协议族包括了 IP 协议、IMCP 协议TCP 协议,以及我们更加熟悉的 http、ftp、pop3 协议等等。 TCP/IP 协议族...
TCP协议详解及实战解析.pdf
08-24
TCP协议确保了数据的完整性和有序性,是面向连接的,意味着在数据交换前需要先建立连接,而在数据传输完成后需要断开连接。 TCP连接的建立过程称为三次握手(Three-Way Handshake)。首先,客户端发送一个带有SYN...
五分钟读懂TCP 协议——TCP协议简介
热门推荐
Bigstar的博客
06-11 12万+
TCP 是互联网核心协议之一,本文介绍它的基础知识。一、TCP 协议的作用互联网由一整套协议构成。TCP 只是其中的一层,有着自己的分工。(图片说明:TCP 是以太网协议IP 协议的上层协议,也是应用层协议的下层协议。)最底层的以太网协议(Ethernet)规定了电子信号如何组成数据包(packet),解决了子网内部的点对点通信。(图片说明:以太网协议解决了局域网的点对点通信。)但是,以太网协议
详解TCP协议
huxiaodong1994的博客
12-19 401
一、定义 传输控制协议TCP)是Internet一个重要的传输层协议TCP提供面向连接、可靠、有序、字节流传输服务。应用程序在使用TCP之前,必须先建立TCP连接;TCP通过校验和、序列号、确认应答、重发控制、连接管理以及窗口控制等机制实现可靠性传输。 二、如何保证可靠性 在TCP的传输中,当发送端数据到达接受主机时,接收端主机回返回一个已收到的消息通知,这个消息就叫做确认应答(ACK);在一定时间内没有收到确认应答,发送端就会认为数据丢失,会进行数据的重发。 为了防止接受重复的
Modbus TCP协议详解与应用
Modbus TCP协议是一种广泛应用于工业自动化领域的通讯协议,它基于标准的TCP/IP协议栈,并结合了Modbus协议的简单和高效特性,使得不同设备之间能够进行客户机/服务器(Client/Server)通信。该协议允许PLC(可编程...
写文章

热门文章

  • 蓝桥杯| 备赛练习题+知识点合集 94904
  • 【mdk报错】Error: L6218E: Undefined symbol XXXX (referred from main.o) 12304
  • TCP协议详解 10356
  • 数据结构期末考试复习&知识点 10199
  • error: failed to push some refs to ‘github.com | 本地上传远程仓库,一次踩坑记录 4139

分类专栏

  • leetcode | 算法与数据结构 19篇
  • 计网 4篇
  • 6.828 1篇

最新评论

  • 【pta7-4 】是否同一棵二叉搜索树

    枫晨739: 怎么说(゚o゚你有更优化的写法咩

  • 【pta7-4 】是否同一棵二叉搜索树

    tea_teapot: 写的很好,但是比较臃肿

  • 数据结构期末考试复习&知识点

    Trick♂: 数组存储第二题答案是多少

  • 数据结构期末考试复习&知识点

    Trick♂: 谢谢,明天考试表情包

  • error: failed to push some refs to ‘github.com | 本地上传远程仓库,一次踩坑记录

    努力码的小白: 还是连不上表情包

大家在看

  • LeetCode 滑动窗口 无重复字符的最长子串
  • 计算机的错误计算(一百) 244
  • Vue3+TS+Canvas实现前端电子签名,实现可配置宽、高、画笔颜色,将绘制的内容转化为base64或者Blob格式,当用户没有对Canvas画布进行任何绘制时,就想要保存签名进行拦截操作。
  • 基于python+flask框架的家政帮厨管理系统(开题+程序+论文) 计算机毕设
  • Python1:基础(自用) 1054

最新文章

  • 【Java面经】一次颇为进阶的面试记录
  • RabbitMQ消息可靠性、死信交换机、消息堆积问题
  • 蓝桥杯| 备赛练习题+知识点合集
2022年5篇
2021年10篇
2020年25篇
2019年5篇

目录

目录

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值

深圳SEO优化公司seo优化和网站权重的关系任丘网站优化网站运营优化推广网站优化内容需要定期更新兰州优化网站排名电商网站推广优化攻略大全恩平网站建设优化安丘优化网站软件如何优化网站打开速度泸州清镇网站优化滨州网站优化费用网站做优化只选y火28星不锈钢网站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 网站制作 网站优化