苦练基本功-计算机网络基础-TCP建立连接

刚开始准备秋招的时候,我以为tcp建立连接只需要掌握三次握手就行了,但是在面试的过程中,发现仅仅知道这些是不够的。这里举一个我面拼多多的一个例子:

面试官:三次握手已经考烂了,我想问问如果第一次握手之后,客户端恶意不发送数据,服务端会发生什么?

我:会占用端口,直到连接reset才释放。

面试官:如果有很多个这样的恶意连接呢?

我:服务端大量端口被占用

面试官:这会导致什么问题?

我:其它正常的tcp连接无法建立了。

面试官:服务端拒绝服务了,所以这就是一种Dos攻击手段,那么你觉得该怎么解决这个问题?

我:(开始紧张,想了半天)建立黑名单

面试官:你了解SYN cookie吗?

我:。。。没听说过

所以我后面的学习,不仅仅是看三次握手了,因为这个层面不足以拿到好的后端offer,下面我就自己学习的内容进行整理归纳,如果大家还有补充的,可以评论告诉我。

三次握手

TCP三次握手

为什么三次握手?两次握手不行吗?

这是老生常谈的问题了,防止失效的SYN又到达服务端建立了连接。

三次握手可以发送数据吗?

前两次不可以发送数据,第三次可以发送数据。
这个也很好理解,前两次压根儿就没有建立起连接,发送数据没什么意义。

三次握手还做了什么事?

确定MSS(Maximum Segment Size),MSS受数据链路层的MTU的影响,不同网络是不一样的,所以事先在建立连接的时候进行沟通,告知对方自己的MSS,然后取较小值。

什么是半连接队列,全连接队列

当服务端收到SYN,会把该连接放到一个队列里,并为其分配资源(数据缓冲区),这个队列就叫半连接队列。
当服务端收到客户端的ACK时,而且全队列未满时,会从半连接队列取出对应的连接,放入另一个队列,这个队列是已建立连接的队列。

其中队列的长度是有相应的参数可以设置。

什么是SYN洪泛攻击

上面面试谈到的Dos攻击就是SYN攻击,简单来说就是发送SYN之后,不发送数据,恶意消耗服务端资源,导致服务端无法服务正常的请求。

如何防范SYN攻击

使用SYN cookie。
具体步骤就是,当服务端收到客户端的SYN,不要立马分配资源,先按照源IP+源端口+目的IP+目的端口来生成一个cookie,然后作为序号发给客户端,如果客户端回应了,并且ack减去1,解析出来的ip和端口是对的,那就没有问题了,这时再分配资源。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值