TCP的三次握手和四次挥手 | 查看网络状态

三次握手和四次挥手是在计算机网络中用于建立和终止TCP连接的协议。这两个过程是TCP协议的重要组成部分,确保数据的可靠传输。

三次握手指的是在客户端和服务器之间建立连接时的步骤。具体流程如下:

  1. 客户端向服务器发送一个连接请求报文段(SYN)。
  2. 服务器收到请求后,回复一个确认报文段(SYN+ACK),表示可以建立连接。
  3. 客户端收到服务器的确认后,再次发送一个确认报文段(ACK),表示连接已建立。

通过这个三次握手的过程,双方确认了彼此的存在,并同意建立连接。这样,在数据传输过程中就能够确保双方之间的通信正常。

四次挥手指的是在客户端和服务器之间关闭连接时的步骤。具体流程如下:

  1. 客户端向服务器发送一个关闭连接请求报文段(FIN)。
  2. 服务器收到请求后,回复一个确认报文段(ACK),表示已收到客户端的关闭请求。
  3. 服务器执行完当前的数据传输任务后,发送一个关闭连接请求报文段(FIN)给客户端。
  4. 客户端收到服务器的关闭请求后,回复一个确认报文段(ACK)。双方都确认关闭连接。

通过这个四次挥手的过程,双方在关闭连接时相互通知,确保数据传输的完整性和正常关闭。

三次握手和四次挥手的设计是为了保证数据传输的可靠性。通过握手过程,双方建立了可靠的连接;通过挥手过程,双方能够安全地关闭连接,避免数据的丢失或不完整。这些步骤是TCP协议的基础,也是网络通信中重要的一环。

三次握手

在这里插入图片描述
在这里插入图片描述
运行服务端测试程序,服务端socket进入监听状态。
netstat -na|less 命令可以查看网络状态:
在这里插入图片描述
可以看到5005的口在LISTEN状态。
运行客户端的程序,重新在服务端的主机上查看。
在这里插入图片描述
可以看到131的外部地址端口为47856,132的本地地址宽口为5005。
socket包含两部分,IP地址和端口。
对服务端来说,端口是固定的设置的,这样客户端才能连上来,客户端的端口是随机分配的(不关心)。
客户端的网络状态:
在这里插入图片描述
握手过程:
在这里插入图片描述

三次握手是在TCP/IP协议中用于建立可靠的连接的过程。它由客户端和服务器之间的交互组成,确保双方都愿意进行通信,并且同步初始序列号。

以下是详细的三次握手过程:

  1. 第一步:客户端发送SYN请求

    • 客户端向服务器发送一个SYN(同步)请求包,其中包含随机生成的初始序列号(ISN)。这个序列号用于后续通信中标识数据包的顺序。
    • 客户端还设置了一个SYN标志位来表示这是一个连接请求。
  2. 第二步:服务器回应SYN-ACK

    • 服务器收到客户端的SYN请求后,如果接受连接,会向客户端发送一个SYN-ACK(同步-确认)响应包。
    • 服务器为自己生成一个随机的初始序列号(ISN),并将客户端的初始序列号加一作为确认号(ACK)发送给客户端。
    • 服务器同时设置SYN和ACK标志位,表示既同步又确认。
  3. 第三步:客户端发送ACK确认

    • 客户端收到服务器的SYN-ACK响应后,检查其中的确认号是否正确,并向服务器发送一个ACK(确认)包作为响应。
    • 客户端将服务器的初始序列号加一作为确认号发送给服务器,同时设置ACK标志位来表示确认操作。

这样,三次握手完成,客户端和服务器都知道对方愿意进行通信,并且双方的初始序列号也已经同步。数据传输阶段可以开始了。

需要注意的是,三次握手过程中可能会出现超时、网络延迟等情况,导致握手失败或延迟。而且,由于网络的不可靠性,即使完成了三次握手,仍然有可能出现丢包或重复包的情况,TCP协议通过序列号和确认号以及重传机制来处理这些问题。
在这里插入图片描述

四次挥手

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

四次挥手是TCP连接的关闭过程,由发起方和接收方共同完成。以下是四次挥手的详细介绍:

  1. 发起方(客户端)发送关闭连接请求:
    客户端首先向服务器发送一个FIN(Finish)包,表示希望关闭连接。这个包的序列号是X。

  2. 接收方(服务器)确认关闭连接请求:
    服务器接收到关闭连接请求后,会向客户端发送一个ACK(Acknowledgment)包,表示已经收到了关闭请求,并且准备关闭连接。这个ACK包的确认号是X+1。

  3. 接收方发送关闭连接请求:
    服务器发送完ACK包后,会进入CLOSE_WAIT状态,等待自己的应用程序结束数据传输。当应用程序结束后,服务器会向客户端发送一个FIN包,表示自己也准备关闭连接。这个FIN包的序列号是Y。

  4. 发起方确认关闭连接请求并关闭连接:
    客户端接收到服务器端发送的FIN包后,会发送一个ACK包作为确认,表示已经接收到关闭请求,并准备关闭连接。这个ACK包的确认号是Y+1。客户端发送完ACK包后,进入TIME_WAIT状态,等待一段时间后关闭连接。

在四次挥手过程中,有两个阶段需要等待一段时间。一个是服务器端等待应用程序结束数据传输的CLOSE_WAIT状态,另一个是客户端在TIME_WAIT状态下等待一段时间。这是为了确保网络中所有的数据包都已经传输完毕,以防止后续的重复连接。

总结起来,四次挥手过程是:
客户端发送FIN,服务器发送ACK;
服务器发送FIN,客户端发送ACK;
其中,FIN表示关闭连接请求,ACK表示确认收到请求。这样双方就完成了TCP连接的关闭。

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

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

相关文章

Promise 介绍与基本使用 - 学习笔记

Promise 介绍与基本使用 1、 Promise 是什么?2、创建 Promise 实例对象3、Promise 实例方法4、Promise 的基本工作流程5、实例方法6、静态方法7、async 和 await7.1、关键字7.2、实例7.3、区别7.4、为什么使用 async/await 比较好? 1、 Promise 是什么&a…

【EI会议征稿通知】2024年第三届生物医学与智能系统国际学术会议(IC-BIS 2024)

2024年第三届生物医学与智能系统国际学术会议(IC-BIS 2024) 2024 3rd International Conference on Biomedical and Intelligent Systems (IC-BIS 2024) 2024年第三届生物医学与智能系统国际学术会议(IC-BIS 2024) 将于2024年4月…

皇冠测评:网络电视盒子哪个品牌好?电视盒子排行榜

欢迎各位来到我们的测评频道,本期我们要分享的产品是电视盒子,因很多网友留言不知道网络电视盒子哪个品牌好,我们通过为期一个月的测评后整理了电视盒子排行榜,想买电视盒子的可以看看下面这五款产品,它们各方面表现非…

CSS_实现三角形和聊天气泡框

如何用css画出一个三角形 1、第一步 写一个正常的盒子模型&#xff0c;先给个正方形的div&#xff0c;便于观察&#xff0c;给div设置宽高和背景颜色 <body><div class"box"></div> </body> <style>.box {width: 100px;height: 100px…

如何使用Windows系统电脑无公网ip远程桌面Ubuntu系统

文章目录 前言1. ubuntu安装VNC2. 设置vnc开机启动3. windows 安装VNC viewer连接工具4. 内网穿透4.1 安装cpolar【支持使用一键脚本命令安装】4.2 创建隧道映射4.3 测试公网远程访问 5. 配置固定TCP地址5.1 保留一个固定的公网TCP端口地址5.2 配置固定公网TCP端口地址5.3 测试…

吴恩达机器学习全课程笔记第四篇

目录 前言 P61-P68 激活函数 Softmax算法 P69-P73 Adam算法 更多类型的层 模型评估 P74-P79 偏差和方差 建立表现基准 学习曲线 偏差和方差与神经网络 前言 这是吴恩达机器学习笔记的第四篇&#xff0c;第三篇笔记请见&#xff1a; 吴恩达机器学习全课程笔记第…

leetcode 重复的子字符串

前要推理 以abababab为例&#xff0c;这里最主要的就是根据相等前后缀进行推导 s [ 0123 ] 如 t【 0123 】 f 【01 23 】 后两个分别是前后缀&#xff0c;第一个是总的字符串&#xff0c;然后可以推导 //首先还是算出…

Fastadmin列表根据status或者固定条件来显示按钮的显示和隐藏

根据订单状态&#xff0c;显示“退款操作”按钮显示和隐藏 打开页面的js文件&#xff0c;在操作的这一列里面再加一个button按钮。也可以新起一列&#xff08;我在其他文章有写&#xff09;添加按钮。 row就是选中的这一些所有的数据。 {field: operate, title: __(Operate…

【c++】stack和queue模拟实现

> 作者简介&#xff1a;დ旧言~&#xff0c;目前大二&#xff0c;现在学习Java&#xff0c;c&#xff0c;c&#xff0c;Python等 > 座右铭&#xff1a;松树千年终是朽&#xff0c;槿花一日自为荣。 > 目标&#xff1a;能手撕stack和queue模拟 > 毒鸡汤&#xff1a;…

任务系统之API子任务

日常运维工作中有许多的任务要执行&#xff0c;例如项目发布/数据备份/定时巡检/证书更新/漏洞修复等等&#xff0c;大部分的任务都会有多个步骤共同完成&#xff0c;例如一个发布任务会有拉代码、编译、分发、通知等等步骤&#xff0c;而不同的任务可能还包含相同或相似的步骤…

web前端-html自定义列表

html 自定义列表 <!--有序列表 应用范围&#xff1a;试卷、问答--> <ol><li>Java</li><li>C</li><li>Python</li><li>C</li><li>VB</li> </ol><br><!--无序列表 应用范围&#xff1a…

【粉丝福利第一期】小 明

Q1 - 能否自我介绍下&#xff1f; 嗨&#xff0c;大家好&#xff0c;我是 小 明 &#xff08;小明java问道之路&#xff09;&#xff0c;互联网大厂后端研发专家&#xff0c;2022博客之星TOP3/博客专家/CSDN后端内容合伙人、InfoQ(极客时间)签约作者、阿里云签约博主、全网5万…

Apache Paimon Append Queue表解析

a) 定义 在此模式下&#xff0c;将append table视为由bucket分隔的queue。 同一bucket中的每条record都是严格排序的&#xff0c;流式读取将完全按照写入顺序将record传输到下游。 使用此模式&#xff0c;无需特殊配置&#xff0c;所有数据都将作为queue进入一个bucket&…

单/双通道40V 350mA车规级LDO稳压器高集成电流感应调节

概述 PC8803具有高输入电压单低压差调节器&#xff08;PC8803SC01/PC8803SCO3&#xff09;/双通道低压差调节&#xff08;PC8803SC02/PC8803SC04&#xff09;&#xff0c;具有精确的电流感测&#xff0c;设计用于在宽输入电压范围内工作 从4.5V到40V。该设备具有45V负载转储电…

redis中的分布式锁(setIfAbsent)(expire)

目录 应用场景 代码实例1&#xff1a; 代码实例2&#xff1a; setIfAbsent&#xff1a; expire&#xff1a; 举例说明&#xff1a; 代码实例3&#xff1a; 代码实例4&#xff1a; 还是一个同事问的一个问题&#xff0c;然后闲着没事就记录下来了。多人操作同一个保单&a…

智能印刷工厂如何通过引入工业物联网网关实现生产流程的智能化升级-天拓四方

项目背景 某大型印刷企业&#xff0c;面临着市场竞争加剧、生产成本上升和客户对交货时间要求越来越高等多重挑战。为了保持竞争力&#xff0c;该企业决定通过引入工业物联网网关来升级其印刷工厂&#xff0c;实现智能化生产。 应用方案 该企业选择了一款功能强大的工业物联…

HTML+CSS+JS:花瓣登录组件

效果演示 实现了一个具有动态花朵背景和简洁登录框的登录页面效果。 Code <section><img src"./img/background.jpeg" class"background"><div class"login"><h2>Sign In</h2><div class"inputBox"…

算法——滑动窗口之最大连续1的个数、将x减到0的最小操作数、水果成篮

3.最大连续1的个数 题目:. - 力扣&#xff08;LeetCode&#xff09; 题目要求的是给定一个二进制数组 nums 和一个整数 k&#xff0c;如果可以翻转最多 k 个 0 &#xff0c;则返回 数组中连续 1 的最大个数 。 按照题目正面去做,还要替换0,很麻烦 反正我们最后要求的是最长…

c++学习记录 deque容器—插入和删除

1、函数原型 1.1 两端插入操作&#xff1a; push_back(elem); //在容器尾部添加一个数据push_front(elem); //在容器头部插入一个数据pop_back(); //删除容器最后一个数据pop_front(); //删除容器第一个数据 1.2 指定…

【Python笔记-设计模式】备忘录模式

一、说明 备忘录模式是一种行为设计模式&#xff0c;允许在不暴露对象实现细节的情况下保存和恢复对象之前的状态。 (一) 解决问题 主要解决在不破坏封装性的前提下&#xff0c;捕获一个对象的内部状态&#xff0c;并在对象之外保存这个状态&#xff0c;以便在需要时恢复对象…