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连接的关闭。

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

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

相关文章

前端-DOM树

dom树描述网页元素关系的一个专有名词,如html内包含了head、body,而head内包含meta、title、script等,body内包含div等元素;网页所有内容都在document里面,网页内容以树状形式排列,所以称之为dom树 dom树内…

Docker 入门笔记

课程地址 容器技术概述 docker能做什么:将应用程序代码和依赖打包为一个镜像,作为交付介质,在各种环境中部署 相比于虚拟机,docker 只虚拟出一个隔离的程序运行环境,其需要则资源大大减少 容器内的程序就好像直接运…

跨境电商新趋势:直播带货携手网红经济,品牌销售转化大提升

近年来,随着互联网技术的不断发展,跨境电商行业呈现出蓬勃的发展态势。在这个竞争激烈的环境中,直播带货作为一种新兴而高效的推广手段,不仅成为品牌提升知名度、吸引目标受众的重要工具,更是跨境电商领域中一种备受瞩…

【Go语言】Go语言中的字典

Go语言中的字典 字典就是存储键值对映射关系的集合,在Go语言中,需要在声明时指定键和值的类型,此外Go语言中的字典是个无序集合,底层不会按照元素添加顺序维护元素的存储顺序。 如下所示,Go语言中字典的简单示例&…

开工大吉,接单助你!

新年的气息逐渐散去,打工人重返岗位,开启新一年的搬砖! 虽说,个个都叫嚷着“这个班是非上不可不可嘛?!”但不少人新年的第一条朋友圈却是“开工大吉”。好吧, 在生活和金钱的威逼利诱下&#…

NOIP 2007 普及组初赛试题及解析

NOIP 2007 普及组初赛试题及解析 一. 单项选择题 (共20题,每题1.5分,共计30分。每题有且仅有一个正确答案.)。二. 问题求解(共2题,每题5分,共计10分)三. 阅读程序写结果(…

element ui富文本编辑器的使用(quill-editor)

引用组件 <el-form-item label"内容"><editor v-model"obj.activity_content" :min-height"192"/> </el-form-item> 组件封装 <template><div><el-upload:action"uploadUrl":before-upload"…

【教3妹学编程-算法题】标记所有下标的最早秒数 I

3妹&#xff1a;2哥2哥&#xff0c;你有没有看到上海女老师出轨男学生的瓜啊。 2哥 : 看到 了&#xff0c;真的是太毁三观了&#xff01; 3妹&#xff1a;是啊&#xff0c; 老师本是教书育人的职业&#xff0c;明确规定不能和学生谈恋爱啊&#xff0c;更何况是出轨。 2哥 : 是啊…

车规级专用芯片技术中的NCV8705MT33TCG 超低噪音 LDO稳压器,为用户带来了前所未有的智能体验!

关于车规级芯片&#xff08;Automotive Grade Chip&#xff09;&#xff1a; 车规级芯片是专门用于汽车行业的芯片&#xff0c;具有高可靠性、高稳定性和低功耗等特点&#xff0c;以满足汽车电子系统的严格要求。这些芯片通常用于车载电子控制单元&#xff08;ECU&#xff09;…

Google checkstyle实战

概述 CheckStyle检查代码是否符合制定的规范。CheckStyle检查是基于源码的&#xff0c;无需编译&#xff0c;执行速度快。 CheckStyle的主要流程是&#xff1a; 对Java文件进行词法语法分析&#xff0c;生成语法树。载入配置文件&#xff08;checkstyle-metadata.xml以及自定…

C++——模板详解

目录 模板 函数模板 显示实例化 类模板 模板特点 模板 模板&#xff0c;就是把一个本来只能对特定类型实现的代码&#xff0c;变成一个模板类型&#xff0c;这个模板类型能转换为任何内置类型&#xff0c;从而让程序员只需要实现一个模板&#xff0c;就能对不同的数据进行操…

数据库子父结构表,树状结构数据进行递归查询

表结构&#xff1a; 三个字段如图所示&#xff0c;目标是获取每条数据的根id&#xff08;父id为0的数据根id就是自己的id,否则一直根据父id去查找一直找到父id为0的数据&#xff0c;此数据的id就是根id&#xff09; 业务中实际的解决办法&#xff1a; 新加一个字段进行存储&…