TCP/IP(五)TCP的连接管理(二)三次握手细节

一 ISN序列号探究

bash 复制代码
本文主要探究'三次'握手建立TCP连接的'细节'

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

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

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

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

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

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

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

④ 三次握手过程中状态变化

bash 复制代码
1、'客户端'状态变化

备注: client  '主动'发送方
bash 复制代码
2、'服务端'状态变化

二 三次握手过程握手丢失

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

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

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

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

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

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

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

bash 复制代码
分析: 'SYN-ACK'丢失

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

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

内核参数: 'tcp_synack_retries'
bash 复制代码
场景:假设'tcp_syn_retries'值为 1,'tcp_synack_retries'值为2,第二次握手'一直'丢失场景
bash 复制代码
++++++++++++++++  '具体过程'  ++++++++++++++++

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

bash 复制代码
场景: 假设'tcp_synack_retries'参数值为 2,那么当第'三'次握手一直'丢失'时
bash 复制代码
++++++++++++++++  '具体过程'  ++++++++++++++++
相关推荐
无毁的湖光-Al7 小时前
高可用之路-观测篇-那些年遇到过的指标幻觉
linux·数据库·tcp
爱好曙光1 天前
NATS JetStream 消费者 ack 与重投递:重复消费治理实战
消息队列·幂等·ack·jetstream·nats
骑着蜗牛撵大象3272 天前
从三次握手到 epoll:C++ 写出可落地的 TCP Socket 服务端
网络·c++·tcp/ip·高并发·tcp·epoll
码少女3 天前
Linux——UDP协议和TCP协议
linux·网络·udp·tcp
Patrick在香港4 天前
第 16,216 次连接之后,它不干了
python·网络编程·socket·tcp·连接池
酒神dnspup5 天前
HTTP Keep-Alive 与连接池实战:TIME_WAIT、端口耗尽和复用率怎么排查
http·keep-alive·tcp·连接池
沫璃染墨6 天前
从零入门计算机网络系列(六):TCP套接字编程实战——从listen监听到客户端与服务器通信
linux·服务器·c++·tcp/ip·计算机网络·tcp
承渊政道13 天前
Linux网络学习【TCP Socket编程实战:connect的断线重连与客户端访问Linux验证】
linux·网络·学习·ubuntu·tcp·socket编程
骑着蜗牛撵大象32715 天前
服务下线不再炸:分层关闭、TCP 存活探测与负载均衡排水的落地套路
android·tcp/ip·负载均衡·tcp·高可用·健康检查·优雅关闭
洋不写bug18 天前
网络编程(二)TCP回显服务器与客户端通信详解
服务器·网络·tcp/ip·tcp·网络通信·javaee·回显服务器