TCP三次握手与四次挥手

TCP三次握手与四次挥手
TCP三次握手与四次挥手解析

  • 客户端连接服务器(三次握手)
  • 客户端关闭与服务器连接(四次挥手)
    总结

TCP三次握手与四次挥手、流量控制(滑动窗口)、拥塞控制、半连接状态、2MSL

TCP三次握手与四次挥手

在这里插入图片描述

TCP标志位:

标志位含义
SYN建立连接
ACK响应确认
FIN结束
RST重置
PSH推送
URG紧急

TCP 三次握手(TCP Three-Way Handshake)

  1. 客户端发送同步序列号(SYN)报文: 客户端发送一个TCP报文,其中SYN位被置为1,表示请求建立连接。同时,客户端会选择一个初始序列号(ISN,Initial Sequence Number)。

  2. 服务器回应同步序列号(SYN)和确认序列号(ACK)报文: 服务器收到客户端的SYN报文后,如果同意建立连接,会以自己的SYN报文作为应答,并将确认序列号设置为客户端的ISN加1,同时自己也选择一个初始序列号。

  3. 客户端发送确认序列号(ACK)报文: 客户端收到服务器的SYN报文后,会发送一个带有ACK的报文,确认收到了服务器的连接应答。服务器收到这个报文后,完成三次握手,连接建立。

TCP 四次挥手(TCP Four-Way Handshake)

  1. 客户端发送结束连接报文(FIN): 客户端完成所有数据的发送后,发送一个带有FIN标志的TCP报文,表示数据发送完毕,请求断开连接。

  2. 服务器确认结束连接报文(ACK): 服务器收到客户端的FIN报文后,发送一个带有ACK的报文,表示已经接收到断开连接的请求。

  3. 服务器发送结束连接报文(FIN): 服务器在完成数据发送后,也向客户端发送一个带有FIN标志的报文,请求断开连接。

  4. 客户端确认结束连接报文(ACK): 客户端收到服务器的FIN报文后,发送一个带有ACK的报文,确认收到了服务器的断开请求。此时,连接完全断开。

以上过程是TCP连接的建立和断开的基本流程。在实际应用中,可能会有一些优化和调整,但这是基本的握手和挥手过程。

TCP三次握手与四次挥手解析

客户端连接服务器(三次握手)

第一个阶段 初始链接阶段
在这里插入图片描述

第一次握手

SYN, seq=x

客户端 连接connect() 带上序列号X给服务器消息,客户端进入SYN-SEND的同步发送状态

第二次握手

SYN, seq=y, ACK=x+1

服务器 侦听listen() 相关的端口,通常HTTP协议请求端口,80端口和HTTPS的443端口

服务器监听到端口应用收到了消息后,给客户端回复带上自己的序列号Y,并带上ACK确认码(应答信号)为客户端带来的序列号+1

服务器进入SYN-RCVD的同步已回复状态

第三次握手

ACK=y+1

客户端收到了服务器的回复,带上服务器回复的序列号+1的确认码发送给服务器,建立链接成功,就可以进行数据的传递了

客户端关闭与服务器连接(四次挥手)

四次挥手是当客户端打算关闭连接
在这里插入图片描述

第一次挥手

客户端会主动带上握手时客户端确认码作为序列号发送给服务器断开连接

seq=u

客户端进入结束等待为 1的状态 FIN-WAIT-1

第二次挥手

服务器收到了客户端断开消息,会带上自己的序列号v,即客户端带来的序列号+1,作为确认码回复给客户端

seq=v, ACK=u+1

服务器进入CLOSE WAIT等待关闭的状态

客户端进入继续等待为 2的状态 FIN-WAIT-2

第三次挥手

服务器没有进一步的消息发送时,带上序列号w和客户端带来的序列号+1的确认码给客户端发送关闭请求

seq=w, ACK=u+1

然后服务器进入LAST-ACK 最后确认状态

第四次挥手

客户端收到了服务器的关闭请求后,带上服务器最后一次发送的序列号+1,和序列号+1的确认码回复服务器

seq=w+1, ACK=u+1

于是服务器关闭了链接

客户端进入了定时等待时间TIME_WAIT,即两个报文的最大生存周期时间,根据操作系统不同大约时1-4分钟,之后客户端才真正的断开

总结

当输入网站按下回车
第一步 是DNS找域名对应的IP
接下来三次握手进入初始链接阶段
每次链接都要经历TCP/IP七层模型
连接初始成功后
进入第二阶段 SSL的加密协议的证书协商阶段
接下来是服务器准备我们需要的内容,准备好内容后,就是客户端下载内容阶段

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深度学习-模型调试经验总结

1、 这句话的意思是:期望张量的后端处理是在cpu上,但是实际是在cuda上。排查代码发现,数据还在cpu上,但是模型已经转到cuda上,所以可以通过把数据转到cuda上解决。 解决代码: tensor.to("cuda")…

分享66个焦点幻灯JS特效,总有一款适合您

分享66个焦点幻灯JS特效,总有一款适合您 66个焦点幻灯JS特效下载链接:https://pan.baidu.com/s/10bqe09IAZt_hbsZlXaxkxw?pwd6666 提取码:6666 Python采集代码下载链接:采集代码.zip - 蓝奏云 学习知识费力气,…

C++-内存管理

目录 一.C/C内存分布 二. C语言中动态内存管理方式:malloc/calloc/realloc/free 三. C内存管理方式 1.new/delete操作内置类型 2.new和delete操作自定义类型 四.C语言中的动态开辟内存空间和C中的区别 1.对于开辟内置类型 2.…

office tool plus工具破解word、visio等软件步骤

第一步:下载工具 破解需要用到office tool plus软件 office tool plus软件下载地址:Office Tool Plus 官方网站 - 一键部署 Office 选择其中一个下载到本地(本人选择的是第一个的云图小镇下载方式) 第二步:启动工具 …

群晖NAS:docker(Container Manager)、npm安装Verdaccio并常见命令集合

群晖NAS:docker(Container Manager)、npm安装Verdaccio并常见命令集合 自建 npm 资源库,使用Verdaccio。如果觉得麻烦,直接可以在外网注册 https://www.npmjs.com/ 网站。大同小异,自己搭建搭建方便局域网…

内存函数​(memcpy、memmove、memset、memcmp)

目录 一、memcpy的使用和实现 使用: 模拟实现: 二、memmove 使用和模拟实现 模拟实现: 2.1难点: 覆盖拷贝所在的问题 memset的使用 memcmp的函数的使用​ 一、memcpy的使用和实现 memcpy 拷贝的就是不重叠的内存。 参数…

ChatGPT 的 18 种玩法,你还不会用吗?

你确定,你会使用 ChatGPT 了吗? 今天给大家整理了 18 种 ChatGPT 的用法,看看有哪些方法是你能得上的。 用之前我们可以打开R5Ai平台,可以免费使用目前所有的大模型 地址:R5Ai.com 语法更正 用途:文章…

ChatGPT 问世一周年之际,开源大模型能否迎头赶上?

就在11月30日,ChatGPT 迎来了它的问世一周年,这个来自 OpenAI 的强大AI在过去一年里取得了巨大的发展,迅速吸引各个领域的用户群体。 我们首先回忆一下 OpenAI和ChatGPT这一年的大事记(表格由ChatGPT辅助生成)&#x…

c语言-联合体和枚举

文章目录 一、联合体1. 联合体类型的声明和创建2. 联合体的特点3. 联合体大小的计算4.总结 二、枚举1. 枚举类型的声明2. 枚举类型的优点3. 枚举类型的使用 一、联合体 (1) 像结构体⼀样,联合体也是由一个或者多个成员构成,这些成…

Vue3实现滚动到容器底部时发送请求,加载新数据

问题来源 在项目中出现了需要在容器滚动到底部时,加载新的数据的需求,以下是解决的方案笔记 解决 画了个流程图: 如图,先添加一个动态加载的图标,还有全部数据载完的《到底啦...》 大概这么个样子,之后呢…

SQL Server数据库部署

数据库简介 使用数据库的必要性 使用数据库可以高效且条理分明地存储数据,使人们能够更加迅速、方便地管理数据。数据库 具有以下特点。 》可以结构化存储大量的数据信息,方便用户进行有效的检索和访问。 》 可以有效地保持数据信息的一致性&#xff0c…

Button初了解

Button 由TextView派生而来,二者的区别有: Button有默认的按钮背景,TextView默认无背景Button的内部文本默认居中对齐,而TextView的默认靠左对齐2023年以前,Button默认将英文换为大写,而TextView保持原始的…

大数据读本:暴雨以数字技术助力传统产业数字化转型

发展数字经济,产业数字化是重要引擎。暴雨作为数字经济的领军企业,近年来积极利用数字技术对传统产业进行全方位、全角度、全链条的改造,提高要素生产率,释放数字对经济发展的放大、叠加、倍增作用。在农业产业化方面,…

vue3请求代理proxy中pathRewrite失效

问题引入 在vue3配置请求代理proxy的时候pathRewrite失效。 有这样一个例子,作用是为了把所有以/api开头的请求代理到后端的路径和端口上,在vue.config.js配置文件中 设置了代理跨域和默认端口。但是重新运行之后发现端口是改了,但是路径仍然…

维基百科文章爬虫和聚类:高级聚类和可视化

一、说明 维基百科是丰富的信息和知识来源。它可以方便地构建为带有类别和其他文章链接的文章,还形成了相关文档的网络。我的 NLP 项目下载、处理和应用维基百科文章上的机器学习算法。 在我的上一篇文章中,KMeans 聚类应用于一组大约 300 篇维基百科文…

Redis 数据结构详解

分类 编程技术 Redis 数据类型分为:字符串类型、散列类型、列表类型、集合类型、有序集合类型。 Redis 这么火,它运行有多块?一台普通的笔记本电脑,可以在1秒钟内完成十万次的读写操作。 原子操作:最小的操作单位&a…

【5G PHY】5G NR 如何计算资源块的数量?

博主未授权任何人或组织机构转载博主任何原创文章,感谢各位对原创的支持! 博主链接 本人就职于国际知名终端厂商,负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作,目前牵头6G算力网络技术标准研究。 博客…

Python、Stata、SPSS怎么学?推荐一波学习资料

1.Python学习推荐书目 关于Python机器学习,推荐学习杨维忠、张甜所著的,清华大学出版社出版的《Python机器学习原理与算法实现》,以及张甜、杨维忠所编著的,清华大学出版社出版的《Python数据科学应用从入门到精通》,…

运维 | 关于IP网络相关的概念和原理

关注:CodingTechWork IP地址 IP介绍 概述 IP是TCP/IP协议族的核心,IP地址是电脑在网络中的唯一标识,全球唯一(G公网IP)。IP地址(Internet Protocol Address)是互联网协议地址,也…

SQL自学通之查询--SELECT语句的使用

一、前言 1、目标 在今天你将学习到以下内容: l 如何写SQL的查询 l 将表中所有的行选择和列出 l 选择和列出表中的选定列 l 选择和列出多个表中的选定列 2、背景 在上篇中我们简要地介绍了关系型数据库系统所具有的强大功能 在对 SQL 进行了 简要的介绍中我们…