IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> TCP安全可靠连接讨论(三次握手与两次握手) -> 正文阅读

[网络协议]TCP安全可靠连接讨论(三次握手与两次握手)

谈论课题一:TCP三次握手

第一次握手:client发送连接请求报文[SYN=1,seq=x]给server,client进入SYN_SENT状态

第二次握手:server收到连接请求报文,分配资源,将相关信息放入半连接队列中,回应client一个报文[ACK=1,SYN=1,ack=x+1,seq=y],server进入SYN_RECV状态

第三次握手:client收到server回应报文,回server一个ACK报文[ACK=1,ack=y+1],此时client进入ESTABLISHED状态,即可发送数据,server收到client[ACK]报文,将相关信息从半连接队列中转移到全连接队列中,认为连接建立成功,进入ESTABLISHED状态

论题:丢包问题

1、第一次握手client连接请求报文[SYN=1,seq=x]丢失

超过一定时间,client没有收到server的ACK+SYN报文,认为连接请求报文丢失,重传连接请求报文[SYN=1,seq=x2],此时序列号变了。根据《TCP/IP详解卷Ⅰ:协议》中的描述,此时会尝试三次,间隔时间分别是 5.8s、24s、48s。三次连接不成功放弃连接

2、第二次握手server回应报文[ACK=1,SYN=1,ack=x+1,seq=y]丢失

超过一定时间,client没有收到server的ACK+SYN报文,认为连接请求报文丢失,放弃此次连接,重传连接请求报文[SYN=1,seq=x2],此时序列号变了

超过一定时间,server没有收到client的ACK报文[ACK=1,ack=y+1],知道自己的 SYN+ACK 丢了,于是又重传了若干次 SYN+ACK报文

client收到SYN+ACK报文,然而client已经放弃此次连接,将不予理会

3、第三次握手client回应报文ACK报文[ACK=1,ack=y+1]丢失

超过一定时间,server没有收到ACK报文或者是client发送的数据,认为SYN+ACK报文丢失,重传SYN+ACK报文

此时client已经进入EATABLISHED状态,可以向server发送数据,开始发送数据时会携带上一个ACK确认序号,所以client回应的[ACK]报文丢失,server在收到这个数据包时,依然能够通过包内 ACK 的确认序号,正常进入 ESTABLISHED 状态

论题:包延迟抵达问题

1、第一次握手client连接请求报文[SYN=1,seq=x]延迟抵达

server收到延迟抵达连接请求报文,分配资源,将相关信息放入半连接队列中,server回应报文[ACK=1,SYN=1,ack=x+1,seq=y],然而client已经放弃此次连接,将不予理会,建立连接失败,然半连接队列会占用资源,SYN攻击即是利用发送连接请求给服务器,不回应ACK报文,消耗完半连接队列资源的原理

2、第二次握手server回应报文[ACK=1,SYN=1,ack=x+1,seq=y]延迟抵达

超过一定时间,client没有收到server的ACK+SYN报文,认为连接请求报文丢失,放弃此次连接,重传连接请求报文[SYN=1,seq=x2]

随后client收到延迟抵达回应报文[ACK=1,SYN=1,ack=x+1,seq=y],然而client已经放弃此次连接,将不予理会

3、第三次握手client回应报文ACK报文[ACK=1,ack=y+1]延迟抵达

超过一定时间,server没有收到ACK报文或者是client发送的数据,认为SYN+ACK报文丢失,重传SYN+ACK报文

此时client已经进入EATABLISHED状态,可以向server发送数据,开始发送数据时会携带上一个ACK确认序号,所以client回应的[ACK]报文延迟,server在收到这个数据包时,依然能够通过包内 ACK 的确认序号,正常进入 ESTABLISHED 状态

谈论课题二:二次握手

据《计算机网络》上讲述,三次握手是防止已失效的连接请求又传送到服务器端,从而产生错误

那么我们就假设使用二次握手来进行连接,具体的实现如下

第一次握手:client发送连接请求报文[SYN=1,seq=x]给server,client进入SYN_SENT状态

第二次握手:server收到连接请求报文,分配资源,将相关信息放入全连接队列中,回应client一个报文[ACK=1,ack=x+1],server进入ESTABLISHED状态,认为连接建立成功,client收到server回应报文,进入ESTABLISHED状态,即可发送数据

论题:丢包问题

1、第一次握手client的连接请求报文[SYN=1,seq=x]丢失

超过一定时间,client没有收到server的ACK报文,认为连接请求报文丢失,重传连接请求报文[SYN=1,seq=x2],此时序列号改变

2、第二次握手server回应报文[ACK=1,ack=x+1]丢失

超过一定时间,client没有收到server的ACK+SYN报文,认为连接请求报文丢失,放弃此次连接,重传连接请求报文[SYN=1,seq=x2],此时序列号变了,然而server已经进入ESTABLISHED状态,白白等待client发送数据,浪费资源

论题:包延迟抵达问题

1、第一次握手client连接请求报文[SYN=1,seq=x]延迟抵达

超过一定时间,client没有收到server的ACK报文,认为连接请求报文丢失,放弃此次连接,重传连接请求报文[SYN=1,seq=x2]

server收到延迟抵达连接请求报文,server回应报文[ACK=1,SYN=1,ack=x+1,seq=y],然而client已经放弃此次连接,将不予理会,不发送数据,然而server已经进入ESTABLISHED状态,白白等待client发送数据,浪费资源

2、第二次握手server回应报文[ACK=1,ack=x+1]延迟抵达

超过一定时间,client没有收到server的ACK报文,认为连接请求报文丢失,放弃此次连接,重传连接请求报文[SYN=1,seq=x2]

随后client收到延迟抵达回应报文,然而client已经放弃此次连接,将不予理会,然而server已经进入ESTABLISHED状态,server白白等待client发送数据,浪费资源


总结:

三次握手是TCP安全可靠连接最少握手次数,是防止已失效的连接请求又传送到服务器端,从而产生错误

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-10-19 12:16:09  更:2021-10-19 12:16:21 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 3:37:16-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码