美文网首页
谈谈 TCP 连接的三次握手

谈谈 TCP 连接的三次握手

作者: YohannHe | 来源:发表于2019-10-17 20:01 被阅读0次
TCP三次握手示意图

客户端:发起 SYN 报文,并进入到 SYN-SENT 状态

服务端:接收到报文后发送 SYN-ACK 报文,并进入到 SYN-RCVD 状态

客户端:发送 ACK 报文,并进入到 ESTABLISHED 状态

服务端:收到后 ACK 报文后,进入到 ESTABLISHED 状态,至此 TCP 连接建立成功,开始进行数据通信

这就完了吗?

网络传输本来就是不稳定,即使有种协议存在也不能保证100%的稳定,为什么建立三次握手就能保证数据的可靠送达呢?等等有很多问题值得思考。

1.为什么三次握手之后才能建立起连接?

主要是为了初始化 Sequence Number,即上图中的 seq,他的作用就是确保数据包的有序传输,数据也是通过 seq 进行数据的拼接

2.如果客户端没有收到服务端发送 SYN-ACK 报文怎么办呢?

此时服务端会进行重试,Linux 默认是等待 63s 后断开连接。
第一次等待 1 秒,第二次等待 2 秒,第三次等待 4 秒,第四次等待 8 秒,第五次等待 16 秒,再等待 32 秒后服务器会断开连接。
总共等待时间为 1 + 2 + 4 + 8 + 16 + 32 = 63 秒。

3.这么久?如果疯狂向服务端发送请求报文却不去回复服务器,服务器 TCP 资源岂不是会被耗尽?

确实如此,这就是 SYN-Flood 攻击,典型的 DoS (Denial of Service,拒绝服务) 攻击,效果就是服务器 TCP 连接资源耗尽,停止响应正常的 TCP 连接请求。

后续

关于 SYN-Flood 的防护措施,以及 linux 如何针对这种问题提供解决方案的,后续文章给出分享。

相关文章

  • TCP三次握手和四次挥手

    1、TCP三次握手 TCP建立连接需要进行“三次握手”: TCP三次握手过程描述如下: 客户端发送连接请求报文:S...

  • 链家 PHP 面试

    TCP三次握手在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。第一次握手:建立连接时...

  • 头条-阿里面试题

    TCP三次握手在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接.第一次握手:建立连接时...

  • 知道TCP连接的三次握手,但你知道为什么是三次吗?

    TCP连接的三次握手 了解TCP协议的人都知道,TCP在建立连接的时候需要经过三次交互,俗称「三次握手」: cli...

  • TCP10问

    1.TCP建立连接时需要几次握手, 断开连接需要几次握手? TCP建立连接需要三次握手, 断开连接要四次握手。现有...

  • 面试题-- 计算机网络

    TCP连接 -- 三次握手 在TCP/IP协议中, TCP提供可靠的连接服务,采用三次握手建立一个连接. 第一次握...

  • TCP三次握手和四次挥手超完善总结

    TCP 三次握手(建立连接) 三次握手(Three-way Handshake),是指建立一个 TCP 连接时,需...

  • JavaScript--TCP三次握手,四次握手

    TCP三次握手 (请求连接) 三次握手的目的是:同步连接双方的序列号和确认号并交换 TCP窗口大小信息。三次握手过...

  • TCP的可靠性

    TCP数据报首部格式 建立连接——三次握手 TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个...

  • TCP三次握手和四次挥手以及缺陷

    建立TCP需要三次握手才能建立,而断开连接则需要四次握手。整个过程如下图所示: 1、TCP连接建立——三次握手 几...

网友评论

      本文标题:谈谈 TCP 连接的三次握手

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