0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

浅析C++基础语法梳理之计算机网络中传输管理(TCP)

C语言编程学习基地 来源:C语言编程学习基地 作者: C语言编程 2021-10-26 10:17 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

TCP 传输连接管理

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

TCP 三次握手建立连接

2298daea-357f-11ec-82a8-dac502259ad0.png

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

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

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

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

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

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

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

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

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

TCP 四次挥手释放连接

2303d3b8-357f-11ec-82a8-dac502259ad0.png

【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 有限状态机图片

23806d6a-357f-11ec-82a8-dac502259ad0.png

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

编辑:jq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • TCP
    TCP
    +关注

    关注

    8

    文章

    1437

    浏览量

    83896
  • C++
    C++
    +关注

    关注

    22

    文章

    2131

    浏览量

    77496
  • 服务端
    +关注

    关注

    0

    文章

    69

    浏览量

    7396

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

文章出处:【微信号:cyuyanxuexi,微信公众号:C语言编程学习基地】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    计算机网络学习笔记】初始网络网络发展和OSI七层模型

    设置(计分板) font = pygame.font.Font(None, 36) class Tetromino: \"\"\"方块类:管理单个下落的俄罗斯方块
    发表于 04-29 12:34

    计算机专业408考研科目

    ”模型。 在这个阶段,不要急于背诵数据结构的代码或操作系统的算法,而是要理解计算机是如何“思考”的。你需要将数据结构视为信息的组织方式,将组成原理视为信息的物理载体,将操作系统视为资源的管理者,将网络视为
    发表于 04-11 16:44

    十进制计算机硬件体系结构及“独值”量化逻辑运算革命(一)

    采用“独值”量化逻辑理论设计十进制数字计算机,十进制网络计算机,十进制模拟计算机,十进制模糊计算机,实现
    的头像 发表于 01-29 09:13 1192次阅读
    十进制<b class='flag-5'>计算机</b>硬件体系结构及“独值”量化逻辑运算革命(一)

    CC++之间的联系

    1、语法兼容性: C++完全兼容C语言的语法,这意味着任何有效的C语言程序都可以直接在C++
    发表于 12-11 06:51

    socket是什么

    于在不同计算机之间传输数据。Socket技术可以用于实现各种网络应用,例如客户端-服务器应用,点对点应用等。 在计算机网络,Socket技
    发表于 12-03 08:27

    2025国高校计算机大赛人工智能创意赛圆满落幕

    11月2日,2025国高校计算机大赛-人工智能创意赛(C4-AI竞赛)在海南大学海甸校区正式落下帷幕。
    的头像 发表于 11-05 15:39 839次阅读

    为什么网络需要DHCP服务器?

    DHCP是一种网络协议,全称为动态主机配置协议(Dynamic Host Configuration Protocol)。它被用于在计算机网络自动分配IP地址和其他网络配置信息给客户
    的头像 发表于 09-29 11:22 2408次阅读
    为什么<b class='flag-5'>网络</b>需要DHCP服务器?

    什么是NIC(网络接口卡)?

    网络接口卡(NIC)是一种基本的硬件组件,它使计算机或设备能够连接到网络。它可以集成到主板,也可以作为扩展卡安装在计算机上,这标志着它在
    的头像 发表于 09-22 14:54 1884次阅读
    什么是NIC(<b class='flag-5'>网络</b>接口卡)?

    【作品合集】赛昉科技VisionFive 2单板计算机开发板测评

    赛昉科技VisionFive 2单板计算机开发板测评作品合集 产品介绍: 昉·星光 2是全球首款集成了3D GPU的高性能量产RISC-V单板计算机,搭载昉·惊鸿-7110(型号:JH-7110
    发表于 09-04 09:08

    工业计算机的重要性

    管理用于产品检查、数据记录和数据分析的运动控制系统,以提高制造生产率。例如,汽车行业从工业边缘计算机中受益匪浅,这些计算机用于自动化制造汽车所涉及的各种过程。工业边
    的头像 发表于 07-28 16:07 820次阅读
    工业<b class='flag-5'>计算机</b>的重要性

    自动化计算机经过加固后有什么好处?

    -40℃的寒冷环境运行⁰C和温度达到85℃的灼热环境,这要归功于此类系统中使用的宽温度组件和被动冷却技术。2.抗冲击和振动自动化计算机是工业级计算机,其设计和制造可
    的头像 发表于 07-21 16:44 829次阅读
    自动化<b class='flag-5'>计算机</b>经过加固后有什么好处?

    自动化计算机的功能与用途

    工业自动化是指利用自动化计算机来控制工业环境的流程、机器人和机械,以制造产品或其部件。工业自动化的目的是提高生产率、增加灵活性,并提升制造过程的质量。工业自动化在汽车制造中体现得最为明显,其中许多
    的头像 发表于 07-15 16:32 983次阅读
    自动化<b class='flag-5'>计算机</b>的功能与用途

    网络为什么要部署NTP时钟服务器?

    随着计算机网络的迅猛发展,网络应用已经非常普遍,如电力、金融、通信、交通、广电、安防、石化、水利、国防、、IT等领域的网络系统需要在大范围保持计算机的时间同步和时钟准确,但
    的头像 发表于 07-15 10:23 544次阅读

    如何用AI负载为SONiC交换机调整ECN水线

    显式拥塞通知(ECN)是计算机网络的一种机制,它允许发送设备明确地通知接收设备网络拥塞,而不是依赖于传统的“丢包”方法。在传统的TCP/IP网络
    的头像 发表于 07-11 14:12 2822次阅读
    如何用AI负载为SONiC交换机调整ECN水线

    工业计算机与商用计算机的区别有哪些

    工业计算机是一种专为工厂和工业环境设计的计算系统,具有高可靠性和稳定性,能够应对恶劣环境下的自动化、制造和机器人操作。其特点包括无风扇散热技术、无电缆连接和防尘防水设计,使其在各种工业自动化场景
    的头像 发表于 07-10 16:36 1000次阅读
    工业<b class='flag-5'>计算机</b>与商用<b class='flag-5'>计算机</b>的区别有哪些