当前位置:网站首页>TCP建立连接的过程
TCP建立连接的过程
2022-07-30 05:45:00 【zpv2jdfc】
TCP是面向连接的、可靠的、基于字节流的传输层协议,是TCP/IP协议中最重要的协议之一了。我们都知道TCP通过三次握手建立连接,那么每一次握手的作用、为什么要三次握手、如果某次握手丢包会发生什么呢?
首先看一下TCP首部:

在建立TCP连接的过程中,我们主要关注序号、确认号、ACK和SYN位。

这张图是三次握手握手过程中SYN、ACK以及序号确认号的值。
第一次握手
首先我们来看看客户端发送第一次握手的包时都做了什么:
可以看到,6个控制位中只有Syn为1. 表示这是请求建立连接的报文。
ISN
在第一次握手包中,Sequence Number为3789809680(第二张图中的Seq=0是相对序号)。这个序号是按什么规则生成的呢?
根据RFC1948(6528又对它做了改进),seq生成规则为:
ISN = M + F(localhost, localport, remotehost, remoteport).
这里ISN就是我们的序列号;M是一个计时器,每隔4微秒加1;F是一个不能被外界计算出来的东西。。。。
we use the current 4 microsecond timer M and set ISN = M + F(localhost, localport, remotehost, remoteport).It is vital that F not be computable from the outside, or an attacker could still guess at sequence numbers from the initial sequence number used for some other connection.
简单来说,F其实相当于做了一个简单地加密。至于为什么这么做,主要是因为如果seq仅仅是一个与时间相关的序列的话,当一个客户端A与服务器B连接收到服务器的seqB后,很容易就可以计算出下一个要与服务器B连接的客户端C会收到什么样的seq。这样,A就可以仿冒C给B发几个确认报文之类的,虽然A做不到查看BC之间通信的内容,但也能干扰他们之间的通信。
第二次握手
控制位中ACK和SYN为1,表示这是服务器接收请求后回复的报文。
在这里可以看到服务器返回的确认号就是客户端发出的序列号+1。
第三次握手
客户端发出的第三次握手报文,ACK为1.
那么为什么是三次握手呢?
为什么是三次握手
边栏推荐
- 卷积神经网络(CNN)之卷积操作、池化操作、激活函数
- 二十一、Kotlin进阶学习:实现简单的网络访问封装
- 标准化(Normalization)知识点总结
- 十二、Kotlin进阶学习:一、Lambda 表达式;二、高阶函数;
- 十三、Kotlin进阶学习:内联函数let、also、with、run、apply的用法。
- 边境的悍匪—机器学习实战:第十六章使用RNN和注意力机制进行自然语言处理
- 十四、Kotlin进阶学习:一、内联函数 inline;二、泛型;三、泛型约束;四、子类与子类型;
- 十五、Kotlin进阶学习:一、子类与子类型;二、协变;三、逆变;
- 十一、Kotlin进阶学习:1、集合;2、List操作;3、可变集合——MutableList;4、Set;5、Map;6、MutableMap;
- R-GIS: 如何用R语言实现GIS地理空间分析及模型预测
猜你喜欢
七、Kotlin基础学习:1、创建类;2、构造函数;3、继承;4、封装;5、抽象类;6、接口;7、嵌套类;8、内部类;9、枚举类
Twenty-two, Kotlin advanced learning: simply learn RecyclerView to achieve list display;
边境的悍匪—机器学习实战:第八章 降维
Self-augmented Unpaired Image Dehazing via Density and Depth Decomposition程序运行记录
工厂模式(Swift 实现)
Function functional interface and application
海量遥感数据处理与GEE云计算技术应用【基础、进阶】
Conda 安装 tensorflow gpu 1.13.1(验证可行)
OpenCV中(rows,cols)与图像(x,y)
influxDB运维记录
随机推荐
新导则下 防洪评价报告编制方法及洪水建模(HEC-RAS)
原创 Acegi 1.03 安全机制
Conda 安装 tensorflow gpu 1.13.1(验证可行)
Generalized Focal Loss paper reading notes
点云统计滤波理解
QT连载3:基于QT和STM32H750的LORA试验平台(2)
CNN经典模型发展进程
MySQL data types and footprint
【江科大自化协stm32F103c8t6】笔记之【入门32单片机及利用TIM输出比较配置PWM】
十七、Kotlin进阶学习:1、守护线程;2、线程和协程之间的效率对比;3、取消协程;
七、Kotlin基础学习:1、创建类;2、构造函数;3、继承;4、封装;5、抽象类;6、接口;7、嵌套类;8、内部类;9、枚举类
Function functional interface and application
FPGA解析B码----连载2
十九、Kotlin进阶学习:1、管道数据的收和发;2、管道的关闭;3、生产者和消费者;4、管道的缓存区;
昆仑通态屏幕制作(连载3)---基础篇(按钮串口发送)
Atmospheric particulate matter PMF source analysis
边境的悍匪—机器学习实战:第十六章使用RNN和注意力机制进行自然语言处理
2021-09-16 集成学习上--task1机器学习数学基础
基于OpenCV的双目重建
ssh 脚本 空格字符转换