<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:atom="http://www.w3.org/2005/Atom"
>
<channel>
<title><![CDATA[啊咧咧's Help Site]]></title> 
<atom:link href="https://help.aalielie.com/rss.php" rel="self" type="application/rss+xml" />
<description><![CDATA[感谢各位的帮助~~~~]]></description>
<link>https://help.aalielie.com/</link>
<language>zh-cn</language>
<generator>emlog</generator>

<item>
    <title>EtherNet／IP总线</title>
    <link>https://help.aalielie.com/?post=11</link>
    <description><![CDATA[<h1>EtherNet／IP总线</h1>
<h2><strong>一、EtherNet/IP 基础概念</strong></h2>
<h3><strong>1.ODVA 组织简介</strong></h3>
<p>ODVA 成立于 1995 年，是一个全球性协会，其成员包括世界领先的自动化公司。ODVA 的使命是促进工业自动化中开放的，可互操作的信息和通信技术。ODVA 将其独立于媒体的网络协议，通用工业协议或“CIPTM”以及 CIP 的网络改进版 EtherNet/IPTM，DeviceNetTM ，CompoNetTM 和 ControlNetTM 视为其核心技术。其负责的主要内容有：</p>
<ol>
<li>设备的一致性测试认证与互操作；</li>
<li>授权 EtherNet/IP 技术；</li>
<li>发放 Vendor ID 代表厂商设备信息；</li>
<li>其下的 SIG 小组负责各类规范、方针等内容的制定。</li>
</ol>
<h3><strong>2.EtherNet/IP 基础架构</strong></h3>
<h4><strong>2.1</strong> <strong>EtherNet/IP</strong> <strong>OSI 参考模型</strong></h4>
<p><img src="https://help.aalielie.com/content/uploadfile/202506/47791750759104.png" alt="img" /></p>
<p>EtherNet/IP 的 ISO/OSI 参考模型如上图所示，其物理层、链路层、网络层、传输层均与标准以太网相同，特点在于其在传输层之上增添了一个封装层，对来自应用层的数据进行报文格式的封装；而应用层采用的是 CIP 协议，满足其在工业自动化领域的一些功能和服务。</p>
<p>特点：</p>
<ol>
<li>服务于各类工业自动化应用；</li>
<li>基于标准的 IEEE802.3 与 TCP/IP Suite；</li>
<li>应用层采用通用工业协议 CIP；</li>
<li>IT 集成，包括 Web、OPC 等服务；</li>
<li>物理层实现基于标准的以太网控制器；</li>
<li>规定了特定的传输端口，UDP/IP(PORT 44818)，TCP/IP(PORT 44818)。</li>
</ol>
<h4><strong>2.2</strong> <strong>EtherNet/IP</strong>  <strong>各层功能特点</strong></h4>
<h5><strong>2.2.1</strong> <strong>物理层：</strong></h5>
<p>1）传输介质可选铜缆双绞线或光纤；</p>
<p>2）几乎可以容纳无限数量的点对点节点；</p>
<p>3）可以通过嵌入式交换机技术和设备级环网技术来实现线型、星型和环网拓扑；</p>
<p>4）可根据需求选择不同的物理接口：基本的以太网连接，支持 COTS 现成商用标准，适合 IP 20 应用；工业等级应用，需性能增强的 RJ-45 连接器，密封 RJ-45 连接器以及更紧凑的 M12 连接器，适合 IP 67 应用；</p>
<h5><strong>2.2.2</strong>  <strong>数据链路层与网络层：</strong></h5>
<p><img src="https://help.aalielie.com/content/uploadfile/202506/84ad1750759164.png" alt="img" /></p>
<p>EtherNet/IP 的链路层帧格式如上图所示，与标准以太网没有区别，遵循 IEEE 802.3 规范设计，并支持全双工传输。</p>
<p><img src="https://help.aalielie.com/content/uploadfile/202506/b6961750759181.png" alt="img" /></p>
<p>同时网络层与传输层也使用 TCP/IP 与 UDP/IP 进行传输，两种方式分别传输两种不同的消息：TCP/IP 是面向连接的点对点传输，并且传输的是封装 CIP explicit messages（显示消息），主要用于配置信息与诊断数据的传输；UDP/IP 是单对多的广播传输，主要用于实时性要求较高的数据传输，并由 Timeout 机制检测是否传输出错。</p>
<h5><strong>2.2.3</strong>  <strong>Encapsulation 封装协议</strong></h5>
<h6><strong>2.2.3.1</strong>  <strong>主要功能</strong></h6>
<p><img src="https://help.aalielie.com/content/uploadfile/202506/b34d1750759200.png" alt="img" /></p>
<p>实时性要求不同的数据会采用不同的封装形式与传输形式：实时性要求不高的数据会采用 CPF（Common Packet Format 通用包格式）+Encapsulation 的封装，走 TCP/IP 传输通道；而实时性要求较高的数据仅采用 CPF 封装，并走 UDP/IP 传输通道。封装层主要功能如下：</p>
<ol>
<li>解除 IP 网络的 CIP 消息封装；</li>
<li>将 CIP 消息包装为以太网消息；</li>
<li>会话管理；</li>
<li>与下层 TCP/IP 协议层以及 TCP/IP 堆栈进行交互。</li>
</ol>
<h6><strong>2.2.3.2</strong> <strong>封装结构</strong></h6>
<p><img src="https://help.aalielie.com/content/uploadfile/202506/213b1750759222.png" alt="img" title="img" /></p>
<p><img src="https://help.aalielie.com/content/uploadfile/202506/97991750759240.png" alt="img" title="img" /></p>
<p>EtherNet/IP 的以太网包与其中的封装部分结构如上图所示，其中封装部分各细分部分功能如下：</p>
<p>Command：代表该包的功能和作用；</p>
<p>Length：指示后方数据域的长度；</p>
<p>Session Handle：会话句柄，表示会话建立或响应的请求；</p>
<p>Status：指示改包的命令有无正确执行，可比对状态码表进行确认；</p>
<p>Sender Context：包含描述发送者信息的内容；</p>
<p>Options：可选设置；</p>
<p>Command-specific Data：根据命令的不同有所区别</p>
<h6><strong>2.2.3.3</strong> <strong>命令类型</strong></h6>
<p><img src="https://help.aalielie.com/content/uploadfile/202506/9c741750759257.png" alt="img" /></p>
<h6><strong>2.2.3.4</strong> <strong>命令特定数据域（CPF）结构</strong></h6>
<p><img src="https://help.aalielie.com/content/uploadfile/202506/9b711750759312.png" alt="img" /></p>
<p>数据域部分的结构如上图所示，其结构为 1 个 1 个的 item 的连接，其每种 item 的含义如下：</p>
<ul>
<li>Item Count：指示该包数据域中 item 的总个数；</li>
<li>Address Item：存放目的地地址信息：</li>
</ul>
<p><strong>Type ID：地址类型；</strong></p>
<ul>
<li>
<p>Length：地址长度；</p>
</li>
<li>
<p>Data：地址具体数值；</p>
</li>
<li>
<p>Data Item：存放数据信息：</p>
</li>
</ul>
<p><strong>Type ID：数据类型；</strong></p>
<ul>
<li>
<p>Length：数据长度；</p>
</li>
<li>
<p>Data：具体数据，封装了 CIP 报文包的内容，包含 CIP 命令、请求路径等内容；</p>
</li>
</ul>
<h5><strong>2.2.4</strong> <strong>传输层的消息类型</strong></h5>
<h6><strong>2.2.4.1</strong>  <strong>显式消息</strong></h6>
<p>显式消息使用 TCP 进行传输，端口一般是 44818，通信模式是请求响应模式。 主站向从站发送消息，从站回应主站的消息。例如主站向从站发送显示消息。 针对 Class 1(Identity),的 Instance 1 的 Attributes 1 Vendor ID (供应商 ID)执行 Services 0x0E Get_Attribute_Single(获取单个属性) 操作，从站在收到该信息后将自己的供应商 ID 返回给主站。这就是一次完整的显式消息.</p>
<p>应用：非周期性从端数据的读写</p>
<p>特点：</p>
<p>① 报文中包含地址项和服务请求（命令）；</p>
<p>② 通常用于两个站点之间的通用通信路径；</p>
<p>③ 面向逻辑连接的连接方式，点对点传输，请求对应响应；</p>
<p><img src="https://help.aalielie.com/content/uploadfile/202506/e0081750759335.png" alt="img" /></p>
<p>上图中，Command 的值为 0x6F，指示该报文为 SendRRData，其上半部分的结构为封装报文头结构，下半部分为命令特定数据域结构，与前文提到的报文结构基本无异。</p>
<h6><strong>2.2.4.2</strong> <strong>隐式消息</strong></h6>
<p>隐式消息(有些厂商也叫做 IO 消息)使用 UDP 进行传输，端口一般是 2222。通信的模式是连接式的。首先主站通过显式消息向从站发起连接请求。主要是针对 Class 6 (Connection Manager)的 Instance 1 执行 Services 0x54 Forward_Open，主站发送连接请求时会附带连接参数等信息.从站在收到这些 Forward_Open 之后，会根据自身的状态判断是否可以建立连接，如果可以会通过显式消息返回给主站连接成功的信息。随后主站和从站会按照连接参数中约定的通信周期，周期性通过 UDP 的 2222 端口向对方发送数据.</p>
<p>应用：实时的 IO 应用数据交互</p>
<p>特点：</p>
<p>① 报文中没有地址项，也没有服务请求（命令）；</p>
<p>② 通过 Connection ID 来确定任务目标；</p>
<p>③ 生产者与（一或多个）消费者之间的特殊通信路径；</p>
<p>④ 点对点或多播；</p>
<p><img src="https://help.aalielie.com/content/uploadfile/202506/82f61750759354.png" alt="img" /></p>
<p>上图的报文结构中，不含有封装协议报文头，且命令特定数据域中的地址项与数据均固定，通过 Connection ID 来标识访问的数据。</p>
<h5><strong>2.2.5</strong> <strong>EtherNet/IP</strong>  <strong>应用层-CIP</strong></h5>
<p><img src="https://help.aalielie.com/content/uploadfile/202506/eded1750759369.png" alt="img" /></p>
<p>应用层协议 CIP 规定了 Ethernet/IP 从站设备的四个部分: 对象模型（Object Model）,服务（Services）,消息路由（Message Routing）,连接管理（Connection Management）.</p>
<p>其中最关键的是对象模型.</p>
<p>CIP 中的每个设备都是由多个对象（Objects）组成，每个对象都有以下属性：</p>
<p>Class（类）： 定义对象的类型，例如 Identity Object、Connection Object 等。<br />
Instance（实例）： 类的具体实现，表示实际的设备组件。<br />
Attributes（属性）： 描述对象的状态或配置参数。<br />
Services（服务）： 提供对对象的操作（如读写、配置等）。</p>
<p>基本原理：以是否存在实时性要求为依据，划分数据的优先级，区别对待不同优先级的数据。具体的协议内容，将单独成篇进行介绍。</p>
<h4><strong>2.3</strong> <strong>EtherNet/IP</strong>  <strong>特点总结</strong></h4>
<p>① 在标准以太网基础上建立，而不仅仅是与之兼容；</p>
<p>② 多种数据传输速率：10、100、1000Mbit/s；</p>
<p>③ 可以使用标准基础架构来构建系统；</p>
<p>④ 可以使用 IP 路由器将网络构建为子网；</p>
<p>⑤ 使用 IP 寻址进行所有通信，完全支持跨子网的通信，因此网络中几乎没有节点数量限制；</p>
<p>⑥ 非实时通信和实时通信可以在同一子网中共存；</p>
<p>⑦ 支持协调驱动和运动控制；</p>
<p>⑧ 支持设备级环网（DLR），该环网通过介质冗余提供单容错能力；</p>
<p>⑨ 与其他上层协议（如 HTTP,FTP,VOIP 等）共存；</p>
<h3>3.Ethernet/IP 的性能</h3>
<p>Ethernet/IP 总线的实时性是通过设置消息的 Qos 来实现的. 市面上常见的 Ethernet/IP 设备的实时性大部分在 5-10ms. 相比起 EhterCAT 等电机控制协议的 1ms 通信周期, 这个实时性还是较差的. 所以 Ethernet/IP 协议只能用作过程控制, 无法用于运动控制.</p>
<h3>4.Ethernet/IP 协议的使用方法</h3>
<p>在工业场景中, 很少有使用显式消息的情况, 大部分情况都是主站和从站间通过隐式消息通信 (部分厂家把这个叫做 IO 连接). 这里介绍较为通用的主站连接从站的方法.</p>
<p>对于任何一个 Ethernet/IP 从站设备, 都会配套有一份 eds 文件(设备描述文件). 该文件记录了 从站设备 中所实现的 CIP 对象模型中的类的信息, 以及进行 IO 连接时所需参数信息.</p>
<p>首先将从站的 eds 文件导入主站, 然后主站通过扫描网络中从站的方式(或者手动输入的方式)获取从站的 IP 地址信息.</p>
<p>随后正常启动主站即可建立 Ethernet/IP 网络连接.</p>
<p>不同的主站厂商提供的导入 eds 文件和扫描从站的方式不一样, 请以主站厂商的用户手册为准.</p>]]></description>
    <pubDate>Thu, 19 Jun 2025 10:27:43 +0800</pubDate>
    <dc:creator>牛的牛的</dc:creator>
    <guid>https://help.aalielie.com/?post=11</guid>
</item>
<item>
    <title>EtherCAT总线</title>
    <link>https://help.aalielie.com/?post=10</link>
    <description><![CDATA[<h1>EtherCAT总线</h1>
<h3>EtherCAT 总线初见</h3>
<p>EtherCAT 名称的由来是： Ethernet for Control Automation Technology，也就是用于控制自动化技术的以太网，其实也就是工业以太网的一种。EtherCAT 是由德国 BECKHOFF 自动化公司于 2003 年提出的实时工业以太网技术。它具有高速和高数据有效率的特点，支持多种设备连接拓扑结构。其从站节点使用专用的控制芯片，主站使用标准的以太网控制器。</p>
<p>EtherCAT 是一种工业以太网技术，看到的大多数应用场景都是伺服电机。因为是基于以太网的技术，所以 EtherCAT 相比于 CAN 总线而言，速率上要快不少。EtherCAT 可以达到 100M 的速率，而 CAN 只有 1M。此外，EtherCAT 还具备低延时和精准同步的特点。</p>
<p>在工业总线中，低延时、精准同步是用户的关键需求。试想一下，工厂中某个器件的生产需要 A/B/C 三个机器协同操作，原本预想的是 A 先操作期间，然后 B 把器件传递给 C，C 再操作。如果，A/B/C 不同步，或者操作命令的传达有延时，A 还没有操作完器件，B 就已经开始进行传递了。这时要么器件损坏，要么就做出来个半成品。而 EtherCAT 相比于普通的以太网技术就有这两点的优点。</p>
<p>EtherCAT 是一个开放架构，以以太网为基础的现场总线系统，其名称的 CAT 为控制自动化技术（Control Automation Technology）字首的缩写。EtherCAT 是确定性的工业以太网，最早是由德国的 Beckhoff（倍福）公司研发。</p>
<h4>EtherCAT 基本原理</h4>
<p>倍福官方对 EtherCAT 的传递机制的命名叫做：<em>ON The Fly。</em></p>
<p><img src="https://help.aalielie.com/content/uploadfile/202506/116f1750757202.png" alt="img" /></p>
<p>On The Fly 技术可以从两方面来解读，第一个方面是以太帧“时分复用”。一般以太帧里都只包含了一个设备发送的消息，5 个设备就会发送 5 条以太帧。而 EtherCAT 则是多个从站共享一条以太帧。就像图中的火车，EtherCAT 主站发出了“火车”（以太帧），各个从站则从这辆火车的不同的“车厢”（子报文）中提取或插入自己的“乘客”（消息）。这样一来就实现了以太帧的“时分复用”，只用一条以太帧（最大 1486byte），就可以让各个从站都收发出自己的消息，大大的降低了通信的延时（这一部分《<a href="https://link.csdn.net/?target=https%3A%2F%2Fzhuanlan.zhihu.com%2Fp%2F80572311%3Flogin%3Dfrom_csdn">浅析 EtherCAT 总线</a>》里面讲的比较清楚，还没理解的同学可以看看）。</p>
<p>On The Fly 影响的另一个方面就是总线仲裁了。所谓总线（例如 CAN 总线），就是大家都共用一条通道来通信，各个设备都挂载在同一条总线上。所以，当一个总线上的多个设备同时想要发消息的时候，就会产生冲突，所以，就有总线仲裁的机制。控制器决定当前时刻，谁来发消息，谁来“占用”这条总线。而 EtherCAT 玩了一个花样，EtherCAT 的各个设备之间是一种 P2P（Point to Point）的连接方式，这些设备根本没有连接在“同一条”总线上。下面是 EtherCAT 的连接结构。</p>
<p><img src="https://help.aalielie.com/content/uploadfile/202506/bfd41750757300.png" alt="img" /></p>
<p>最左边的是主站，后面的都是从站，各个从站下面还挂载了不同的设备。可以看到主站向从站 1 发送以太帧，从站 1 接收、处理完自己的子报文后，再把以太帧发送给从站；从站 2 接收，处理完自己的子报文后在发送给从站 3；如此往返，直到最后一个从站 n 接收处理完自己的消息，再把这条以太帧返回回去。所以，各个从站之间根本就不会存在总线冲突。EtherCAT 只需要预先配置好各个从站占用的子报文位置，也就是 On The Fly 技术，就可以解决总线总裁这一个老大难的问题，确实是一箭双雕。</p>
<p>当然，这种解决方案也是有它的缺点的。比如，从站数量非常多的时候，最后一个从站就需要等前面的从站一次次转发才能收到消息。当然，我觉得 EtherCAT 应该也想到了这点，应该也采取了某种机制来避免这种最远设备延迟的缺陷。但是，我还没深挖这个问题，所以，没看到相关的解决机制。如果有了解的同学希望能指教一下。</p>
<p>主站是唯一允许发送帧的节点，子站只能转发帧。数据帧就像火车一样，从主站开出，途经各个子站，把对于子站的数据放下或者带上，最后回到主站。</p>
<p>这种方法有助于确保实时操作并避免延迟。</p>
<p>EtherCAT 网络不需要交换机。每个 EtherCAT 设备通常有两个以太网端口，第一个端口是接收端口，另一个是发送端口，发送给另一个设备。</p>
<h4>EtherCAT 系统组成</h4>
<p>EtherCAT 系统主要就一个主站和若干从站组成。如所示：</p>
<p><img src="https://help.aalielie.com/content/uploadfile/202506/bfdd1750757320.png" alt="img" /></p>
<p>EtherCAT 一般使用软件的方式来实现主站，包括倍福的 TwinCAT，Igh，KingStar 等等都是基于一台实时操作系统的 PC，通过以太网卡，来实现主站的功能。因为，主站不是我的项目重点，所以，目前了解的还不多。先挖一个坑，后面有时间了研究一下，再来补上。现在我是用 TwinCAT 的免费版来学习和调试的。TwinCAT 本身是收费的，不过，它有试用版，试用版不具备实时功能，调试一下设备还是足够了。</p>
<p>从站的组成如图所示：</p>
<p><img src="https://help.aalielie.com/content/uploadfile/202506/30871750757365.png" alt="img" /></p>
<p>从站一般是有 3 部分器件组成的：物理层器件、EtherCAT 从站控制器（EtherCAT Slave Control）和微处理器（MCU）。物理层器件就是以太网的 PHY 芯片和网口，ESC 是实现 EtherCAT 协议栈的专用 ASIC，从站控制微处理器主要实现应用层（如 CANopen）和用户自定义的程序。</p>
<p>看到这里没有通信基础知识的通信可能就有点懵逼了。物理层，数据链路层，应用层这些是个啥玩意？这里我就简单说一下，想要深入理解还是可以看看 OSI 模型，大多数的通信技术都脱离不了这个框架。</p>
<p><img src="https://help.aalielie.com/content/uploadfile/202506/dcaa1750757385.png" alt="img" /></p>
<p>OSI 中有 7 层，EtherCAT 系统中只用了 3 层：物理层、数据链路层、应用层。先降维的说一下这几层是啥意思。最基本的通信就是咱们人类说话，我就以我们普通对话来讲解一下这三层的意思。</p>
<p>物理层：人类的语言是通过嘴发声，声波在空气中传播，传递到耳朵，耳朵听音再汇聚到大脑，大脑最终判断出声音中的信息。我们的嘴、耳、声波和空气就是物理层。物理层的重点是信号在介质中的传递表示，不同的字有不同的发音规则，不同的频率和声调，比如“哦”，我们就需要发出“o”这个音，我们听到“o”这个音的时候，才能判断出“哦”这个字。计算机通信的原理和这个也是一样的，信号在光纤、电缆以及空气中传播，计算机需要判断电缆上的电平的高低来判断 0,1bit。当然，计算机比人类要傻很多，它不知道“某句话”的“发音”是从什么时候开始的，什么时候结束的，所以，物理层还需要告诉它信号的起始时刻和持续的长度等等。</p>
<p>数据链路层：通过前面的物理层，我们已经具备了基本的发声的手段，通过嘴改变声音的频率、音调、音长等特征（通信系统中，天线或者光模块改变信号的电平高低、信号频率、调制方式等特征），让声音在空气中传播（通信系统中，信号在相应的介质中传播），然后，耳朵识别这些频率、音调、音长等特征（通信系统中，接收端的识别信号的电平高低、频率、调制方式），最终实现口到耳的传播。</p>
<p>但是，光是这样还足够实现通信。试想一下，你和你的几个朋友处在一个嘈杂的环境当中，远处有汽车的轰鸣，旁边还有小孩子在哭闹，你的朋友们每个人在抢着发言，大家七嘴八舌的，根本听不清对方在说什么。所以，你和你的朋友之间想要对话就必须克服两个困难，第一，屏蔽掉耳旁的那些轰鸣声、哭闹声；第二，需要建立一种对话机制，让大家互相可以听清对方的话语。</p>
<p>第一点中描述的那些轰鸣、哭闹声，实际上就是通信系统中的噪声，噪声太大时，我们是无法通信的，因为我们根本听不清旁边的人在说些什么，只能听到轰鸣、哭闹声。最简单克服噪声的办法就是提高信号的发射功率，也就是大声地说话，让自己的声音盖过那些哭闹声，也即是通信系统中的<strong>功率控制</strong>。还有一种办法就是我们过滤掉一些噪声，虽然，这些声音都会进入我们的耳朵，但是，我们的大脑可以过滤掉一些不关注的声音，专注的去接收那些关注的声音，也即是通信系统中的<strong>频率选择</strong>。此外，大家七嘴八舌的说话也是一个问题。7,8 个人同时在说话，你能听清楚一两个就不错了，其他人在说啥，根本没法听清。所以，我们说话的时候，一般会有一个轮流的机制。每个人说两句，别人说话的时候，别插嘴。或者，两个人说悄悄话，不打扰到别人，自己也听得清。这里的轮流说话机制，就是通信系统中的“时分复用”或者“频分复用”；一个人说 7 个人听，就是广播；1 对 1 的悄悄话就是单播。数据链路层实际上就是用来解决以上的这些问题。</p>
<p>数据链路层会将待传输的消息组成一个帧，如图所示：</p>
<p><img src="https://help.aalielie.com/content/uploadfile/202506/af0a1750757492.png" alt="img" /></p>
<p>这个帧里就会包含目的地址、源地址、帧数据、帧校验位等。通过目的地址就可以确定帧传递的对象，通过源地址接收方也可以知道是谁发送了这条帧。在数据帧之外的地方，一般还会存在一个控制器（比如 EtherCAT 主站），这个控制器会决定，其他的从站什么时候传输数据，数据可以占用多少的资源。在其他的一些更复杂的通信系统中，数据链路层还会根据当前的信道条件（噪声情况），来决定各个设备的发射功率，调制方式等。</p>
<p>应用层：说完了数据链路层，我们还需要继续了解一下应用层。首先需要明确的一点，这里的应用层和我们手机、电脑上的应用程序不是一个东西。最为常见的应用层协议就是 HTTP。简单来说，应用层是对数据的一种格式约定。这里还是用人类的对话来打个比方。你和一个老外，大家都有口有耳，也都是文明人，知道等对方说完自己再说。但是，你不懂英文，他不懂中文，你们还是无法交流。他说了“double”，你以为是“打包”；他说“You need cry deal”，你以为是“有你的快递”。这实际上就是你们的应用层协议不对等，他安装的是“英语”应用层协议，你安装的是“中文”应用层协议，大家说话牛头不对马嘴，根本无法交流。再夸张一点，我和你都是中国人，我们都听得懂中文，当时我是学通信的，你是学自动化的，我说 PRACH 信道，信道检查与估计，匹配滤波这些词的时候，你能明白每一个字的意思，但是连着一起是啥就不知道了。这就是因为你确实“通信系统”这个应用层协议。应用层协议最终的目的，就是让消息的收发双方知道这一串“1010101010”代表的是什么意思。</p>
<h4>EtherCAT 特性</h4>
<p>① 开放的技术</p>
<p>EtherCAT 全称 EtherNet Control Automation Technology，是由德国倍福（Beckhoff）公司提出的一种实时以太网技术。EtherCAT 是一种开放但不开源的技术，意味着您可以任意使用这项技术，但若要进行相关设备的开发，则需要向倍福公司获取相关授权。</p>
<p>② 快速性</p>
<p><img src="https://help.aalielie.com/content/uploadfile/202506/72411750757549.png" alt="img" /></p>
<p>相比传统现场总线，EtherCAT 的数据传输速率有了极大的提升，可选 10Mbit/s 或 100Mbit/s，甚至依托补充的 EtherCAT G 技术，传输速率可达 1000Mbit/s；同时 EtherCAT 基于标准以太网帧传输，单帧数据用容量可达 1486 Bytes。这使得在传输数据量方面 EtherCAT 有无比的优越性。</p>
<p>③ 拓扑的灵活性</p>
<p><img src="https://help.aalielie.com/content/uploadfile/202506/375f1750758766.png" alt="img" /></p>
<p>EtherCAT 几乎支持所有的拓扑结构：星型、线性、树型、菊花链型等，并支持各类电缆、光纤等多种通信介质，还支持热插拔特性，保证了各设备之间连接的灵活性。同时 EtherCAT 几乎没有设备容量限制，最大从站设备数可达 65535 个，使得网络中无需交换机的存在，仅通过设备间的拓扑结构即能使得 EtherCAT 数据直达每个从站。</p>
<p>④ 同步的精准性</p>
<p><img src="https://help.aalielie.com/content/uploadfile/202506/65051750757678.png" alt="img" /></p>
<p>对于像多个伺服轴执行协同运动等一类应用，其对数据同步性要求甚高。而 EtherCAT 可选择使用分布式时钟（DC）的方式同步节点，并采用完全基于硬件的时间校准机制，使得整个系统抖动时间远小于 1us，能够完全适用于这样的应用之下。如下图所示，300 个 EtherCAT 站点间的信号时间抖动仅有 20ns：</p>
<p>⑤ 高可用性</p>
<p><img src="https://help.aalielie.com/content/uploadfile/202506/38d11750758868.png" alt="img" /></p>
<p><img src="https://help.aalielie.com/content/uploadfile/202506/98f41750758887.png" alt="img" /></p>
<p>EtherCAT 可通过简单的措施实现线缆的冗余性。通过将网络中最后一个站点与主站设备中的以太网端口连接，即可将线型拓扑结构扩展为环型冗余拓扑结构。当线缆损坏或站点故障发生时，主站堆栈中的附加软件检测就会检测到，并立刻切到换冗余线路中运行，而各站点无需为此而改变，甚至不会意识到网络通信正在冗余线路中运行。</p>
<h4>ISO/OSI 参考模型</h4>
<p><img src="https://help.aalielie.com/content/uploadfile/202506/aeb81750758923.png" alt="img" /></p>
<p>EtherCAT 仅使用了物理层、链路层、应用层三层协议，与多数传统的现场总线相同，但相比于其它实时以太网协议，如 PROFINET、EtherNet/IP 等，其协议栈更加精简。这也是 EtherCAT 协议的实时性优越于其它实时以太网协议的重要原因之一。</p>
<h4>EtherCAT 主从架构</h4>
<p>EtherCAT 网络采用主从架构，网络组态于 PC 主机上进行配置，需要使用到相应的 EMI（EtherCAT Master Information Files）、ESI（EtherCAT Slave Information Files）文件，经专用配置软件（通常于主站配置软件中集成）进行配置后生成 ENI（EtherCAT Network Information Files）文件下载至主站中，主站便依据该文件进行整个网络的识别。</p>
<p>图中关于 EtherCAT 从站设备的内部组成，即是一个实现 EtherCAT 协议 OSI 模型的过程：RJ45 网口、PHY 物理层芯片用于实现物理层协议；ESC 用于实现链路层协议，通常使用倍福官方的 ET1100 芯片实现；MCU 则用于实现应用层协议，需要厂商自行根据相应的协议编写程序代码，或是直接使用协议栈代码实现。</p>
<h4>EtherCAT 运行机制</h4>
<p>EtherCAT 的关键在于每个节点对以太网数据帧进行处理。在通信过程中，每个从站从主站发送过来的数据帧中读取数据，与此同时，将自身产生的数据插入到该数据帧中，然后转发到下一个从站。这种传输方式提高了带宽的利用率，通常一个数据帧就可以完成一个周期的通信。</p>
<p><img src="https://help.aalielie.com/content/uploadfile/202506/de0c1750757762.jpeg" alt="img" /></p>
<h4>EtherCAT 的拓扑结构</h4>
<p>EtherCAT 支持多种拓扑结构：线形、树形、菊花链形等等。由于 EtherCAT 基于传统以太网，因此可以使用标准以太网电缆或光缆进行连接，使用 100Base-TX 电缆时，每个站之间距离可达 100 米，整个网络最多可以连接 65535 个设备。不仅如此，EtherCAT 还支持热连接、热插拔、冗余、安全等功能。</p>
<p><img src="https://help.aalielie.com/content/uploadfile/202506/46af1750757790.png" alt="img" /></p>
<h4>EtherCAT 的使用成本</h4>
<p>使用 EtherCAT 的成本非常低廉，任何带有以太网控制器的控制单元都可以作为 EtherCAT 主站，从站可以使用多家供应商提供的产品，也可以使用 ETG 提供的从站源码进行开发。</p>
<h4>EtherCAT 的性能</h4>
<p>控制 1000 个开关量输入和输出的刷新时间大约为 <strong>30us</strong>。单个以太网帧最多可以容纳 <strong>1486 字节</strong>的过程数据，相当于 12000 位开关量数字输入和输出，刷新时间大约为 300us。控制 100 台伺服电机的数据通信周期约为 100us。</p>
<p>由于 EtherCAT 使用分布式时钟，因此也具有良好的实时性能。每个具有分布式时钟的从站周期性地与参考时钟进行同步，消除误差，各从站时间误差<strong>小于 1us</strong>。</p>
<p><img src="https://help.aalielie.com/content/uploadfile/202506/fee91750757822.png" alt="img" /></p>
<h4>EtherCAT 帧结构</h4>
<p>因为 EtherCAT 采用了 IEEE 802.3 作为其标准以太网帧，只是对 IEEE 802.3 Ethernet 规格进行扩充，并未对基本结构进行任何变更，因此可以转送标准的 Ethernet 帧内的数据，同时可以使用标准的以太网控制器，无需单独设计硬件。</p>
<p><img src="https://help.aalielie.com/content/uploadfile/202506/2ae11750757885.jpeg" alt="img" /></p>
<p>以太网帧分为以太网头、以太网数据和帧校验序列几个部分。EtherCAT 在标准以太网帧的基础上进行了一定的修改：</p>
<ul>
<li><strong>以太网头</strong>：EtherType 为 EtherCAT 保留，设为 0x88A4 ，以与其它以太网帧相区别。</li>
<li><strong>以太网数据</strong>：以太网数据分为 EtherCAT 头与 1 个以上的 EtherCAT 子报文两个部分。 细分 ETC Header，前 11bit 表示子报文的长度，范围为 44\~1498 字节；中间 1bit 保留，最后 4bit Type \= 1，表示从站通信。</li>
</ul>
<p><img src="https://help.aalielie.com/content/uploadfile/202506/b6561750757908.jpeg" alt="img" /></p>
<p>一个 EtherCAT 报文由数个子报文组成，总长度在 44\~1498 字节之间。每个子报文分为 10 字节的报文头、0\~1486 字节的数据和 2 字节的工作计数器三个部分。</p>
<ul>
<li>Cmd：表示 EtherCAT 指令类型，即应当如何处理后面的数据。</li>
<li>Idx：表示帧的索引号，用来帮助主站对报文进行识别。</li>
<li>Address：表示从站地址，有三种寻址模式，分别为位置寻址、节点寻址、逻辑寻址。</li>
<li>Len：表示报文数据的长度。</li>
<li>R：表示保留位。</li>
<li>M：表示后续报文标志，0 表示当前为最后一个报文，1 表示 EtherCAT 随后将提供更多报文。</li>
<li>IRQ：表示中断请求寄存器。</li>
<li>Data：表示数据区</li>
<li>WKC：表示工作计数器。</li>
</ul>
<h4>EtherCAT 设备寻址方式</h4>
<p>在 EtherCAT 的每个子报文中，有 32 位空间用于对 EtherCAT 设备进行寻址。寻址方式有三种，分别为：</p>
<ul>
<li>位置寻址</li>
<li>节点寻址</li>
<li>逻辑寻址</li>
</ul>
<p><strong>位置寻址</strong></p>
<p><img src="https://help.aalielie.com/content/uploadfile/202506/54cf1750757926.jpeg" alt="img" /></p>
<p>位置寻址方式是根据从站的连接顺序，即物理位置实现的。在报文头的 32bit 地址中，前 16bit 的 Position 用于存放地址值，Offset 用于存放 ESC 逻辑寄存器或者内存地址。报文每经过一个从站设备，其 Position 中的地址值加 1。当一个从站接收到 EtherCAT 报文后，如果报文中的地址值为 0，则该报文就是这个从站要要接收的报文。</p>
<p><img src="https://help.aalielie.com/content/uploadfile/202506/1a3f1750757972.jpeg" alt="img" /></p>
<p>在上图中，如果需要总线上第 8 个设备响应报文，则主站需要将报文的地址设为 0xFFF9，当报文经过第 1 个从站时，地址为 0xFFF9，不等于 0，第 1 个从站不会响应报文，报文地址加 1，变为 0xFFFA。当报文经过第 2 个从站时，地址为 0XFFFA，不等于 0，第 2 个从站不会响应该报文，报文地址加 1，变为 0xFFFB。以此类推，当报文到达第 8 个从站时，此时地址值为 0x0000，当前从站将接收报文。</p>
<p><strong>节点寻址</strong></p>
<p>在报文中，报文头的 32bit 地址，前 16bit 的 Address 用于存放站点地址值，Offset 用于存放 ESC 逻辑寄存器或者内存地址。在每个从站中站点地址保存在寄存器(0x0010) 中。顺序寻址时，主站可以对每个从站的站点地址进行设置，也可以直接读取每个从站的的站点地址。</p>
<p>节点寻址方式的优点是，每个从站的地址与其在总线中的位置无关。在添加/删除从站，甚至是改变总线拓扑结构的时候都能对从站进行正确的访问。</p>
<p><img src="https://help.aalielie.com/content/uploadfile/202506/bcdc1750757989.jpeg" alt="img" /></p>
<p>上图是节点寻址方式的示意图。8 个从站的地址与其在总线中的位置并没有关系。出于直观的目的，4 台伺服驱动器的地址被设置为连续的，4 个 I/O 模块的地址被设置为连续的，在实际中并没有这样的要求。</p>
<p><strong>逻辑寻址</strong></p>
<p>EtherCAT 的第三种寻址方式是逻辑寻址，首先需要了解的是 FMMU。</p>
<p>FMMU：FMMU 称为总线内存管理单元，它存在与从站芯片 ESC 中，负责对从站物理地址与主站逻辑地址进行翻译并建立映射关系。主站在总线启动过程中对 FMMU 进行配置，内容包括：</p>
<ul>
<li>逻辑地址的起始地址</li>
<li>数据长度（按跨字节数计算）</li>
<li>逻辑地址的起始位</li>
<li>逻辑地址的终止位</li>
<li>从站物理地址的起始地址</li>
<li>从站物理地址的起始位</li>
<li>操作类型（只读、只写、读写）</li>
<li>使能</li>
</ul>
<p>在报文中，使用报文头的 32bit 地址的全部，用来表示大小为 4GB 的逻辑地址空间。</p>
<p><img src="https://help.aalielie.com/content/uploadfile/202506/985c1750758011.jpeg" alt="img" /></p>
<p>以上图为例，FMMU 将逻辑地址中 0x00012345 第 2 位开始的，到 0x00012346 以第 2 位终止的区域，与从站物理地址中 0x0010 第 0 位开始的区域进行映射。</p>
<p>当从站收到来自主站的报文时，会检查报文中的地址是否与 FMMU 中的地址相符，如果有，将根据操作类型进行读写操作。</p>
<p><img src="https://help.aalielie.com/content/uploadfile/202506/81e31750758030.jpeg" alt="img" /></p>
<p>这种寻址方式的优点是，在主站想对每个从站进行访问的时候，只需要对逻辑空间中的地址进行操作，而无须关心该地址对应的从站物理地址，减轻了主站的负担。</p>
<p><strong>总结</strong></p>
<p>EtherCAT 使用三种方式对设备进行寻址，在启动过程中，使用顺序寻址方式为从站分配节点地址，然后通过节点寻址方式配置从站寄存器，将逻辑地址与从站物理地址进行映射，之后就可以使用逻辑寻址方式进行过程数据交换了。</p>
<h4>EtherCAT 同步管理器</h4>
<p>EtherCAT 从站芯片 ESC 可以用于主站于从站之间的数据交换，但是它有一些弱点：</p>
<ul>
<li>数据的完整性不能保证（必须由软件实现协同数据交换）</li>
<li>数据安全不能保证（必须由软件实现安全机制）</li>
<li>主站和从站都必须轮询存储器，直到一方确认访问完成。</li>
</ul>
<p>EtherCAT 使用同步管理器 SM 进行主站与从站间的数据交换，并产生改变通知中断，发送给双方。SM 由主站配置，并且使用一个缓冲区用于数据交换。缓冲区的访问由 SM 硬件控制，而且必须首先访问起始地址，否则将拒绝访问。在起始地址被访问之后，整个缓冲区都可以进行访问，当访问到结束地址时，缓冲区状态将改变，产生中断。如果设置了看门狗，则看门狗也可以触发中断。</p>
<p>SM 支持两种通信模式：</p>
<ul>
<li>缓存模式</li>
</ul>
<p>缓存模式支持任意时刻访问主站和从站上的通信缓冲区。接受方总可以读取发送方最新写的缓冲区数据，发送方总可以更新缓冲区的值。如果写缓冲区比读缓冲区速度快，旧数据将会丢失。缓冲模式通常用于 PDO 的 TXPDO 和 RXPDO 通信。</p>
<ul>
<li>邮箱模式</li>
</ul>
<p>由于使用了握手机制，在邮箱模式数据不会丢失，。主站和从站都可以访问缓冲区，但前提是另一方已经结束访问。首先，发送方写入缓冲区，然后写操作被锁定，直到接收方读取完数据。邮箱模式通常同于应用层的非周期性数据交换。</p>
<h4>EtherCAT 物理层和链路层</h4>
<p><strong>物理层</strong></p>
<p>倍福对 EtherCAT 协议的物理层实现提供了两种方案：普通方案以及 EtherCAT P 方案；</p>
<p>① 普通方案：采用通用的、低成本的 RJ45 接口，以及物理层 PHY 芯片，通信介质可采用 TX（双绞线，最大传输距离 100m）或 FX（光纤，最大传输距离 20km）进行传输，另有 LVDS 形式可供进行电路板级的协议数据传输。</p>
<p><img src="https://help.aalielie.com/content/uploadfile/202506/7ae61750758052.png" alt="img" /></p>
<p>②EtherCAT P 方案：EtherCAT P（P \= power，电源）是对 EtherCAT 标准协议的补充。它不仅传输通信数据，而且通过单根、标准的四线以太网电缆传输外围电压。</p>
<p><img src="https://help.aalielie.com/content/uploadfile/202506/26291750758072.png" alt="img" /></p>
<p><strong>链路层</strong></p>
<p><strong>EtherCAT 链路层的总体特点如下：</strong></p>
<p>① 采用 IEEE 802.3 标准以太网帧结构；</p>
<p>② 支持 UDP，不支持 IP 协议；</p>
<p>③ 报文帧的传输要通过专用硬件（如 ET1100）。</p>
<p>其帧结构如下图所示：</p>
<p><img src="https://help.aalielie.com/content/uploadfile/202506/f58a1750758098.png" alt="img" /></p>
<p>EtherCAT 报文帧分为基础报文帧和 UDP 报文帧，区别在于帧结构中是否含有 UDP 的数据部分，并均支持带上 VLAN 标签；而由于 UDP 报文帧因为时延较大，应用较少，因此我们仅以基础报文帧进行介绍，以下为基础报文帧的帧结构：</p>
<p><img src="https://help.aalielie.com/content/uploadfile/202506/ab661750758135.png" alt="img" /></p>
<p>其中 Datagram 部分参数含义如下：</p>
<p>Cmd：8bit 命令码。具体有 RD（读）、WR（写）、RW（读写）等行为，结合下面提到的数种寻址方式（AP、FP、L、B）共同构成命令码部分；</p>
<p><img src="https://help.aalielie.com/content/uploadfile/202506/f3e11750758157.png" alt="img" /></p>
<p>Idx：8bit 索引值，表示该帧的索引号，可供主站识别该帧；</p>
<p>Address：32bit 寻址方式，又可细分为 4 种具体的寻址方式：</p>
<p>1）广播寻址（B）：表明每个从站都可识别该帧；</p>
<p>2）自增量寻址（AP）：从 0 开始，以负自增的形式，顺序识别每一个从站（0x0000、0xFFFF、0xFFFE……），每经过一个从站，该帧的地址值会自动减 1；通常用于主站启动时进行整个网络组态的扫描；</p>
<p><img src="https://help.aalielie.com/content/uploadfile/202506/2ba21750758209.png" alt="img" /></p>
<p>3）定点寻址（FP）：表明该帧识别特定从站种的特定数据，包括 16bit 节点地址与 16bit 偏移量；意味着固定寻址最多带动 65536（216）个从站，且每个从站的数据最多也为 65536（216）个：</p>
<p><img src="https://help.aalielie.com/content/uploadfile/202506/88f81750758231.png" alt="img" /></p>
<p>4）逻辑寻址（L）：主站配备 4G（232）的内存空间用于逻辑地址的存储，而逻辑地址依据各从站中的 FMMU 管理机制，映射至所有从站中的所有数据；主站在帧中只需携带某个逻辑地址，即可寻址到任意从站中的任意数据：</p>
<p><img src="https://help.aalielie.com/content/uploadfile/202506/a9e81750758257.png" alt="img" /></p>
<p>Len：11bit 数据段长度，与后面 Data 段长度对应；</p>
<p>R：3bit 保留位；</p>
<p>C：1bit 帧循环标志；</p>
<p>M：1bit 后续报文标志，0 表示当前报文为最后一个报文，1 表示后续会提供更多报文；</p>
<p>IRQ：16bit 中断请求标志；</p>
<p>Data：报文帧数据段，可为 0-1486 Bytes；</p>
<p><strong>FMMU 管理机制：</strong></p>
<p><img src="https://help.aalielie.com/content/uploadfile/202506/1c971750758285.png" alt="img" /></p>
<p>FMMU 管理机制用于每个从站的每个数据进行自身物理地址与通信逻辑地址的映射。对于主站而言，相同一个逻辑地址可以对应多个从站的物理地址，从而能够实现 1 条报文访问多个从站的特定数据。</p>
<p><strong>WKC 自增计数器：</strong></p>
<p><img src="https://help.aalielie.com/content/uploadfile/202506/d5b61750758311.png" alt="img" /></p>
<p>自增计数器，用于校检报文帧的命令是否正确的运行。报文帧的命令码得到正确执行后，相应的 WKC 会自增相应的值，在该报文从发出到返回主站时，主站会依据报文帧 WKC 内的值，与发送时计算得出的正确执行命令时应该接收到的值作对比，从而判断该报文帧有无正确执行。</p>
<h4><strong>EtherCAT 应用层</strong></h4>
<p><img src="https://help.aalielie.com/content/uploadfile/202506/ff451750758329.png" alt="img" /></p>
<p>EtherCAT 应用层支持多种设备行规以实现邮箱通讯，包括 CANopen、SERCOS、HTTP 等，基于 EtherCAT 的应用层行规被称为 xoE 协议（xxx over EtherCAT）。设备开发中，从站设备无需支持所有行规，根据其应用选择最合适的一种即可。下面将以应用最为广泛的 CoE 协议举例描述。</p>
<p><strong>CoE 协议</strong></p>
<p><img src="https://help.aalielie.com/content/uploadfile/202506/5be71750758348.png" alt="img" /></p>
<p>CoE 全称 CAN application protocol over EtherCAT，是 EtherCAT 应用层协议实现的一种，其特点是根据 CiA402 协议编写，使用对象和对象字典的功能实现邮箱通讯。</p>
<p>CANopen 协议已经有成熟且大规模的应用，使用 CoE 协议，相关设备只需要经过少量的更改即可应用于 EtherCAT 协议上，大部分 CANopen 的固件也可以得到重复利用。</p>
<p><strong>站点状态机</strong></p>
<p><img src="https://help.aalielie.com/content/uploadfile/202506/54c31750758370.png" alt="img" /></p>
<p>EtherCAT 对于站点所处的状态与运行功能进行了规范，如上图所示，各状态功能简介如下：</p>
<p>Init：初始化状态，站点在此状态下将检查数据链路是否正确，与应用层无数据交互。</p>
<p>Pre-Op：预操作状态（POP），站点在此状态下仅进行邮箱通信，不进行过程数据交互。</p>
<p>Safe-Op：安全运行（SOP），站点在此状态下可进行邮箱通信，并允许过程数据输入，不可输出。</p>
<p>OP：操作状态，站点可进行完全的数据通信，处于正常的工作状态。</p>
<p>Bootstrap：引导模式，仅适用于 FoE 的邮箱通信，用于固件的更新</p>
<h3><strong>同步模式及工作原理</strong></h3>
<p>EtherCAT 存在三种同步的模式：Free RUN、SM 同步（Sync Manager，同步管理器)、DC 同步（Distributed Clock，分布式时钟），下面将简要介绍三种同步模式及其工作的原理。</p>
<p>①Free RUN</p>
<p><img src="https://help.aalielie.com/content/uploadfile/202506/9c681750758420.png" alt="img" /></p>
<p>Free RUN 模式表示网络中各站点运行于异步的状态下，不进行同步。</p>
<p>从站应用程序完全按照从站自身时钟的时间片进行触发与运行，与报文帧的收发无关。Free RUN 模式分离了主站与从站的时间关系，当主从站时钟频率差别较大时，可能会出现丢帧等状况。该模式适用于完全没有同步性要求的应用。</p>
<p>②SM 同步</p>
<p><img src="https://help.aalielie.com/content/uploadfile/202506/253b1750758440.png" alt="img" /></p>
<p>SM 同步模式依赖于 EtherCAT 主站发送的同步帧，各从站依据收到的同步帧的数量进行自身应用程序的触发，如某从站收到两次 EtherCAT 同步帧，就进入一次中断服务函数进行相应的处理。</p>
<p>SM 同步模式的同步精度受多种因素的影响，如：主站自身的时间抖动，从而影响同步帧的发送；报文帧的物理传输时延决定了每个从站收到同步帧的时间一定有差异，在整个网络比较大时这个时间差也会放大。因此该模式比较适用于同步性要求一般的应用。</p>
<p>③DC 同步</p>
<p><img src="https://help.aalielie.com/content/uploadfile/202506/2edb1750758464.png" alt="img" /></p>
<p>DC 同步模式的形式与 SM 同步类似，都是依据于中断触发信号来进行自身应用程序的触发，不同在于 SM 同步依据的是同步帧，而 DC 同步依据的是各站点内 ESC 进行产生的 SYNC 信号。</p>
<p>EtherCAT 制定了一套完整的机制以保证 DC 同步能够精确运行，其运行流程总体可分为两个阶段：初始化阶段和动态补偿阶段，如下图所示：</p>
<p><img src="https://help.aalielie.com/content/uploadfile/202506/024e1750758481.png" alt="img" /></p>
<p>初始化阶段将网络中各设备在上电时紊乱的触发时间修正到可以容忍的水平，其过程是：</p>
<p>1）主站启动后发送广播帧扫描整个网络，各从站计算该报文环回自己一次的时间戳值，并将该值写入本地的寄存器中，差值计算从而得到报文帧的传输延时，如下图所示。后续再将该传输延时补偿到 SYNC 信号的发送过程中，从而消除物理传输延时的影响。</p>
<p><img src="https://help.aalielie.com/content/uploadfile/202506/06671750758515.png" alt="img" /></p>
<p>2）以从站中第一个具有 DC 单元的从站的时钟作为参考时钟，发送大量的 ARMW 报文将读取参考值并发送至各个从站当中去，使得每个从站本地的时钟都调整到接近参考时钟的值。</p>
<p>而由于存在时钟源不同，晶振频率抖动等等不可控因素，网络还需要进入动态补偿阶段，使所有站点的同步时间抖动能够长时间的维持在一个较低的水平，其过程如下：</p>
<p><img src="https://help.aalielie.com/content/uploadfile/202506/4fcf1750758546.png" alt="img" /></p>
<p>主站的每个发送周期都会发送 ARMW 报文，将参考时钟值发送至所有站点，各站点对比该参考值与本地时钟值（结合传输延时）后，进行本地时钟值的更新（ESC 硬件的加速或减速）。从而实现整个网络长时间低水平的时间抖动。</p>]]></description>
    <pubDate>Thu, 19 Jun 2025 10:27:34 +0800</pubDate>
    <dc:creator>牛的牛的</dc:creator>
    <guid>https://help.aalielie.com/?post=10</guid>
</item>
<item>
    <title>计算机网络</title>
    <link>https://help.aalielie.com/?post=9</link>
    <description><![CDATA[<h1>计算机网络</h1>
<h2>一、计算机网络概述</h2>
<p><img src="https://help.aalielie.com/content/uploadfile/202506/25c51750733132.png" alt="img" /></p>
<h3>1.1 计算机网络的分类</h3>
<p>TCP/IP<br />
按照网络的作用范围：广域网（WAN）、城域网（MAN）、局域网（LAN）；<br />
按照网络使用者：公用网络、专用网络。</p>
<h3>1.2 计算机网络的层次结构</h3>
<p><img src="https://help.aalielie.com/content/uploadfile/202506/d5e51750736633.png" alt="img" /></p>
<p><strong>TCP/IP 四层模型与 OSI 体系结构对比：</strong></p>
<p><img src="https://help.aalielie.com/content/uploadfile/202506/77951750736633.jpeg" alt="img" /></p>
<h3>1.3 层次结构设计的基本原则</h3>
<ul>
<li>各层之间是相互独立的；</li>
<li>每一层需要有足够的灵活性；</li>
<li>各层之间完全解耦。</li>
</ul>
<p><img src="https://help.aalielie.com/content/uploadfile/202506/45ec1750736633.png" alt="img" /></p>
<h3>1.4 计算机网络的性能指标</h3>
<p>速率：bps\=bit/s<br />
时延：发送时延、传播时延、排队时延、处理时延<br />
往返时间 <strong>RTT：数据报文在端到端通信中的来回一次的时间</strong>。</p>
<p>‍</p>
<h2>二、物理层</h2>
<p><strong>物理层的作用</strong>：连接不同的物理设备，传输比特流。该层为上层协议提供了一个传输数据的可靠的物理媒体。简单的说，物理层确保原始的数据可在各种物理媒体上传输。</p>
<p><strong>物理层设备：</strong></p>
<ul>
<li><strong>中继器【Repeater，也叫放大器】</strong> ：同一局域网的再生信号；两端口的网段必须同一协议；5-4-3 规程： 10BASE-5 以太网中，最多串联 4 个中继器，5 段中只能有 3 个连接主机；</li>
<li><strong>集线器</strong>：同一局域网的再生、放大信号（多端口的中继器）；半双工，不能隔离冲突域也不能隔离广播域。</li>
</ul>
<p><strong>信道的基本概念</strong>：信道是往一个方向传输信息的媒体，一条通信电路包含一个发送信道和一个接受信道。</p>
<ol>
<li>单工通信信道：只能一个方向通信，没有反方向反馈的信道；</li>
<li>半双工通信信道：双方都可以发送和接受信息，但不能同时发送也不能同时接收；</li>
<li>全双工通信信道：双方都可以同时发送和接收。</li>
</ol>
<p>‍</p>
<h2>三、数据链路层</h2>
<h3>3.1 数据链路层概述</h3>
<p>数据链路层在物理层提供的服务的基础上向网络层提供服务，其最基本的服务是将源自网络层来的数据可靠地传输到相邻节点的目标机网络层。<strong>数据链路层在不可靠的物理介质上提供可靠的传输。</strong></p>
<p>该层的作用包括：<strong>物理地址寻址、数据的成帧、流量控制、数据的检错、重发等</strong>。</p>
<p>有关数据链路层的重要知识点：</p>
<ol>
<li><strong>数据链路层为网络层提供可靠的数据传输</strong>；</li>
<li><strong>基本数据单位为帧</strong>；</li>
<li><strong>主要的协议：以太网协议</strong>；</li>
<li><strong>两个重要设备名称：网桥和交换机</strong>。</li>
</ol>
<p>封装成帧： <strong>“帧”是</strong>​<strong>==数据链路层==</strong>​<strong>数据的基本单位</strong>：</p>
<p><img src="https://help.aalielie.com/content/uploadfile/202506/1a7f1750736633.png" alt="img" /></p>
<p>透明传输：“透明”是指<strong>即使控制字符在帧数据中，但是要当做不存在去处理</strong>。即在控制字符前加上转义字符 ESC。</p>
<p><img src="https://help.aalielie.com/content/uploadfile/202506/4ddd1750736633.png" alt="img" /></p>
<h3>3.2 数据链路层的差错监测</h3>
<p>差错检测：奇偶校验码、循环冗余校验码 CRC</p>
<ol>
<li>==奇偶校验码==–局限性：<strong>当出错两位时，检测不到错误。</strong></li>
<li>==循环冗余检验码==：根据传输或保存的数据<strong>而产生固定位数校验码</strong>。</li>
</ol>
<h3>3.3 最大传输单元 MTU</h3>
<p>最大传输单元 MTU(Maximum Transmission Unit)，数据链路层的数据帧不是无限大的，数据帧长度受 MTU 限制.</p>
<p>路径 MTU：由链路中 MTU 的最小值决定。</p>
<p><img src="https://help.aalielie.com/content/uploadfile/202506/d9801750736633.png" alt="img" /></p>
<h3>3.4 以太网协议详解</h3>
<p>MAC 地址：每一个设备都拥有唯一的 MAC 地址，共 48 位，使用十六进制表示。</p>
<p>以太网协议：是一种使用广泛的局域网技术，是一种应用于数据链路层的协议，使用以太网可以完成<strong>相邻设备</strong>的数据帧传输：</p>
<p><img src="https://help.aalielie.com/content/uploadfile/202506/21d51750736633.png" alt="img" /></p>
<p><strong>局域网分类：</strong></p>
<p>Ethernet 以太网 IEEE802.3：</p>
<ol>
<li>以太网<strong>第一个</strong>广泛部署的高速局域网</li>
<li>以太网<strong>数据速率快</strong></li>
<li>以太网硬件价格<strong>便宜</strong>，网络造价成本低</li>
</ol>
<p><strong>以太网帧结构：</strong></p>
<ol>
<li><strong>类型</strong>：标识上层协议（2 字节）</li>
<li><strong>目的地址和源地址</strong>：MAC 地址（每个 6 字节）</li>
<li><strong>数据</strong>：封装的上层协议的分组（46\~1500 字节）</li>
<li><strong>CRC</strong>：循环冗余码（4 字节）</li>
<li><strong>以太网最短帧</strong>：以太网帧最短 64 字节；以太网帧除了数据部分 18 字节；数据最短 46 字节；</li>
</ol>
<p><strong>MAC 地址（物理地址、局域网地址）</strong></p>
<ol>
<li>MAC <strong>地址长度为 6 字节</strong>，48 位；</li>
<li>MAC 地址<strong>具有唯一性</strong>，每个<strong>网络适配器</strong>对应一个 MAC 地址；</li>
<li>通常采用十六进制表示法，每个字节表示一个十六进制数，用 - 或 : 连接起来；</li>
<li>MAC 广播地址：FF-FF-FF-FF-FF-FF。</li>
</ol>
<p>‍</p>
<h2>四、网络层</h2>
<p>网络层的目的是实现两个端系统之间的数据透明传送，具体功能包括寻址和路由选择、连接的建立、保持和终止等。数据交换技术是报文交换（基本上被分组所替代）：采用储存转发方式，数据交换单位是报文。</p>
<p>网络层中涉及众多的协议，其中包括最重要的协议，也是 <strong>TCP/IP 的核心协议——IP 协议</strong>。IP 协议非常简单，<strong>仅仅提供不可靠、无连接的传送服务</strong>。IP 协议的主要功能有：无连接数据报传输、数据报路由选择和差错控制。与 IP 协议配套使用实现其功能的还有地址解析协议 ARP、逆地址解析协议 RARP、因特网报文协议 ICMP、因特网组管理协议 IGMP。具体的协议我们会在接下来的部分进行总结，有关网络层的重点为：</p>
<p>1.<strong>网络层负责对子网间的数据包进行路由选择。此外，网络层还可以实现拥塞控制、网际互连等功能；</strong></p>
<p>2.<strong>基本数据单位为 IP 数据报；</strong></p>
<p>3.<strong>包含的主要协议：</strong></p>
<ul>
<li>
<p><strong>IP 协议（Internet Protocol，因特网互联协议）;</strong></p>
</li>
<li>
<p><strong>ICMP 协议（Internet Control Message Protocol，因特网控制报文协议）;</strong></p>
</li>
<li>
<p><strong>ARP 协议（Address Resolution Protocol，地址解析协议）;</strong></p>
</li>
<li>
<p><strong>RARP 协议（Reverse Address Resolution Protocol，逆地址解析协议）。</strong></p>
</li>
</ul>
<p>4.<strong>重要的设备：路由器。</strong></p>
<p><img src="https://help.aalielie.com/content/uploadfile/202506/bb971750736633.png" alt="img" /></p>
<h3>4.1 IP 协议详解</h3>
<p>IP 网际协议是 Internet <strong>网络层最核心</strong>的协议。虚拟互联网络的产生：实际的计算机网络错综复杂；物理设备通过使用 IP 协议，屏蔽了物理网络之间的差异；当网络中主机使用 IP 协议连接时，无需关注网络细节，于是形成了虚拟网络。</p>
<p><img src="https://help.aalielie.com/content/uploadfile/202506/0d2c1750736634.png" alt="img" /></p>
<p>IP 协议使得复杂的实际网络变为一个虚拟互联的网络；并且<strong>解决了在虚拟网络中数据报传输路径的问题</strong>。</p>
<p><img src="https://help.aalielie.com/content/uploadfile/202506/d6d71750736634.png" alt="img" /></p>
<p>其中，版本指 IP 协议的版本，占 4 位，如 IPv4 和 IPv6；首部位长度表示 IP 首部长度，占 4 位，最大数值位 15；总长度表示 IP 数据报总长度，占 16 位，最大数值位 65535；TTL 表示 IP 数据报文在网络中的寿命，占 8 位；协议表明 IP 数据所携带的具体数据是什么协议的，如 TCP、UDP。</p>
<h3>4.2 IP 协议的转发流程</h3>
<p><img src="https://help.aalielie.com/content/uploadfile/202506/f51f1750736633.png" alt="img" /></p>
<h3>4.3 IP 地址的子网划分</h3>
<p><img src="https://help.aalielie.com/content/uploadfile/202506/594d1750736633.png" alt="img" /></p>
<p>A 类（8 网络号 +24 主机号）、B 类（16 网络号 +16 主机号）、C 类（24 网络号 +8 主机号）可以用于标识网络中的主机或路由器，D 类地址作为组广播地址，E 类是地址保留。</p>
<p><img src="https://help.aalielie.com/content/uploadfile/202506/66ca1750736634.png" alt="img" /></p>
<h3>4.4 网络地址转换 NAT 技术</h3>
<p>用于多个主机通过一个公有 IP 访问访问互联网的私有网络中，减缓了 IP 地址的消耗，但是增加了网络通信的复杂度。</p>
<p><strong>NAT 工作原理：</strong></p>
<ol>
<li>从内网出去的 IP 数据报，将其 IP 地址替换为 NAT 服务器拥有的合法的公共 IP 地址，并将替换关系记录到 <strong>NAT 转换表中</strong>；</li>
<li>从公共互联网返回的 IP 数据报，依据其目的的 IP 地址检索 <strong>NAT 转换表</strong>，并利用检索到的内部私有 IP 地址替换目的 IP 地址，然后将 IP 数据报转发到内部网络。</li>
</ol>
<h3>4.5 ARP 协议与 RARP 协议</h3>
<p>地址解析协议 ARP（Address Resolution Protocol）：为网卡（网络适配器）的 IP 地址到对应的硬件地址提供动态映射。可以把<strong>网络层 32 位地址转化为数据链路层 MAC48 位地址</strong>。</p>
<p>ARP 是<strong>即插即用</strong>的，一个 ARP 表是自动建立的，不需要系统管理员来配置。</p>
<p><img src="https://help.aalielie.com/content/uploadfile/202506/12b81750736633.png" alt="img" /></p>
<p>RARP(Reverse Address Resolution Protocol)协议<strong>指逆地址解析协议</strong>，可以把数据链路层 MAC48 位地址转化为网络层 32 位地址。</p>
<h3>4.6 ICMP 协议详解</h3>
<p>网际控制报文协议（Internet Control Message Protocol），<strong>可以报告错误信息或者异常情况</strong>，ICMP 报文封装在 IP 数据报当中。</p>
<p><img src="https://help.aalielie.com/content/uploadfile/202506/1eff1750736633.png" alt="img" /></p>
<p><strong>ICMP 协议的应用：</strong></p>
<ul>
<li><strong>Ping 应用</strong>：网络故障的排查；</li>
<li><strong>Traceroute 应用</strong>：可以探测 IP 数据报在网络中走过的路径。</li>
</ul>
<h3>4.7 网络层的路由概述</h3>
<p>关于路由算法的要求：正确的完整的、在计算上应该尽可能是简单的、可以适应网络中的变化、稳定的公平的。</p>
<p><strong>自治系统 AS</strong>：指处于一个管理机构下的网络设备群，AS 内部网络自治管理，对外提供一个或多个出入口，其中自治系统内部的路由协议为内部网关协议，如 RIP、OSPF 等；自治系统外部的路由协议为外部网关协议，如 BGP。</p>
<p><strong>静态路由</strong>：人工配置，难度和复杂度高；</p>
<p><strong>动态路由：</strong></p>
<ol>
<li><strong>链路状态</strong>路由选择算法 LS：<strong>向所有隔壁路由发送信息</strong>收敛快；<strong>全局式路由选择算法</strong>，每个路由器计算路由时，需构建整个网络拓扑图；利用 <strong>Dijkstra 算法</strong>求源端到目的端网络的最短路径；<a href="https://blog.csdn.net/Royalic/article/details/119875485">Dijkstra(迪杰斯特拉)算法</a></li>
<li><strong>距离-向量</strong>路由选择算法 DV：<strong>向所有隔壁路由发送信息</strong>收敛慢、会存在回路；基础是 Bellman-Ford 方程（简称 <strong>B-F 方程）</strong> ；</li>
</ol>
<h3>4.8 内部网关路由协议之 RIP 协议</h3>
<p>路由信息协议 RIP(Routing Information Protocol)【<strong>应用层</strong>】，基于距离-向量的路由选择算法，<strong>较小的 AS</strong>（自治系统），适合小型网络；RIP 报文，封装进 UDP 数据报。</p>
<p><strong>RIP 协议特性：</strong></p>
<ol>
<li>RIP 在度量路径时采用的是<strong>跳数</strong>（每个路由器维护自身到其他每个路由器的距离记录）；</li>
<li>RIP 的费用定义在源路由器和目的子网之间；</li>
<li>RIP 被限制的网络直径不超过 <strong>15 跳</strong>；</li>
<li>和隔壁交换所有的信息，30 <strong>主动</strong>一次（广播）。</li>
</ol>
<h3>4.9 内部网关路由协议之 OSPF 协议</h3>
<p>开放最短路径优先协议 OSPF(Open Shortest Path First)【<strong>网络层</strong>】，基于链路状态的路由选择算法（即 Dijkstra 算法），<strong>较大规模的 AS</strong> ，适合大型网络，直接封装在 <strong>IP 数据</strong>报传输。</p>
<p><strong>OSPF 协议优点：</strong></p>
<ol>
<li>安全；</li>
<li>支持多条相同费用路径；</li>
<li>支持区别化费用度量；</li>
<li>支持单播路由和多播路由；</li>
<li>分层路由。</li>
</ol>
<p><strong>RIP 与 OSPF 的对比（路由算法决定其性质）：</strong></p>
<p><img src="https://help.aalielie.com/content/uploadfile/202506/aade1750736633.png" alt="img" /></p>
<h3>4.10 外部网关路由协议之 BGP 协议</h3>
<p>BGP（Border Gateway Protocol）边际网关协议【<strong>应用层</strong>】：是运行在 AS 之间的一种协议,寻找一条好路由：首次交换全部信息，以后只交换变化的部分,BGP 封装进 <strong>TCP</strong> 报文段.</p>
<h2>五、传输层</h2>
<p>第一个端到端，即主机到主机的层次。传输层负责将上层数据分段并提供端到端的、可靠的或不可靠的传输。此外，传输层还要处理<strong>端到端</strong>的差错控制和流量控制问题。</p>
<p>传输层的任务是根据通信子网的特性，最佳的利用网络资源，为两个端系统的会话层之间，提供建立、维护和取消传输连接的功能，负责端到端的可靠数据传输。在这一层，信息传送的协议数据单元称为段或报文。</p>
<p>网络层只是根据网络地址将源结点发出的数据包传送到目的结点，而传输层则负责将数据可靠地传送到相应的端口。</p>
<p><strong>有关网络层的重点：</strong></p>
<ol>
<li>传输层负责将上层数据分段并提供端到端的、可靠的或不可靠的传输以及端到端的差错控制和流量控制问题；</li>
<li>包含的主要协议：TCP 协议（Transmission Control Protocol，传输控制协议）、UDP 协议（User Datagram Protocol，用户数据报协议）；</li>
<li>重要设备：网关。</li>
</ol>
<p><img src="https://help.aalielie.com/content/uploadfile/202506/e9811750736633.png" alt="img" /></p>
<p><img src="https://help.aalielie.com/content/uploadfile/202506/9c9b1750736633.png" alt="img" /></p>
<h3>5.1 UDP 协议详解</h3>
<p>UDP(User Datagram Protocol: 用户数据报协议)，是一个非常简单的协议，</p>
<p><img src="https://help.aalielie.com/content/uploadfile/202506/b0171750736633.png" alt="img" /></p>
<p><strong>UDP 协议的特点：</strong></p>
<ul>
<li>UDP 是<strong>无连接</strong>协议；</li>
<li>UDP <strong>不能保证可靠的交付数据</strong>；</li>
<li>UDP 是<strong>面向报文传输</strong>的；</li>
<li>UDP <strong>没有拥塞控制</strong>；</li>
<li>UDP <strong>首部开销</strong>很小。</li>
</ul>
<p>UDP 数据报结构：</p>
<p><strong>首部:8B，四字段/2B【源端口 | 目的端口 | UDP 长度 | 校验和】</strong></p>
<p><strong>数据字段</strong>：应用数据</p>
<p><img src="https://help.aalielie.com/content/uploadfile/202506/f12d1750736633.png" alt="img" /></p>
<h3>5.2 TCP 协议详解</h3>
<p>TCP(Transmission Control Protocol: 传输控制协议)，是计算机网络中非常复杂的一个协议。</p>
<p><img src="https://help.aalielie.com/content/uploadfile/202506/0c151750736634.png" alt="img" /></p>
<p><strong>TCP 协议的功能：</strong></p>
<ol>
<li>对应用层报文进行<strong>分</strong>段和重组；</li>
<li>面向应用层实现<strong>复</strong>用与分解；</li>
<li>实现端到端的<strong>流</strong>量控制；</li>
<li><strong>拥</strong>塞控制；</li>
<li>传输层<strong>寻</strong>址；</li>
<li>对收到的报文进行<strong>差错</strong>检测（首部和数据部分都检错）；</li>
<li>实现进程间的端到端<strong>可靠</strong>数据传输控制。</li>
</ol>
<p><strong>TCP 协议的特点：</strong></p>
<ul>
<li>TCP 是面向连接的协议；</li>
<li>TCP 是面向字节流的协议；</li>
<li>TCP 的一个连接有两端，即点对点通信；</li>
<li>TCP 提供可靠的传输服务；</li>
<li>TCP 协议提供全双工通信（每条 TCP 连接只能一对一）；</li>
</ul>
<h4>5.2.1 TCP 报文段结构：</h4>
<p>最大报文段长度：报文段中封装的<strong>应用层数据</strong>的最大长度。</p>
<p><img src="https://help.aalielie.com/content/uploadfile/202506/0f401750736633.png" alt="img" /></p>
<p><strong>TCP 首部：</strong></p>
<ul>
<li><strong>序号字段：TCP 的序号是对每个应用层数据的每个字节</strong>进行编号</li>
<li><strong>确认序号字段</strong>：期望从对方接收数据的字节序号，即该序号对应的字节尚未收到。用 ack_seq 标识；</li>
<li>TCP 段的首部长度最短是 <strong>20</strong>B ，最长为 60 字节。但是长度必须为 4B 的整数倍</li>
</ul>
<p><strong>TCP 标记的作用</strong>：</p>
<p><img src="https://help.aalielie.com/content/uploadfile/202506/bd7b1750736633.png" alt="img" /></p>
<h3>5.3 可靠传输的基本原理</h3>
<p><strong>基本原理：</strong></p>
<ul>
<li>不可靠传输信道在数据传输中可<strong>能发生的情况</strong>：比特差错、乱序、重传、丢失</li>
<li>
<p>基于不可靠信道实现可靠数据传输<strong>采取的措施</strong>：</p>
<ul>
<li><strong>差错检测</strong>：利用编码实现数据包传输过程中的比特差错检测</li>
<li><strong>确认</strong>：接收方向发送方反馈接收状态</li>
<li><strong>重传</strong>：发送方重新发送接收方没有正确接收的数据</li>
<li><strong>序号</strong>：确保数据按序提交</li>
<li><strong>计时器</strong>：解决数据丢失问题；</li>
</ul>
</li>
</ul>
<p>停止等待协议：是最简单的可靠传输协议，但是该协议<strong>对信道的利用率不高</strong>。<br />
  连续 ARQ(Automatic Repeat reQuest：自动重传请求)协议：滑动窗口 + 累计确认，<strong>大幅提高了信道的利用率</strong>。</p>
<h4>5.3.1TCP 协议的可靠传输</h4>
<p>基于连续 ARQ 协议，在某些情况下，重传的效率并不高，会<strong>重复传输部分已经成功接收的字节</strong>。</p>
<h4>5.3.2 TCP 协议的流量控制</h4>
<p><strong>流量控制：让发送方发送速率不要太快</strong>，TCP 协议使用滑动窗口实现流量控制。</p>
<p><img src="https://help.aalielie.com/content/uploadfile/202506/e6721750736634.png" alt="img" /></p>
<h3>5.4 TCP 协议的拥塞控制</h3>
<p>拥塞控制与流量控制的区别：流量控制考虑<strong>点对点的通信量的控制</strong>，而拥塞控制考虑<strong>整个网络</strong>，是全局性的考虑。拥塞控制的方法：<strong>慢启动算法 + 拥塞避免算法</strong>。</p>
<p><strong>慢开始和拥塞避免：</strong></p>
<ol>
<li>【<strong>慢开始</strong>】拥塞窗口从 1 指数增长；</li>
<li>到达阈值时进入【<strong>拥塞避免】</strong> ，变成 +1 增长；</li>
<li><strong>【超时】</strong> ，阈值变为当前 cwnd 的一半（不能\&lt;2）；</li>
<li>再从【<strong>慢开始</strong>】，拥塞窗口从 1 指数增长。</li>
</ol>
<p><img src="https://help.aalielie.com/content/uploadfile/202506/dc6c1750736633.png" alt="img" /></p>
<p><strong>快重传和快恢复：</strong></p>
<ol>
<li>发送方连续收到 <strong>3 个冗余 ACK</strong>，执行【<strong>快重传</strong>】，不必等计时器超时；</li>
<li>执行【<strong>快恢复</strong>】，阈值变为当前 cwnd 的一半（不能\&lt;2），并从此<strong>新的 ssthresh</strong> 点进入【<strong>拥塞避免】</strong> 。</li>
</ol>
<p><img src="https://help.aalielie.com/content/uploadfile/202506/2a361750736633.png" alt="img" /></p>
<h3>5.5 TCP 连接的三次握手（重要）</h3>
<p><strong>TCP 三次握手使用指令：</strong></p>
<p><img src="https://help.aalielie.com/content/uploadfile/202506/fe7b1750736633.png" alt="img" /></p>
<p><strong>==面试常客：为什么需要三次握手？==</strong></p>
<ol>
<li><strong>第一次握手</strong>：客户发送请求，此时服务器知道客户能发；</li>
<li><strong>第二次握手</strong>：服务器发送确认，此时客户知道服务器能发能收；</li>
<li><strong>第三次握手</strong>：客户发送确认，此时服务器知道客户能收。</li>
</ol>
<p><strong>==建立连接（三次握手）：==</strong></p>
<p>==第一次==：<strong>客户向服务器发送连接请求段</strong>，建立连接请求控制段（SYN\=1），表示传输的报文段的第一个数据字节的序列号是 x，此序列号代表整个报文段的序号（seq\=x）；<strong>客户端进入 SYN_SEND （同步发送状态）</strong> ；</p>
<p>==第二次==：<strong>服务器发回确认报文段</strong>，同意建立新连接的确认段（SYN=1），确认序号字段有效（ACK=1），服务器告诉客户端报文段序号是 y（seq=y），表示服务器已经收到客户端序号为 x 的报文段，准备接受客户端序列号为 x+1 的报文段（ack_seq=x+1）；<strong>服务器由 LISTEN 进入 SYN_RCVD （同步收到状态）</strong> ;</p>
<p>==第三次==:<strong>客户对服务器的同一连接进行确认</strong>.确认序号字段有效(ACK=1),客户此次的报文段的序列号是 x+1(seq=x+1),客户期望接受服务器序列号为 y+1 的报文段(ack_seq=y+1);<strong>当客户发送 ack 时，客户端进入 ESTABLISHED 状态</strong>;<strong>当服务收到客户发送的 ack 后，也进入 ESTABLISHED 状态</strong>;<strong>第三次握手可携带数据</strong>;</p>
<p><img src="https://help.aalielie.com/content/uploadfile/202506/ffff1750736633.png" alt="img" /></p>
<h3>5.6 TCP 连接的四次挥手（重要）</h3>
<p><strong>==释放连接（四次挥手）==</strong></p>
<p>==第一次==：<strong>客户向服务器发送释放连接报文段</strong>，发送端数据发送完毕，请求释放连接（FIN=1），传输的第一个数据字节的序号是 x（seq=x）；<strong>客户端状态由 ESTABLISHED 进入 FIN_WAIT_1（终止等待 1 状态）</strong> ；</p>
<p>==第二次==：<strong>服务器向客户发送确认段</strong>，确认字号段有效（ACK=1），服务器传输的数据序号是 y（seq=y），服务器期望接收客户数据序号为 x+1（ack_seq=x+1）;<strong>服务器状态由 ESTABLISHED 进入 CLOSE_WAIT（关闭等待）</strong> ；<strong>客户端收到 ACK 段后，由 FIN_WAIT_1 进入 FIN_WAIT_2</strong>；</p>
<p>==第三次==:<strong>服务器向客户发送释放连接报文段</strong>，请求释放连接（FIN=1），确认字号段有效（ACK=1），表示服务器期望接收客户数据序号为 x+1（ack_seq=x+1）;表示自己传输的第一个字节序号是 y+1（seq=y+1）；<strong>服务器状态由 CLOSE_WAIT 进入 LAST_ACK （最后确认状态）</strong> ；</p>
<p>==第四次==：客户向服务器发送确认段，确认字号段有效（ACK=1），表示客户传输的数据序号是 x+1（seq=x+1），表示客户期望接收服务器数据序号为 y+1+1（ack_seq=y+1+1）；<strong>客户端状态由 FIN_WAIT_2 进入 TIME_WAIT，等待 2MSL 时间，进入 CLOSED 状态</strong>；<strong>服务器在收到最后一次 ACK 后，由 LAST_ACK 进入 CLOSED</strong>；</p>
<p><img src="https://help.aalielie.com/content/uploadfile/202506/c1401750736633.png" alt="img" /></p>
<p><img src="https://help.aalielie.com/content/uploadfile/202506/ec7f1750736634.png" alt="img" /></p>
<p>==为什么需要等待 2MSL?==</p>
<ol>
<li>最后一个报文没有确认；</li>
<li>确保发送方的 ACK 可以到达接收方；</li>
<li>2MSL 时间内没有收到，则接收方会重发；</li>
<li>确保当前连接的所有报文都已经过期。</li>
</ol>
<h2>六、应用层</h2>
<p>为操作系统或网络应用程序提供访问网络服务的接口。</p>
<p><strong>应用层重点：</strong></p>
<ol>
<li><strong>数据传输基本单位为报文；</strong></li>
<li><strong>包含的主要协议：FTP（文件传送协议）、Telnet（远程登录协议）、DNS（域名解析协议）、SMTP（邮件传送协议），POP3 协议（邮局协议），HTTP 协议（Hyper Text Transfer Protocol）。</strong></li>
</ol>
<h3>6.1 DNS 详解</h3>
<p>DNS（Domain Name System:域名系统） <strong>【C/S，UDP，</strong>​<strong>==端口 53==</strong>​ <strong>】</strong> ：解决 IP 地址复杂难以记忆的问题,存储并完成自己所管辖范围内主机的 域名 到 IP 地址的映射。</p>
<p><strong>域名解析的顺序：</strong> 【1】浏览器缓存，【2】找本机的 hosts 文件，【3】路由缓存，【4】找 DNS 服务器（本地域名、顶级域名、根域名）-&gt; 迭代解析、递归查询。</p>
<p>1.IP—>DNS 服务—>便于记忆的域名<br />
2.域名由点、字母和数字组成，分为顶级域（com，cn，net，gov，org）、二级域（baidu,taobao,qq,alibaba）、三级域（www）(12-2-0852)</p>
<p><img src="https://help.aalielie.com/content/uploadfile/202506/f72c1750736634.png" alt="img" /></p>
<h3>6.2 DHCP 协议详解</h3>
<p>DHCP（Dynamic Configuration Protocol:动态主机设置协议）：<strong>是一个局域网协议，是应用</strong>​<strong>==UDP 协议==</strong>​<strong>的应用层协议。</strong>  <strong>作用：为临时接入局域网的用户自动分配 IP 地址。</strong></p>
<h3>6.3 HTTP 协议详解</h3>
<p><strong>文件传输协议（FTP）</strong> ：控制连接（端口 21）：传输控制信息（连接、传输请求），以 <strong>7 位 ASCII 码的格式</strong>。<strong>整个会话期间一直打开。</strong></p>
<p><strong>HTTP（HyperText Transfer Protocol:超文本传输协议）</strong> 【<strong>TCP，</strong>​<strong>==端口 80==</strong>】：是可靠的数据传输协议，<strong>浏览器向服务器发收报文前，先建立 TCP 连接，HTTP 使用 TCP 连接方式（HTTP 自身无连接）</strong> 。</p>
<p><strong>HTTP 请求报文方式：</strong></p>
<ol>
<li><strong>GET</strong>：请求指定的页面信息，并返回实体主体；</li>
<li><strong>POST</strong>：向指定资源提交数据进行处理请求；</li>
<li><strong>DELETE</strong>：请求服务器删除指定的页面；</li>
<li><strong>HEAD</strong>：请求读取 URL 标识的信息的首部，<strong>只</strong>返回报文头；</li>
<li><strong>OPETION</strong>：请求一些选项的信息；</li>
<li><strong>PUT</strong>：在指明的 URL 下存储一个文档。</li>
</ol>
<p><img src="https://help.aalielie.com/content/uploadfile/202506/1e5b1750736633.png" alt="img" /></p>
<p><img src="https://help.aalielie.com/content/uploadfile/202506/f8d61750736633.png" alt="img" /></p>
<h4>6.3.1 HTTP 工作的结构</h4>
<p><img src="https://help.aalielie.com/content/uploadfile/202506/6a9a1750736633.png" alt="img" /></p>
<h4>6.3.2 HTTPS 协议详解</h4>
<p>HTTPS(Secure)是安全的 HTTP 协议，<strong>==端口号 443==</strong>。基于 HTTP 协议，通过 SSL 或 TLS 提供加密处理数据、验证对方身份以及数据完整性保护。</p>
<p>‍</p>]]></description>
    <pubDate>Wed, 18 Jun 2025 09:36:01 +0800</pubDate>
    <dc:creator>牛的牛的</dc:creator>
    <guid>https://help.aalielie.com/?post=9</guid>
</item>
<item>
    <title>电气设计标准</title>
    <link>https://help.aalielie.com/?post=2</link>
    <description><![CDATA[<h1>MEG电气设计标准</h1>
<h2>一、回路保护</h2>
<h3>1.断路器（CB、ELB）</h3>
<ul>
<li>断路器（包括漏电保护器）首选品牌三菱电机<code>NF</code>、<code>NV</code>系列。</li>
<li>主回路应选用V型旋钮，并安装大型端子保护盖。盘内回路可选用NF/NV的<code>FAU</code>型。</li>
<li>断路器额定电流选择为后级用电器所有电流之和的<code>1.2~1.5</code>倍之间。</li>
<li>漏电保护器的漏电保护电流一般选用<code>30mA</code>，当额定电流大于<code>？A</code>时，选用<code>100mA及以上</code>。</li>
</ul>
<h3>2.回路保护器（CP）</h3>
<ul>
<li>回路保护器首选品牌三菱电机<code>CP</code>、<code>BH</code>系列，一般脱扣电流为<code>5倍</code>型，特殊场景可选用<code>1倍</code>型快速保护。</li>
<li>额定电流的选定需考虑使用场景，只考虑短路保护时选用<code>2~3</code>倍额定电流；考虑过载时选择<code>1.2~1.5</code>倍。</li>
<li>作为伺服电机刹车的保护时，需选用带辅助触点型，并接入PLC进行脱扣判断。</li>
</ul>
<h2>二、电源关联</h2>
<h3>1.变压器（T）</h3>
<ul>
<li>变压器类型一般为Y-△型互耦式。</li>
<li>变压器容量需在用电器额定容量的基础上预留20%~30%。</li>
<li>变压器前级需选用漏电保护器进行短路保护，后级选用漏电保护器进行过载保护。</li>
</ul>
<h3>2.交流接触器（MS），热继电器（OL）</h3>
<ul>
<li>交流接触器首选品牌富士电机<code>SC</code>、<code>SK</code>系列。</li>
<li>交流接触器的额定电流需大于后级用电器额定电流总和。</li>
<li>交流接触器线圈一般选用<code>DC24V</code>型，较大额定电流型号时可选用交流控制型来减少24V回路功率。</li>
<li>交流接触器推荐选用内置线圈<code>浪涌吸收型</code>，或在线圈处追加<code>二极管</code>保护。</li>
<li>热继电器一般选用<code>手动恢复型</code>。</li>
<li>三相马达的过载保护需选用热继电器，而非使用断路器进行过载保护。</li>
<li>热继电器的辅助触点应接入控制回路中，以起到过载时断开控制回路的功能。</li>
<li>热继电器的额定电流应等于用电器的额定电流。</li>
<li>变频器制动电阻需使用热继电器进行过载保护，同时辅助触点需接入PLC中进行判断。</li>
</ul>
<h3>3.滤波器（NF）</h3>
<ul>
<li>滤波器首选品牌科索TAC、EAC系列。</li>
<li>伺服电机、变频器前级推荐使用合适的滤波器。</li>
<li>滤波器额定电流需大于后级用电器的额定电流之和。</li>
</ul>
<h3>4.开关电源（PU）</h3>
<ul>
<li>开关电源首选品牌欧姆龙S8FS系列，也可选择科索。</li>
<li>单个开关电源容量应小于300W。</li>
<li>开关电源总容量应保证预留20~30%。</li>
</ul>
<h3>5.继电器（CR），安全继电器（SR），固态继电器（SSR）</h3>
<ul>
<li>继电器、安全继电器、固态继电器首选品牌欧姆龙。</li>
<li>继电器推荐选择内置浪涌吸收型，并带有状态显示功能。</li>
<li>安全模块（SRU）的输出侧需使用安全继电器，而不能使用普通继电器进行代替。</li>
<li>伺服电机刹车处的通断控制，不能使用固态继电器，需使用普通继电器。</li>
</ul>
<h3>6.安全模块（SRU）</h3>
<ul>
<li>安全模块推荐使用欧姆龙、Pilz、基恩士。</li>
<li>安全模块输入回路需保证双重确认，输出需配合安全继电器使用。</li>
<li>在使用复位按钮复位安全回路时，需设计手动复位型回路，满足OFF-ON-OFF的逻辑。</li>
<li>机械结构存在多个单元时，安全模块需设计为主安全模块（急停回路），后级串联副安全模块（各单元回路）。</li>
</ul>
<h2>三、</h2>]]></description>
    <pubDate>Mon, 09 Jun 2025 11:18:41 +0800</pubDate>
    <dc:creator>牛的牛的</dc:creator>
    <guid>https://help.aalielie.com/?post=2</guid>
</item>
</channel>
</rss>