TCP是百分百可靠的吗?

我们知道,TCP是面向连接的,可靠的传输层协议,那么TCP是100%可靠无缺陷的吗?

不是的,TCP协议为了实现可靠传输,在三次握手的实现过程中设置了一些异常处理机制。比如说,在三次握手的第三步,如果服务器一直没有收到客户端的ACK报文,服务器一般会进行重试,也就是再次发送SYN+ACK报文给客户端,并且一直处于SYN-RECV状态,将客户端加入等待列表(半连接队列)。重发一般会进行3~5次,大概每隔30秒会轮询一次半连接队列,重试所有的客户端。此外,服务器在发送SYN+ACK报文后,会预留一部分资源给即将建立的TCP连接,这个资源在等待重试期间会一直保留。

然而,服务器的资源是有限的,可维护的等待列表大小超过一定限度后,服务器就不在接受新的SYN报文了,也就是说服务器拒绝建立新的TCP连接了。

攻击者可以伪造大量的IP地址给服务器发送SYN报文,由于伪造的IP地址几乎不可能存在,服务器也就收不到从伪造的IP地址发来的任何回应,因此服务器将会维护一个很大的等待列表,并不断地尝试向等待列表中的IP地址发送SYN+ACK,这样不仅会占用很大的系统资源,而且由于服务器等待队列已满,服务器拒绝建立新的TCP连接,这样正常的客户端想要建立连接时,反而不能成功。

这样的攻击方式称为SYN Flood攻击,是DoS(Deny of Service 拒绝服务)攻击的一种。

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值