TCP连接管理(三次握手,四次挥手)

news2024/9/28 11:19:05

目录

  • 一、回顾一下TCP包头
  • 二、连接的建立——“三次握手”
  • 三、连接的建立——“四次挥手”
    • 保活计时器

一、回顾一下TCP包头

在这里插入图片描述

源端口号(Source Port):16 位字段,表示发送方的端口号。

目的端口号(Destination Port):16 位字段,表示接收方的端口号。

序列号(Sequence Number):32 位字段,表示发送方发送的字节流的序列号。用于实现数据的可靠传输和顺序传递。

确认号(Acknowledgment Number):32 位字段,表示接收方期望接收的下一个字节的序列号。用于实现数据的可靠传输和确认。

数据偏移(Data Offset):4 位字段,表示 TCP 首部的长度,以 32 位的字为单位。最大值为 15,对应的首部长度为 60 字节。

保留(Reserved):6 位字段,保留供将来使用,目前置为 0。

U/A/P/R/S/F:各占 1 位的标志位。
U:紧急(Urgent)标志位,表示紧急指针字段是否有效。
A:确认(Acknowledgment)标志位,表示确认号字段是否有效。
P:推送(Push)标志位,表示接收方应该尽快将数据交给应用层。
R:复位(Reset)标志位,用于中断连接。
S:同步(Synchronize)标志位,用于建立连接 三次握手。
F:终止(Finish)标志位,用于释放连接 四次挥手。
窗口大小(Window Size):16 位字段,表示接收方的窗口大小,用于流量控制。

校验和(Checksum):16 位字段,用于校验 TCP 首部和数据的完整性。

紧急指针(Urgent Pointer):16 位字段,仅在紧急标志位为 1 时有效,表示紧急数据的边界。

TCP 报文段的首部长度为 20 字节(不包括选项字段)。首部长度可变取决于选项字段的存在与长度。

二、连接的建立——“三次握手”

TCP 建立连接的过程叫做握手。
采用三报文握手:在客户和服务器之间交换三个 TCP 报文段,以防止已失效的连接请求报文段突然又传送到了,因而产生 TCP 连接建立错误。

在这里插入图片描述

  1. B 的 TCP 服务器进程先创建传输控制块 TCB,准备接受客户进程的连接请求。

  2. A 的 TCP 向 B 主动发出连接请求报文段,其包头中的同步位 SYN = 1,并选择序号 seq = x,表明传送数据时的第一个数据字节的序号是 x。
    注意:TCP规定,SYN 报文段(即SYN = 1的报文段)不能携带数据,但要消耗掉一个序号。

  3. B 的 TCP 收到连接请求报文段后,如同意,则发回确认。
    B 在确认报文段中应使 SYN = 1,使 ACK = 1,其确认号 ack = x + 1,自己选择的序号 seq = y。
    这个报文段也不能携带数据,但同样要消耗掉一个序号。

  4. A 收到此报文段后向 B 给出确认,其 ACK = 1,确认号 ack = y + 1。
    A 的 TCP 通知上层应用进程,连接已经建立。
    TCP 标准规定:ACK 报文段可以携带数据。
    但如果不携带数据,则不消耗序号。下一个数据报文段的序号仍是 seq = x + 1。

  5. B 的 TCP 收到主机 A 的确认后,也通知其上层应用进程:TCP 连接已经建立。双方可以开始数据传送。

三、连接的建立——“四次挥手”

TCP 连接释放过程比较复杂。
数据传输结束后,通信的双方都可释放连接。
TCP 连接释放过程是四报文握手。

在这里插入图片描述

  1. A 的应用进程先向其 TCP 发出连接释放报文段,并停止再发送数据,主动关闭 TCP 连接。
    A 把连接释放报文段首部的 FIN = 1,其序号seq = u,等待 B 的确认。
    TCP规定:FIN 报文段即使不携带数据,也消耗掉一个序号。

  2. B 发出确认,ACK=1,确认号 ack = u+1,这个报文段的序号 seq = v。
    TCP 服务器进程通知高层应用进程。
    从 A 到 B 这个方向的连接就释放了,TCP 连接处于半关闭 (half-close) 状态。B 若发送数据,A 仍要接收。

  3. 若 B 已经没有要向 A 发送的数据,其应用进程就通知 TCP 释放连接。
    FIN=1,ACK=1,确认号 ack = u+1。

  4. A 收到连接释放报文段后,必须发出确认。
    ACK=1,确认号 ack=w+1,自己的序号 seq = u + 1

保活计时器

  1. 用来防止在 TCP 连接出现长时期空闲。

  2. 通常设置为 2 小时 。

  3. 若服务器过了 2 小时还没有收到客户的信息,它就发送探测报文段。

  4. 若发送了 10 个探测报文段(每一个相隔 75 秒)还没有响应,就假定客户出了故障,因而就终止该连接。

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

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

相关文章

【机器学习核心总结】什么是决策树

什么是决策树 在游戏中遇到敌人是选择攻击还是逃跑?如果选择攻击,是选择普通的物理攻击还是魔法攻击?为达到目标根据一定的条件进行选择的过程,就是决策树(DT Tree)。 决策树模型非常经典,在机器学习中常被用于分类&…

2.3 Web应用 -- 5. Web缓存/代理服务器技术

2.3 Web应用 -- 5. Web缓存/代理服务器技术 Web缓存/代理服务器技术条件性GET方法 Web缓存/代理服务器技术 功能 在不访问服务器的前提下满足客户端的HTTP请求。 为什么要发明这种技术? 缩短客户请求的响应时间减少机构/组织的流量在大范围内(Internet)实现有效的内…

【小沐学C++】libcurl实现HTTP/HTTPS请求

文章目录 1、简介2、下载和编译2.1 下载2.2 编译2.3 使用 3、命令行测试3.1 获取文件头Headers3.2 请求内容Request Content3.3 响应内容Response Content3.4 GET请求3.5 POST请求3.6 其他 4、代码测试3.1 simple.c3.2 url2file.c3.3 simplepost.c3.4 resolve.c3.5 progressfun…

Docker中部署Redis集群与部署微服务项目的详细过程

目录 一、使用Docker部署的好处二、Docker 与 Kubernetes 对比三、Redis集群部署实战四、Spring Boot项目 打包镜像?小结 一、使用Docker部署的好处 Docker的好处在于:在不同实例上运行相同的容器 Docker的五大优点: 持续部署与测试、多云服务平台支…

一、枚举类型——新特性(模式匹配-支配性)

switch 中 case 语句的顺序很重要。如果基类先出现,就会支配任何出现在后面的 case: Dominance.java JDK 17 sealed interface Base { }record Derived() implements Base { }public class Dominance {static String test(Base base) {return switch (ba…

稳扎稳打学爬虫09—chromedriver下载与安装方法

chromedriver下载与安装方法 1. 获取chromedriver.exe2. 将chromedriver.exe 应用程序复制到浏览器的安装目录下3. 将chromedriver.exe 应用程序复制到python安装目录下4.进行测试5.有可能的报错 1. 获取chromedriver.exe http://chromedriver.storage.googleapis.com/index.h…

SpringBoot整合shiro项目完成认证功能

springboot整合shiro完成认证功能 一、准备阶段&#x1f95d; 1.创建springboot工程&#x1f353; 2.引入依赖&#x1f353; <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi&…

Visual Studio Code 编辑器实用插件简介

Visual Studio Code 编辑器插件 以下是一些常用的 Visual Studio Code 编辑器插件及其简短描述&#xff1a; 2gua.rainbow-brackets&#xff1a;在括号周围添加彩虹色的边框&#xff0c;以帮助区分不同层次的括号。adpyke.codesnap&#xff1a;将代码片段转换为漂亮的图片&am…

第66篇:顶级APT后门Sunburst通信流量全过程复盘分析(修正篇)

Part1 前言 由于先前文章存在部分错误&#xff0c;原文ABC_123已删除&#xff0c;上周末把文章修正&#xff0c;重新发布。 大家好&#xff0c;我是ABC_123。前面几周分享了Solarwinds供应链攻击事件的详细攻击流程及Sunburst后门的设计思路&#xff0c;但是多数朋友还是对Sun…

各种软件的启动界面(SplashScreen)修改汇总

最近装了新电脑&#xff0c;搞了一波萌化&#xff0c;顺便把我常用软件的启动界面也给换了&#xff0c;包括adobe全家桶、UE、3dsMax、Maya、JB家的几个&#xff0c;&#xff08;Office想换没换成功&#xff0c;找了很久没找到方法&#xff0c;不知道有没大佬知道&#xff09; …

在阿里云上部署Springboot项目

文章目录 环境准备1.安装jdk2.安装mysql3.开启端口 上传项目1.数据库上传2.项目上传 环境准备 1.安装jdk 查看系统中原来是否含有java环境 rpm -qa |grep java rpm -qa |grep jdk rpm -qa |grep gcj其中&#xff0c;gcj是一个轻巧的&#xff0c;性能优越的Java语言编译器。它…

SpringSecurityOAuth2 中 Miss grant type问题

SpringSecurityOAuth2 登录传值的时候会出现 Miss grant type问题 没有设置content-type问题 Content-Type: application/x-www-form-urlencoded 解决

timingPath/set_data_check和set_max_delay/set_multicycle_path

目录 0.timing path 1.set_data_check 1.1set_data_clk约束cdc path 1.2 set_data_check和set_max_delay区别和使用场景 2.set_mulicycle_path 0.timing path timing path的概念&#xff1a; start和end不只是reg的CP和REG的D pin 还可以是mem的D/Qpin和 port port--&…

大模型AI时代哪类人相对更「安全」

最近随着人工智能技术的发展&#xff0c;越来越多的工作被AI智能自动化取代&#xff0c;这导致了许多人失去了TA们的工作。这些人被视为首批因人工智能失业的人。虽然这些人的失业是非常令人遗憾的&#xff0c;但是我们可以从中获得一些启示&#xff0c;以应对未来可能出现的类…

颠覆你的认知,不用开通Plus会员也可以使用ChatGPT的插件功能(兼容3.5)

在看到这篇文章之前&#xff0c;你可能以为只有GPT4.0才能使用插件。但事实上&#xff0c;早就有人基于3.5开发了一套完整的插件体系了&#xff0c;不但可以使用插件&#xff0c;还可以自己开发插件。插件使用的就是JavaScript语法&#xff0c;开发起来可以说是相当简单了。 注…

excel中函数vlookup使用方法

1、VLOOKUP函数是Excel中的一个纵向查找函数&#xff0c;它与 LOOKUP函数和 HLOOKUP函数属于一类函数&#xff0c;在工作中都有广泛应用。VLOOKUP是按列查找&#xff0c;最终返回该列所需查询列序所对应的值&#xff1b;与之对应的HLOOKUP是按行查找的。接下来以5位同学成绩表为…

路径规划算法:基于吉萨金字塔建造优化的路径规划算法- 附代码

路径规划算法&#xff1a;基于吉萨金字塔建造优化的路径规划算法- 附代码 文章目录 路径规划算法&#xff1a;基于吉萨金字塔建造优化的路径规划算法- 附代码1.算法原理1.1 环境设定1.2 约束条件1.3 适应度函数 2.算法结果3.MATLAB代码4.参考文献 摘要&#xff1a;本文主要介绍…

pytorch—实现各种注意力

1.什么是Attention 所谓Attention机制&#xff0c;便是聚焦于局部信息的机制&#xff0c;比如图像中的某一个图像区域。随着任务的变化&#xff0c;注意力区域往往会发生变化。 面对上面这样的一张图&#xff0c;如果你只是从整体来看&#xff0c;只看到了很多人头&#xff0c…

JAVA ORM Bee 2.1.6 更简单,更易用;一行代码,即可完成一个表的 Sharding 分片配置

在一个工程里&#xff0c;同时使用 Mongodb 和 MySQL, 可以吗&#xff1f; 不但可以&#xff0c;还可以使用一套 Dao 的代码。 Java ORM Bee 不但支持 JDBC 类型的数据库&#xff0c;还支持 Mongodb, 也支持 Android, 鸿蒙. 最新功能介绍: V2.1.6 (2023・父亲节版) 1. 添加…

软件设计模式与体系结构-软件体系-调用-返回风格软件体系结构

目录 软件体系结构概述概述 一、调用-返回风格软件体系结构概念代码主程序-子程序软件体系结构自顶向下的设计方法的问题结构化设计的优缺点面向对象体系结构面向对象设计的优缺点主程序-子程序与面向对象体系结构相似差异 课程作业 软件体系结构概述 调用-返回风格软件体系结…