NAT:连接私有与公共网络的关键技术(4/10)

news2025/4/6 20:22:32

一、NAT 的工作原理

NAT 技术的核心功能是将私有 IP 地址转换为公有 IP 地址,使得内部网络中的设备能够与外部互联网通信。其工作原理主要包括私有 IP 地址到公有 IP 地址的转换、端口号映射以及会话表维护这几个步骤。

私有 IP 地址到公有 IP 地址的转换

当内部网络中的设备需要访问外部互联网时,这些设备通常被分配了私有 IP 地址,如 10.0.0.0~10.255.255.255(A 类)、172.16.0.0~172.31.255.255(B 类)、192.168.0.0~192.168.255.255(C 类)范围内的地址。这些私有 IP 地址在因特网上是不可路由的,因此需要通过 NAT 设备将其转换为公有 IP 地址。NAT 设备通常是路由器,它至少有一个有效的外部全球 IP 地址。当内部设备发送数据包到外部网络时,NAT 设备会将数据包中的源私有 IP 地址替换为公共 IP 地址。

端口号映射

为了区分不同的内部设备和它们的会话,NAT 设备使用端口号进行映射。例如,当内部设备发起连接请求时,NAT 设备会将该请求的源端口号记录下来,并在转换后的数据包中使用一个唯一的外部端口号。返回的数据包也会通过这个外部端口号重新映射回原始的内部设备和端口号。端口地址转换(PAT)也称为 NAPT(Network Address Port Translation)或地址超载(address overloading),它是一种多对一的 NAT 变体,将多个内部地址映射为一个合法公网地址,但以不同的协议端口号与不同的内部地址相对应,即 <内部地址 + 内部端口> 与 < 外部地址 + 外部端口 > 之间的转换。

会话表维护

NAT 设备会维护一个会话表,记录所有正在进行的会话信息,包括内部设备的私有 IP 地址和端口号、转换后的公有 IP 地址和端口号,以及目标 IP 地址和端口号。通过这个会话表,NAT 设备能够正确地将返回的数据包路由回相应的内部设备。例如,当主机 10.0.0.1 向 IP 地址为 128.119.40.186 的 Web 服务器(端口 80)发送 HTTP 请求时,主机 10.0.0.1 将随机指派一个端口,如 3345,作为本次请求的源端口号,将该请求发送到路由器中。路由器将为该请求指派一个新的源端口号,如 6001,并将请求报文发送给 WAN 接口。同时,在 NAT 转换表中记录一条转换记录:138.76.29.7:6001–10.0.0.1:3345。当外部网络的响应数据包到达路由器的 WAN 接口时,路由器查询 NAT 转换表,发现目标地址和端口号在转换表中有记录,从而将其目的地址和目的端口转换成为 10.0.0.1:3345,再发送到内部网络中的相应设备。

二、NAT 的类型

1. 静态 NAT

静态 NAT 实现了私有地址和公有地址的一对一映射,一个公网 IP 只会分配给唯一且固定的内网主机。在网络管理员手动配置下,静态 NAT 通过在路由器中指定静态 NAT 条目,实现内部网络 IP 地址与外部公共网络 IP 地址之间的转换。当内部网络上的计算机向外部网络发送请求时,路由器将修改请求中的源 IP 地址为预先配置的公网 IP 地址。例如,在一个企业内部,有一台服务器需要对外提供服务,这时就可以使用静态 NAT,将该服务器的私有 IP 地址静态映射到一个公网 IP 地址上,以便外部网络能够通过这个公网 IP 地址访问到该服务器。

2. 动态 NAT

动态 NAT 基于地址池来实现私有地址和公有地址的转换。内部网络上的计算机向外部网络发送请求时,路由器查找 NAT 转换表以找到与计算机的源 IP 地址相对应的映射关系。如果该映射关系存在,则路由器使用该映射关系中的外部 IP 地址来修改请求中的源 IP 地址;如果该映射关系不存在,则路由器创建一个新的映射关系,并将此映射关系添加到 NAT 转换表中。当动态 NAT 地址池中的地址用尽后,只能等待被占用的公网地址被释放后,其他主机才能使用它来访问公网。例如,在一个拥有多个用户的网络环境中,当用户需要访问外网时,路由器从地址池中选择一个未使用的公网 IP 地址进行映射,连接结束后释放地址,以供其他用户使用。

3. NAPT

NAPT 允许多个内部地址映射到同一个公有地址的不同端口。它借助端口可以实现一个公有地址同时对应多个私有地址,该模式同时对 IP 地址和端口号进行转换,实现不同私有地址(不同的私有地址,不同的源端口)映射到同一个公有地址(相同的公有地址,不同的源端口)。例如,在家庭网络中,多个设备可以通过同一个公网 IP 地址访问外网,NAPT 会为每个设备分配不同的端口号,以区分不同的设备和它们的会话。

4. Easy IP

Easy IP 允许多个内部地址映射到网关出接口地址上的不同端口,是 NAPT 的一种特例,不同的是 Easy IP 无需创建公网地址池,可以实现自动根据路由器上 WAN 接口的公网 IP 地址实现与私网 IP 地址之间的映射。Easy IP 主要应用于通过路由器 WAN 接口 IP 地址作为要被映射的公网 IP 地址的情形,特别适合小型局域网接入 Internet 的情况,比如小型网吧、中小型企业等。出接口通过拨号方式获得临时(或固定)公网 IP 地址以供内部主机访问 Internet。

三、NAT 的应用

1. 在家庭网络中的应用

家庭中的设备通过私有 IP 地址连接到路由器,路由器通过 NAT 技术将这些设备的流量转换为单一的公有 IP 地址流量,使设备能够同时访问互联网,同时提升了网络安全性,简化了网络配置。

在家庭网络中,NAT 技术被广泛应用于路由器上,使得家中的多个设备能够共享一个公有 IP 地址访问互联网。这不仅节省了 IP 地址资源,还提供了额外的安全性。

设备连接:家庭中的设备(如智能电视、游戏机、电脑、手机等)通过私有 IP 地址连接到路由器,路由器通过 NAT 技术将这些设备的流量转换为单一的公有 IP 地址流量,从而使这些设备能够同时访问互联网。例如,一个家庭可能有一台智能电视、一台游戏机和两台手机,它们都通过路由器连接到互联网。路由器使用 NAT 技术将这些设备的私有 IP 地址转换为一个公有 IP 地址,使得这些设备能够同时访问互联网上的各种资源,如视频流、游戏服务器和社交媒体平台。

安全性提升:由于私有 IP 地址在互联网上不可见,外部攻击者无法直接访问家庭网络中的设备,从而增强了网络的安全性。例如,如果一个家庭的网络没有使用 NAT 技术,那么外部攻击者可以通过扫描互联网上的 IP 地址来找到家庭网络中的设备,并尝试攻击它们。但是,如果家庭网络使用了 NAT 技术,外部攻击者只能看到路由器的公有 IP 地址,而无法直接访问家庭网络中的设备。

简化网络配置:使用 NAT 技术,家庭用户无需为每个设备配置公有 IP 地址,只需配置路由器即可,使得网络配置更加简单和灵活。例如,一个家庭用户在设置家庭网络时,只需要配置路由器的 IP 地址、子网掩码和网关等参数,就可以让家庭中的所有设备都能够访问互联网。而如果没有使用 NAT 技术,家庭用户需要为每个设备都配置一个公有 IP 地址,这不仅非常繁琐,而且还需要支付额外的费用。

2. 在企业网络中的应用

企业内部网络通过使用私有 IP 地址进行隔离,防止内部网络结构和设备直接暴露在互联网中,提高了网络安全性。NAT 技术还能节约 IP 地址资源,实现访问控制和管理,以及与负载均衡技术结合使用,提升企业关键应用的稳定运行。

在企业网络中,NAT 技术不仅在解决 IP 地址短缺问题上,还在提升网络管理和安全性方面发挥了关键作用。

内部网络隔离:企业内部网络通过使用私有 IP 地址进行隔离,防止内部网络结构和设备直接暴露在互联网中,提高了网络安全性。例如,一个企业可能有多个部门,每个部门都有自己的内部网络。通过使用私有 IP 地址,这些部门的内部网络可以相互隔离,防止外部攻击者通过互联网直接访问企业内部的网络结构和设备。

IP 地址节约:大多数企业只需使用一个或少数几个公有 IP 地址,通过 NAT 技术使大量内部设备能够访问互联网,从而有效节约了 IP 地址资源。例如,一个企业可能有数百台甚至上千台内部设备,如果为每台设备都分配一个公有 IP 地址,那么将会消耗大量的 IP 地址资源。但是,如果使用 NAT 技术,企业只需要使用一个或少数几个公有 IP 地址,就可以让所有的内部设备都能够访问互联网。

访问控制和管理:企业可以通过 NAT 设备实现流量监控和管理,设置访问控制策略,限制特定设备或应用的互联网访问,提升网络管理的灵活性和效率。例如,企业可以通过 NAT 设备设置访问控制策略,限制某些部门的设备只能访问特定的网站或应用程序,从而提高网络的安全性和管理效率。

负载均衡与高可用性:在大型企业中,NAT 技术与负载均衡技术结合使用,可以实现对外服务的负载分担和高可用性配置,确保企业关键应用的稳定运行。例如,一个大型企业可能有多个服务器对外提供服务,通过使用 NAT 技术和负载均衡技术,可以将外部的请求分发到不同的服务器上,从而实现负载分担和高可用性配置,确保企业关键应用的稳定运行。

四、NAT 配置的常见问题及解决方案

1. 常见问题

             (1)内外网穿透问题,内部用户无法直接通过互联网连接到外部服务器或应用程序,反之亦然。

    • 在实际网络环境中,当 NAT 设备将私有 IP 地址映射到公共 IP 地址时,可能会发生内外网的访问限制现象。例如,内部用户无法直接通过互联网连接到外部服务器或应用程序;反之亦然。这通常是由于 NAT 设置不恰当所导致的。
    • (2)端口映射冲突与限制,可能导致端口冲突和安全威胁。
    • 在 NAT 设备上不正确地设置端口映射可能导致端口冲突和安全威胁的发生。如果两个或多个应用试图同时映射相同的端口或者映射了受到限制的端口,则可能导致网络拥塞和数据篡改等问题。此外,一些 NAT 设备可能具有内置的安全功能来阻止某些特定端口的通信以防止恶意活动入侵系统。
    • (3)ACL 问题及应用受限,可能导致安全问题以及内部用户权限不足。
    • ACL (访问控制列表) 是 NAT 设备的一种机制可用来管理网络流量和提高安全性。如果 ACL 配置不合适或不准确,可能导致拒绝服务攻击、SQL 注入等安全问题以及内部用户在访问受保护资源时的权限不足。

2. 解决方案

           (1)选择合适的 NAT 类型,根据不同的环境和应用场景选择最适合的 NAT 类型。

    • 了解不同的 NAT 类型对于确定如何最好地为您的组织选择配置至关重要。“全锥形”、“地址绑定型”(Address Bounded)、“端口限制型”(Port Limited) 和 “对称型”(Symmetric) 是当前市场上常见的 NAT 类型。每种类型都有其优缺点且适用于不同类型的环境和应用场景。确保为你的业务环境选用最适合的 NAT 类型。
    • (2)精确设置端口映射规则与应用,为服务和应用程序分配唯一的端口范围,使用端口扫描工具检测冲突隐患。
    • 为了减轻端口冲突风险,应正确识别需要映射的所有服务和应用程序的需求,并为它们分配唯一的端口范围。另外可以使用端口扫描工具检测当前网络环境中开放的端口是否存在冲突隐患,进而优化端口映射规则。
    • (3)遵循正确的 ACL 配置策略,使用自动化管理工具确保设备按同一标准配置,提升安全性和管理效率。
    • 使用自动化管理工具多品牌异构防火墙统一管理多品牌、多型号防火墙统一管理;确保所有设备按同一标准配置,提升安全性;集中管理简化部署,减少重复操作;统一流程减少配置差异和人为疏漏;快速定位问题,提升响应速度;集中管理减少人力和时间投入,优化成本。
    • 策略开通自动化减少手动操作,加速策略部署;自动选择防火墙避免疏漏或配置错误;自动适应网络变化或安全需求;减少过度配置,避免浪费资源;集中管理,简化故障排查流程。
    • 攻击 IP 一键封禁面对安全威胁迅速实施封禁降低风险;无需复杂步骤,提高运维效率;自动化完成减少人为失误;全程留痕,便于事后分析与审查;确保潜在威胁立即得到应对,避免损失扩大。
    • 命中率分析识别并清除未被使用的策略,提高匹配速度;确保策略有效性,调整未经常命中的策略;精简规则,降低设备的负担和性能需求;使策略集更为精练,便于维护和更新;了解网络流量模式,帮助调整策略配置;确保所有策略都在有效执行,满足合规要求。
    • 策略优化通过精细化策略,降低潜在的攻击风险;减少规则数量使管理和审查更直观;精简规则,加速策略匹配和处理;确保策略清晰,避免潜在的策略冲突;通过消除冗余,降低配置失误风险;清晰的策略集更易于监控、审查与维护;优化策略减轻设备负荷,延长硬件寿命;细化策略降低误封合法流量的可能性。
    • 策略收敛消除冗余和宽泛策略,降低潜在风险;集中并优化规则,使维护和更新更为直观;简化策略结构,降低配置失误概率。更具体的策略更加精确,便于分析;满足审计要求和行业合规标准。
    • 策略合规检查确保策略与行业安全标准和最佳实践相符;满足法规要求,降低法律纠纷和罚款风险;为客户和合作伙伴展现良好的安全管理;标准化的策略使维护和更新更为简单高效;检测并修正潜在的策略配置问题;通过定期合规检查,不断优化并完善安全策略。

五、案例与总结

1. 代码案例

以下是一个使用 Python 的socket模块模拟 NAT 工作过程的简单示例代码:

import socket

# 模拟内部网络中的设备
def internal_device():
    # 创建一个套接字
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    # 假设内部设备的私有 IP 和端口
    private_ip = '192.168.1.10'
    private_port = 8000
    s.bind((private_ip, private_port))
    # 连接外部服务器的 IP 和端口
    public_ip = '8.8.8.8'
    public_port = 80
    s.connect((public_ip, public_port))
    print(f"内部设备连接到外部服务器:{public_ip}:{public_port}")
    s.close()

# 模拟 NAT 设备
def nat_device():
    # 创建一个套接字
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    # NAT 设备的公有 IP 和端口
    nat_public_ip = '203.0.113.1'
    nat_public_port = 9000
    s.bind((nat_public_ip, nat_public_port))
    # 监听连接
    s.listen(5)
    while True:
        conn, addr = s.accept()
        print(f"NAT 设备接收到来自内部设备的连接请求")
        # 模拟 NAT 转换,将源地址和端口替换为 NAT 的公有地址和端口
        new_conn = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        new_conn.connect(('8.8.8.8', 80))
        print(f"NAT 设备将连接转发到外部服务器:8.8.8.8:80")
        # 在两个连接之间转发数据
        while True:
            data = conn.recv(1024)
            if not data:
                break
            new_conn.send(data)
            data = new_conn.recv(1024)
            if not data:
                break
            conn.send(data)
        conn.close()
        new_conn.close()

if __name__ == '__main__':
    internal_device()
    nat_device()

这个示例代码简单地模拟了内部设备通过 NAT 设备连接到外部服务器的过程,但实际的 NAT 实现要复杂得多。

2. 文章总结

网络地址转换(NAT)在当今的网络环境中起着至关重要的作用。它作为私有网络与公共互联网之间的桥梁,通过将私有 IP 地址转换为公有 IP 地址,使得内部网络中的设备能够与外部互联网进行通信,有效地解决了 IPv4 地址短缺的问题。

NAT 的工作原理包括私有 IP 地址到公有 IP 地址的转换、端口号映射以及会话表维护。不同类型的 NAT,如静态 NAT、动态 NAT、NAPT 和 Easy IP,各有其特点和应用场景。在家庭网络中,NAT 技术使得多个设备能够共享一个公有 IP 地址访问互联网,同时提升了网络安全性和简化了网络配置。在企业网络中,NAT 技术不仅节约了 IP 地址资源,还实现了内部网络隔离、访问控制和管理以及与负载均衡技术结合使用,提升了企业关键应用的稳定运行。

然而,在 NAT 配置过程中也会遇到一些常见问题,如内外网穿透问题、端口映射冲突与限制以及 ACL 问题及应用受限。针对这些问题,可以通过选择合适的 NAT 类型、精确设置端口映射规则与应用以及遵循正确的 ACL 配置策略来解决。

总之,NAT 技术是现代网络中不可或缺的一部分,它为我们提供了一种有效的方式来管理和利用有限的 IP 地址资源,同时也提高了网络的安全性和管理效率。随着网络技术的不断发展,NAT 技术也将不断演进和完善,为我们的网络生活带来更多的便利和安全保障。

 本文相关文章推荐:

1、计算机网络基础全攻略:探秘网络构建块(1/10)

2、TCP/IP 协议:网络世界的基石(2/10)

3、局域网与广域网:探索网络的规模与奥秘(3/10)

4、NAT:连接私有与公共网络的关键技术(4/10)

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

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

相关文章

多模态大型语言模型(MLLM)综述

目录 多模态大语言模型的基础 长短期网络结构(LSTM) 自注意力机制 基于Transformer架构的自然语言处理模型 多模态嵌入概述 多模态嵌入关键步骤 多模态嵌入现状 TF-IDF TF-IDF的概念 TF-IDF的计算公式 TF-IDF的主要思路 TF-IDF的案例 训练和微调多模态大语言模…

学习ASP.NET Core的身份认证(基于Cookie的身份认证3)

用户通过验证后调用HttpContext.SignInAsync函数将用户的身份信息保存在认证Cookie中,以便后续的请求可以验证用户的身份,该函数原型如下所示&#xff0c;其中properties参数的主要属性已在前篇文章中学习&#xff0c;本文学习scheme和principal的意义及用法。 public static …

C++设计模式-模板模式,Template Method

动机&#xff08;Motivation&#xff09; 在软件构建过程中&#xff0c;对于某一项任务&#xff0c;它常常有稳定的整体操作结构&#xff0c;但各个子步骤却有很多改变的需求&#xff0c;或者由于固有的原因&#xff08;比如框架与应用之间的关系&#xff09;而无法和任务的整…

Jenkins流水线 Allure JUnit5 自动化测试

目录 一、Jenkins Allure配置 1.1 安装Allure插件 1.2 安装Allure工具 1.3 配置测试报告路径 1.4 JenkinsFile 二、Jenkins 邮箱配置 2.1 安装Email Extension Plugin插件 2.2 邮箱配置 2.3 JenkinsFile 三、项目pom.xml 配置 3.1 引入allure-junit5依赖 3.2 引入m…

计算机网络 实验七 NAT配置实验

一、实验目的 通过本实验理解网络地址转换的原理和技术&#xff0c;掌握扩展NAT/NAPT设计、配置和测试。 二、实验原理 NAT配置实验的原理主要基于网络地址转换&#xff08;NAT&#xff09;技术&#xff0c;该技术用于将内部私有网络地址转换为外部公有网络地址&#xff0c;从…

shell脚本基础学习_总结篇(完结)

细致观看可以&#xff0c;访问shell脚本学习专栏&#xff0c;对应章节会有配图https://blog.csdn.net/2201_75446043/category_12833287.html?spm1001.2014.3001.5482 导语 一、shell脚本简介 1. 定义&#xff1a; 2. 主要特点&#xff1a; 3. shell脚本的基本结构 4. S…

ACL的原理与配置

ACL技术概述 ACL&#xff1b;访问控制列表 技术背景&#xff1a; 园区重要服务器资源被随意访问&#xff0c;容易泄露机密&#xff0c;造成安全隐患 病毒侵入内网&#xff0c;安全性降低 网络宽带被各类业务随意挤占&#xff0c;服务质量要求高的宽带得不到保障&#xff0…

AWS 新加坡EC2 VPS 性能、线路评测及免费注意事项

原文论坛给你更好的阅读讨论体验&#x1f490;&#xff1a; AWS 新加坡EC2 VPS 性能、线路评测及免费注意事项 - VPS - 波波论坛 引言 对于那些习惯薅“羊毛”的朋友来说&#xff0c; AWS 的 免费套餐 可能已经非常熟悉。这台vps是我用外币卡薅的免费的12个月的机器&#xf…

关于人工智能

关于人工智能 什么是人工智能 人工智能里面有智能两字&#xff0c;可不代表现在所谓的人工智能真的是智能的。 现在的人工智能是建立在学习上的&#xff0c;被称为机器学习&#xff08;machine learning&#xff09;&#xff0c;或者说是深度学习&#xff08;deep learning&…

MyBatis-缓存(一级缓存、二级缓存)

一、缓存&#xff08;Cache&#xff09; 1、定义&#xff1a;缓存是一种用于存储数据的硬件设备或存储空间&#xff08;缓存不是内存&#xff09;。 2、作用&#xff1a;减轻数据库压力&#xff0c;提高查询性能 3、实现原理&#xff1a;将从数据库中查询出来的对象/记录在使…

【Zookeeper】四,Zookeeper节点类型、通知、仲裁、会话

文章目录 Zookeeper的架构znode的版本Zookeeper的节点类型层级树状结构znode的不同类型 Zookeeper监视与通知通知的类型 Zookeeper的仲裁Zk的会话会话的生命周期 Zookeeper的架构 Zookeeper的服务器端运行两种模式&#xff1a;独立模式&#xff08;standalone&#xff09;和仲…

【mac】终端左边太长处理,自定义显示名称(terminal路径显示特别长)

1、打开终端 2、步骤 &#xff08;1&#xff09;修改~/.zshrc文件 nano ~/.zshrc&#xff08;2&#xff09;添加或修改PS1&#xff0c;我是自定义了名字为“macminiPro” export PS1"macminiPro$ "&#xff08;3&#xff09;使用 nano: Ctrl o &#xff08;字母…

macos 14.0 Monoma 修改顶部菜单栏颜色

macos 14.0 设置暗色后顶部菜单栏还维持浅色&#xff0c;与整体不协调。 修改方式如下&#xff1a;

树莓派3:64位系统串口(UART)使用问题的解决方法

前言 当我们要使用串口进行zigbee的短距离通信时,发现无法使用串口. 原因 树莓派3bCPU内部有两个串口,一个硬件串口(就是我们平时使用的UART),还有一个迷你串口(mini-uart),在老版本的树莓派中把硬件串口分配在GPIO上,可以单独使用.但是在新的树莓派中官方把硬件串口给了蓝牙…

前端Vue项目整合nginx部署到docker容器

一、通过Dockerfile整合nginx方法&#xff1a; 1&#xff0c;使用Vue CLI或npm脚本构建生产环境下的Vue项目。 npm run build or yarn build2&#xff0c;构建完成后&#xff0c;项目目录中会生成一个dist文件夹&#xff0c;里面包含了所有静态资源文件&#xff08;HTML、CSS…

《Vue零基础入门教程》第十课:属性绑定指令

往期内容 《Vue零基础入门教程》第一课&#xff1a;Vue简介 《Vue零基础入门教程》第二课&#xff1a;搭建开发环境 《Vue零基础入门教程》第三课&#xff1a;起步案例 《Vue零基础入门教程》第四课&#xff1a;应用实例 《Vue零基础入门教程》第五课&#xff1a;挂载 《…

计算机网络socket编程(5)_TCP网络编程实现echo_server

个人主页&#xff1a;C忠实粉丝 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 C忠实粉丝 原创 计算机网络socket编程(5)_TCP网络编程实现echo_server 收录于专栏【计算机网络】 本专栏旨在分享学习计算机网络的一点学习笔记&#xff0c;欢迎大家在评论区交…

【适配】屏幕拖拽-滑动手感在不同分辨率下的机型适配

接到一个需求是类似下图的3D多房间视角&#xff0c;需要拖拽屏幕 问题 在做这种屏幕拖拽的时候发现&#xff0c;需要拖拽起来有跟手的感觉&#xff0c;会存在不同分辨率机型的适配问题。 即&#xff1a;美术调整好了机型1的手感&#xff0c;能做到手指按下顶层地板上下挪动&…

C#调用C++ DLL方法之C++/CLI(托管C++)

托管C与C/CLI前世今生 C/CLI (C/Common Language Infrastructure) 是一种用于编写托管代码的语言扩展&#xff0c;它是为了与 .NET Framework 进行互操作而设计的。C/CLI 是 C 的一种方言&#xff0c;它引入了一些新的语法和关键字&#xff0c;以便更好地支持 .NET 类型和垃圾…

python excel接口自动化测试框架!

今天采用Excel继续写一个接口自动化测试框架。 设计流程图 这张图是我的excel接口测试框架的一些设计思路。 首先读取excel文件&#xff0c;得到测试信息&#xff0c;然后通过封装的requests方法&#xff0c;用unittest进行测试。 其中&#xff0c;接口关联的参数通过正则进…