网络网络层之(4)IPv4协议

news2024/11/26 10:34:31

网络网络层之(1)IPv4协议


Author: Once Day Date: 2024年4月4日

一位热衷于Linux学习和开发的菜鸟,试图谱写一场冒险之旅,也许终点只是一场白日梦…

漫漫长路,有人对你微笑过嘛…

全系列文档可参考专栏:通信网络技术_Once-Day的博客-CSDN博客。

参考文章:

  • 《TCP/IP详解卷一》
  • 【网络干货】IPV4基本原理技术详解 - 知乎 (zhihu.com)
  • 计算机网络知识点总结(八)IPv4协议基本原理详解 - 知乎 (zhihu.com)
  • 一文读懂网络报问中的检验和(checksum)—— 原理+举例+代码-CSDN博客
  • Internet Protocol Version 4 (IPv4) Parameters (iana.org)

文章目录

  • 网络网络层之(1)IPv4协议
        • 1. 介绍
          • 1.1 IPv4协议
          • 1.2 IPv4协议族
          • 1.3 相关RFC文档
        • 2. IP数据报格式
          • 2.1 IPv4报文格式
          • 2.2 IP分片报文
          • 2.3 IP首部校验和(Internel校验和)
          • 2.4 差异化服务(DS)
          • 2.5 IP选项

1. 介绍
1.1 IPv4协议

网际协议版本4(IPv4)是网际协议(IP)的第四版,也是第一个被广泛应用的版本。

IPv4的设计和开发始于20世纪70年代,目的是为了连接不同的网络,实现网际互连。

IPv4使用32位(4字节)地址,理论上可以提供约43亿个唯一IP地址。然而,由于互联网的快速发展,IPv4地址在21世纪初已经面临耗尽的问题。为了解决这一问题,互联网工程任务组(IETF)开发了IPv6协议,使用128位(16字节)地址,提供了更大的地址空间。尽管IPv6的部署已经开始,但直到2011年IANA宣布IPv4地址完全分配完毕时,IPv6仍处于部署的初期阶段。

IPv4是一种无连接的协议,它在使用分组交换技术的链路层(如以太网)上运行。分组交换是一种数据传输方式,将数据拆分为一个个数据包(或称数据报),每个数据包独立传输,可以通过不同的路径到达目的地。这种方式提高了网络利用率,但也带来了一些问题,如数据包丢失、重复、失序等。

IPv4采用尽最大努力交付(Best-effort Delivery)的原则,即不保证数据包一定能够到达目的地,也不保证数据包按照发送顺序到达,或者没有重复

IPv4提供的是一种不可靠的数据传输服务,在实际应用中,可靠性由上层的传输层协议(如TCP)来保证,通过错误检测、重传、排序等机制,实现可靠的端到端数据传输。

1.2 IPv4协议族

IPv4协议族是TCP/IP协议族的核心,其中包含了一系列的协议,这些协议共同支持Internet的运作。

  • 地址解析协议ARP(Address Resolution Protocol)负责将IP地址转换为物理地址(如MAC地址)。当一台主机需要与另一台主机通信时,它必须知道目标主机的物理地址。ARP通过广播一个ARP请求,询问目标IP地址对应的物理地址,目标主机收到请求后,会回复自己的物理地址。
  • 逆地址解析协议RARP(Reverse Address Resolution Protocol)与ARP的功能相反,它负责将物理地址转换为IP地址。RARP通常用于无盘工作站,这些工作站在启动时不知道自己的IP地址,需要通过RARP从服务器获取。
  • 互联网控制消息协议ICMP(Internet Control Message Protocol)用于传输控制消息和错误报告。当网络出现问题时,如目标不可达、超时等,ICMP会发送错误报告,帮助网络管理员诊断和解决问题。此外,ICMP还支持ping等网络诊断工具。
  • 传输控制协议TCP(Transmission Control Protocol)是一种面向连接的、可靠的传输协议。它提供了错误检测、数据重传、流量控制和拥塞控制等机制,保证数据的可靠传输。TCP在传输数据前,需要先建立连接,数据传输完毕后,再断开连接。TCP广泛用于文件传输、电子邮件等需要可靠传输的应用。
  • 用户数据报协议UDP(User Datagram Protocol)是一种无连接的、不可靠的传输协议。与TCP不同,UDP不提供数据重传、流量控制等机制,因此传输速度较快,但不保证数据的可靠性。UDP通常用于对实时性要求高、对可靠性要求低的应用,如视频流、在线游戏等。
1.3 相关RFC文档

IPv4协议相关的主要RFC文档如下:

  • RFC 791 - Internet Protocol (IP),该文档定义了IPv4协议的基本功能、数据包格式和协议操作,是IPv4协议的核心文档。

  • RFC 792 - Internet Control Message Protocol (ICMP),该文档定义了ICMP协议,用于传输控制消息和错误报告。

  • RFC 950 - Internet Standard Subnetting Procedure,该文档介绍了子网划分的标准过程,用于IPv4地址的子网划分。

  • RFC 1122 - Requirements for Internet Hosts - Communication Layers,该文档定义了互联网主机在通信层面的要求,包括IPv4协议的实现要求。

  • RFC 1519 - Classless Inter-Domain Routing (CIDR),该文档引入了无类别域间路由(CIDR),用于解决IPv4地址耗尽和路由表增长的问题。

  • RFC 1812 - Requirements for IP Version 4 Routers,该文档定义了IPv4路由器的要求和功能。

  • RFC 2131 - Dynamic Host Configuration Protocol (DHCP),该文档定义了动态主机配置协议(DHCP),用于自动分配IPv4地址。

  • RFC 2474 - Definition of the Differentiated Services Field (DS Field) in the IPv4 and IPv6 Headers,该文档定义了IPv4和IPv6头部中的差分服务字段(DS Field),用于支持差分服务。

  • RFC 3022 - Traditional IP Network Address Translator (Traditional NAT),该文档介绍了传统的网络地址转换(NAT),用于解决IPv4地址不足的问题。

2. IP数据报格式
2.1 IPv4报文格式

IP数据报由首部和数据两部分组成,首部前一部分是固定的20字节,所有IP数据报都有.

在这里插入图片描述

  • 版本(Version,4位),指IP协议的版本。IPv4为4,IPv6为6。

  • 首部长度(Internet Header Length,IHL,4位),表示IPv4头部的长度,以4字节为单位。IPv4头部的最小长度为20字节(IHL=5),最大长度为60字节(IHL=15)。

  • 服务类型(Type of Service,TOS,8位),表示服务质量,用于区分不同类型的数据包,如普通数据包、实时数据包等。最早的RFC 791规定了一个长度为8bit的服务类型(ToS),ToS字段用了4位:D(延迟)、T(吞吐量)、R(可靠性)、C(成本)。但是ToS字段在路由器中并没有很好地利用起来。现已被差分服务(DS)和显式拥塞通告(ECN)取代

  • 区分服务(Differentiated Services,DS,6位),支持不同类型的IP服务,位于服务类型TOS的前六位

  • 显式拥塞通告(Explicit Congestion Notification,ECN,2位),允许在不丢弃报文的同时通知对方网络拥塞的发生。ECN是一种可选的功能,仅当两端都支持并希望使用,且底层网络支持时才被使用。位于服务类型TOS的后两位

  • 总长度(Total Length,16位)指IP头部 + 数据部分的总长度,字节为单位,字段为16位,则数据报最大的长度为65535字节。

    IP协议规定,必须能接收长度不超过576字节的数据报,假设上层交下来的数据长度有512字节,加上最长的IP首部60字节,再加4字节的富余量计算出来的。

  • 标识(Identification,16位),用于标识数据包的唯一性,通常由发送方生成。IP软件维持的一个计数器,每产生一个数据报,计数器就加1。用于分片超过网络MTU大小的IP数据报,能在另一端正确组装起来。

  • 标志(Flags,3位)。第一位保留,always为0。第二位为DF(Don’t fragment),意思是不能分片,DF=0时才能分片。第三位为MF(More Fragment),MF为1表示后面还有“切片”,MF=0表示这已是若干数据报片中的最后一个。

  • 片偏移(Fragment Offset,13位),表示当前分片在原始数据包中的偏移量,以8字节为单位。用于数据包的重组。

  • 生存时间(Time to Live,TTL,8位),表示数据包在网络中的最大跳数。每经过一个路由器,TTL减1,当TTL为0时,数据包被丢弃。用于防止数据包在网络中无限循环。

  • 协议(Protocol,8位),表示数据包携带的上层协议类型,如TCP(6)、UDP(17)、ICMP(1)等。

  • 首部校验和(Header Checksum,16位),这个字段只检验数据报的首部,不包括数据部分,采用反码运算求和方式,也称为Internet校验和。运输层协议必须通过自己的数据完整性检验机制来检查重要数据。每次经过路由器改变TTL时,IP首部校验和也必须改变。

  • 源IP地址(Source Address,32位),表示数据包的源IP地址,即发送方的IP地址。

  • 目的IP地址(Destination Address,32位):表示数据包的目的IP地址,即接收方的IP地址。

  • IP地址可选部分有1-40字节,不满足4字节整数倍需要使用0填充,一般甚少使用。

2.2 IP分片报文

IP分片是指当一个IP数据包的大小超过了网络的最大传输单元(MTU)时,将数据包分割成多个更小的数据包进行传输的过程。这个机制源于早期的网络设计,当时网络链路的MTU大小差异较大,分片能够保证大数据包能够在不同的网络环境中传输。

IP分片由发送方主机或中间路由器执行。当一个大的数据包需要传输时,发送方或路由器将数据包分割成多个小的数据包,每个分片都有自己的IP头部,并设置适当的标识、标志和片偏移字段,以便接收方能够正确地重组数据包。

IP分片也带来了一些问题:

  • 性能开销,分片和重组过程需要消耗额外的CPU和内存资源,特别是对于高速网络,这可能成为性能瓶颈。
  • 重组错误,如果一个分片丢失或损坏,整个原始数据包都无法重组,导致数据丢失。
  • 安全隐患,一些网络攻击(如Ping of Death)利用分片机制,通过发送畸形的分片数据包导致目标系统崩溃。

为了避免IP分片带来的问题,现代网络采用了以下几种解决方法:

  • 路径MTU发现(Path MTU Discovery,PMTUD),发送方通过探测网络路径的MTU大小,确保发送的数据包不超过路径的最小MTU,从而避免分片。这是目前最常用的方法,不过PMTUD依赖ICMP报文,而一些网络设备(如防火墙)可能会阻止ICMP报文,导致PMTUD失效。
  • TCP MSS(Maximum Segment Size):TCP在建立连接时,通过协商确定合适的MSS值,保证TCP段的大小不超过MTU,避免在IP层进行分片。但MSS协商不适用于UDP,MSS协商是TCP的机制,对于UDP这样的无连接协议,无法使用这种方式避免分片。
  • 使用IPv6,IPv6要求链路层支持最小MTU为1280字节,同时也不允许中间路由器进行分片。这有效地避免了分片带来的问题。
  • 分片和重组卸载,一些高性能网络设备(如网卡、交换机)提供了硬件级的分片和重组功能,减轻了主机的处理负担。

IP数据报切片举例:

一个数据总长3820字节,头部为固定长度20字节。第一次要求IP数据报长度不能超过1420字节,因此分成下面三个:

数据报总长度标识MFDF片偏移
原始数据报38201456000
切片114201456100
切片21420145610175
切片31020145600350

假定切片2还要划分切片,则如下:

数据报总长度标识MFDF片偏移
原始数据报1420145610175
切片1820145610175
切片2620145610275
2.3 IP首部校验和(Internel校验和)

Internet校验和是一种用于检测数据传输错误的简单方法,广泛应用于IP、TCP、UDP等协议中。

IP首部校验和的计算基于16位的二进制反码算法。发送方将首部划分为16位的字(word),并将所有字相加,得到一个32位的和。然后将高16位与低16位相加,得到一个16位的和。最后将该和取反,得到校验和。接收方重复这个过程,并将计算得到的校验和与接收到的校验和进行比较。如果两者相同,则认为数据传输无误;否则,认为数据传输出错。

计算过程:

  1. 将IP首部划分为16位的字。如果首部长度不是16位的整数倍,则在末尾填充0。
  2. 将所有16位的字相加,得到一个32位的和。
  3. 将32位的和的高16位与低16位相加,得到一个16位的和。
  4. 如果上一步的结果产生进位,则将进位加到结果的低16位上。
  5. 将上一步得到的16位和取反,得到校验和。

假设一个IP首部的前20字节为:4500 003c 1c46 4000 4006 [检验和b1e6] ac10 0a63 ac10 0a0c

计算过程如下:

  1. 划分16位字相加:4500 + 003c + 1c46 + 4000 + 4006 + ac10 + 0a63 + ac10 + 0a0c = 2 4E17
  2. 高16位与低16位相加:0002 + 4E17 = 4E19
  3. 取反:4E19的反码为B1E6,即校验和为B1E6,符合报文里面的值

校验过程,接收方收到数据包后,执行与发送方相同的计算过程,得到一个16位的和。将该和与接收到的校验和字段进行比较。如果两者完全相同(即,和的取反等于校验和),则认为数据传输无误;否则,认为数据传输出错。

实际计算校验和时,直接将校验和字段也放在里面进行计算,这样算出来的反码和为0XFFFF,直接判断这个值即可。取反之检验和后为0,也可以判断此零值。

快速更新校验和,当IP首部的某些字段发生变化时(如TTL减1),可以快速计算新的校验和,而无需重新计算整个首部的校验和。设原来的校验和为HC,更改前后的字段值分别为m和n,则新的校验和HC'可以通过以下公式计算:

HC' = ~(~HC + ~m + n)

其中,~表示取反操作,+表示16位的加法操作。这个公式可以推导如下:

设原来的首部字段和为S,则有:HC = ~S

更改后的首部字段和为S’,则有:S’ = S + (~m + n),反码和运算式里加上一个0xFFFF不改变结果,而~m + m = 0xFFFF。

新的校验和HC’应满足:HC’ = ~S’

将S’展开:HC’ = ~(S + (~m + n))

将HC代入:HC’ = (HC + (~m + n))

移项:HC’ = (HC + ~m + n)

使用这个公式,可以在O(1)的时间内计算出新的校验和,避免了重新计算整个首部校验和的开销。这对于频繁更新TTL等字段的路由器非常有用,能显著提高转发性能。

2.4 差异化服务(DS)

在早期的IP网络中,使用TOS(Type of Service)字段来提供服务质量(QoS)支持。TOS字段的各部分含义如下:

字段名称比特位含义
Precedence0-2指定数据包的优先级,取值范围为0-7,值越大优先级越高
D3Delay,指定数据包对延迟的敏感程度,1表示低延迟,0表示普通
T4Throughput,指定数据包对吞吐量的敏感程度,1表示高吞吐量,0表示普通
R5Reliability,指定数据包对可靠性的敏感程度,1表示高可靠性,0表示普通
保留6-7未使用,为零值。

但是,由于TOS字段的定义和使用存在一些问题,如可扩展性差、实现复杂等,因此引入了DS字段来取代TOS字段。

DS字段(Differentiated Services Field)用于标识数据包的服务等级,以便网络设备根据DS字段的值对数据包进行区分处理。在DiffServ模型中,网络管理员可以根据业务需求定义不同的服务类别(如语音、视频、数据等),并为每个类别分配特定的DS字段值。网络设备根据DS字段值对数据包进行相应的处理,如队列调度、带宽分配、丢弃策略等,以保证不同类别的服务质量要求。

DS字段中的前6位称为DSCP(Differentiated Services Code Point),用于标识服务类别。DSCP值由两部分组成:

  • 前3位表示服务等级(Class Selector),取值范围为0-7,向后兼容IP优先级(Precedence)。
  • 中间2位表示丢弃概率Drop Precedence,取值范围为0-3,用于区分同一服务等级内的不同丢弃优先级。
  • 最后一位保留为0。

以下是一些常见的DSCP值及其对应的服务类别:

名称DSCP值二进制表示服务类别
CS00000000尽力而为(Best Effort)
CS18001000优先
CS216010000立即
CS324011000瞬间
CS432100000瞬间覆盖
CS540101000CRITIC/ECP
CS648110000网间控制
CS756111000控制
AF1110001010保证转发(Assured Forwarding)
AF1212001100保证转发(Assured Forwarding)
AF1314001110保证转发(Assured Forwarding)
AF2118010010保证转发(Assured Forwarding)
AF2220010100保证转发(Assured Forwarding)
AF2322010110保证转发(Assured Forwarding)
AF3126011010保证转发(Assured Forwarding)
AF3228011100保证转发(Assured Forwarding)
AF3330011110保证转发(Assured Forwarding)
AF4134100010保证转发(Assured Forwarding)
AF4236100100保证转发(Assured Forwarding)
AF4338100110保证转发(Assured Forwarding)
EF46101110加速转发(Expedited Forwarding)

保证转发(Assured Forwarding,AF):AF提供了四个服务类别(AF1x、AF2x、AF3x、AF4x),每个类别内部有三个丢弃优先级(AFx1、AFx2、AFx3)。AF保证一定的带宽,但允许一定程度的拥塞发生。当拥塞发生时,高优先级的数据包被优先转发,低优先级的数据包可能被丢弃。

加速转发(Expedited Forwarding,EF):EF提供了最高优先级的服务,保证数据包的低延迟、低抖动和低丢失。EF通常用于对时延敏感的应用,如语音、视频等实时业务。EF要求网络为其预留足够的带宽,以确保端到端的服务质量。

2.5 IP选项

IP选项是IP头部中的一个可变长度字段,最大长度为40字节。它允许在IP数据包中携带一些额外的信息,以实现某些特殊功能,如源路由、时间戳等。

IP选项字段由一个或多个选项组成,每个选项都有以下格式:

| -- 类型(Type, 1 byte) -- | -- 长度(Length, 1 byte) -- | -- 数据(data, 可变长度) -- |
  • 选项类型(1字节):指定选项的类型,如记录路由、时间戳等。
  • 选项长度(1字节):指定选项的总长度,包括选项类型和选项长度字段。
  • 选项数据(变长):携带选项的具体数据,长度由选项长度字段决定。

IP选项的类型有以下几种:

  • 单字节选项:只有选项类型字段,没有选项长度和选项数据字段。
  • 多字节选项:包含选项类型、选项长度和选项数据字段。

在早期的网络中,IP选项曾被用于实现一些特殊功能,如源路由、时间戳、路由器警示等。这些功能对于网络诊断、性能测量和特殊路由需求等方面有一定的作用。

然而,随着网络技术的发展,IP选项的使用逐渐减少。大多数现代网络设备和协议都不再依赖IP选项来实现相关功能。当前,IP选项主要在一些特定场景中使用,如网络研究、安全测试等。

在路由转发过程中,如果数据包包含IP选项,则路由器需要对选项进行处理。这会增加路由器的处理开销,影响转发性能。有些路由器可能会直接忽略或丢弃包含某些选项的数据包。

防火墙在处理包含IP选项的数据包时,通常会采取更严格的策略。许多防火墙会直接丢弃包含某些选项(如源路由)的数据包,以防止潜在的安全威胁。

下面是一些常见的IP选项(详见Internet Protocol Version 4 (IPv4) Parameters (iana.org)):

IP选项名称选项编号作用用途
记录路由(Record Route)7记录数据包经过的路由器IP地址,每经过一个路由器,将其IP地址添加到选项中。用于网络诊断和故障排除,跟踪数据包的实际传输路径。
时间戳(Timestamp)68记录数据包经过路由器的时间戳,用于测量网络延迟和计算路由器处理时间。用于网络性能测量和分析,评估网络的时延特性。
松散源路由(Loose Source Route)131指定数据包经过的部分路由器IP地址,数据包将按照指定的路径传输,但允许中间路由器进行路由选择。用于实现特殊的路由需求,如策略路由、流量工程等。
严格源路由(Strict Source Route)137指定数据包经过的完整路由器IP地址,数据包将严格按照指定的路径传输,不允许中间路由器进行路由选择。用于实现特殊的路由需求,如安全路由、网络测试等。
路由器警示(Router Alert)148通知中间路由器对数据包进行特殊处理,如RSVP、IGMP等协议使用该选项。用于实现一些需要路由器特殊处理的协议和功能。
安全(Security)130提供数据包的安全相关信息,如安全等级、口令等,用于军事和政府网络。用于实现网络的安全控制和访问限制。
流标识(Stream ID)136标识数据包所属的特定流,用于实现服务质量(QoS)和流量控制。用于区分不同的数据流,提供差异化的服务质量保证。
快速响应(Quick-Start)25允许发送方请求中间路由器为数据流预留资源,加快数据传输速度。用于实现快速启动和资源预留,提高网络性能。






Alt

Once Day

也信美人终作土,不堪幽梦太匆匆......

如果这篇文章为您带来了帮助或启发,不妨点个赞👍和关注,再加上一个小小的收藏⭐!

(。◕‿◕。)感谢您的阅读与支持~~~

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

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

相关文章

设置 kafka offset 消费者位移

文章目录 1.重设kafka消费者位移2.示例2.1 通过 offset 位置2.2 通过时间2.3 设置到最早 1.重设kafka消费者位移 维度策略含义位移Earliest把位移调整到当前最早位移处位移Latest把位移调整到当前最新位移处位移Current把位移调整到当前最新提交位移处位移Specified-Offset把位…

奥威-金蝶BI现金流量表模板,可借鉴、可套用

企业现金流一旦出了问题都是大问题,会直接影响到企业的日常运作,甚至直接关系到企业能不能继续存活,因此现金流量表是企业财务分析中重要报表之一,也是企业监控财务监控情况的重要手段之一。那么这么重要的一份现金流量表该怎么做…

Angular中创建和使用服务

Angular中的服务 文章目录 Angular中的服务前言一、创建服务二、使用服务 前言 Angular 服务是 Angular 应用程序中用于封装可重用逻辑的类。服务在应用程序的多个组件之间共享数据和功能,而不依赖于应用程序的UI。服务可以用于诸如数据处理、与后端通信、用户身份…

Verilog中4位数值比较器电路

某4位数值比较器的功能表如下。 请用Verilog语言采用门级描述方式,实现此4位数值比较器 参考代码如下: (CSDN代码块不支持Verilog,代码复制到notepad编辑器中,语言选择Verilog,看得更清楚) t…

芸众商城电商专业版400+插件源码+搭建教程

介绍: 芸众商城社交电商系统SAAS平台前端基于vue开发,后端基于研发积分商城系统源码 php,本文安装芸众商城全插件(400多个)商业版平台源码,可同时支持多端口部署运行;使用宝塔面板一键部署的形…

Linux:进程等待 进程替换

Linux:进程等待 & 进程替换 进程等待wait接口statuswaitpid接口 进程替换exec系列接口 当一个进程死亡后,会变成僵尸进程,此时进程的PCB被保留,等待父进程将该PCB回收。那么父进程要如何回收这个僵尸进程的PCB呢?父…

bfs之八数码

文章目录 八数码解题思路图解举例算法思路 代码CPP代码Java代码 八数码 在一个 33的网格中,1∼8这 8个数字和一个 x 恰好不重不漏地分布在这 33 的网格中。 例如: 1 2 3 x 4 6 7 5 8在游戏过程中,可以把 x 与其上、下、左、右四个方向之一…

学成在线 - 第3章任务补偿机制实现 + 分块文件清理

7.9 额外实现 7.9.1 任务补偿机制 问题:如果有线程抢占了某个视频的处理任务,如果线程处理过程中挂掉了,该视频的状态将会一直是处理中,其它线程将无法处理,这个问题需要用补偿机制。 单独启动一个任务找到待处理任…

scikit-learn实现单因子线性回归模型

1.是什么: 针对机器学习提供了数据预处理,分类,回归等常见算法的框架 2.基于scikit-learn求解线性回归的问题: 2.1.求解a,b对新数据进行预测: 2.2评估模型表现(y和y’的方差MSE)…

论文查重率高,有什么办法降重吗?

现在大部分学校已经进入到论文查重降重的阶段了。如果查重率居高不下,延毕的威胁可能就在眼前。对于即将告别校园的学子们,这无疑是个噩梦。四年磨一剑,谁也不想在最后关头功亏一篑。 查重率过高,无非以下两种原因。要么是作为“…

小程序搜索排名优化 三步操作提升

搜索排名优化最直接的一个目的就是为了提升小程序的排名和流量,获取用户的信任度。当用户在搜索关键词的时候,能让用户看到小程序,增加被发现和点击的机会。 一、关键词优化: 1.选择合适的关键词:选择与小程序内容高…

解决Gitlab集成Jira时报SSL证书问题

1. 问题描述 在gitlab中集成jira的时候,由于jira是企业内部网址,并使用自己签名的SSL证书,一直会报证书验证不过的问题,报错信息如下: Connection failed. Check your integration settings. SSL_connect returned1 …

odoo实施之各种导航设计

odoo各种基础能力:活动、讨论 玩转odoo,真有玩的体验 odoo消息提醒能力 odoo 讨论模块 odoo 通过new message触发任务 安装odoo studio进行拖拉拽设计 查阅官方文档,向官方提issue 欧洲和美国,虽然都是英语,但日期格式…

win10下,svn上传.so文件失败

问题:win10下使用TortoiseSVN,svn上传.so文件失败 解决:右键,选择Settings,Global ignore pattern中删除*.so,保存即可。

Verilog中4bit超前进位加法器

4bit超前进位加法器的逻辑表达式如下: 中间变量GiAiBi,PiAi⊕BiGi​Ai​Bi​,Pi​Ai​⊕Bi​ 和:SiPi⊕Ci−1Si​Pi​⊕Ci−1​,进位:CiGiPiCi−1Ci​Gi​Pi​Ci−1​ 用Verilog语言采用门级描述方式&am…

页面嵌套,界面套娃,除了用iframe,还有其他方式吗?

UIOTOS可以了解下,uiotos.net,通过连线来代替脚本逻辑开发,复杂的交互界面,通过页面嵌套轻松解决,是个很新颖的思路,前端零代码! 蓝图连线尤其是独创的页面嵌套和属性继承技术,好家…

如何使用dockerfile文件将项目打包成镜像

要根据Dockerfile文件来打包一个Docker镜像,你需要遵循以下步骤。这里假设你已经安装了Docker环境。 1. 准备Dockerfile 确保你的Dockerfile文件已经准备就绪,并且位于你希望构建上下文的目录中。Dockerfile是一个文本文件,包含了用户可以调…

vue3专栏项目 -- 项目介绍以及准备工作

这是vue3TS的项目,是一个类似知乎的网站,可以展示专栏和文章的详情,可以登录、注册用户,可以创建、删除、修改文章,可以上传图片等等。 这个项目全部采用Composition API 编写,并且使用了TypeScript&#…

【k8s多集群管理平台开发实践】八、client-go实现service读取列表、创建service、读取yaml配置并更新

文章目录 简介 一.k8s的service列表1.1.controllers控制器代码1.2.models模型代码 二.创建service2.1.controllers控制器代码2.2.models模分代码 三.读取和更新service的yaml配置3.1.controllers控制器代码3.2.models模型代码 四.路由设置4.1.路由设置 五.前端代码5.1.列表部分…

湖仓一体 - Apache Arrow的那些事

湖仓一体 - Apache Arrow的那些事 Arrow是高性能列式内存格式标准。它的优势:高效计算:所有列存的通用优势,CPU缓存友好、SIMD向量化计算友好等;零序列化/反序列化:arrow的任何数据结构都是一段连续的内存,…