TCP/IP(五)TCP的连接管理(二)

news/2024/5/17 15:14:12 标签: syn, ack, tcp

一   ISN序列号探究

本文主要探究'三次'握手建立TCP连接的'细节'

备注: 某些问题探究的'比较深入',当前用不到,暂时通过'链接'引入进来

吃水不忘挖井人: '小林 coding'

①   初始序列号 ISN 是如何随机产生的

ISN: 初始化序列号  'Initial Sequence Number' 接收方和发送方都会'产生'

tcpdump -S: 指定'打印'每个监听到的数据包的TCP'绝对'序列号而'非相对'序列号

②  为什么每次建立 TCP 连接时,初始化的序列号都要求不一样呢

③  为什么是三次握手?不是两次、四次?

④   三次握手过程中ackground-color:#fe2c24;">状态变化

1、'客户端'状态变化

备注: client  '主动'发送方

2、'服务端'状态变化

二   三次握手过程握手丢失

遗留: 三次握手'过程'中,不同场景'握手丢失'在'wiresahrk'以什么颜色'显示'?

①  第一次握手丢失了,会发生什么

细节点: 在'第1次'的基础上又'重试'的次数,关注'等待'时间

内核参数: 'tcp_syn_retries'

场景: 假设 tcp_syn_retries 参数值为'3',探究当客户端的 SYN 报文一直在网络中'丢失'时过程

说明: 有时间通过'iptables'以及'wireshark'模拟看现象

SYN 报文什么时候情况下会被丢弃

②  第二次握手丢失了,会发生什么?

分析: 'SYN-ACK'丢失

  1、 对于'客户端'的感知,是不是因为'第一次握手'的'SYN'报文丢失导致服务端没有回'SYN-ACK'

  2、 对于'服务端'的感知,怎么还没有回我'ACK'确认报文,是不是第二次握手'SYN-ACK'丢失了

内核参数: 'tcp_synack_retries'

场景:假设'tcp_syn_retries'值为 1,'tcp_synack_retries'值为2,第二次握手'一直'丢失场景

++++++++++++++++  '具体过程'  ++++++++++++++++

③  第三次握手丢失了,会发生什么?

场景: 假设'tcp_synack_retries'参数值为 2,那么当第'三'次握手一直'丢失'时

++++++++++++++++  '具体过程'  ++++++++++++++++


http://www.niftyadmin.cn/n/5079705.html

相关文章

MATLAB算法实战应用案例精讲-【图像处理】SLAM技术详解

目录 前言 几个高频面试题目 SLAM和路径规划对比 算法原理 SLAM组成 常用的SLAM传感器

【Python】实现excel文档中指定工作表数据的更新操作

在做数值计算时,个人比较习惯利用excel文档的公式做数值计算进行对比,检查异常,虽然计算量大后,excel计算会比较缓慢,但设计简单,易排错 但一般测试过程中使用到的数据都不是最终数值,会不停根据…

物料凭证过账时有用的BAdI和User exit

当用事务代码MIGO或者是MB01/MB1C/MB1A等进行物料凭证过账时,会有加入用户自检查,自定义自开发的需求。 本文将列举一些非常有用的BAdI和user-exit. 所有的BAdI定义可以通过事务代码SE18来查看。 BAdI(Business Add-Ins): 1. MB_MIGO_BAD…

关于Nacos启动报错 Unable to start embedded Tomcat

1 ,nacos 启动出错 Unable to start embedded Tomcat 版本Nacos 2.2.1 jdk 1.8 需 配置数据库连接 账号密码等信息,在导入Nacos数据; 最佳解决方案 https://blog.csdn.net/sinat_21843047/article/details/124165698 2,配置完成…

【RabbitMQ 实战】10 消息持久化和存储原理

一、持久化 1.1 持久化对象 rabbitmq的持久化分为三个部分: 交换器的持久化。队列的持久化。消息的持久化。 1.1.1 交换器持久化 交换器的持久化是通过在声明交换器时, 指定Durability参数为durable实现的。若交换器不设置持久化,在rabb…

C语言,求自幂数

自幂数是一个n位数的数等于自身各个位数上数字的n次幂指和。 水仙花数是三位自幂数。有些题目说输入100000以内的水仙花数,答案却有四位五位的数字,但是水仙花数是三位自幂数,四位自幂数叫四叶玫瑰数,五位是五角星数,…

Cmake 3.27.5 发布,开源构建系统

导读CMake 是一个跨平台的自动化构建系统,它使用一个名为 CMakeLists.txt 的文件来描述构建过程,可以产生标准的构建文件,如 Unix 的 Makefile 或 Windows Visual C 的 projects/workspaces 。文件 CMakeLists.txt 需要手工编写,也…

Springboot使用sqlcipher4加密sqlite数据库

在有些业务场景,需要使用sqlite数据库,但sqlite数据库生的db文件,是明文的,该文件被别人拿到,就可以看到里面的所有数据,非常不安全,市面上有很多对sqlite数据库文件加密的方式,但都…