美文网首页
TCP-运输层的概念

TCP-运输层的概念

作者: 长腿小西瓜 | 来源:发表于2018-01-26 12:37 被阅读46次

1 前言

有三个原因促使我回过头来整理,学习。

1.1 SYN攻击

作为DDOS攻击中的一种,syn攻击利用TCP建立连接三次握手的缺陷,利用伪造的syn包来消耗服务器的内存空间和半开连接数,这就可以使服务器的内存或者半开连接数耗尽而拒绝服务。

1.1.1 三次握手

三次握手

如图所示,黑客通过瞬间伪造大量ip,发送SYN包到服务器,当服务器B处于SYN-RCVD状态时,黑客停止发送确认消息,导致服务端缓存大量的半连接。

1.2 服务调度中心

1.2.1 黑客无处不在

微服务架构,搭配负载均衡,能有效实现服务的水平扩展,而保持高可用。这一点阿里云的ESS比较强大,它能够在已有ECS挂掉或者资源耗尽的情况下,弹性伸缩创建一台新的ECS,并自动将ip加到RDS和redis的白名单中,并自动挂到SLB后面。

但有时问题不是出在微服务的集群规模上面。而是出在负载均衡的设备上。

排除有效流量对服务器的压力,来自黑客的攻击,更容易导致服务器瘫痪。

比如上面DDOS攻击,直接打负载设备,导致负载被拉黑洞。如果客户端直接用的ip连接,则需要黑洞清洗完了,才能正常访问。等待时间1-24小时不等。

如果客户端用的域名访问,可以新创建一台负载,加上配置时间,域名解析时间,30分钟-1小时不等。

如果负载做了集群,客户端缓存了负载的集群地址,只能减少等待时间,还是会导致黑洞期间,所有用户不可访问。

1.2.2 调度中心原理

高仿过滤/调度中心+ SLB集群 + ECS集群

在正常情况下,客户端请求全部走高仿过滤,能够有效拦击大部分DDOS和CC攻击。

由于海外运营商线路的问题,导致高仿不稳定,会出现部分用户掉线,连接不上。

这种情况下,需要切换线路。根据客户端级别,所需服务类型等,由调度中心返回可用的SLB地址。

这里有几个点需要注意:

  • 专门的SLB集群映射到ECS集群,多对多。

  • 对于级别较低,活跃度,或者注册时间较短的用户,只返回SLB集群中的固定几个地址。

1.2.3 Tomcat原理

早些时候写过一篇博文:《为什么拦截器不能获取RequestBody的数据》,里面说到RequestBody的数据是从流中读取的。这个流其实就是TCP中的"流",tomcat接受输入流,并转换为Http协议能够识别的数据。

2 运输层原理

运输层为相互通信的应用进程提供逻辑通信,在网上找了一幅图:

运输层原理图

从上图可以看出来,运输层指存在网络通信的两端的应用进程,而通信的中间节点为IP协议作用范围。

高层的应用层不关心下面网络核心的细节,看到的只是一条两个运输层实体中间的通信线路。当运输层采用TCP协议时,这条逻辑通信相当于全双工的可靠信道。当采用UDP协议时,这条通道是不可靠的通道。

采用UDP协议的应用层协议有:DNS,NFS
采用TCP协议的应用层协议有:SMTP,HTTP,FTP,TELNET等

2.1 运输层端口

整个运输层的原理,即IP:端口的方式。IP表示终端的位置,端口标识哪个应用程序处理。

好比现实生活中写信的双方,信封有三部分组成:

收件人地址:相当于IP

收件人: 相当于端口

信封中的内容:则是运输协议数据单元TPDU(Transport Protocol Data Unit)。
如果是TCP,则称为TCP报文段,如果是UDP,则称UDP用户数据包。

2.1.1 默认端口

运输层用一个16位的端口号来标志一个端口,所以可允许有65535个不同端口。

例如常用应用程序的端口:

应用程序 默认端口
mysql 3306
oracle 1521
nginx 80
ftp 21
tomcat 8005, 8080, 8009
ssh 22
qq 1080 4000 8000

2.1.2 端口分类

  • 系统端口号:

    数值为0~1023,默认指派给TCP/IP最重要的应用程序,例如上面的ftp,ssh

  • 等级端口号

    数值范围1024-49151,提供给次重要的服务端程序使用。比如tomcat的8080,oracle的1521

  • 客户端端口号

    短暂端口号,范围:49152~65535,客户端运行应用程序,动态占用一个端口。当客户端发送信息时,报文头中会带着这个端口号。当服务端回复信息,能够通过该端口发送给客户端应用程序进程。

3 可靠传输原理

理想情况下,传输的信道不会产生差错。不管发送方以多快的速度发送数据,接收方总是来得及处理收到的数据。

然而实际的网络不具备上面的理想条件。那么,就需要使用一些可靠的传输协议,比如出现差错时,发送方能够重发;接收方来不及处理收到的数据时,可以通知发送方降低发送数据的频率。

3.1 停止等待协议

  1. 正常情况,出差错
停止等待协议

图(a),A发送M1,B收到M1后,发送确认信息给A;A收到确认消息后,继续发送M2,B收到M2后发送确认消息给A,以此内推,每次A发送新的消息给B,都需要上一次B的确认信息。

图(b),A发送消息到B的过程中出现了差所,这时需要一个重传机制:

  • M1发出消息,设置一个超时计时器。当超时时间过后,没有收到确认,重传刚刚的信息。只有收到确认后,才撤销计时器

  • M1每次发送消息后,都需要保留已发送消息的副本。只有在收到确认时,才删除副本。

  • 超时时间应该比平均接受到确认的时间长一些。但是太长,会影响重传效率。重传时间选择要考虑很多问题。

3.2 ARQ

1.确认丢失,确认延迟

确认丢失

(a),A在发送M1后,不知道M1是出错,还是确实丢失了。导致超时,
超时后,A将将继续发送M1。
假设条件如下:B成功收到了M1,只是确认信息丢失,导致A重传M1。B的处理如下:

  • B丢弃重复M1
  • 向A发送确认。不能认为已经发送确认就不再发送,因为A之所以重传M1,就表示A没有收到对M1的确认。

(b),B收到M1后,确认延迟了,导致A超时重传,B再次收到M1,会丢弃M1。但是B继续发送确认给A,A接着发送M2,这是B的第一次确认到了,A会丢弃该确认,什么也不做。

从上面看出,对于重复的消息和重复的确认,都采用丢弃的策略。

3.3 停止等待协议优缺点

上面的停止等待协议的优点是简单,缺点是信道利用率太低。因为每一次新的分组发送都必须等待上一次分组的确认信息到达。

信道利用率太低

信道利用率的公式如下:

U = \frac{T_{D}}{T_{D}+RTT+T_{A}}

其中,RTT为分组在网络中的运输时间。网络越差,RTT越大,信道利用率越低。

所以,需要采用更高效的流水线传输,允许发送方可以连续发送多个分组,
类似下图:

流水线传输

3.4 连续ARP协议

连续ARQ协议通常是结合滑动窗口协议来使用的,发送方需要维持一个发送窗口,如下图所示:

工作原理

连续ARQ协议规定,发送方每收到一个确认,就把发送窗口向前滑动一个分组的位置。例如上面的图(b),当发送方收到第一个分组的确认,就把发送窗口向前移动一个分组的位置。如果原来已经发送了前5个分组,则现在可以发送窗口内的第6个分组。

接收方一般都是采用累积确认的方式。也就是说接收方不必对收到的分组逐个发送确认。而是在收到几个分组后,对按序到达的最后一个分组发送确认。如果收到了这个分组确认信息,则表示到这个分组为止的所有分组都已经正确接收到了。

累积确认的优点是容易实现,即使确认丢失也不必重传。但缺点是,不能正确的向发送方反映出接收方已经正确收到的所以分组的信息。比如发送方发送了前5个分组,而中间的第3个分组丢失了,这时候接收方只能对前2个发出确认。而不知道后面3个分组的下落,因此只能把后面的3个分组都重传一次,这种机制叫Go-back-N(回退N),表示需要再退回来重传已发送过的N个分组。

可见,当网络线路质量不好时,连续ARQ协议会带来负面的影响。

3.4 滑动窗口协议

作为TCP协议的精髓,内容较多,不在本篇讲述,将在下一篇专门讲解TCP协议的博文中阐述。

相关文章

  • TCP-运输层的概念

    1 前言 有三个原因促使我回过头来整理,学习。 1.1 SYN攻击 作为DDOS攻击中的一种,syn攻击利用TCP...

  • 运输层(一)

    目录 3.1 概述和运输层服务 运输层和网络层的关系 因特网运输层概述 3.2 多路复用与多路分解 概述和运输层服...

  • 运输层

    一、运输层协议概述 从通信和信息处理的角度看,运输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,同时...

  • 运输层

    运输层: 1、运输层为应用进程之间提供端到端的逻辑通信。(网络层是为主机之间提供逻辑通信) 2、运输层还要对收到的...

  • 运输层

    1. UDP 与 TCPUDP:无连接、尽最大可能交付、无拥塞控制、面向报文。TCP:连接、提供可靠交付、有拥塞控...

  • 运输层

    注:本文的图片均来源于谢希仁《计算机网络》第六版的课件PPT 1.重点内容 (1)运输层为相互通信的应用进程提供逻...

  • 运输层

    运输层解决的两个基本问题: 1)两个实体怎样才能在一种会丢失或损坏数据的媒体上可靠地通信——协议2)控制运输层实体...

  • 运输层

    运输层协议位于端系统中,由操作系统进行管理,实现对①数据报文的交付和②差错检查,对于①应用的技术为多路复用与多路分...

  • 运输层

    ● 请你说明一下,TCP协议的4次握手。 考察点:TCP协议 参考回答: 由于TCP连接是全双工的,因此每个方向都...

  • γ运输层

    运输层解决的问题 运输层解决的问题是,数据传输的问题。数据传输分为不可靠传输和可靠数据传输,分别对应的是U...

网友评论

      本文标题:TCP-运输层的概念

      本文链接:https://www.haomeiwen.com/subject/nowiaxtx.html