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

    文章

    1344

    浏览量

    78909
  • C++
    C++
    +关注

    关注

    21

    文章

    2094

    浏览量

    73445
  • 服务端
    +关注

    关注

    0

    文章

    66

    浏览量

    6971

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

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

收藏 人收藏

    评论

    相关推荐

    应用于计算机网络服务器晶振SG3225HBN(X1G005141000500)

    计算机网络服务器,稳定和高性能的时钟源对于数据处理和网络通信的准确性至关重要,SG3225HBN晶振(型号X1G005141000500)凭借其高频率稳定性、低相位噪声、高抗干扰能力以及
    发表于 09-05 10:05 0次下载

    计算机网络中常见的默认端口号及其用途

    网络工程领域,了解和掌握默认端口号是至关重要的。端口号是计算机网络中最基本的概念之一,用于标识特定的网络服务或应用程序。本文将详细介绍常见的默认端口号及其用途,帮助网络工程师更好地理
    的头像 发表于 08-13 16:33 1004次阅读

    一文了解TCP/IP协议

    TCP/IP协议是现代计算机网络通信的基础,是互联网及局域网广泛使用的一套协议。TCP/IP协议集包括许多协议,其中最重要的是传输控制协议(TCP
    的头像 发表于 08-07 15:38 897次阅读
    一文了解<b class='flag-5'>TCP</b>/IP协议

    计算机网络的三种通信方式

    计算机网络的三种通信方式,即单工通信、半双工通信和全双工通信,是理解和设计高效网络架构的基础。每种通信方式都有其独特的特性、应用场景及优缺点。以下是对这三种通信方式的详细分析,旨在提供深入的理解。
    的头像 发表于 08-07 15:00 1697次阅读

    【RTC程序设计:实时音视频权威指南】计算机知识基础篇

    数据通信的加密,加密方法、算法也有很多种,有对称加密算法,也有非对称加密算法。在这些计算机网络的基本概念,可以从物理层到应用层的特性进行了解,重点可以学习一下UDP和TCP这两种最基本的网络
    发表于 04-23 09:02

    计算机网络为什么要分层次

    因为如果两台计算机能够相互通信的话,实际实现起来是非常困难操作的。我们分层的目的就是为了将困难的问题简单化,并且如果我们分层了,我们在使用的时候就可以仅仅关注我们需要关注的层次,而不用理会其他层
    发表于 02-03 17:12 2015次阅读
    <b class='flag-5'>计算机网络</b>为什么要分层次

    什么是计算机网络的拓扑结构?主要的拓扑结构有哪些?

    计算机网络的拓扑结构是指计算机网络各个节点(包括计算机、服务器、路由器等)之间连接的方式和形式。拓扑结构可以影响到网络的性能、可靠性和扩展
    的头像 发表于 01-31 10:40 1730次阅读

    计算机网络路由器和交换机的区别

    计算机网络,路由器和交换机是两种常用的网络设备,它们在网络起着重要的作用。虽然它们的功能有一些重叠,但也存在一些关键的区别。本文将详细介
    的头像 发表于 01-14 11:28 941次阅读

    电话交换机和计算机网络交换机的区别是什么呢?

    语音信号,实现电话系统的连接和通信控制。它能够将电话信号从一条线路传输到另一条线路,实现电话用户之间的互联互通,并提供基本的电话通信功能。 计算机网络交换机是一种专门用于局域网(LAN)或广域网(WAN)的数据交换设备。它通
    的头像 发表于 01-09 11:29 1279次阅读

    东莞计算机网络工程包括哪些?

    计算机网络工程是指设计、建立和管理计算机与设备之间的连接和通信系统的过程。网络工程包括哪些内容呢?广东东莞网络工程公司表示它涵盖了网络规划、
    的头像 发表于 12-27 17:47 633次阅读

    计算机网络的通信子网主要有哪些功能?

    计算机网络的通信子网主要负责数据的传输、处理、转换和交换,以及提供相关的网络控制协议、通信控制软件和通信设备等功能,同时还对网络进行
    的头像 发表于 12-15 17:27 1457次阅读

    通信子网在计算机网络的地位和作用

    通信子网在计算机网络扮演着至关重要的角色。它是实现网络内和网络间数据通信的关键基础设施,为上层应用提供了通用的通信接口和协议。同时,它也是促进信息交流和知识共享的重要平台。未来,随着
    的头像 发表于 12-15 17:15 705次阅读

    如何选择传输层协议?TCP和UDP的优缺点和适用场合

    如何选择传输层协议?TCP和UDP的优缺点和适用场合  传输层协议是计算机网络的重要组成部分,它负责在主机之间
    的头像 发表于 12-11 11:42 904次阅读

    计算机网络的通信子网:架构、协议与技术简介

    计算机网络,通信子网是负责实现主机之间以及主机与终端之间数据传输的核心部分。它由一系列硬件设备和通信协议组成,为上层应用提供可靠、高效和透明的数据传输服务。本文将详细介绍通信子网的
    的头像 发表于 12-07 17:42 1000次阅读

    计算机网络中速率和带宽的区别

    才能达到的数据传送的速率,然而在现实生活是达不到的。 带宽,在计算机网络中用来表示网络的通信线路传送数据的能力,因此网络带宽表示在单位时间内从网络
    发表于 11-27 16:29