欧易

欧易(OKX)

国内用户最喜爱的合约交易所

火币

火币(HTX )

全球知名的比特币交易所

币安

币安(Binance)

全球用户最多的交易所

C++基础语法梳理:计算机网络丨传输管理(TCP)

时间:2022-10-09 17:57:50 | 浏览:2710

TCP 传输连接管理因为 TCP 三次握手建立连接、四次挥手释放连接很重要,所以附上《计算机网络(第 7 版)-谢希仁》书中对此章的详细描述:https://gitee.com/huihut/interview/raw/master/ima

TCP 传输连接管理

因为 TCP 三次握手建立连接、四次挥手释放连接很重要,所以附上《计算机网络(第 7 版)-谢希仁》书中对此章的详细描述:
https://gitee.com/huihut/interview/raw/master/images/TCP-transport-connection-management.png

TCP 三次握手建立连接

【TCP 建立连接全过程解释】

客户端发送 SYN 给服务器,说明客户端请求建立连接;

服务端收到客户端发的 SYN,并回复 SYN+ACK 给客户端(同意建立连接);

客户端收到服务端的 SYN+ACK 后,回复 ACK 给服务端(表示客户端收到了服务端发的同意报文);

服务端收到客户端的 ACK,连接已建立,可以数据传输。

TCP 为什么要进行三次握手?

【答案一】因为信道不可靠,而 TCP 想在不可靠信道上建立可靠地传输,那么三次通信是理论上的最小值。(而 UDP 则不需建立可靠传输,因此 UDP 不需要三次握手。)

【答案二】因为双方都需要确认对方收到了自己发送的序列号,确认过程最少要进行三次通信。

【答案三】为了防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误。

TCP 四次挥手释放连接

【TCP 释放连接全过程解释】

客户端发送 FIN 给服务器,说明客户端不必发送数据给服务器了(请求释放从客户端到服务器的连接);

服务器接收到客户端发的 FIN,并回复 ACK 给客户端(同意释放从客户端到服务器的连接);

客户端收到服务端回复的 ACK,此时从客户端到服务器的连接已释放(但服务端到客户端的连接还未释放,并且客户端还可以接收数据);

服务端继续发送之前没发完的数据给客户端;

服务端发送 FIN+ACK 给客户端,说明服务端发送完了数据(请求释放从服务端到客户端的连接,就算没收到客户端的回复,过段时间也会自动释放);

客户端收到服务端的 FIN+ACK,并回复 ACK 给客户端(同意释放从服务端到客户端的连接);

服务端收到客户端的 ACK 后,释放从服务端到客户端的连接。

TCP 为什么要进行四次挥手?

【问题一】TCP 为什么要进行四次挥手? / 为什么 TCP 建立连接需要三次,而释放连接则需要四次?

【答案一】因为 TCP 是全双工模式,客户端请求关闭连接后,客户端向服务端的连接关闭(一二次挥手),服务端继续传输之前没传完的数据给客户端(数据传输),服务端向客户端的连接关闭(三四次挥手)。所以 TCP 释放连接时服务器的 ACK 和 FIN 是分开发送的(中间隔着数据传输),而 TCP 建立连接时服务器的 ACK 和 SYN 是一起发送的(第二次握手),所以 TCP 建立连接需要三次,而释放连接则需要四次。

【问题二】为什么 TCP 连接时可以 ACK 和 SYN 一起发送,而释放时则 ACK 和 FIN 分开发送呢?(ACK 和 FIN 分开是指第二次和第三次挥手)

【答案二】因为客户端请求释放时,服务器可能还有数据需要传输给客户端,因此服务端要先响应客户端 FIN 请求(服务端发送 ACK),然后数据传输,传输完成后,服务端再提出 FIN 请求(服务端发送 FIN);而连接时则没有中间的数据传输,因此连接时可以 ACK 和 SYN 一起发送。

【问题三】为什么客户端释放最后需要 TIME-WAIT 等待 2MSL 呢?

【答案三】

(1)为了保证客户端发送的最后一个 ACK 报文能够到达服务端。若未成功到达,则服务端超时重传 FIN+ACK 报文段,客户端再重传 ACK,并重新计时。

(2)防止已失效的连接请求报文段出现在本连接中。TIME-WAIT 持续 2MSL 可使本连接持续的时间内所产生的所有报文段都从网络中消失,这样可使下次连接中不会出现旧的连接报文段。

TCP 有限状态机

TCP 有限状态机图片

今天的分享就到这里了,大家要好好学C++哟~

写在最后:对于准备学习C/C++编程的小伙伴,如果你想更好的提升你的编程核心能力(内功)不妨从现在开始!

编程学习书籍分享:

编程学习视频分享:

整理分享(多年学习的源码、项目实战视频、项目笔记,基础入门教程)

欢迎转行和学习编程的伙伴,利用更多的资料学习成长比自己琢磨更快哦!

对于C/C++感兴趣可以关注小编在后台私信我:【编程交流】一起来学习哦!可以领取一些C/C++的项目学习视频资料哦!已经设置好了关键词自动回复,自动领取就好了!

相关资讯

八年级数学老师熬夜整理,计算能力弱必练:教材同步计算题训练

记得右上角点击关注,防止丢失,每日更新!很多学生在考试的时候感觉发挥得挺不错的,但是当分数出来时却发现并不是很理想。分析试卷后才发现,很多题目出错的原因不是因为不会,而是因为计算失误导致的,因为这样的原因丢分实在是太可惜了。计算能力弱的问题

C++基础语法梳理:计算机网络丨网络层(知识详解)

计算机网络各层作用及协议网络层IP(Internet Protocol,网际协议)是为计算机网络相互连接进行通信而设计的协议。ARP(Address Resolution Protocol,地址解析协议)ICMP(Internet Cont

C++基础语法梳理:计算机网络丨传输管理(TCP)

TCP 传输连接管理因为 TCP 三次握手建立连接、四次挥手释放连接很重要,所以附上《计算机网络(第 7 版)-谢希仁》书中对此章的详细描述:https://gitee.com/huihut/interview/raw/master/ima

C++基础语法梳理:计算机网络丨传输层(TCP&UDP)

运输层协议:TCP(Transmission Control Protocol,传输控制协议)UDP(User Datagram Protocol,用户数据报协议)端口:TCPTCP(Transmission Control Protoco

C++基础语法梳理:计算机网络丨物理层&数据链路层

计算机网络体系结构:各层作用及协议物理层传输数据的单位:比特数据传输系统:源系统(源点、发送器) --> 传输系统 --> 目的系统(接收器、终点)通道:单向通道(单工通道):只有一个方向通信,没有反方向交互,如广播双向交替通信

网络推广是什么?网络营销的方式,网络营销推广怎么做?

随着科技知识的进步与社会经济的发展,我们现在已经步入了网络营销时期,网络营销已经渗透到了我们社会生活与生产的各个领域。在网络时代,作为市场经济主体的企业应该顺应潮流,努力塑造网络营销中的企业文化,保证企业发展的凝聚力,把握正确的前进方向,

什么是网络营销?网络营销和网络推广有什么区别?

网络营销跟网络推广一样吗?不一样的,营销的概念是要大于推广的,那网络营销到底是什么?与网络推广又有着怎样的区别?网络营销具体包含哪些内容?今天帝佑科技小编就来讲述给大家。Marketing或E-Marketing简单来说,是建立在互联网的基

漯河市源汇区:“政策计算器”助推服务企业开新局

“政策计算器”上线后,实在是太方便了!”河南曙光健士集团负责人介绍,河南曙光健士集团不锈钢针管产品申报注册,从2021年1月14日企业首次自行申报,到企业申报成功花费了近8个月的时间,而现在有了“政策计算器”企业服务平台,可以快速的发现问题

5G、科技金融、云计算……迎江区全力建设安庆市数字经济示范区

4月24日,安庆市迎江区政府与中国电信安庆分公司签订“5G迎江”战略合作协议。根据计划,该区将实施优化数字基础设施、激发数据要素价值、优化产业发展布局、推进现代服务业与数字技术融合、推进工业与数字技术融合、推进农业与数字技术融合、谋划辖区大

近十年数据库流行趋势纵览!存储计算分离、ACID全面回归......

作者 | 黄东旭责编 | 郭 芮回看这几年,分布式系统领域出现了很多新东西,特别是云和 AI 的崛起,让这个过去其实不太 sexy 的领域一下到了风口浪尖,在这期间诞生了很多新技术、新思想,让这个古老的领域重新焕发生机。站在 2010s 的

计算机专业:老师也许会跳过的C语言基础知识,赶紧补上一课

对于理工科的大一新生来说,C 语言是个绕不开的坎。由于在进入大学前,许多人都完全没有接触过编程相关的内容,导致对于这门课的接受能力普遍偏低,学起来也非常费劲。这里就总结一些可能在课堂上老师不会详细讲解,但是对于理解 C 语言个人感觉比较重要

大学又不是人人都是计算机专业,为什么都要学C语言?

1.这个问题无异于:我又不出国,为什么要学英语呢?C语言的学习会为你建立较好的逻辑思维能力、解决问题的能力和构思能力,是一种非常实用的软能力。2.为什么我现在学的C语言一直都是黑窗口样子早期学编程的确都是在在窗口下学习,这可以更好地让大家了

计算机C语言好学吗?要是想自学应该怎么办?大学挂科赶紧恶补

C语言放在之前都是必备的基础语言,由于指针的存在很多人觉得C语言是一门特别难编程语言,放在十年前C语言是学习编程的必备语言,但整个软件行业发展趋势,趋向于高度集成化,所以编程语言集成度越来越高,目前非常流行的编程语言都高度集成化的编程语言。

为什么计算机专业必学C语言?既然是基础,那为何很多人学不懂?

计算机专业的学生,在大学都有必学的一门课程,那就是C语言,甚至于如果你的专业内容跟计算机打交道,也有可能是需要学习C语言的。由此可见C语言在计算机领域的重要性!那么作为计算机专业的入门编程语言,很多学生学完一学期,虽然是过了考试,但是却感

计算机编程|C语言简介

过年了,红包是少不了的,大家都收到红包了吗?今天呀,小编也送给你一个大红包,总钱数100元,总共包了10个,先到先得哦~~那你知道微信红包是怎么实现的吗?其实呀,它是对应一个算法的。上面是一个微信抢红包金额随机分布结果,那大家知道它是怎么来

友情链接

网址导航 SEO域名抢注宝宝起名网妈妈知道币圈今日沧州澳洲进口奶粉代购抽油烟机品牌网体育资讯网大健康项目网音响品牌网天梭收藏家老庙黄金首饰李晨影迷网西双版纳旅游攻略钢管舞培训网钦州新闻头条网茶具百科网山海关旅游攻略金至尊珠宝
c语言中文官网-零基础c++从入门到精通pdf、c语言编译器、C/C++开发工具、c语言入门自学零基础、c++入门自学、c/c++软件下载、c语言编程软件、c语言自学免费网站、c语言零基础自学视频教程、c++手机编程软件、c语言入门程序设计、初级编程视频教程、c语言在线编程平台、C语言线上作业网站。
c语言中文官网 chuxinxin.cn ©2022-2028版权所有