报文在三次握手过程中丢失怎么办?

简介: 报文在三次握手过程中丢失怎么办?

image.png


 • 第一次:计算机(第一台计算机)发送SYN=1的请求报文,此时第一台计算机进入SYN SENT状态,等待服务器(第二台计算机)确认。


//此时如果报文丢失发送不到对端会如何?

第一台计算机发送报文之后会启动一个定时器,在超时之后未收到服务器端的确认,会再次发送SYN请求,

每次尝试的时间会是第一次的二倍,如果总的总尝试时间为75秒,此次建立链接失败。


   • 第二次:服务器端收到计算机发送的SYN报文(建立链接请求)后,S端必须返回确认号并且同时发送一条SYN报文,此时进入SYN RCVD状态。


//为啥要连带发送SYN报文?

TCP是全双工通信,协议规定当收到建立链接请求后必须返回序列号,同时建立本端到对端的通信链接。

这也叫做捎带应答机制。

//如果第二次报文丢失怎么办?

在发送完ACK+SYN报文后会启动一个定时器,超时没有收到ACK确认,会再次发送,会进行多次重试。

超时时间依旧每次翻倍,重试次数可设置。

修改 /proc/sys/net/ipv4/tcp_synack_retries 的值


  • 第三次:C端收到S端发的ACK+SYN报文,需要返回一个应答ACK的报文,此时该连接会进入半连接状态的队列,当S端收到ACK后,一条完整的全双工TCP链接建立完成,双方进入ESTABLISHED状态。


这里有个常用攻击手段,攻击者伪造一个SYN请求发送给服务端,服务端响应之后,会收不到C端的ACK确认,

服务端会不断的重试,默认会重试五次。

此时服务端会维持这个链接的所有资源,如果有大量这样的请求,服务端的资源会被耗完。


这就是DOS攻击。


//如果第三次报文丢失怎么办?


S端在发出ACK+SYN报文后会启动一个定时器,在超时触发还没收到ACK就确认是丢失了,会重试一次发送。


相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
7月前
|
网络协议 Python
TCP传输的三次握手、四次挥手策略是什么
TCP传输的三次握手、四次挥手策略是什么
50 0
|
3天前
|
网络协议
深入解析:TCP四次挥手断开连接的全过程及必要性
在网络通信中,TCP(传输控制协议)以其可靠性和顺序保证而闻名。然而,TCP连接的建立和终止同样重要,它们确保了网络资源的有效管理和数据传输的完整性。本文将详细描述TCP连接的四次挥手过程,并探讨为何需要四次挥手来正确终止一个TCP连接。
17 2
|
3月前
|
存储 网络协议 Linux
三次握手时,客户端发送的 SYN 报文为什么会被丢弃?
三次握手时,客户端发送的 SYN 报文为什么会被丢弃?
93 12
|
2月前
|
存储 XML JSON
【TCP】核心机制:延时应答、捎带应答和面向字节流
【TCP】核心机制:延时应答、捎带应答和面向字节流
54 2
|
3月前
|
运维 网络协议
深入解析TCP三次握手与四次挥手:建立与断开连接的关键过程
深入解析TCP三次握手与四次挥手:建立与断开连接的关键过程
224 0
|
6月前
|
网络协议
逆向学习网络篇:心跳包与TCP服务器
逆向学习网络篇:心跳包与TCP服务器
95 0
|
6月前
|
网络协议
TCP传输的三次握手四次挥手策略
TCP传输的三次握手四次挥手策略
35 0
|
7月前
|
缓存 网络协议 算法
【传输层】TCP、三次握手、四次挥手、可靠传输、TCP拥塞控制、慢开始、拥塞避免、快重传、快恢复
【传输层】TCP、三次握手、四次挥手、可靠传输、TCP拥塞控制、慢开始、拥塞避免、快重传、快恢复
104 0
|
监控 网络协议 安全
关于数据包丢失你需要知道的一切(以及如何避免它)
关于数据包丢失你需要知道的一切(以及如何避免它)
|
网络协议
07 tcp三次握手、四次挥手、十种状态
07 tcp三次握手、四次挥手、十种状态
267 0