欧易

欧易(OKX)

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

火币

火币(HTX )

全球知名的比特币交易所

币安

币安(Binance)

全球用户最多的交易所

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

时间:2022-10-09 18:11:17 | 浏览:587

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

运输层

协议:

TCP(Transmission Control Protocol,传输控制协议)

UDP(User Datagram Protocol,用户数据报协议)

端口:

TCP

TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,其传输的单位是报文段。

特征:

①面向连接

②只能点对点(一对一)通信

③可靠交互

④全双工通信

⑤面向字节流


TCP 如何保证可靠传输:

①确认和超时重传

②数据合理分片和排序

③流量控制

④拥塞控制

⑤数据校验

TCP 报文结构

TCP 首部

TCP:状态控制码(Code,Control Flag),占 6 比特,含义如下:

URG:紧急比特(urgent),当 URG=1 时,表明紧急指针字段有效,代表该封包为紧急封包。它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据), 且上图中的 Urgent Pointer 字段也会被启用。

ACK:确认比特(Acknowledge)。只有当 ACK=1 时确认号字段才有效,代表这个封包为确认封包。当 ACK=0 时,确认号无效。

PSH:(Push function)若为 1 时,代表要求对方立即传送缓冲区内的其他对应封包,而无需等缓冲满了才送。

RST:复位比特(Reset),当 RST=1 时,表明 TCP 连接中出现严重差错(如由于主机崩溃或其他原因),必须释放连接,然后再重新建立运输连接。

SYN:同步比特(Synchronous),SYN 置为 1,就表示这是一个连接请求或连接接受报文,通常带有 SYN 标志的封包表示『主动』要连接到对方的意思。

FIN:终止比特(Final),用来释放一个连接。当 FIN=1 时,表明此报文段的发送端的数据已发送完毕,并要求释放运输连接。

UDP

UDP(User Datagram Protocol,用户数据报协议)是 OSI(Open System Interconnection 开放式系统互联) 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,其传输的单位是用户数据报。

特征:

①无连接

②尽最大努力交付

③面向报文

④没有拥塞控制

⑤支持一对一、一对多、多对一、多对多的交互通信

⑥首部开销小

UDP 报文结构

UDP 首部

TCP 与 UDP 的区别

TCP 面向连接,UDP 是无连接的;

TCP 提供可靠的服务,也就是说,通过 TCP 连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP 尽最大努力交付,即不保证可靠交付

TCP 的逻辑通信信道是全双工的可靠信道;UDP 则是不可靠信道

每一条 TCP 连接只能是点到点的;UDP 支持一对一,一对多,多对一和多对多的交互通信

TCP 面向字节流(可能出现黏包问题),实际上是 TCP 把数据看成一连串无结构的字节流;UDP 是面向报文的(不会出现黏包问题)

UDP 没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如 IP 电话,实时视频会议等)

TCP 首部开销20字节;UDP 的首部开销小,只有 8 个字节

TCP 黏包问题

原因

TCP 是一个基于字节流的传输服务(UDP 基于报文的),“流” 意味着 TCP 所传输的数据是没有边界的。所以可能会出现两个数据包黏在一起的情况。

解决

发送定长包。如果每个消息的大小都是一样的,那么在接收对等方只要累计接收数据,直到数据等于一个定长的数值就将它作为一个消息。

包头加上包体长度。包头是定长的 4 个字节,说明了包体的长度。接收对等方先接收包头长度,依据包头长度来接收包体。

在数据包之间设置边界,如添加特殊符号 标记。FTP 协议正是这么做的。但问题在于如果数据正文中也含有 ,则会误判为消息的边界。

使用更加复杂的应用层协议。

TCP 流量控制

概念

流量控制(flow control)就是让发送方的发送速率不要太快,要让接收方来得及接收。

方法

利用可变窗口进行流量控制

TCP 拥塞控制

概念

拥塞控制就是防止过多的数据注入到网络中,这样可以使网络中的路由器或链路不致过载。

方法

慢开始( slow-start )

拥塞避免( congestion avoidance )

快重传( fast retransmit )

快恢复( fast recovery )

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版权所有