网络:TCP协议三次握手与四次挥手

news2024/12/23 17:26:06

一、理解TCP报文

TCP报文格式_TCP报文包含哪些内容:

TCP报头中的源端口号和目的端口号同IP数据报中的源IP与目的IP唯一确定一条TCP连接。
TCP在发送数据前必须在彼此间建立连接,这里连接意思是:双方需要内保存对方信息(例如:IP,Port…)

报文主要字段的解释
Sequence number 序号表示发送的数据字节流,确保TCP传输有序,对每个字节编号。
初始序号是随机的。
Acknowledge number确认序号发送方期待接收的下一序列号,接收成功后的数据字节序列号加 1。
只有ACK=1时才有效。
acknowledgementACK确认序号的标志
ACK=1表示确认号有效
ACK=0表示报文不含确认序号信息
synchronousSYN连接请求序号标志,用于建立连接
SYN=1表示请求连接
finishFIN结束标志,用于释放连接,为1表示关闭本方数据流
pushPSH传送
resetRST重置
urgentURG紧急
LISTEN等待从任何远端TCP 和端口的连接请求。
FIN_WAIT_1等待远端TCP 的连接终止请求,或者等待之前发送的连接终止请求的确认。
FIN_WAIT_2

等待远端TCP 的连接终止请求。

CLOSE_WAIT等待本地用户的连接终止请求
CLOSING等待远端TCP 的连接终止请求确认
LAST_ACK等待先前发送给远端TCP 的连接终止请求的确认(包括它字节的连接终止请求的确认)
TIME_WAIT等待足够的时间过去以确保远端TCP 接收到它的连接终止请求的确认。
CLOSED不再连接状态。

二、TCP三次握手过程分析

三次握手客户端发送信息服务端
第一次握手

客户端发送请求信息给服务器


1、客户端即不知道自己发送与接收的能力是否正常
2、客户端也不知道服务器发送与接收的能力是否正常

SYN=1
seq=x

服务器接收到客户端发来的信息


1、服务器知道客户端发送正常,不知道客户端接收的能力是否正常
2、服务器知道自己接收正常,不知道自己发送的能力是否正常。

第二次握手

客户端收到服务端发来的信息

1、客户端知道自己发送、接收正常
2、客户端知道服务端接收、发送正常

客户端全部知道

ACK=1
ack=x+1
SYN=1
seq=y
服务器发送信息给客户端
第三次握手客户端发给服务器seq=x+1
ACK=1
ack=y+1

服务器接收到客户端发来的信息

1、服务端知道客户端发送,接收正常
2、服务端知道自己发送、接收也正常
服务端全部知道

上面分析过程可以看出,握手两次达不到让双方都知道自己、对方的接收、发送能力都正常的结论的。
由此我们知道三次握手的目的是让--客户端、服务端 都知道自己和对方 接收和发送的能力正常。
所以三次握手不能少,多了浪费网络资源。

三、TCP四次挥手分析

四次挥手客户端发送信息服务端
第一次挥手客户端发送请求
FIN-WAIT-1状态
1
FIN=1
seq=u
 

 
第二次挥手ACK=1
ack=u+1
seq=v
服务端收到请求
服务端发送请求
CLOSE-WAIT状态
2
第三次挥手客户端收到服务器确认结果后进入FIN-WAIT-2状态
客户端发送
3
FIN=1
ACK=1
ack=u+1
seq=w
服务端发送信息
LAST-ACK状态
4
第四次挥手客户端收到回复
客户端发送
TIME-WAIT状态
客户端经过2个最长报文段寿命后,客户端CLOSE
5
ACK=1
ack=w+1
seq=u+1
服务端确认
服务端立刻进入CLOSE状态
6
四次挥手需要考虑服务端是否有正在发送的数据
所以客户端发起结束请求,服务端不能立即响应结束。
简单理解:
客户端发起结束请求
服务端收到请求,同时告诉客户端自己收到请求
服务端确认没有正在发送的数据,告诉客户端
客户端收到服务端的确认后结束,服务端结束

第一次挥手:客户端发出释放FIN=1,自己序列号seq=u,进入FIN-WAIT-1状态
第二次挥手:服务器收到客户端的后,发出ACK=1确认标志和客户端的确认号ack=u+1,自己的序列号seq=v,进入CLOSE-WAIT状态
第三次挥手:客户端收到服务器确认结果后,进入FIN-WAIT-2状态。此时服务器发送释放FIN=1信号,确认标志ACK=1,确认序号ack=u+1,自己序号seq=w,服务器进入LAST-ACK(最后确认态)
第四次挥手:客户端收到回复后,发送确认ACK=1,ack=w+1,自己的seq=u+1,客户端进入TIME-WAIT(时间等待)。客户端经过2个最长报文段寿命后,客户端CLOSE;服务器收到确认后,立刻进入CLOSE状态。

四、正是因为TCP协议三次握手、四次挥手所以TCP是安全连接,区别与UDP协议。

五、HTTP与TCP的关系

TCP是传输层协议,而HTTP是应用层协议。
HTTP基于TCP连接基础上,所以三次握手有人说是HTTP的有人说是TCP的,准确是TCP。
TCP就是单纯建立连接,不涉及任何我们需要请求的实际数据,简单的传输。
HTTP是用来收发数据的。

六、欢迎交流指正,关注我,一起学习。

参考链接

Http协议-TCP三次握手、四次挥手_http和tcp三次握手_皇城脚下的博客-CSDN博客

TCP 三次握手和四次挥手的简要描述_hakula007的博客-CSDN博客_描述三次握手

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

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

相关文章

leecode100_第7题接雨水_双指针

1 题目 2 分析 简述:两个指针分别指向两端,通过判断柱子的升降趋势来判断是否可以接水。 思路如下: 变量l_max,r_max分别记录当前时刻,左右遍历过的柱子的最高的高度,因为它奠定了水能积多高。分情况判断&#xff1a…

2437. 有效时间的数目

2437.有效时间的数目 给你一个长度为 5 的字符串 time ,表示一个电子时钟当前的时间,格式为 “hh:mm” 。最早 可能的时间是 “00:00” ,最晚 可能的时间是 “23:59” 。 在字符串 time 中,被字符 ? 替换掉的数位是 未知的 &am…

【Python三方库】使用tle2czml库将tle数据转为czml数据

原文作者:我辈李想 版权声明:文章原创,转载时请务必加上原文超链接、作者信息和本声明。 文章目录 一、安装tle2czml二、tle2czmlc创建czml三、tle转成czml1.字符串2.文件(网络文件) 四、czml参数修改 一、安装tle2czm…

【PWN · ret2syscall】[Wiki] ret2syscall

初次接触到ret2syscall,而ret2syscall的题目目前没有在各大平台的题目类型筛选中找到,所以还是刷一刷Wiki的经典题目吧!过程中遇到很多问题,包括偏移量的计算、ret2syscall原理的理解等等。尝试以萌新的视角,来分享、解…

网页版的 Redis 可视化工具来了,已开源

介绍 轻量级Redis缓存图形化管理工具,包含redis的5种数据类型的CRUD操作 软件架构 后端 springboot 2.2.2.RELEASE JDK 1.8 jedis 3.2.0 commons-lang3 3.5 hutool-core 5.1.1 fastjson 1.2.62 h2database 1.4.200 前端 vue-admin 1.0.5 axios 0.15.3 …

【Linux】exec函数族

目录 1、exec函数族的介绍2、exec相关函数 1、exec函数族的介绍 2、exec相关函数 #include <unistd.h> int execl(const char *pathname, const char *arg0, ... /* (char *)0 */ ); /* - path 需要指定的执行的文件的路径或者名称&#xff0c;相对路径or绝对路径- arg …

港联证券“中特估值”重塑可转债市场

中国特色估值体系&#xff08;简称“中特估值”&#xff09;正在重构以银行为核心的可转债市场。 尽管周二市场有所回落&#xff0c;但如火如荼的中特估值行情对可转债市场的影响巨大。受益于中信银行等强势上涨的表现&#xff0c;银行转债集体活跃。其中&#xff0c;齐鲁转债、…

美国访问学者J1签证申请攻略

J1签证主要签发给那些想来美国短期交流学习、学术访问、接受培训等&#xff0c;感受美国文化的人员。J1交流访问者签证包含多种类别&#xff0c;更特别的是&#xff0c;J1签证还允许持有签证人半工半读。这个非移民签证提供更多机会给外国人士来美国交流学习、传播文化并且获得…

RabbitMQ的SpringAMQP的各种模式的案例

目录 Basic Queue 简单队列模型 任务模型&#xff08;Work queues&#xff0c;也被称为&#xff08;Task queues&#xff09;&#xff09; 发布/订阅的广播&#xff08;Fanout&#xff09;模式 发布/订阅的定向&#xff08;Direct&#xff09;模式 发布订阅的通配&#xff08;…

HEVC学习之率失真优化

一、理论部分 率失真理论&#xff1a; 在给定失真的前提下如何最大限度第去除冗余。 在视频编码中的率失真理论为在给定码率RT的前提下最大限度的减少视频信息的失真&#xff0c;用数学描述为第一个式子所示&#xff0c;其中m*为取得最小码率时的编码方式&#xff0c;S为编码方…

使用MASA全家桶从零开始搭建IoT平台(三)管理设备的连接状态

文章目录 前言分析方案1:遗嘱消息演示遗嘱消息的使用实施流程 方案2:使用WebHook开启WebHook演示Webhook编写代码 前言 获取一个设备的在线和离线状态&#xff0c;是一个很关键的功能。我们对设备下发的控制指令&#xff0c;设备处于在线状态才能及时给我们反馈。这里的在线和…

SOLIDWORKS钣金折弯参数设置技巧

折弯系数早期是没有计算方法的&#xff0c;工厂都是根据实际经验确定下来的经验公式。 记录下来一个经验数据表或简单的经验公式。后来才出现的中性层概念&#xff0c;即既不伸长也不压缩的那一层为中性层。可以用来计算展开长度。SOLIDWORKS钣金折弯参数也是整合了所有的计算…

【C++】类和对象(中)---构造函数和析构函数

个人主页&#xff1a;平行线也会相交&#x1f4aa; 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 平行线也会相交 原创 收录于专栏【C之路】&#x1f48c; 本专栏旨在记录C的学习路线&#xff0c;望对大家有所帮助&#x1f647;‍ 希望我们一起努力、成长&…

【AI大模型】讯飞星火大模型能否超越chatgpt?我们拭目以待!

文章目录 前言你有使用过这种对话式AI吗&#xff1f;你对这类型AI有什么看法或感受&#xff1f;对于“讯飞星火大模型将超越chatgpt&#xff1f;”这个命题你的态度是什么&#xff1f;简要说说原因你认为这类型的人工智能对于现在的社会有哪些意义&#xff1f;对于这类型的人工…

GEE开发之MODIS_MCD12Q1数据分析和获取

GEE开发之MODIS_土地类型分类 0.MCD12Q1介绍1.遥感影像查看2.MCD12Q1分类介绍3.年数据下载&#xff08;LC_Type1/year/500m&#xff09; 前言&#xff1a;主要介绍MODIS的MCD12Q1产品&#xff0c;包括MCD12Q1产品的介绍、使用和下载。 0.MCD12Q1介绍 Terra 和 Aqua 组合的中分…

AI 大底座,大模型时代的答卷

文心一言的诞生 “文心一言就是在这个全国 AI 领域规模最大的高性能 GPU 集群上完成训练的。” 早在 2021 年 6 月&#xff0c;为了满足未来的大模型训练任务&#xff0c;百度智能云开始规划全新的高性能 GPU 集群的建设&#xff0c;联合 NVIDIA 共同完成了可以容纳万卡以上规…

华人再次突破芯片技术瓶颈,然而成果归美芯,中国芯可能输了?

外媒报道指华人研发团队已突破芯片的极限&#xff0c;晶体管厚度只有三个原子那么大&#xff0c;达到0.3纳米&#xff0c;打破了此前芯片业界认为的1纳米是硅基芯片技术极限的概念&#xff0c;然而这项技术却是归美国所有。 这次取得技术突破的研发团队是麻省理工研究所&#x…

云服务器安装宝塔Linux面板命令脚本大全

阿里云服务器安装宝塔Linux面板&#xff0c;操作系统不同安装命令脚本也不同&#xff0c;支持CentOS、Alibaba Cloud Linux、Ubuntu/Deepin等Linux系统&#xff0c;阿里云服务器网分享阿里云服务器安装宝塔Linux面板命令脚本大全&#xff1a; 云服务器安装宝塔Linux面板命令 …

无公网IP,公网SSH远程访问家中的树莓派

文章目录 前言如何通过 SSH 连接到树莓派步骤1. 在 Raspberry Pi 上启用 SSH步骤2. 查找树莓派的 IP 地址步骤3. SSH 到你的树莓派步骤 4. 在任何地点访问家中的树莓派4.1 安装 Cpolar内网穿透4.2 cpolar进行token认证4.3 配置cpolar服务开机自启动4.4 查看映射到公网的隧道地址…

多时相遥感深度学习作物提取方法综述(万字长文)

一、 引言 本人研究的方向是遥感作物分布提取,想基于多时相、深度学习和GEE平台展开研究,现对相关文献进行资料调研。深度学习和遥感原本属于2个研究方向,现在已经有越来越多的研究开始将深度学习算法应用到遥感领域。 传统遥感研究人员重视遥感数据本身,善于分析作物生长…