计网期末复习指南(五):运输层(可靠传输原理、TCP协议、UDP协议、端口)

前言:本系列文章旨在通过TCP/IP协议簇自下而上的梳理大致的知识点,从计算机网络体系结构出发到应用层,每一个协议层通过一篇文章进行总结,本系列正在持续更新中... 

计网期末复习指南(一):计算机网络体系结构计网期末复习指南(二):物理层计网期末复习指南(三):数据链路层
计网期末复习指南(四):网络层计网期末复习指南(三):运输层计网期末复习指南(六):应用层


目录

一.运输层概述

二.TCP协议

▐ 可靠传输的工作原理

停止等待ARQ(Stop-and-Wait ARQ)

回退N步ARQ(Go-Back-N ARQ)

选择性重传ARQ(Selective Repeat ARQ)

示例说明

▐ TCP的特点

▐ 三次握手与四次挥手

▐ TCP报文结构

▐ 超时重传时间 

详细步骤

示例计算

三.UDP协议

▐ UDP的特点

▐ UDP报文结构

▐ UDP的工作过程

四.UDP与TCP的比较

五.端口

▐ 端口号的分类

▐ 常见的端口号


一.运输层概述

在计算机网络中,运输层(Transport Layer)是OSI(开放系统互联)模型中的第四层,它位于网络层之上,会话层之下。运输层的主要功能是为应用层提供可靠的端到端通信服务,确保数据在网络中传输的完整性和顺序性。

在TCP/IP模型中向上为应用层提供通信服务,从通信和信息处理的角度上来说,运输层属于面向通信部分的最高层,同时也是用户功能中的最底层。运输层主要提供应用进程之间的逻辑通信,它与网络层的区别在于,网络层主要为主机之间通信提供服务,而运输层则在网络层的基础上,为应用进程之间的通信提供服务。

  • OSI模型:在OSI模型中,运输层位于网络层之上,会话层之下,主要负责端到端的数据传输和控制。
  • TCP/IP模型:在TCP/IP模型中,运输层对应于传输层,负责提供传输服务,主要包括TCP和UDP协议。

根据应用程序的不同需求,运输层主要提供俩中不同的运输协议:面向连接的TCP和无连接的UDP。通过使用TCP和UDP协议,运输层满足了不同应用对传输服务的需求,既能提供高可靠性,也能满足对低延迟的要求。

运输层的功能大致总结如下

  1. 数据分段与重组

    • 运输层将来自应用层的大块数据分成更小的段,以便通过网络传输。
    • 到达目的地后,运输层负责将这些段重新组装成原来的数据。
  2. 端到端连接

    • 运输层在发送端和接收端之间建立和维护连接,确保数据的有序传输。
    • 提供连接管理,包括建立连接、数据传输和连接释放。
  3. 流量控制

    • 运输层通过流量控制机制,防止发送端发送数据过快而导致接收端缓存溢出。
    • 常见的流量控制机制包括滑动窗口协议。
  4. 错误检测与纠正

    • 运输层使用校验和等技术检测数据传输中的错误。
    • 提供错误恢复机制,如重传错误数据段,以确保数据的完整性。
  5. 可靠传输

    • 通过确认和重传机制,确保数据段成功送达接收端。
    • 提供超时重传机制,当确认未在预期时间内收到时,重传数据段。
  6. 多路复用与多路分解

    • 运输层通过端口号区分不同的应用进程,允许多个应用共享同一个网络连接。
    • 多路复用:将来自不同应用的数据封装到相同的网络连接上。
    • 多路分解:将收到的数据段分发到正确的应用进程。

二.TCP协议

TCP协议(Transmission Control Protocol,传输控制协议)是一种基于连接的、可靠的、面向字节流的传输层通信协议。它是Internet协议套件中的一部分,用于实现可靠的数据传输。

TCP协议提供了可靠的、有序的、面向连接的数据传输。它通过建立连接、拆分数据成小块(称为段),并使用确认和重传机制来确保数据的可靠传输。TCP通过流量控制和拥塞控制机制,调整数据的传输速率,以避免网络拥塞和丢包现象。

TCP协议提供了端到端的传输,即数据从发送方传输到接收方,保持了数据的完整性和顺序。它还支持全双工通信,即发送和接收数据同时进行。TCP协议使用IP地址和端口号来标识发送方和接收方,以便正确地将数据传输到目标设备上的相应进程。

▐ 可靠传输的工作原理

我们说TCP协议是属于可靠传输协议,对于这里的可靠性,我们需要通过一种机制来保证。

自动重传请求(Automatic Repeat reQuest,ARQ)是一种可靠传输机制,用于确保数据在通信过程中正确、无误地到达接收方。ARQ机制通过在数据包出错或丢失时重新传输数据包来实现可靠传输。ARQ主要有三种类型:停止等待ARQ、回退N步ARQ(Go-Back-N ARQ)和选择性重传ARQ(Selective Repeat ARQ)。

停止等待ARQ(Stop-and-Wait ARQ)

在停止等待ARQ中,发送方发送一个数据包后必须等待接收方的确认(ACK)才能继续发送下一个数据包。如果在一定时间内未收到确认,发送方会重传该数据包。

工作原理:

  1. 发送方发送数据包,并启动定时器。
  2. 接收方收到数据包后,发送确认(ACK)回给发送方。
  3. 发送方收到确认后,发送下一个数据包。
  4. 如果发送方未在超时时间内收到确认,重传数据包。

优点:实现简单。

缺点:信道利用率低,因为发送方必须等待确认后才能发送下一个数据包。

回退N步ARQ(Go-Back-N ARQ)

在Go-Back-N ARQ中,发送方可以连续发送多个数据包,而不必等待每个数据包的确认。接收方按序接收数据包,若发现某个数据包有错误或丢失,接收方将丢弃该数据包以及其后的所有数据包,并发送该错误数据包的编号回给发送方。发送方收到该编号后,回退到该编号重新发送。

工作原理:

  1. 发送方连续发送多个数据包,并为每个数据包分配序列号。
  2. 接收方收到数据包后,按序确认(ACK)已收到的数据包。
  3. 如果接收方发现某个数据包有错误或丢失,发送一个负确认(NAK)或不发送确认。
  4. 发送方收到NAK或超时后,回退到错误数据包的序列号,重新发送从该序列号开始的所有数据包。

优点:提高了信道利用率。

缺点:重传开销较大,因为需要重传错误数据包之后的所有数据包。

选择性重传ARQ(Selective Repeat ARQ)

在选择性重传ARQ中,发送方也可以连续发送多个数据包,但接收方只请求重传有错误或丢失的数据包,而不是所有后续数据包。接收方会缓存按序到达的数据包,并在收到所有必要的数据包后将其按序提交给上层应用。

工作原理:

  1. 发送方连续发送多个数据包,并为每个数据包分配序列号。
  2. 接收方收到数据包后,发送确认(ACK)已收到的数据包。
  3. 如果接收方发现某个数据包有错误或丢失,只请求重传该数据包。
  4. 发送方只重传接收方请求的有错误或丢失的数据包。

优点:

  • 提高了信道利用率。
  • 减少了重传开销,因为只重传有错误或丢失的数据包。

缺点:

  • 实现较复杂,需要接收方具备缓存能力以按序存储和重组数据包。

示例说明

假设窗口大小为N,数据包按序号编号为1, 2, 3, ..., n。

停止等待ARQ

  • 发送方发送数据包1,等待ACK1。
  • 收到ACK1后,发送数据包2,等待ACK2。
  • 重复上述过程。

回退N步ARQ

  • 发送方连续发送数据包1, 2, 3, ..., N。
  • 接收方按序接收并确认(ACK1, ACK2, ...)。
  • 如果数据包3丢失,接收方丢弃后续包,发送ACK2(或NAK3)。
  • 发送方收到ACK2(或NAK3),重传数据包3及后续数据包。

选择性重传ARQ

  • 发送方连续发送数据包1, 2, 3, ..., N。
  • 接收方按序接收并确认(ACK1, ACK2, ...)。
  • 如果数据包3丢失,接收方发送NAK3。
  • 发送方只重传数据包3。

▐ TCP的特点

TCP协议的主要特点包括:面向连接、可靠传输、流量控制、差错检测

  1. 面向连接:TCP 是面向连接的协议,在数据传输前需要建立连接,并在传输完成后释放连接。三次握手(Three-way Handshake):建立连接的过程。四次挥手(Four-way Handshake):断开连接的过程。

  2. 可靠传输:TCP 提供可靠的数据传输,通过序列号、确认号和重传机制确保数据的完整性和顺序性。超时重传:如果数据包未在预期时间内收到确认,TCP 会重传数据包。

  3. 流量控制:TCP 使用滑动窗口机制来控制发送方发送数据的速率,防止接收方缓存溢出。

  4. 拥塞控制:TCP 包括拥塞控制算法,如慢启动、拥塞避免、快速重传和快速恢复,以防止网络拥塞。

在上述特点中,滑动窗口机制和拥塞控制算法非常的重要,需要明白大致是怎么样个流程。

▐ 三次握手与四次挥手

三次握手本质上是建立连接的过程,分为以下三步骤

  • SYN:客户端向服务器发送一个 SYN (synchronize) 包,表示请求建立连接。
  • SYN-ACK:服务器接收到 SYN 包后,向客户端发送一个 SYN-ACK 包,表示同意建立连接并进行确认。
  • ACK:客户端接收到 SYN-ACK 包后,向服务器发送一个 ACK (acknowledgment) 包,表示确认连接建立。

连接建立完成后,客户端和服务器可以开始数据传输。

在数据传输又包含了以下要点

  • 数据分段:TCP 将大块数据分段成适合网络传输的小段,每个段都有序列号。
  • 确认机制:接收方收到数据段后,发送确认包 (ACK) 给发送方,确认已接收到的数据段。
  • 重传机制:如果发送方未在预期时间内收到确认包,会重传数据段。
  • 窗口机制:滑动窗口用于流量控制,决定发送方在未接收到确认前可以发送的数据量。

四次挥手本质上是断开连接的过程

  • FIN:一方(通常是客户端)发送一个 FIN (finish) 包,表示希望关闭连接。
  • ACK:接收方接收到 FIN 包后,发送一个 ACK 包,表示确认接收到关闭请求。
  • FIN:接收方也发送一个 FIN 包,表示同意关闭连接。
  • ACK:发送方接收到 FIN 包后,发送一个 ACK 包,表示确认关闭连接。

连接释放完成后,双方的通信连接正式断开。

▐ TCP报文结构

TCP 报文段由头部和数据部分组成。头部的结构如下:

字段名长度 (比特)描述
源端口16发送方的端口号
目的端口16接收方的端口号
序列号32数据段的序列号
确认号32确认收到的数据的序列号
数据偏移4TCP 头部的长度
保留字段3保留字段,通常为 0
标志位9控制标志,如 SYN、ACK、FIN
窗口大小16流量控制,表示接收方的缓冲区大小
校验和16用于错误检测
紧急指针16紧急数据的指针
选项和填充可变可选字段,用于扩展功能
数据可变实际传输的数据

TCP 适用于需要高可靠性和顺序性的数据传输的应用,TCP的应用场景包含:

  • 网页浏览 (HTTP/HTTPS):确保网页内容完整地传输。
  • 文件传输 (FTP):确保文件不丢失和损坏。
  • 电子邮件 (SMTP/IMAP/POP3):确保邮件内容正确传输。

▐ 超时重传时间 

在TCP中,计算超时重传时间(Retransmission Timeout, RTO)是确保数据可靠传输的关键部分。TCP使用自适应的算法来计算这个时间,以适应不同网络条件下的延迟变化。这个算法基于测量往返时间(Round-Trip Time, RTT)并进行统计处理。以下是计算RTO的主要步骤:

1. 测量往返时间(RTT)

  • RTT:发送数据包到接收到相应确认(ACK)的时间。

2. 计算平滑的往返时间(RTTs)

  • 初始情况下,TCP设置一个估计的RTT。
  • 当实际测量到RTT时,TCP更新平滑的RTT(RTTs):RTTs=(1−α)×RTTs+α×RTT
    通常,α的值为0.125(即1/8)。

3. 计算RTT的变化(RTTd)

  • RTTd表示RTT的变化范围,用于估计RTT的波动:RTTd=(1−β)×RTTd+β×∣RTT−RTTd∣
    通常,β的值为0.25(即1/4)。

4. 计算重传超时时间(RTO)

  • 最终,RTO由 RTTs 和 RTTd 决定:RTO=RTTs+max(1, 4×RTTd)
    其中,max(1,4×RTTd) 确保RTO不会过小。

详细步骤

  1. 初始设置

    • RTTs 设为第一次测得的RTT。
    • RTTd 设为第一次测得的RTT/2。
    • RTO=RTTs+max(1, 4×RTTd)。
  2. 更新算法

    • 每次测得新的RTT时,计算RTT偏差(RTT - RTTs)。
    • 更新RTTd:

      RTTd=(1−0.25)×RTTd+0.25×∣RTT−RTTs∣

    • 更新SRTT:

      RTTs=(1−0.125)×RTTs+0.125×RTT

    • 计算新的RTO:

      RTO=SRTT+max(1, 4×RTTd)

示例计算

假设我们测量到的RTT值依次为:100ms, 120ms, 110ms, 90ms。

  1. 初始值

    • 第一次RTT:100ms
    • RTTs = 100ms
    • RTTd = 100 / 2 = 50ms
    • RTO = 100 + max(1, 4×50) = 100 + 200 = 300ms
  2. 第二次RTT:120ms

    • 偏差 = 120 - 100 = 20ms
    • 更新RTTd:RTTd = 0.75 \times 50 + 0.25 \times 20 = 37.5ms
    • 更新RTTs :RTTs = 0.875 \times 100 + 0.125 \times 120 = 102.5ms
    • 计算新的RTO:RTO = 102.5 + max(1, 4×37.5) = 102.5 + 150 = 252.5ms
  3. 第三次RTT:110ms

    • 偏差 = 110 - 102.5 = 7.5ms
    • 更新RTTd:RTTd = 0.75 \times 37.5 + 0.25 \times 7.5 = 30ms
    • 更新RTTs :RTTs = 0.875 \times 102.5 + 0.125 \times 110 = 103.44ms
    • 计算新的RTO:RTO = 103.44 + max(1, 4×30)= 103.44 + 120 = 223.44ms

通过以上步骤,TCP可以自适应地调整RTO,以适应不同网络条件下的延迟变化,确保数据传输的可靠性。


三.UDP协议

UDP(User Datagram Protocol,用户数据报协议)是一种无连接的传输层协议。它通过将数据分割成称为数据报的小单元来传输数据,每个数据报都包含源和目的端口号等信息。与TCP协议不同,UDP不提供可靠性、流控制、拥塞控制或错误检测和重传等功能。UDP被广泛用于需要实时性和可能容忍丢包的应用,如音视频传输、在线游戏、广播等。

▐ UDP的特点

  • 无连接:UDP是无连接的协议,数据可以在任何时候发送,而不需要先建立连接。每个数据包(称为数据报)独立传输,彼此之间没有任何关联。

  • 不可靠传输:UDP不保证数据包的送达顺序,也不保证数据包的送达。没有确认机制、重传机制或超时重传机制。

  • 轻量级:UDP的头部开销较小,总共只有8个字节。由于没有连接建立、维护和释放过程,UDP的开销比TCP更小,适用于对传输速度要求高但对可靠性要求低的应用。

  • 实时性:由于没有流量控制和拥塞控制,UDP可以提供较低的延迟。适用于实时应用,如视频流、在线游戏和语音通话等。

▐ UDP报文结构

UDP报文段由头部和数据部分组成,头部的结构如下:

字段名长度 (比特)描述
源端口16发送方的端口号
目的端口16接收方的端口号
长度16UDP头部和数据的总长度
校验和16用于错误检测
数据可变实际传输的数据
  0      7 8     15 16    23 24    31 (位)+--------+--------+--------+--------+|  源端口号  |  目的端口号  |+--------+--------+--------+--------+|   长度   |  校验和   |+--------+--------+--------+--------+

▐ UDP的工作过程

UDP是一种无连接的传输层协议,它的工作过程如下:

  1. 应用程序发送数据报:应用程序将要发送的数据报传递给UDP协议。
  2. 数据报划分成数据段:根据UDP协议的要求,将数据报分割成一个个数据段,每个数据段包含一个头部和一部分数据。
  3. 添加UDP头部:在每个数据段的开头添加UDP协议的头部,包括源端口号和目的端口号等信息。
  4. 数据发送:将数据段通过网络发送给目的主机。
  5. 数据接收:目的主机接收到数据段后,将其交给UDP协议。
  6. 检查数据完整性:UDP协议检查数据段的完整性,如果校验和出现错误,则丢弃该数据段。
  7. 数据分组重组:UDP协议将接收到的数据段按照序列号重新组装成完整的数据报,并将其传递给应用程序。
  8. 应用程序接收数据报:应用程序接收到UDP传递的数据报,进行处理。

UDP的工作过程简单高效,但不保证数据的可靠性和顺序性。

由于没有建立连接和提供流量控制机制,UDP通常被用于那些对数据传输速度和实时性要求较高、对数据可靠性要求较低的应用,如音频、视频、实时游戏等。


四.UDP与TCP的比较

  • 连接性

    • TCP:面向连接,数据传输前需建立连接。
    • UDP:无连接,数据随时可以发送。
  • 可靠性

    • TCP:提供可靠传输,保证数据的完整性和顺序。
    • UDP:不保证数据的送达和顺序。
  • 开销

    • TCP:头部较大,包含流量控制、拥塞控制等机制。
    • UDP:头部开销小,无流量控制和拥塞控制。
  • 延迟

    • TCP:较高的延迟,适合需要高可靠性的应用。
    • UDP:较低的延迟,适合实时性要求高的应用。

五.端口

前文中反复提到一个关键词——端口

在计算机网络中,端口是一个逻辑概念,用于标识特定的网络服务或应用进程。端口号是一个 16 位的整数,范围从 0 到 65535。它在运输层协议(如 TCP 和 UDP)中用于区分同一主机上不同的应用程序或服务。

端口是网络通信中用于标识特定进程或网络服务的一个编号。它与 IP 地址结合使用,形成一个完整的网络端点(也称为套接字)。每个网络连接可以通过一个唯一的 IP 地址和端口号对来标识。

端口的作用

  1. 区分应用程序:不同的应用程序和服务通过不同的端口号进行通信。这样,即使它们在同一主机上运行,也可以互不干扰。

  2. 网络服务定位:客户端应用程序可以通过特定的端口号连接到服务器上的特定服务。例如,Web 服务器通常监听 80 或 443 端口,FTP 服务器监听 21 端口。

▐ 端口号的分类

端口号根据用途和管理方式,可以分为以下几类:

  1. 知名端口号(Well-known Ports):范围:0-1023

    这些端口号通常分配给常见的标准服务。例如:
    • SSH:22
    • FTP:21
    • HTTPS:443
    • HTTP:80
  2. 注册端口号(Registered Ports):范围:1024-49151

    这些端口号通常分配给用户或组织注册的应用程序和服务。例如:
    • Microsoft SQL Server:1433
    • MySQL 数据库:3306
  3. 动态/私有端口号(Dynamic/Private Ports):范围:49152-65535

    这些端口号通常用于客户端应用程序动态分配的临时通信。客户端在与服务器建立连接时,会从这个范围内分配一个临时端口号。

▐ 常见的端口号

下面是常见端口号及其对应的服务的表格:

端口号协议服务名称描述
20TCPFTP Data文件传输协议 (数据传输)
21TCPFTP文件传输协议 (控制)
22TCPSSH安全外壳协议,用于加密的远程登录
23TCPTelnet明文远程登录协议
25TCPSMTP简单邮件传输协议
53UDPDNS域名系统
67UDPDHCP Server动态主机配置协议 (服务器端)
68UDPDHCP Client动态主机配置协议 (客户端)
80TCPHTTP超文本传输协议
110TCPPOP3邮局协议版本3
119TCPNNTP网络新闻传输协议
123UDPNTP网络时间协议
143TCPIMAP互联网消息访问协议
161UDPSNMP简单网络管理协议
194TCPIRC互联网中继聊天
443TCPHTTPS安全的超文本传输协议
465TCPSMTPS用于加密的简单邮件传输协议
993TCPIMAPS用于加密的互联网消息访问协议
995TCPPOP3S用于加密的邮局协议版本3
1433TCPMicrosoft SQL ServerMicrosoft SQL Server 数据库
3306TCPMySQLMySQL 数据库
3389TCPRDP远程桌面协议
5432TCPPostgreSQLPostgreSQL 数据库
6379TCPRedisRedis 内存数据库
8080TCPHTTP Alternate备用 HTTP 端口



 本次的分享就到此为止了,希望我的分享能给您带来帮助,创作不易也欢迎大家三连支持,你们的点赞就是博主更新最大的动力!如有不同意见,欢迎评论区积极讨论交流,让我们一起学习进步!有相关问题也可以私信博主,评论区和私信都会认真查看的,我们下次再见

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/22234.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Jetpack架构组件_3. 数据绑定库双向绑定

这里介绍数据绑定库双向绑定的两种写法。第一种是模型类继承Observable,两个属性username、password的get方法上面添加bindable注解。第二种是创建一个包裹类,使用 ObservableField字段,然后再调用 this.observableField.get()获取字段。 1.…

数据结构算法之链表指针LinkList

链表是一种数据结构,它包含一系列存储在内存中随机位置的节点,从而实现高效的内存管理。链表中的每个节点包含两个主要组成部分:数据部分和对序列中下一个节点的引用。 链表种类: 单项链表 单链表是最简单的链表类型&#xff0c…

webm转换mp4,四种转换方法任你选!

在数字媒体日益盛行的今天,视频格式的转换已成为许多用户不可或缺的技能。其中,WebM和MP4作为两种广受欢迎的视频格式,各有其特点和优势。 WebM以其高效压缩和流畅播放而著称,而MP4则因其广泛的兼容性和易用性受到欢迎。因此&…

借助调试工具理解BLE协议_1.蓝牙简介和BLE工作流程

1.蓝牙简介 蓝牙是一种近距离无线通信技术,运行在2.4GHz免费频段,目前已大量应用于各种移动终端,物联网,健康医疗,智能家居等行业。蓝牙4.0以后的版本分为两种模式,单模蓝牙和双模蓝牙。 单模蓝牙&#xf…

杰理语音芯片AC1042A,变声喇叭玩具方案—云信通讯

变声喇叭玩具内置多种声音效果,例如机器人声、怪兽声、动物声以及各种搞笑声,让孩子能够在玩耍过程中体验不同的声音变化。有一些变声喇叭还可以模拟名人声音,让孩子们仿佛变身成为自己心目中的英雄或者明星。无论是自由的想象力游戏还是模仿…

借助调试工具理解BLE协议_2.BLE协议栈

名词解释: BT SIG英文全称为Bluetooth Special Interest Group(蓝牙特别兴趣组),网址为 www.Bluetooth.com。 Bluetooth Technology Website SIG成立于1998年,是一个全球技术交流组织,拥有超过36000家公…

进阶 RocketMQ - 消息存储-一张图掌握核心要点

看了很多遍源码整理的 一张图进阶 RocketMQ 图片,关于 RocketMQ 你只需要记住这张图! 消息传递责任已移交至Broker,接下来如何处理?首先,我们需要确保消息的持久化,避免因宕机导致的数据丢失。那么&#xf…

什么是OCR转写服务?

OCR(Optical Character Recognition,光学字符识别)转写服务是一种技术,用于将图像或扫描文档中的文字转换为可编辑的文本格式。这项服务通过识别图像中的文字,并将其转换成计算机可读的文本形式,从而使得用…

期权懂基础知识分享:场外期权怎么做?

今天带你了解期权懂基础知识分享:场外期权怎么做?场外个股期权是一种金融工具,用于在股票市场之外交易。 场外期权怎么做? 签订框架协议:个人需要与机构签订场外期权框架协议,通常无需单独开立账户。 询价…

ARP欺骗的原理与详细步骤

ARP是什么: 我还记得在计算机网络课程当中,学过ARP协议,ARP是地址转换协议,是链路层的协议,是硬件与上层之间的接口,同时对上层提供服务。在局域网中主机与主机之间不能直接通过IP地址进行通信&#xff0c…

怎么把图片压缩小一点?让你的图片秒变小清新!

怎么把图片压缩小一点?在数字化时代,图片已经成为我们生活中不可或缺的一部分。无论是社交媒体的分享,还是工作文档的编辑,图片都扮演着重要的角色。然而,随着图片数量的增加,存储空间的问题也日益凸显。幸…

STM32项目开发遇见问题解决2024.6.4V2

1、结构体指针的赋值不能放在main函数之前 参数1、参数2可以修改后,接着添加功能,设置一个保存按键,当修改完参数1、参数2后,按下保存,可以将两者和当前的测量值一起保存在flash中,并将这三个变量放在一个结…

软件系统测试的定义和测试内容介绍

一、什么是软件系统测试? 软件系统测试是指对软件系统的功能、性能、可靠性、稳定性等方面进行全面检查和验证的过程。其目的是发现潜在的问题、缺陷和风险,并确保软件系统的质量和稳定性。 软件系统测试可以分为多个阶段,包括单元测试、集成测试、系…

中介模式实现聊天室

中介者模式的核心逻辑就是解耦对象‘多对多’的相互依赖关系。当遇到一大堆混乱的对象呈现“网状结构”,利用通过中介者模式解耦对象之间的通讯。 代码案例 抽象中介类 public abstract class AbstractChatRoom {public abstract void notice(String message , Us…

计网期末复习指南(六):应用层(DNS、FTP、URL、HTTP、SMTP、POP3)

前言:本系列文章旨在通过TCP/IP协议簇自下而上的梳理大致的知识点,从计算机网络体系结构出发到应用层,每一个协议层通过一篇文章进行总结,本系列正在持续更新中... 计网期末复习指南(一):计算…

Java18+​App端采用uniapp+开发工具 idea hbuilder智能上门家政系统源码,一站式家政服务平台开发家政服务

Java18​App端采用uniapp开发工具 idea hbuilder智能上门家政系统源码,一站式家政服务平台开发 家政服务 家政服务是一个专为家政服务人员设计的平台,该平台旨在提供便捷、高效的工作机会,同时确保服务质量和客户体验。 以下是关于家政服务师…

python入门1

文章目录 前言一、python概述1、下载和安装2、python基础2.1 变量2.2 数据类型2.3Python中的注释2.4 运算符2.5 数值类型标准类型函数2.6 I/O操作 二、字符串1、字符串操作2、字符串内建函数3、格式化字符串3.1 在字符串中使用变量3.2 format()方法的基本使用 三、列表与元组1、…

鸿蒙工程目录介绍

鸿蒙构建完毕生成hhvp文件。 项目结构: .hvigor : 是存储构建配置文件的 .idea : 是开发工具拥有的目录 AppScope : 是全局的公共资源存放位置 hvigor :存放前端构建配置信息 oh_modules : 存放项目用到的第三方包 build-profile.json5 : 应用级别的构…

Mysql基础教程(15):别名

MySQL 别名 在本文中,我们讨论了 MySQL 中的列别名,表别名和派生表别名,以及使用别名来简化 SQL 和提高 SQL 的可读性。 如果在一个 SQL 中涉及到多个表,我们需要使用 table_name.column_name 这样的方式来引用每个表的字段&…

麒麟系统 安装xrdp 远程桌面方法记录

一、安装环境 麒麟V10 2107 ft2000 麒麟V10 2107 x86_64 二、安装准备 使用《Kylin-Desktop-V10-Release-2107-arm64.iso》镜像 做好U盘启动系统后,需要安装一个远程桌面工具,可以多用户在windows上使用远程桌面访问麒麟系统。 目前在linux系统上较…