TCP三次握手

ops/2025/4/2 15:22:03/

前置知识:TCP报文格式

在这里插入图片描述
解释:

在这里插入图片描述

三次握手

三次握手过程

在这里插入图片描述

一开始,客户端和服务端都处于“CLOSE”状态,服务端首先进行端口监听,进入“LISTEN“状态

第一次:客户端向服务端发送一个建立连接的请求,TCP报文的SYN字段设置为1,表示希望请求建立连接,客户端随机生成一个tcp的序号,发送完该请求后,客户端处于一个“SYN-SENT”状态。

第二次:服务器端收到客户端发来的请求后,会发送对应的一个确认请求,ACK标志位置为1,SYN字段设置为1,确认应答号设置为客户端序号值 + 1,同时也随机初始化一个序号seq。服务器端进入“SYN_RVD"状态。

第三次:客户端收到服务端确认请求后,还要向客户端发送一个应答报文,其中ACK标志位设置为1,确认应答号设置为 服务端端序号值 + 1, 本次报文可以携带要发送的数据。发送数据后,客户端进入“ESTABLISHED”状态。服务端收到确认后,也进入“ESTABLISHED”状态。三次握手完成。

为什么不是两次握手?

  • 防止历史连接。如果只是两次握手,则服务器对新旧的连接请求都会发送一个确认请求后进入“ESTABLISHED”状态,无法阻止历史连接。
  • 帮助双方同步序号。为了保证传输的有序性和可靠性,TCP采用了发送确认机制,通过发送序号号确认下一个序号来实现,只有三次握手才能保证TCP通信的两端都知道了对方的初始序号。
  • 防止资源的浪费。如果只有两次握手,第一次请求的报文由于网络传输延迟了触发了超时重传机制,客户端再次发送一个请求SYN报文,服务端收到该报文后会直接分配资源建立连接。随后网络延迟的SYN’请求报文到了服务端,会再次分配资源建立连接。
  • 存在半连接问题,如果服务端发送的ACK确认请求丢失了,服务端将认为连接已成功建立并进入等待接收数据的状态。然而,客户端由于没有收到服务器的SYN-ACK,就会超时重传。

参考:小林coding


http://www.ppmy.cn/ops/17297.html

相关文章

Electron+Vue3整合-开发时整合-全部ts开发 + 一条命令启动vue3和electron两个服务

说明 本文介绍一下 Electron Vue3 的整合的中级操作。实现的效果是 : 1、一个正常的Vue3项目; 2、整合加入 Electron 框架 :开发时只执行一条命令,启动 vue 项目 后 再启动 electron;electron 的开发使用 typescript…

关于RA8900CE时钟芯片的使用注意事项

在快节奏的现代社会&#xff0c;时间变得越来越宝贵。对于时钟的电子设计&#xff0c;高精度且低功耗逐渐成为主流。我们就有一个汽车显示屏的时钟显示项目&#xff0c;要求时钟一天的误差控制在1s以内。要想达到此要求&#xff0c;则必须满足晶振的频率偏差PPM<1/60/60/24*…

Linux搭建NFS服务器

什么是NFS NFS是网络文件系统&#xff08;Network File System&#xff09;的缩写&#xff0c;是一种分布式文件系统协议&#xff0c;用于在网络上共享文件和目录。NFS允许用户从一个计算机上访问另一个计算机上的文件&#xff0c;就像它们本地存在一样。这意味着&#xff0c;…

香港服务器,应该选用中国站 还是国际站?

阿里云中国站和国际站的区别主要体现在以下几个方面&#xff1a; 备案要求&#xff1a; 阿里云中国站的服务器需要进行备案&#xff0c;而国际站的服务器则无需备案。支付方式&#xff1a; 阿里云中国站支持人民币支付&#xff0c;国际站支持美元、港币等多种货币支付。产品线…

姑苏寻韵~庆开放原子开源大赛 OpenTiny 前端 Web 应用开发挑战赛路演圆满落幕。

春日已至&#xff0c;姑苏古城迎来了一场编程的盛宴——开放原子开源大赛OpenTiny前端Web应用开发挑战赛。历时三个月的激烈角逐&#xff0c;OpenTiny与众多开发者携手共赴这场智慧的较量。决赛路演于4月14日在苏州&#xff08;太湖&#xff09;产业软件园圆满落下帷幕~ 开放原…

【多线程】JUC的常见类 | Callable接口 | ReentranLock | 线程安全的集合类

文章目录 一、JUC的常见类1.Callable接口2.ReentranrLock1.ReentranLock的优势1.两种加锁方法2.提供了公平锁的实现3.提供了更强大的等待通知机制。 二、线程安全的集合类1.多线程环境使用ArraList1.synchronizedList2.CopyOnWriteArrayList写时拷贝。局限性&#xff1a; 2.多线…

SQLite FTS5 扩展(三十)

返回&#xff1a;SQLite—系列文章目录 上一篇:SQLite的知名用户(二十九) 下一篇:SQLite 的命令行 Shell(三十一&#xff09; 1. FTS5概述 FTS5 是一个 SQLite 虚拟表模块&#xff0c;它为数据库应用程序提供全文搜索功能。在最基本的形式中&#xff0c; 全文搜索引擎允许…

力扣1146 快照数组

思路&#xff1a;初始时&#xff0c;使用的思路是对于每个快照的数组都进行一次副本保存&#xff0c;但是提交后是时间超出。因此基于 灵神. - 力扣&#xff08;LeetCode&#xff09; 的思路不构建数组&#xff0c;而是保存每个数组位置set的记录&#xff0c;记录采用的是键值对…