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

    文章

    1264

    浏览量

    78257
  • C++
    C++
    +关注

    关注

    21

    文章

    2066

    浏览量

    72878
  • 服务端
    +关注

    关注

    0

    文章

    61

    浏览量

    6871

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

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

收藏 人收藏

    评论

    相关推荐

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

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

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

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

    常见的计算机网络协议汇总

    本篇博客将对基于 计算机网络五层模型 中的常见协议做以总结 ,目的通过这些具体的协议更深刻的认识整体网络传输流程及相关网络原理
    的头像 发表于 07-28 11:49 1696次阅读
    常见的<b class='flag-5'>计算机网络</b>协议汇总

    计算机网络系统建设架构

    办公楼的计算机网络系统设计,既有有线网络系统,也有无线覆盖系统,并且安防系统的网络系统有时候会单独设计,有时候和计算机网络系统共用局域网。今天的案例重点介绍
    的头像 发表于 05-30 10:47 896次阅读

    计算机网络的层次结构

    TCP/IP四层模型与OSI体系结构对比: 1.3 层次结构设计的基本原则 各层之间是相互独立的; 每一层需要有足够的灵活性; 各层之间完全解耦。 1.4 计算机网络的性能指标 速率:bps=bit/s 时延:发送时延、传播时延、排队时延、处理时延 往返时间RTT:数据
    的头像 发表于 05-29 09:54 5455次阅读
    <b class='flag-5'>计算机网络</b>的层次结构

    计算机网络硬件的组成

    之前我们学习了计算机网络的分类,本节课我们学习一下计算机网络硬件都有哪些元素组成。首先我们来看一下计算机网络传输介质,分为有线和无线两种。有线传输
    的头像 发表于 05-18 16:21 1590次阅读

    计算机网络的功能及分类

    本节课我们来学习计算机网络及其分类,那我们是计算机网络呢?我们先看一下计算机网络的概念。计算机网络是由地理位置分散的、具有独立功能的多台计算机
    的头像 发表于 05-18 15:56 3153次阅读
    <b class='flag-5'>计算机网络</b>的功能及分类

    计算机网络的 89 个基本概念

    计算机网络中的概念也是非常庞杂,理解起来比较困难,所以这里,我给大家汇总了计算机网络中 89 个常见的概念,希望对你有所帮助。 1. `主机
    的头像 发表于 05-18 15:53 642次阅读
    <b class='flag-5'>计算机网络</b>的 89 个基本概念

    计算机网络知识点全面汇总(下)

    计算机网络的分类 按照网络的作用范围:广域网(WAN)、城域网(MAN)、局域网(LAN); 按照网络使用者:公用网络、专用网络
    的头像 发表于 05-18 15:52 444次阅读
    <b class='flag-5'>计算机网络</b>知识点全面汇总(下)

    计算机网络知识点全面汇总(上)

    计算机网络的分类 按照网络的作用范围:广域网(WAN)、城域网(MAN)、局域网(LAN); 按照网络使用者:公用网络、专用网络
    的头像 发表于 05-18 15:44 597次阅读
    <b class='flag-5'>计算机网络</b>知识点全面汇总(上)

    计算机网络入门之网络安全

    安全的计算机网络 1. 保密性 只有信息的发送方和接收方才能懂得所发送信息的内容,而信息的截获者则看不懂所截获的信息。 2. 端点鉴别 安全的计算机网络必须能够鉴别信息的发送方和接收方的真实
    的头像 发表于 05-18 15:35 563次阅读
    <b class='flag-5'>计算机网络</b>入门之<b class='flag-5'>网络</b>安全

    什么是计算机网络

    计算机网络是一组互相连接的计算机和其他网络设备,通过通信线路和交换机等设备相互通信和传递数据的系统。
    的头像 发表于 05-16 09:04 7709次阅读
    什么是<b class='flag-5'>计算机网络</b>?

    计算机网络的分类

    计算机网络的分类与一般的事物分类方法一样,可以按事物所具有的不同性质特点(即事物的属性)分类。计算机网络通俗地讲就是由多台计算机(或其它计算机网络设备)通过
    发表于 05-10 16:30 1451次阅读

    计算机网络的定义

    计算机网络是指将多台计算机通过通信线路互相连接起来,实现信息交换和资源共享的系统。计算机网络可以包括局域网、广域网、互联网等不同范围和规模的网络,它们通过标准化的协议和接口进行通信和数
    发表于 05-10 16:25 1033次阅读

    计算机网络功能

    计算机网络的功能主要目的是实现计算机之间的资源共享、网络通信和对计算机的集中管理计算机网络是指
    发表于 05-10 16:21 924次阅读