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

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

3天内不再提示

浅析C++基础语法之计算机网络中传输层(TCP&UDP)

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

扫码添加小助手

加入工程师交流群

运输层

协议:

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

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

端口

5775e780-357f-11ec-82a8-dac502259ad0.png

TCP

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

特征:

①面向连接

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

③可靠交互

④全双工通信

⑤面向字节流

TCP 如何保证可靠传输:

①确认和超时重传

②数据合理分片和排序

③流量控制

④拥塞控制

⑤数据校验

TCP 报文结构

57e02d16-357f-11ec-82a8-dac502259ad0.png

TCP 首部

5843bbec-357f-11ec-82a8-dac502259ad0.png

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++哟~

编辑:jq

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

    关注

    8

    文章

    7265

    浏览量

    92442
  • TCP
    TCP
    +关注

    关注

    8

    文章

    1410

    浏览量

    81606
  • UDP
    UDP
    +关注

    关注

    0

    文章

    331

    浏览量

    34781

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

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

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    多模块配置!YU系列USB、Type-C连接器为工控机打造"全能型"数据传输方案

    背景介绍工控机是一类用于工业、野外等复杂恶劣环境的专用计算机设备,如何实现稳如磐石的数据传输是关键?凌科电气YU-USB&Type-C工业连接器,以严苛环境适配性及长期稳定的性
    的头像 发表于 05-07 18:27 ?269次阅读
    多模块配置!YU系列USB、Type-<b class='flag-5'>C</b>连接器为工控机打造&<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;quot;全能型&<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;quot;数据<b class='flag-5'>传输</b>方案

    计算机网络入门指南

    计算机网络是指将地理位置不同且具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统、网络管理软件及网络通信协议的管理和
    的头像 发表于 04-22 14:29 ?1265次阅读
    <b class='flag-5'>计算机网络</b>入门指南

    计算机网络协议介绍

    作者:京东零售 王乐 一、从一个请求来看网络分层原理 1.1 复杂的网络 以下为一次请求过程可能遇到的问题,预示着网络的复杂性。 ?? ? 1.2 如何简化复杂度 为了简化
    的头像 发表于 04-08 11:26 ?1006次阅读
    <b class='flag-5'>计算机网络</b>协议介绍

    计算机网络架构的演进

    计算机网络架构的演进见证了信息技术的飞速发展。早期的总线型网络架构,通过一条共享的通信线路连接各个节点,结构简单且成本较低,但存在单点故障和传输效率不高的问题。随着技术的发展,星型网络
    的头像 发表于 01-21 11:11 ?460次阅读

    TCP三次握手如何影响网络性能

    计算机网络TCP是一种面向连接的、可靠的、基于字节流的传输通信协议。它通过三次握手过程来建立两个
    的头像 发表于 01-06 09:13 ?768次阅读

    TCP三次握手的网络抓包分析

    计算机网络TCP传输控制协议)是一种面向连接的、可靠的、基于字节流的传输通信协议。
    的头像 发表于 01-06 09:05 ?830次阅读

    TCP三次握手与UDP的区别

    计算机网络,数据传输的可靠性和效率是两个关键因素。为了满足不同的应用需求,设计者们开发了多种传输协议。其中,
    的头像 发表于 01-03 17:35 ?964次阅读

    TCP三次握手的基本原理

    计算机网络TCP传输控制协议)是一种面向连接的、可靠的、基于字节流的传输通信协议。它确
    的头像 发表于 01-03 17:25 ?1278次阅读

    百问FB网络编程 - 网络编程简介

    6.1 网络编程简介 ?要编写通过计算机网络通信的程序,首先要确定这些程序同通信的协议(protocol),在设计一个协议的细节之前,首先要分清程序是由哪个程序发起以及响应何时产生。 ?举例来说
    发表于 12-04 09:46

    OSI七模型详解 OSI七模型与TCP/IP模型比较

    OSI(Open System Interconnect)七模型是一种将计算机网络通信协议划分为七个不同层次的标准化框架,每一都负责不同的功能,从物理连接到应用程序的处理。以下是对OSI七
    的头像 发表于 11-24 10:44 ?1436次阅读

    飞凌嵌入式ElfBoard ELF 1板卡-网络编程示例之网络基础知识

    使用。端口号数据链路和 IP 的地址,分别指的是 MAC 地址和 IP 地址。前者用来识别同一链路不同的计算机,后者用来识别 TCP/IP 网络
    发表于 11-09 14:37

    TCP&;UDP调试工具

    TCP&UDP调试工具
    发表于 10-30 10:41 ?3次下载

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

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

    深入了解 Windows 系统 TCP/IP 参数配置

    概述 TCP/IP是一组用于实现计算机网络互联的通信协议。它包括了多个层次的协议,如网络接口、网际
    的头像 发表于 09-04 17:24 ?913次阅读

    深度解析TCPUDP协议

    计算机网络设备要相互通信,它们必须遵循一种共同的方法或标准。对于不同硬件平台和操作系统之间的交互而言,这种共同遵循的规范尤为关键。我们将这一系列指导通信过程的规则称为“协议”。TCPU
    的头像 发表于 09-02 14:53 ?857次阅读
    深度解析<b class='flag-5'>TCP</b>与<b class='flag-5'>UDP</b>协议