【网络基础进阶之路】一文弄懂TCP的三次握手与四次断开

news2024/10/5 21:20:08

系列文章:

【网络基础进阶之路】路由器间的静态综合详解

文章目录:

一、TCP协议

二、三次握手——建立连接

三、四次断开——结束连接

一、TCP协议

TCP是一种面向广域网的通信协议,目的是在跨越多个网络通信时,为两个通信端点之间提供一条具有下列特点的通行方式。

旨在适应支持多网络应用的分层协议层次结构。 连接到不同但互连的计算机通信网络的主计算机中的成对进程之间依靠TCP提供可靠的通信服务。TCP假设它可以从较低级别的协议获得简单的,可能不可靠的数据报服务。 原则上,TCP应该能够在从硬线连接到分组交换或电路交换网络的各种通信系统之上操作。

TCP具有下列特点的通信方式:

(1)基于流的方式;

(2)面向连接;

(3)可靠通信方式;

(4)在网络状况不佳的时候尽量降低系统由于重传带来的带宽开销;

(5)通信连接维护是面向通信的两个端点的,而不考虑中间网段和节点。

二、三次握手——建立连接

TCP是因特网中的传输层协议,使用三次握手协议建立连接。当主动方发出SYN连接请求后,等待对方回答SYN+ACK,并最终对对方的 SYN 执行 ACK 确认。这种建立连接的方法可以防止产生错误的连接,TCP使用的流量控制协议是可变大小的滑动窗口协议。

TCP三次握手的过程如下:

11db942d17d4412c98a51db27b626cfc.png

1、客户端发送SYN(SEQ=x)报文给服务器端,进入SYN_SENT状态。

2、服务器端收到SYN报文,回应一个SYN (SEQ=y)ACK(ACK=x+1)报文,进入SYN_RECV状态。

3、客户端收到服务器端的SYN报文,回应一个ACK(ACK=y+1)报文,进入Established状态。

三次握手完成,TCP客户端和服务器端成功地建立连接,就可以开始传输数据了。

三、四次断开——结束连接

建立一个连接需要三次握手,而终止一个连接要经过四次握手,这是由TCP的半关闭造成的。具体过程如下:

64f550694c7c44dca36bd36b7f244a46.png

1、某个应用进程首先调用close,称该端执行“主动关闭”)。该端的TCP于是发送一个FIN分节,表示数据发送完毕。

2、接收到这个FIN的对端执行 “被动关闭”,这个FIN由TCP确认。

PS:FIN的接收也作为一个文件结束符(end-of-file)传递给接收端应用进程,放在已排队等候该应用进程接收的任何其他数据之后,因为,FIN的接收意味着接收端应用进程在相应连接上再无额外数据可接收。

3、一段时间后,接收到这个文件结束符的应用进程将调用close关闭它的套接字。这导致它的TCP也发送一个FIN。

4、接收这个最终FIN的原发送端TCP(即执行主动关闭的那一端)确认这个FIN。既然每个方向都需要一个FIN和一个ACK,因此通常需要4个分节。

需要注意的是:无论是客户还是服务器,任何一端都可以执行主动关闭。通常情况是,客户执行主动关闭,但是某些协议,例如,HTTP/1.0却由服务器执行主动关闭。

就是因为TCP的三次握手和四次断开,给TCP传输带来了可靠性---确认,重传,排序,流控。

都看到这里了,创作不易,大家点个赞再走啦!!- ̗̀(๑ᵔ⌔ᵔ๑)

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

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

相关文章

如何利用闭环思维解决企业营销问题

彼得圣吉在他的畅销书《第五项修炼》一书中主要介绍了“系统思考”的第五项修炼,系统思考的方法有三个基本元件:不断增强的回馈,反复调节的回馈,和时间滞延。其不断增强的回馈其实就是增强闭环理论,其在企业管理中有很…

嘿嘿嘿~卷王来喽~今天我被卷s了,谁也白想活zhuo!

前言 嘿嘿嘿~热乎乎的卷王来喽,卷呀!你们怎么不卷!(啪!电脑一合),好!今天,我卷了,我得卷s,但是!我被卷了,你们也白想活着…

极狐GitLab 10 年开源研发管理实践:4 个核心步骤突破效能瓶颈

目录 研发效能实践的痛点 4 步击破痛点,提升研发效能 1. 明确目标 2. 优化研发流程 ➤ 2.1 文档先行 ➤ 2.2 可追踪的任务 ➤ 2.3 自动化工作流 3. 注重代码质量 ➤ 3.1 代码门禁:严格要求,提前报错 ➤ 3.2 合并请求:代…

Netty 入门指南

文章目录 前言Netty介绍Netty发展历程Netty核心组件实现HTTP服务器总结 前言 上文《BIO、NIO、IO多路复用模型详细介绍&Java NIO 网络编程》介绍了几种IO模型以及Java NIO,了解了在网络编程时使用哪种模型可以提高系统性能及效率。即使Java NIO可以帮助开发人员…

【java】【maven】【高级】MAVEN聚合继承属性等

目录 1、模块开发与设计 2、聚合 2、继承 3、属性 4、版本管理 5、资源配置 6、多环境配置 7、多环境开发配置 8、跳过测试 9、私服 前言:maven的高级使用包含分模块开发与设计、聚合、继承、属性、版本管理、资源配置、多环境配置、多环境开发配置、跳过…

软件测试缺陷报告

缺陷报告是描述软件缺陷现象和重现步骤地集合。软件缺陷报告Software Bug Report(SBR)或软件问题报告Software Problem Report(SPR) 作用:缺陷报告是软件测试人员的工作成果之一,体现软件测试的价值缺陷报…

如何知道企业是否办理过等保备案?哪里可以查询?

对于等保政策细节,大家还存在很多疑问,例如有人在问,如何知道企业是否办理过等保备案?哪里可以查询?今天我们就来简单聊聊,仅供参考。 如何知道企业是否办理过等保备案? 一般企业办理过等保备案…

RISC-V基础指令之shift移动指令slli、srli、srai、sll、srl、sra

RISC-V的shift指令是用于对一个寄存器或一个立即数进行位移运算,并将结果存放在另一个寄存器中的指令。位移运算就是把一个操作数的每一位向左或向右移动一定的位数,得到一个新的位。RISC-V的shift指令有以下几种: slli:左逻辑位…

8.3 作业

整理思维导图 2. 递归实现&#xff0c;输入一个数&#xff0c;输出这个数的每一位 #include <myhead.h> void fun(int t) {if(t 0) return;fun(t/10);printf("%d\n",t%10); } int main(int argc,const char *argv[]) {int t1623809; fun(t);return 0; } 3.递…

虹科方案 | 虹科AR助力汽车产业降本增效!

虹科AR远程解决方案 将高性能的Vuzix AR眼镜与工业远程软件相结合&#xff0c;一线员工使用AR眼镜呼叫专家&#xff0c;由远程专家进行诊断并给出建议&#xff0c;支持一线员工与远程专家实时语音视频交互、AR标注指引、发送文件图片并进行会议录制&#xff0c;帮助一线员工解放…

Linux--对同一个文件分别执行r和w指令,其得到的fd一样吗?

代码&#xff1a; #include <stdio.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h>int main() {int fdopen("log.txt",O_WRONLY|O_CREAT|O_TRUNC);printf("fd_w: %d\n",fd);fdopen("log.txt",O_…

关于账号安全的一些思考

0x01-提升账号安全的目的 注册账号是大多数作弊场景的第一步&#xff0c;例如交易场景的生单、营销场景的秒杀活动等都需要账号的参与。其次账号相对于设备、支付卡等能够给唯一标识用户的资源中具备更好的主动权&#xff0c;因此提升账号安全能力是有必要的。 0x02-问题分析…

TikTok数据分析 | 用好超店有数,生意增长快人一步

TikTok在东南亚崛起之快令人叹服。 在东南亚第一大经济体印度尼西亚&#xff0c;超过200万小商家入驻了TikTok的电商平台&#xff1b; TikTok Shop 以6.9亿美元的收入市场份额超越Lazada成为越南第二大电商平台&#xff1b; 2023年泰国TikTok Shop的销售额一路猛涨&#xff…

交互流程图设计软件都有哪些?

交互流程图是设计行业信息流、观点流或组件流的图形代表。但是市场上应该如何选择各种交互流程图软件呢&#xff1f;如何使用高质量的交互流程图软件来绘制高端氛围的高档流程图&#xff1f;今天&#xff0c;小边给您带来了十个超级实用的交互流程图软件&#xff0c;我希望能帮…

8-3作业

思维导图 递归实现&#xff0c;输入一个数&#xff0c;输出这个数的每一位 #!/bin/bashif (( $# < 1 )); thenexit 1 finum$1function print_digits {if (( $1 < 10 )); thenecho $1elseprint_digits $(( $1 / 10 ))echo $(( $1 % 10 ))fi }print_digits $num 递归实现&…

Word导出高清PDF

通过word导出pdf清晰度较高的方法_word如何导出高分辨率pdf_Perishell的博客-CSDN博客通过打印机属性设置&#xff0c;让word打印出比较高清的pdf_word如何导出高分辨率pdfhttps://blog.csdn.net/weixin_45390670/article/details/129228568?ops_request_misc%257B%2522reques…

【Spring】(一)Spring设计核心思想

文章目录 一、初识 Spring1.1 什么是 Spring1.2 什么是 容器1.3 什么是 IoC 二、对 IoC 的深入理解2.1 传统程序开发方式存在的问题2.2 控制反转式程序的开发2.3 对比总结 三、对 Spring IoC 的理解四、DI 的概念4.1 什么是 DI4.2 DI 与 IoC的关系 一、初识 Spring 1.1 什么是…

GoogLeNet卷积神经网络-笔记

GoogLeNet卷积神经网络-笔记 GoogLeNet是2014年ImageNet比赛的冠军&#xff0c; 它的主要特点是网络不仅有深度&#xff0c; 还在横向上具有“宽度”。 由于图像信息在空间尺寸上的巨大差异&#xff0c; 如何选择合适的卷积核来提取特征就显得比较困难了。 空间分布范围更广的…

性能测试jmeter连接数据库jdbc(sql server举例)

一、下载第三方工具包驱动数据库 1. 因为JMeter本身没有提供链接数据库的功能&#xff0c;所以我们需要借助第三方的工具包来实现。 &#xff08;有这个jar包之后&#xff0c;jmeter可以发起jdbc请求&#xff0c;没有这个jar包&#xff0c;也有jdbc取样器&#xff0c;但不能发起…

Mysql面试突击班索引,事务与锁

Mysql面试突击班索引&#xff0c;事务与锁 1.为什么Mysql要使用B树做为索引而不用B树 B树能显著减少IO次数&#xff0c;提高效率B树的查询效率更加稳定&#xff0c;因为数据放在叶子节点B树能提高范围查询的效率&#xff0c;因为叶子节点指向下一个叶子节点B树采取顺序读 2.…