TCP三次握手、四次挥手(简易版)

TCP是面向连接的:在真正通讯之前,必须先建立一条通讯线路,必须先完成连接。
TCP完成连接的过程:(保证通讯线路畅通)

建立连接:
   三次握手基本过程
   ①客户端首先向服务器发送一个建立连接的请求,SYN被设置为1,为请求建立连接报文段。
   ②服务器在接收到建立连接的请求后会给客户端回馈消息,传回ACK=1,告诉客户端服务器收到了SYN,防止客户端重传SYN。服务器再向客户端回馈SYN,回馈可以连接。
   ③ 客户端向服务器发送ACK,对SYN的确认。

在这里插入图片描述
   三次握手状态变化
   ①客户端发起连接,将状态设置为SYN_SENT不同状态代表不同阶段
   ②服务器接收到SYN,将ACK,SYN发送出去后处于SYN_RCVD状态,即接收到客户端发送的SYN
   ③当客户端将ACK发送出去并且接收到了ACK,SYN处于已连接(ESTABLISHED)状态
   ④ 当服务收到ACK后,也处于已连接(ESTABLISHED)状态

在这里插入图片描述
问题:为什么是三次握手,不能是两次握手?
1.如果没有最后的一个ACK,则服务器会不断地超时重传ACK/SYN(第二个报文段)
2.若为2次会浪费服务器的资源(SYN溢出攻击或网络环境影响 客户端的SYN会被重传多次)

断开连接:
   四次挥手基本过程
   不分服务器与客户端,因为服务器与客户端都有可能断开,所以我们将其分为主动断开方与被动断开方。
   ①主动断开方向被动断开方发送一个请求断开连接报文FIN。(关闭主动方到被动方的传输通道)
   ②被动方收到FIN后,向主动断开方只回馈一个ACK消息。
   ③ 当过了一段时间以后,被动断开方向主动断开方再发送一个请求断开连接FIN报文。(关闭被动方到主动发的传输通道)
   ④主动断开方接收到FIN向被动断开方再回馈一个ACK,连接断开。

   问题:为什么要进行两次FIN?
   因为为全双工信道,任意时刻双方互相通讯,至少有2条通讯信道,一个FIN只能关一条,所以得有两个FIN。
在这里插入图片描述
   四次挥手状态变化
   ①主动方将FIN发送出去后处于FIN_WAIT_1状态
   ②当被动方接收到FIN并将ACK发出去后处于CLOSE_WAIT(等待关闭)状态
   ③当主动断开方接收到ACK后处于FIN_WAIT_2状态
   ④当被动方将最后一个FIN发出去后处于LAST_ACK(等待最后一个ACK)状态
   ⑤当主动方在收到了FIN并且将ACK发送出去后,处于TIME_WAIT状态
   ⑥当被动方接收到ACK后处于CLOSED状态
   ⑦主动断开方必须再等待一段时间到达CLOSE状态

   TIME_WAIT的意义(存在时间大约是2MSL:MSL为报文段在网络中最大生存时间):
         1.保证迟来的数据能被识别并丢弃
         2.保证可靠的终止TCP连接,防止对后续运行的程序造成影响(TIME_WAIT存在时间内,主动断开方无法用相
         同的IP地址端口号再启动一个网络通讯)

   TIME_WAIT与CLOSE_WAIT的区别:
         CLOSE_WAIT:处于被动断开方,仅仅属于断开过程中的一种状态
         TIME_WAIT:处于主动断开方,是一种特殊的状态

在这里插入图片描述
问题:有没有可能是三次挥手?有可能!
被动断开方的ACK与FIN在一起发向主动断开方,即它们同时断开连接,中间等待时间为0,即为三次挥手。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何在亚马逊,美客多,阿里国际,速卖通上安全地进行自养号测评?

借鉴亚马逊等跨境电商市场的经验,我们建议选取具备以下特点的产品在平台上销售,以实现需求稳定、竞争较低、利润较高,同时规避法律纠纷和质检问题。首先,应选择体积小、重量轻、易于运输的商品,这有助于降低运输成本和…

Java 2:运算符、表达式和语句

2.1 运算符与表达式 Java提供了丰富的运算符,如算术运算符、关系运算符、逻辑运算符、位运算符等。Java语言中的绝大多数运算符和C语言相同,基本语句如条件分支语句,循环语句等,也和C语言类似。 2.1.1算术运算符与算术表达式 1…

vue打包优化,webpack的8大配置方案

vue-cli 生成的项目通常集成Webpack ,在打包的时候,需要webpack来做一些事情。这里我们希望它可以压缩代码体积,提高运行效率。 文章目录 (1)代码压缩:(2)图片压缩:&…

计算机网络——17多路复用和解复用

多路复用和解复用 多路复用/解复用 在发送方主机多路复用 从多个套接字接收来自多个进程的报文,根据套接字对应的IP地址和端口号等信息对报文段用头部加以封装(连头部信息用于以后的解复用) 在接收方主机多路解复用 根据报文段的头部信息中…

揭秘铷原子钟:北斗卫星系统的“心脏”

揭秘铷原子钟:北斗卫星系统的“心脏” 近日,中国科学院精密测量科学与技术创新研究院的梅刚华团队发布了一项重要成果。他们成功将铷原子钟的短期频率稳定度提高到了E-14(即10的负14次方,相当于百万亿分之一)的量级&a…

七个常用的机器学习算法详解:决策树与随机森林的深入解析

hello宝子们...我们是艾斯视觉擅长ui设计和前端开发10年经验!希望我的分享能帮助到您!如需帮助可以评论关注私信我们一起探讨!致敬感谢感恩! 在机器学习中,决策树和随机森林是两个非常常用的算法。它们都属于监督学习的…

Nginx学习笔记

Bilibili尚硅谷视频 Nginx 简介 Nginx 概述 Nginx (“engine x”) 是一个高性能的 HTTP 和 反向代理服务器,特点是占有内存少,并发能力强,能经受高负载的考验,有报告表明能支持高达 50,000 个并发连接数 。 正向代理 正向代理:如…

Ditto:提升剪贴板体验的宝藏软件(复制粘贴效率翻倍、文本处理好助手)

名人说:莫道桑榆晚,为霞尚满天。——刘禹锡(刘梦得,诗豪) 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 目录 一、什么是Ditto?二、下载安装三、如…

Tomcat要点总结

一、Tomcat 服务中部署 WEB 应用 1.什么是Web应用 (1) WEB 应用是多个 web 资源的集合。简单的说,可以把 web 应用理解为硬盘上的一个目录, 这个目录用于管理多个 web 资源。 (2)Web 应用通常也称之为…

多模态(三)--- BLIP原理与源码解读

1 BLIP简介 BLIP: Bootstrapping Language-Image Pre-training for Unified Vision-Language Understanding and Generation 传统的Vision-Language Pre-training (VLP)任务大多是基于理解的任务或基于生成的任务,同时预训练数据多是从web获…

【大厂AI课学习笔记】【2.1 人工智能项目开发规划与目标】(7)特征工程的基本方法

今天来学习特征工程的基本方法。 基本方法包括:特征选择(Feature Selection)、特征提取(Feature Extraction)和特征构建(Feature Construction)。 一、特征选择(Feature Selection&a…

智慧图书管理系统架构设计与实现

随着数字化时代的到来,智慧图书管理系统在图书馆和机构中扮演着重要的角色。一个优秀的图书管理系统不仅需要满足基本的借阅管理需求,还需要具备高效的性能、良好的扩展性和稳定的安全性。本文将讨论智慧图书管理系统的架构设计与实现,以满足…

shell脚本之高级变量

目录 一、高级变量赋值 1、高级变量赋值总结表 2、相关操作 二、变量间接引用 1、eval命令 一、高级变量赋值 1、高级变量赋值总结表 变量配置方式str 无配置str 为空字符串str 已配置为非空字符串var${str-expr}varexprvarvar$strvar${str:-expr}varexprvarexprvar$str…

GPT-4对编程开发的支持

在编程开发领域,GPT-4凭借其强大的自然语言理解和代码生成能力,能够深刻理解开发者的意图,并基于这些需求提供精准的编程指导和解决方案。对于开发者来说,GPT-4能够在代码片段生成、算法思路设计、模块构建和原型实现等方面给予开…

H5 个人引导页带赞助版源码

H5 个人引导页带赞助版源码 源码介绍:一款带有4个选项的H5自适应引导页,右侧有QQ和微信联系按钮。带有三个赞助按钮。 下载地址: https://www.changyouzuhao.cn/9883.html

印度基金低风险套利回顾

2024年1月19日当天,印度基金(164824)开放申购,限额申购100元,当天溢价率13%左右,这个溢价率已经非常可观了,当然要祭出一拖七大法搞它一把! 一拖七套利原理简介 详细的原理和方法可自行在雪球搜索&#…

yolov8源码解读Detect层

yolov8源码解读Detect层 Detect层解读网络各层解读及detect层后的处理 关于网络的backbone,head,以及detect层后处理,可以参考文章结尾博主的文章。 Detect层解读 先贴一下全部代码,下面一一解读。 class Detect(nn.Module):"""YOLOv8 …

每日五道java面试题之java基础篇(十一)

目录: 第一题. Java死锁如何避免?第二题. 为什么⽤线程池?解释下线程池参数?第三题. 线程池的底层⼯作原理第四题. ReentrantLock中tryLock()和lock()⽅法的区别第五题. Sychronized和ReentrantLock的区别? 第一题. Java死锁如何避免&#x…

Open CASCADE学习|曲线的切线

今天要实现的功能是在曲线的终点处沿切线方向延长该曲线。为了解决这个问题,需要求解该曲线在终点处的坐标值以及切矢量。问题转化为:已知曲线TopoDS_Edge aE,求其在终点处的坐标值及切线方向向量。 首先,将TopoDS_Edge对象转化为…

数组转二叉树的一种方法-java(很特殊)

上代码 Node节点的代码 public class ThreadNode {private int data;private ThreadNode left;private boolean leftTag; // 左子节点是否为线索private ThreadNode right;private boolean rightTag; // 右子节点是否为线索// ... 省略get和set方法// ... 省略构造方法// ... …