4.17、TCP三次握手

news2025/1/22 21:07:16

4.17、TCP三次握手

  • 1.TCP三次握手
  • 2.TCP通信具体流程
    • ①三次握手
    • ②服务器客户端进行通信

1.TCP三次握手

  • TCP 是一种面向连接的单播协议,在发送数据前,通信双方必须在彼此间建立一条连接。所谓的“连接”,其实是客户端和服务器的内存里保存的一份关于对方的信息,如 IP 地址、端口号等。
  • TCP 可以看成是一种字节流,它会处理 IP 层或以下的层的丢包、重复以及错误问题。在连接的建立过程中,双方需要交换一些连接的参数。这些参数可以放在 TCP 头部。
  • TCP 提供了一种可靠、面向连接、字节流、传输层的服务,采用三次握手建立一个连接。采用四次挥手来关闭一个连接。
  • 三次握手的目的是保证双方互相之间建立了连接。
  • 三次握手发生在客户端连接的时候,当调用connect(),底层会通过TCP协议进行三次握手。
    在这里插入图片描述
  1. 16 位端口号(port number):告知主机报文段是来自哪里(源端口)以及传给哪个上层协议或应用程序(目的端口)的。进行 TCP 通信时,客户端通常使用系统自动选择的临时端口号。
  2. 32 位序号(sequence number):一次 TCP 通信(从 TCP 连接建立到断开)过程中某一个传输方向上的字节流的每个字节的编号。假设主机 A主机 B 进行 TCP 通信,A 发送给 B 的第一个TCP 报文段中,序号值被系统初始化为某个随机值 ISN(Initial Sequence Number,初始序号值)。那么在该传输方向上(从 A 到 B),后续的 TCP 报文段中序号值将被系统设置成 ISN 加上该报文段所携带数据的第一个字节在整个字节流中的偏移。例如,某个 TCP 报文段传送的数据是字节流中的第 1025 ~ 2048 字节,那么该报文段的序号值就是 ISN + 1025。另外一个传输方向(从B 到 A)TCP 报文段的序号值也具有相同的含义。
  3. 32 位确认号(acknowledgement number):用作对另一方发送来的 TCP 报文段的响应。其值是收到的 TCP 报文段序号值 + 标志位长度(SYN,FIN) + 数据长度 。假设主机 A 主机 B 进行TCP 通信,那么 A 发送出的 TCP 报文段不仅携带自己的序号,而且包含对 B 发送来的 TCP 报文段的确认号。反之,B 发送出的 TCP 报文段也同样携带自己的序号和对 A 发送来的报文段的确认序号。
  4. 4 位头部长度(head length):标识该 TCP 头部有多少个 32 bit(4 字节)。因为 4 位最大能表示15,所以 TCP 头部最长是60 字节
  5. 6 位标志位包含如下几项:
    • URG 标志,表示紧急指针(urgent pointer)是否有效。
    • ACK 标志,表示确认号是否有效。我们称携带 ACK 标志的 TCP 报文段为确认报文段。
    • PSH 标志,提示接收端应用程序应该立即从 TCP 接收缓冲区中读走数据,为接收后续数据腾出空间(如果应用程序不将接收到的数据读走,它们就会一直停留在 TCP 接收缓冲区中)。
    • RST 标志,表示要求对方重新建立连接。我们称携带 RST 标志的 TCP 报文段为复位报文段。
    • SYN 标志,表示请求建立一个连接。我们称携带 SYN 标志的 TCP 报文段为同步报文段。
    • FIN 标志,表示通知对方本端要关闭连接了。我们称携带 FIN 标志的 TCP 报文段为结束报文
      段。
  6. 16 位窗口大小(window size):是 TCP 流量控制的一个手段。这里说的窗口,指的是接收通告窗口(Receiver Window,RWND)。它告诉对方本端的 TCP 接收缓冲区还能容纳多少字节的数据,这样对方就可以控制发送数据的速度。
  7. 16 位校验和(TCP checksum):由发送端填充,接收端对 TCP 报文段执行 CRC 算法以校验TCP 报文段在传输过程中是否损坏。注意,这个校验不仅包括 TCP 头部,也包括数据部分。这也是 TCP 可靠传输的一个重要保障。
  8. 16 位紧急指针(urgent pointer):是一个正的偏移量。它和序号字段的值相加表示最后一个紧急数据的下一个字节的序号。因此,确切地说,这个字段是紧急指针相对当前序号的偏移,不妨称之为紧急偏移。TCP 的紧急指针是发送端向接收端发送紧急数据的方法。

2.TCP通信具体流程

第一次握手:
	1.客户端将SYN标志位置为1
	2.生成一个随机的32位的序号seq=J , 这个序号后边是可以携带数据(数据的大小)
第二次握手:
	1.服务器端接收客户端的连接: ACK=1
	2.服务器会回发一个确认序号: ack=客户端的序号 + 数据长度 + SYN/FIN(按一个字节算)
	3.服务器端会向客户端发起连接请求: SYN=1
	4.服务器会生成一个随机序号:seq = K
第三次握手:
	1.客户单应答服务器的连接请求:ACK=1
	2.客户端回复收到了服务器端的数据:ack=服务端的序号 + 数据长度 + SYN/FIN(按一个字节算)

①三次握手

在这里插入图片描述
在这里插入图片描述

②服务器客户端进行通信

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/434186.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

热点数据监测方法

在日常开发中,我们需要着重注意一种场景-热点数据。他可能是一种请求,每次请求的数据类型都是一样的;可能是同一个数据,比如页面上公用的类型数据;可能是同一个用户大量的请求。他们都有着同一个特点,瞬时爆…

Redis---哨兵服务

一、配置哨兵服务 1、哨兵服务介绍 监视 master 服务器,发现 master 宕机后,将 slave 服务器提升为 master 服务器 主配置文件:sentinel.conf 模板文件:redis-4.0.8/sentinel.conf 哨兵服务:类似于mha的管理节点&#…

ELK日志

思维导图 一、ELK介绍 ELK是Elasticsearch、Logstash、Kibana首字母大写缩写,后续加入了Beats(Beats是负责单一用途数据采集并推送给Logstash或Elasticsearch的轻量级产品),就更名为 Elastic Stack。 Elastic Stack技术栈的功能…

JVM-GC回收机制

目录 1.判定垃圾 1.引用计数 2.可达性分析 2.清理垃圾 1.标记清除 2.复制算法 3.标记整理 4.分代回收 上文讲述的Java运行时内存划分,对于程序计数器,虚拟机栈,本地方法栈来说,生命周期是和线程有关的,随着线程而生,随线程而灭,当方法结束或者线程结束时,它们的内存就自…

细讲const与引用的关系

目录 先了解语言层面的权限 进入正题引用与const权限关系 引用权限的概念 const引用返回值时错误情况 一:返回到临时空间时权限问题 二:临时空间到调用处保存问题 结论:如果不对子函数内部数据修改、那么在父函数变量ret的类型可以设置…

vite+vue3+ts开发流程

目录 vue页面开发 数据类型开发 组件开发 API开发 页面中使用组件、API、数据类型 vue页面开发 <template><!-- 卡片区域--><el-card style"padding:0px;"><!-- 搜索与添加区域--><div style"margin-bottom: 15px;&quo…

SAP ABAP selection screen 动态获取字段名不需要回车触发

SAP ABAP selection screen &#xff0c;get field vaule without click Enter key. 有个需求&#xff0c;界面上几个字段的搜索帮助需要根据已输入值联动&#xff0c;比如AOP version 根据已输入的BU 过滤。 但尴尬的是在事件AT SELECTION-SCREEN ON VALUE-REQUEST FOR 中&a…

.Net中的标识框架Identity

中间件&#xff1a; 1、Authentication对访问者的用户身份进行验证&#xff0c;“用户是否登录成功”。 2、Authorization验证访问者的用户身份是否有对资源访问的访问权限&#xff0c;“用户是否有权限访问这个地址”。 简单描述 1、标识&#xff08;Identity&#xff09;框架…

TCP协议二:TCP状态转换(重要)

TCP状态转换分析https://www.bilibili.com/video/BV1iJ411S7UA?p44&spm_id_frompageDriver&vd_sourced239c7cf48aa4f74eccfa736c3122e65 TCP状态转换图 粗实线&#xff1a;主动端 虚线&#xff1a; 被动端 细实线&#xff1a;内核操作 状态分析 CLOSED&#xff1…

RabbitMQ:消息中间件

文章目录 概念管理界面简介4中常见交换器类型1.Direct交换器:2.Fanout交换器3.Topic交换器4.headers交换器 对象类型消息传递同步等待使用代码创建队列待续...... 概念 在微服务架构中项目之间项目A调用项目B 项目B调用项目C项目C调用项目D。。 用户必须等待项目之间内容依次的…

后端太难了,不 All in 了

作者&#xff1a;阿秀 校招八股文学习网站&#xff1a;https://interviewguide.cn 这是阿秀的第「256」篇原创 小伙伴们大家好&#xff0c;我是阿秀。 欢迎今年参加秋招的小伙伴加入阿秀的学习圈&#xff0c;目前已经超过 2200 小伙伴加入&#xff01;去年认真准备和走下来的基…

Segment Anything Model代码讲解(二)之image_encoder

image_encoder代码解析 在transformer的结构中&#xff0c;编码是非常重要的部分。接下来看image_encoder的代码部分目录 class ImageEncoderViT def initdef forward class Block def initdef forward class Attention def initdef forward def window_partitiondef window_…

【C++】引用(下)【深度全面解析】

&#x1f339;作者:云小逸 &#x1f4dd;个人主页:云小逸的主页 &#x1f4dd;Github:云小逸的Github &#x1f91f;motto:要敢于一个人默默的面对自己&#xff0c;强大自己才是核心。不要等到什么都没有了&#xff0c;才下定决心去做。种一颗树&#xff0c;最好的时间是十年前…

自定义类型——枚举与联合体

枚举 枚举顾名思义就是一一列举 把可能的取值一一列举 枚举类型的定义 enum Day//星期 {Mon,Tues,Wed,Thur,Fri,Sat,Sun };enum Sex//性别 {MALE,FEMALE,SECRET }&#xff1b;以上定义的 enum Day &#xff0c; enum Sex 都是枚举类型 { }中的内容是枚举类型的可能取值&…

English Learning - L2 第 14 次小组纠音 复习元音 [ɔɪ ] [aʊ] [əʊ] [ɪə] 弱读 2023.4.12 周三

English Learning - L2 第 14 次小组纠音 复习元音 [ɔɪ ] [aʊ] [əʊ] [ɪə] 弱读 2023.4.12 周三 共性问题coin voice /kɔɪn/ /vɔɪs/ 中 ɔɪvowel pounds /ˈvaʊəl/ /paʊndz/ 中的 aʊshow /ʃəʊ/beer nearly /bɪə/ /ˈnɪəlɪ/ 中的 ɪəbest bed ten /best…

U-Boot 烧写与启动

1.uboot 编译好以后就可以烧写到板子上使用了&#xff0c;这里我们跟前面裸机例程一样&#xff0c;将 uboot 烧写到 SD 卡中&#xff0c;然后通过 SD 卡来启动来运行 uboot。使用 imxdownload 软件烧写&#xff0c;命令如 下&#xff1a; chmod 777 imxdownload //给予 imxdo…

超参数的设置;使用适当的尺度来选择超参数;批量归一化;测试时的批量标准化:

超参数的设置&#xff1a; 超参数之间也有重要性差异。通常来说&#xff0c;学习因子α是最重要的超参数&#xff0c;也是需要重点调试的超参数。动量梯度下降因子β、各隐藏层神经元个数#hidden units和mini-batch size的重要性仅次于α。然后就是神经网络层数#layers和学习因…

【Python38安装PyAudio过程出现错误如:Failed building wheel for PyAudio等一系列问题】

安装PyAudio过程出现错误&#xff1a;Failed building wheel for PyAudio 目前成功解决解决过程&#xff08;1&#xff09; 解决方法1 查看pip支持安装whl文件的命名方式:没解决&#xff08;2&#xff09;解决方法2 直接用终端解决 目前成功解决 环境&#xff1a;Windows11、p…

数据库实验 | 第2关:建立和调用存储过程(带输出参数)

任务描述 本关任务&#xff1a; 销售数据库有工作人员、销售单数据表 工作人员gzry数据表有雇员号gyh、姓名gyxm、出生日期csrq、学历xl、工资gz、部门bm、电话dh字段 销售单xsd数据表有销售单号xsdh、会员号hyh、雇员号gyh、销售日期xsrq、应付款yfk、实际付款sjfk字段 任…

JKind入门(二)引擎简介 BMC

如上文所说&#xff0c;JKind 使用了多个并行引擎&#xff0c;协调它们来证明需要检验属性。本文主要介绍 bounded model checking (BMC) 有界模型检验。其中会涉及到有关JKind的 K-induction &#xff08;k归纳引擎&#xff09;和 SMT求解机。 本来这些文章就是单纯就是自己的…