【C++体系】各种网络协议捋不清?一文带你解决

爬虫工程师转型AI开发:四阶段学习路径与实战指南 在人工智能时代,大模型应用开发已成为技术热点。其核心原理是通过预训练模型理解与生成自然语言,结合检索增强生成(RAG)等技术,为传统数据处理赋予智能。这项技术的价值在于将静态数据转化为动态知识,实现智能问答、内容生成等高级功能。在应用场景上,它正广泛渗透到企业知识库、智能客服、数据分析等领域。对于具备深厚数据处理功底的爬虫工程师而言,转型AI开发具有天然优势。他们擅长的数据清洗、异步编程和问题拆解能力,恰好是构建高质量AI应用所需的工程化基础。通过系统学习Prompt工程、LangChain框架、向量数据库 阅读详情

点击此处,获取更良好的阅读体验

前言

为了准备秋招及春招,现阶段的任务是将所学过的知识进行复习,并串联起来。计算机网络为后续开展网络编程提供支撑,其中的要点包括了IP、UDP、TCP等

具体的还包括了:OSI 七层模型和 TCP/IP 四层体系结构,TCP 三次握手与四次挥手,常见的网络协议(网桥、ARP、IP、ICMP、TCP、UDP、DHCP、DNS)、TCP 粘包、流量控制 + 拥塞控制、数字签名原理、http + https,http 的状态码,https 的安全机制,网络安全、输入 www.baidu.com 背后发生了什么等等问题。

其实工作中,有时就会出现,网络抖动、网络延迟,网络拥塞的情况,此时就需要具备一定的网络知识,及时的解决问题,计算机网络是面试中常见问题之一。

网络层

把分组从源端传递到目的端,为分组交换网上的不同主机提供通信服务。

传输单位:数据报(由分组组成)

功能:

  • 路由选择与分组转发
    • 路由选择:根据选定的路由选择协议,构造出路由表,并不定期更新和维护该路由表
    • 分组转发:根据转发表(由路由表得出),对分组进行转发,从路由器的某个端口发送出去
  • 异构网络互联
  • 拥塞控制

所要掌握的协议:

SDN

软件定义网络,是路由器两大功能的拓展。
在SDN中,将两个功能分别对应了两个平面,数据平面(分组转发)和控制平面(路由选择)。

在传统的设计中,路由选择中计算路由表由每一个路由器自己实现。而SDN中,在控制平面中多加了一层,将计算转发表这一功能从每个路由器中剥离出来,形成了网络控制应用程序。

在这里插入图片描述

在这之下,是控制平面的另一个层次,也就是SDN控制器(网络操作系统),它包括了北向接口、网络范围状态管理层、南向接口:

  • 北向接口:与网络控制应用程序交互
  • 网络范围状态管理层:保存主机、链路、路由器的最新信息
  • 南向接口:与受控网络设备(路由器)交互

IP

IP提供了一种尽力而为、无连接 的 数据报 交付服务。

IPv4数据报格式

IPV4数据报格式,重点在于理解每一个字段代表什么意思

表示方法:点分10进制

IP数据报格式
这里记录一些注意格外注意的点,具体的内容可查阅参考资料中的书籍

  1. 首部长度(4B)、总长度(1B)、片偏移(8B)的单位需要作一个区分
  2. 首部长度:因为IPv4数据报的头部至少要为20B,又因单位是4B,所以首部长度的范围在0101~1111,即20B~60B
  3. 总长度:指IP头部+数据部分,因占了16位,所以总长最大为 2 16 − 1 2^{16}-1 216−1,65535B
  4. 标志:只用到了中间位(DF)与最低位(MF)
  5. 协议:TCP-6,UDP-17
  6. 源、目的地址:即IP地址

分类寻址

4B,32位

I P 地址 : : = { < 网络号 > , < 主机号 > } IP地址::=\{<网络号>,<主机号>\} IP地址::={<网络号>,<主机号>}

  • 网络部分:用于识别接口使用的IP地址在哪个网络中可被发现
  • 主机地址:用于识别由网络部分给出的网络中的特定主机

有几类特殊的IP地址需要格外注意:

  • 网络号正常,主机号为0:网络地址,表示一个网络
  • 网络号正常,主机号全为1:直接广播地址,对特定网络上的所有主机进行广播

这里也解释了IP地址中,最大主机数为什么要-2

  • 网络号为0:表示本网或本网内的某个特定主机
  • 网络号127,主机号非全0/1:本地软件环回测试,称为环回地址
网络类别最大可用网络数第一个可用的网络号最后一个可用的网络号最大主机数
A 2 7 − 2 2^7-2 27−21126 2 24 − 2 2^{24}-2 224−2
B 2 14 − 1 2^{14}-1 214−1128.1191.255 2 16 − 2 2^{16}-2 216−2
C 2 21 − 1 2^{21}-1 221−1192.0.1223.255.255 2 8 − 2 2^8-2 28−2

注:A类和B类网络号通常浪费太多主机号, 而C类网络号不能为很多站点提供足够的主机号

子网寻址

在子网寻址中,主机号被进一步划分为子网号和主机号:

I P 地址 : : = { < 网络号 > , < 子网号 > , < 主机号 > } IP地址::=\{<网络号>,<子网号>,<主机号>\} IP地址::={<网络号>,<子网号>,<主机号>}

注意,只有划分子网的网络中的主机和路由器知道子网结构。

在需要进行子网寻址之前, Intemet其他部分仍将它作为站点相关的地址来看待。

子网掩码:确定如何从一个IP地址中,获得网络和子网信息

当子网掩码与IP地址作与操作,就可以得到子网号

使用子网时分组的转发
存在路由器转发分组的算法:

  1. 提取目的IP地址
  2. 是否直接交付
  3. 特定主机路由
  4. 检测路由表中有无路径
  5. 默认路由0.0.0.0

CIDR(无分类编址)

CIDR记法:IP地址后面加上/,然后写上网络前缀(可以任意长度)的位数

e.g. 128.14.32.0 / 20 128.14.32.0/20 128.14.32.0/20

I P 地址 : : = { < 网络前缀 > , < 主机号 > } IP地址::=\{<网络前缀>,<主机号>\} IP地址::={<网络前缀>,<主机号>}

路由聚合(构成超网)

将多个子网聚合成一个较大的子网

方法:取所有网络的最大前缀

最长前缀匹配

使用CIDR时,查找路由表可能得到多个匹配结果,这时应该选择具有最长网络的前缀的路由。
前缀越长,地址块越小,路由越具体

方法:用目的地址,去和路由表中的地址掩码作与操作,观察最长的匹配

IPv6

基本首部40B,IPv6地址128位(16B)

表示方法:冒号16进制记法,如

4 B F 5 : A A 12 : 0216 : F E B C : B A 5 F : 038 A : B E 9 A : 2170 4BF5:AA12:0216:FEBC:BA5F:038A:BE9A:2170 4BF5:AA12:0216:FEBC:BA5F:038A:BE9A:2170

每个数有16种表示,一共有32个数。

1 6 32 = 2 128 = 3.4 ∗ 1 0 38 16^{32}=2^{128}=3.4*10^{38} 1632=2128=3.4∗1038,如此庞大的数,“ 可以为地球上的每一粒沙子分配一个IP地址 ”

IPv6数据报格式:

  • 流标签:流本质是数据报,指的是特定源点到特定终点的一系列数据报。所有属于同一个流的数据报具有相同的流标签
  • 有效载荷长度:扩展首部1/2/3 + 数据

ARP(MAC地址和IP地址的映射)

地址解析协议:完成主机或路由器 IP地址 到 MAC地址 的映射

ARP用于确定本地可达的IPv4子网使用的IPv4地址对应的硬件地址

它在数据报的目的地与发送方处于[同一子网]时使用,
还用于数据报的目的地[不在当前子网时]将其转发到一台路由器的网关

ARP协议的使用过程:

  • 检查ARP高速缓存,有对应表项则直接写入MAC帧
  • 如果没有,则发送目的MAC地址为FF-FF-FF-FF-FF-FF的帧封装并广播ARP请求分组。同一局域网内的主机都会收到此请求,但只有目的主机才会做出响应
  • 目的主机收到请求后,会向源主机发送单播ARP响应分组(IP+MAC),源主机收到后将此映射写入ARP缓存(10-20min更新一次)

ARP协议两类典型情况:

  1. 同一局域网:用ARP找到【主机】的硬件地址
  2. 跨网:用ARP找到本网络上一个【路由器】的硬件地址

DHCP(动态获取IP地址)

应用层、UDP、客户/服务器、广播

动态主机配置协议,用于获取IP地址

信息包括了IP地址、子网掩码、默认网关、DNS服务器的名称和IP地址

工作流程如下:

  1. 主机广播DHCP发现报文
  2. DHCP服务器广播DHCP提供报文(拟分配)
  3. 主机广播DHCP请求报文(请求分配)
  4. DHCP服务器广播DHCP确认报文(正式分配)

ICMP(差错+探询)

网际控制报文协议,为了更有效地转发IP数据报和提高成功交付的机会

位于IP数据报的数据部分,因此是网络层协议

功能:

  • 差错报告
  • 网络探询

ICMP差错报文
  1. 终点不可达(无法交付)
  2. 时间超过(TTL=0),traceroute
  3. 参数问题(首部字段有问题)
  4. 改变路由(重定向)

ICMP询问报文
  1. 回送请求与回答报文:测试目的站是否可达并了解其相关状态 ping
  2. 时间戳请求和回答报文:用来进行时间同步和测量时间

IGMP(IP组播)

网际组管理协议,运用在多播组,使用IP数据报传送报文

提到这个协议,首先要明确一个概念多播。
多播,又称为组播,指定的几个人可以收到组播包。区别于广播,一个局域网内所有主机都能收到。

IP数据报的三种传输方式:

  • 单播:点对点。用于发送数据包到单个目的地,使用单播IP地址作为目的地址
  • 广播:点对多点。指发送数据包到同一广播域或子网内的所有设备的一种数据传输方式
  • 组播:点对多点。只有某些特定的用户才能收到数据包

D类地址: 224.0.0.0 224.0.0.0 224.0.0.0 ~ 239.255.255.255 239.255.255.255 239.255.255.255
只能作为目的地址


IGMP协议是让连接在本地局域网上的【多播路由器】知道,本局域网上是否有主机参加或者退出了多播组

工作阶段:

  1. 当有主机加入多播组时,该主机要向该多播组的多播地址发送一个IGMP报文,声明想要成为该组的成员。
  2. 当本地的多播路由器收到IGMP报文时,要用 多播路由选择协议 向Internet上的其它路由器发送这种组成员关系
  3. 本地多播路由器要周期性的探询本地局域网上的主机,确认其是否还是多播组内的成员

路由选择协议

RIP(距离-向量)

路由信息协议 RIP (Routing Information Protocol) ,应用层协议,使用UDP传送数据

  • RIP 是一种分布式的、基于距离向量的路由选择协议
  • RIP 协议要求网络中的每一个路由器都要维护从它自己到其他每一个目的网络的距离记录。

三个要点:(复习这里的时候,想起了wzq老师,谢谢王老师)

  1. 仅和相邻路由器交换信息(和谁交换信息)
  2. 交换自己已知的全部信息,即自己的路由表(交换什么信息)
  3. 按固定的时间间隔交换路由信息 or 当网络拓扑发生变化时(什么时候交换信息)

RIP适用于小的互联网,
其允许一条路由最多只能包含15个路由器,因此距离为16表示网络不可达


执行过程:

在这里插入图片描述

  1. 先将此 RIP 报文中所有的“下一跳”字段值改为发送报文的相邻路由器,并把所有的“距离”字段值加 1。
  2. 再对修改后的 RIP 报文中的每一个项目,执行距离向量算法:
    • 若项目中的目的网络不在路由表中,则把该项目加到路由表中。
    • 否则:若项目中的下一跳字段值相同,则用收到的项目替换原路由表中的项目(拓扑可能发生变化,导致距离变长或缩小)。
    • 否则:若项目中的距离小于路由表中的距离,则进行更新。
    • 否则:什么也不做。
  3. 若 3 分钟还没有收到相邻路由器的更新路由表,则把此相邻路由器记为不可达路由器。

Q:如何理解RIP坏消息传得慢?(慢收敛)

A:在一个网络(网1)已经发生故障后,与它相邻的路由器(R1)最先知道了故障。但是这时其它路由器(R2)还不知道它已经故障了,仍保留着通向它的路径信息。
这时,相邻的路由器(R1)就会以为通过这一路由器(R2)可以通向本已故障的网络(网1)。如此往复,直到距离增加至16,双方才最后知道该网络已经故障了。

OSPF(链路状态)

开放最短路径优先 OSPF (Open Shortest Path First),采用分布式的链路状态协议,直接用IP数据报发送

三个要点:

  1. 使用可靠的洪泛法,向本自治系统中所有路由器发送信息。(即路由器通过端口向所有相邻路由器发送信息,而每一个路由器又再次将此信息发送给其相邻路由器。是一种广播的形式)
  2. 发送的信息是与本路由器相邻的所有路由器的链路状态。(“链路状态”就是说明本路由器都和哪些路由器相邻,以及该链路的“度量”(metric))
  3. 只有当链路状态发生变化时,路由器才向所有路由器发送此信息

所有的路由器最终都能建立一个链路状态数据库。这个数据库实际上就是全网拓扑结构图,它在全网范围内是一致的(这称为链路状态数据库的同步)。


OSPF的区域:

  • OSPF会将一个AS划分为若干个更小的范围,叫做区域。
  • 用32位标识符,点分10进制表示
  • 区域<=200

BGP(路径-向量)

外部网关协议,应用层协议,借助TCP发送

BGP 是不同自治系统的路由器之间交换路由信息的协议

  1. 与其它AS的邻站BGP发言人交换信息
  2. 交换网络可达性的信息,即要到达某个网络所要经过的一系列AS
  3. 发生变化时更新有变化的部分(如果是首次,则发送全部信息)

三层设备的区别

冲突域:一个站点向另一个站点发出信号,除目的站点外,有多少站点能收到这个信号,这些站点就构成一个冲突域。基于物理层

广播域:在网络中能接收任一设备发出的广播帧的所有设备的集合。基于数据链路层

能否隔离冲突域能否隔离广播域
物理层(中继器、集线器)××
链路层(网桥、交换机)✓×
网络层(路由器)✓✓

传输层

只有主机才有层次

  1. 传输层为 进程与进程 之间提供逻辑通信。区别于网络层为主机提供逻辑通信
  2. 复用(传->网)和分用(网->传)
  3. 对收到的报文进行差错检测
  4. TCP + UDP

端口号的概念:
长度16bit,能表示65535个不同的端口号

  • 0~1023:服务端-熟知端口号,给TCP/IP最重要的一些应用程序
  • 1023~49151:服务端-登记端口号
  • 49152-65535:客户端,仅在客户进程运行时才动态选择

套接字 S o c k e t = ( 主机 I P 地址,端口号 ) 套接字Socket=(主机IP地址,端口号) 套接字Socket=(主机IP地址,端口号)

套接字唯一标识了网络中的一个主机和它上面的一个进程

UDP

无连接的用户数据报协议,数据报

UDP5大特点:

  1. 无连接
  2. 尽最大努力交付
  3. 面向报文,处理对象为一整个报文,不删不减
  4. 无拥塞控制,但提供差错检测(体现在计算校验和)
  5. 首部开销小,仅8B。而TCP是其2.5倍

UDP首部格式

各2B:源端口号、目的端口号、UDP长度(首部+数据)、UDP校验和

UDP检验:

在发送端时,先添加上伪(IP)首部(只在计算校验和时出现)
全0填充校验和字段和数据字段,二进制反码求和,得出结果再取反码作为校验和

在接收端,依然先添加上伪首部,伪首部+UDP首部+数据部分 二进制反码求和
这时如果全为1,则无差错。否则,丢弃此数据报或交给应用层附上出错的警告

TCP

面向连接的传输控制协议,报文段,广播、多播

  1. 面向连接(虚连接)的单播协议

  2. 点对点

  3. 提供可靠交付(可靠有序,不丢不重)

  4. 全双工通信

    • 发送缓存+接收缓存将TCP的可靠交付,全双工通信体现的淋漓尽致!!!
    • 发送缓存:准备发送的数据 & 已发送但尚未接收到确认的数据
    • 接收缓存:按序到达但尚未到应用程序读取的数据 & 不按序到达的数据
  5. 面向字节流。TCP把应用层交下来的数据看成一连串无结构的字节流

TCP报文段首部格式

极其重要,重点掌握!!!

  • 20B,是UDP的2.5倍
  • 序列号:本报文段所发送数据的第一个字节的序号
  • 确认号:期望收到的下一个报文段第一个字节的序号
  • 头部长度,也被叫做数据偏移,单位4B
  • 窗口大小:指的是己方所能接收的数据的大小。确认号+窗口大小可以得出接收大小,是TCP发送方调节发送速率的依据
  • 检验和:记得和UDP一样要加上伪首部进行检验,协议字段为6
  • 紧急指针:URG=1时生效,本报文段中紧急数据的字节数

TCP连接管理

一个TCP连接由一个4元组构成,它们分别是两个IP地址和两个端口号

建立一个TCP连接需要3个报文段,而关闭一个TCP连接需要4个报文段

三 次 握 手

握手需要在客户和服务器之间交换三个 TCP 报文段。称之为三报文握手。

  1. 客户发送连接请求报文段后,进入【同步已发送】状态
  2. 服务器收到客户发来的报文后,发送同步确认报文,进入【同步收到】状态。并为本次连接分配缓存和变量
  3. 客户再次发送确认报文,【连接建立】。为本次连接分配缓存和变量,开始发送数据。B 的 TCP 收到主机 A 的确认后,也通知其上层应用进程:TCP 连接已经建立。

三次握手中的前两次握手均不携带应用层数据

值得注意的是,FIN和SYN只会在请求和应答的时候各出现一次

四 次 挥 手

无论客户还是服务器,都能发起连接释放,也就是发起四次挥手这个过程
TCP 连接释放过程是四报文握手

  1. 客户发送连接释放报文段
  2. 服务器收到客户发来的报文段后,进行确认,至此从客户->服务器的单向通道关闭。服务器还能向客户传送数据
  3. 服务器也发送连接释放确认报文段
  4. 客户收到报文段后,必须再进行确认

Q:A为何必须等待2MSL(最大报文段长度)?
A:保证最后一次挥手能够到达B。如果没有到达,B可再次发送第3次挥手,A收到后重新发送第4次并重新等待2MSL。等待2MSL以此来保证连接能够释放

可靠机制

TCP提供了如校验、序号、确认、重传来保证可靠传输

确认:两点

  1. 在发送缓存中,尽管数据已经发送了,但只有收到接收方的确认,才会将其移出发送缓存。
  2. 如果接收方在接收数据时,中间有一部分丢失了,那么【报文段首部确认号字段】仍为丢失部分的第一个字节序号

重传:发送方在规定时间内如果没有收到确认,就要重传已经发送的报文段

流量控制

TCP使用可变滑动窗口机制实现流量控制

区别于拥塞控制的地方在于,流量控制是一种点对点、一对一的控制,即具体的一个接收方对发送方施加的发送数据多少的控制

TCP发送端滑动窗口结构

在通信过程中,接收方根据自己的接收缓存的大小,动态地调整发送方发送窗口的大小

方法:接收方通过设置报文段中的【窗口大小字段】来将rwnd通知给对方

发送方的发送窗口: m i n ( r w n d , c w n d ) min(rwnd, cwnd) min(rwnd,cwnd)
接收窗口和拥塞窗口中的最小值


零窗口与TCP持续计时器

通告窗口指示了接收端可接收的数据量。当窗口值变为0时,可以有效阻止发送端继续发送,直到窗口大小恢复为非零值。

只要一方收到零窗口通知,就会启动一个持续计时器。

若持续计时器到期,就会发送一个零窗口探测报文,来得到当前的窗口大小

TCP的流量控制机制完成了对发送速率的调节,它是基于ACK数据包中的通告窗口大小字段来实现的。这种方式提供了明确的接收方返回的状态信息,避免接收方缓存溢出。

拥塞控制

拥塞:路由器因无法处理高速率到达的流量,而被迫丢弃数据信息的现象

“当接收速率或网络传输速率过慢时,我们需要降低速率。”——《TCP/IP详解 卷1:协议》
接收速率用流量控制中的接收窗口衡量,而网络传输速率就是这里即将提到的拥塞控制。

拥塞控制是整个网络环境,对发送方施加的发送速率的控制

  • 采取机制:超时重传 + 快速重传
  • 拥塞窗口(cwnd):反映网络传输能力的变量,由发送方自己估算拥塞程度而设置的窗口值

这里先假设了发送窗口的大小只取决于拥塞窗口

慢开始 & 拥塞避免
  • 传输轮次:发送了一批报文,并收到它们的确认的时间
  • ssthresh慢开始门限值,超过这一阈值,从慢开始算法改为拥塞避免算法。如果某一时刻发生网络拥塞,则将这一值更新为发生拥塞时cwnd的一半
快重传 & 快恢复
  • 快重传:收到3个冗余ack,发送报文出现丢失
  • 快恢复:在执行后快重传后,不用将cwnd降低到1,而是降到新的ssthresh(收到3个重复确认时的一半)

DNS(域名解析协议)

参考资料

  1. 《TCP/IP详解 卷1:协议》
  2. 《王道408—计算机网络》
  3. ICMP协议/IGMP协议详解
  4. 详解广播域和冲突域的区别
OSPF协议的运用 OSPF:Open Shortest Path First 中文直译为:开放式的最短路径优先协议 1)概念 组播发送:224.0.0.5/6 标准的链路状态型路由协议—路由器之间传递拓扑 版本:OSPFv2–IPv4 OSPFv3–IPv6 更新方式:触发更新 存在周期更新30min OSPF网络需要结构化部署:1、区域划分 2、IP地址规划 链路状态型路由协议的距离矢量特征–区域之内传... 阅读详情

相关推荐

EtherNet/IP开发:C++开发CIP源代码

第6卷是CIP的CompoNet适配,描述了CIP如何适配到CompoNet数据链路层。它包含了对CompoNet数据链接层的完整描述,以及对第1卷中材料的任何扩展,这些都是CompoNet所必需的。-第4卷是CIP的ControlNet适配,描述了CIP如何适配到ControlNet数据链路层。-第2卷是CIP的EtherNet/IP适配,描述了CIP如何适配到以太网TCP/IP和UDP/IP传输层。-第3卷是CIP的DeviceNet适配,描述了CIP如何适配到CAN数据链路层。-第5卷为CIP安全。

semisecs 7万+

c/c++自定义通讯协议(TCP/UDP)

socket网络编程中的网络协议设计

yuanshenqiang的博客 1万+

C++中的HTTP协议

1、HTTP Hyper Text Transfer Protocol(超文本传输协议)。是一种通信协议,它允许将超文本标记语言(HTML)文档从Web服务器传送到客户端的浏览器。在Internet中所有的传输都是通过TCP/IP进行的。HTTP协议作为TCP/IP模型中应用层的协议也不例外。HTTP协议通常承载于TCP协议之上,有时也承载于TLS或SSL协议层之上,这个时候,就成了我们常说的H...

king_weng的博客 1万+

C++网络编程-tcpip协议

可靠的终止tcp连接、保证让迟来的tcp报文段有足够的时间被识别丢弃(防止某端口又有新的连接进来导致报文被接收)。发送端应用程序用send、write向tcp写入数据,内核中的tcp模块将数据与tcp内核发送到缓冲区,然后tcp模块调用ip模块的服务,将tcp报文段作为ip的数据部分。如FTP传输大文件,由于吞吐量大,tcp使用滑动窗口协议,允许发送方在停止发送前和等待确认前连续发送多个分组。异常终止连接:发送后,发送端所有排队等待发送的数据都会被丢弃,使用socket的SO_LINGER。

www131864的博客 2830

ospf 功能实现 C/C++

ospf 功能实现

tcmalloc(高并发内存池)简化版讲解-项目

高清发不上去,私我发高清,项目完整代码@我。

2201_75352618的博客 910

IP地址CIDR合法性校验

一、问题描述    我们一般用CIDR来表示一段ip地址。CIDR是这样一个字符串:先是一个ipv4的地址的字符串表示,加一个”/“分隔符,再加一个13(含)到27(含)之间的整数。比如“192.128.1.134/25”,表示从192.128.1.128(含)到192.128.1.255(含)的128个ip地址。    “/”前的字段“192.128.1.134”表示该范围内的一个ip地址(不一...

qiki_糖没味儿的程序媛小屋 7713

告别时钟树平衡噩梦:在Innovus中巧妙设置stop/ignore pin来优化分段时钟网络

本文深入探讨了在Innovus工具中利用stop/ignore pin优化分段时钟树网络的高阶技巧。针对数字IC后端设计中的时钟树平衡难题,详细解析了特殊引脚属性的战略应用场景和配置方法,帮助工程师有效解决SoC设计中复杂的时钟结构问题,显著提升时序收敛效率。

weixin_30836759的博客 286

C++中的网络协议和网络框架TCP和HTTP

C++中的网络协议和网络框架TCP和HTTP

qianniulaoren的博客 1373

【深度学习】肺结节分割项目实战二:分割肺实质

在后续训练模型的时候如果直接使用原始的肺部CT图像,其中的非肺区域会对训练造成干扰,因此我们需要提取分割肺实质。这一部分参考了kaggle上的教程。 从这张CT图像中可以看出扫描器以外的部分为黑色,背景和肺内部颜色较深,非肺组织和骨头颜色较浅。我们的目的是将肺部分割出来。由于肺部区域和其他部分对比明显,我们可以设置一个合适的阈值对图像中的区域进行隔离。 import argparse import os import numpy as np from medpy.filter.smoothing imp

weixin_42182906的博客 7240

新能源车主必看:用高德API+充电站数据制作跨城出行充电规划工具(附完整代码)

本文为新能源车主提供了一份详细的跨城出行充电规划工具构建指南。通过整合高德地图API与充电站数据,手把手教你使用Python开发一个智能规划系统,可自动规划路线并推荐沿途充电站,有效缓解里程焦虑。文章包含完整代码、核心算法解析及可视化实现,帮助车主实现个性化、高效的出行规划。

tgb3456789的博客 898

C++11实现计算机网络中的TCP/IP连接(Windows端)

网络通信TCP/IP协议实现笔记。

面条有点辣 6708

01. VBA从入门到精通——录制宏、窗口、快捷键

excel表功能区右击→常用→选择显示开发工具选项→确定Visual Basic:打开VBA窗口宏:查看要录制的宏录制宏:准备录制宏使用相对引用:录制宏的时候对单元格的引用做一个设置宏安全性:对宏的使用做安全设置,一般设置为禁用所有宏,并发出通知,此时打开带有宏代码的工作薄时会出现警告标记,如果宏可信就选择启动。

weixin_43812198的博客 1696

网络 TCP协议(C++代码|通过tcp协议实现客户端与服务端之间的通信)

TCP通信编程 tcp是面向连接、可靠传输、面向字节流的传输层协议 面向连接:必须建立了连接且保证双方都具有数据收发的能力,才能开始通信。(udp是无连接的,只要知道对端地址就可以直接发送消息) 可靠传输:传送的数据,无差错、不丢失、不重复、并且按序到达 面向字节流: 通信方面也是分为客户端和服务端 各端的操作流程: 服务端操作流程: 创建套接字端口:在内核中创建socket结构体,关联进程与网卡之间的联系 为套接字绑定地址信息:网络通信中的数据都必须带有源端IP、源端端口、对端IP、对端端口、协议,这

WhiteShirtI的博客 1万+

OData 请求里的 Nextlink 实战:在 ABAP Client Proxy 中优雅处理长列表分页

本文介绍了OData v4标准中的@odata.nextLink分页机制及其在SAP ABAP中的实践应用。重点解析了该机制通过服务端提供的完整URL实现分页获取,客户端只需循环处理直到该字段消失的特点。文章提供了清晰的ABAP代码模板,展示如何通过Remote Client Proxy实现分页数据获取,并强调了仅支持OData v4和远程消费的限制条件。通过HR员工数据聚合的实际案例,说明了流式分页处理的最佳实践,包括服务端过滤、稳定排序和内存控制等关键技术要点,为ABAP开发者提供了可直接落地的解决方案

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 268

协方差矩阵自适应进化策略(CMA-ES)详解:从基础原理到优化算法

CMA-ES是一种先进的无导数优化算法,基于生物进化原理解决连续域非线性优化问题。该算法通过自适应调整多元正态分布的均值、协方差矩阵和步长参数,自动学习搜索空间结构,无需梯度信息即可高效优化。核心创新包括协方差矩阵的秩1和秩μ更新策略,以及基于进化路径的步长控制机制。CMA-ES具有旋转不变性、标度不变性和全局探索能力,特别适合3-300维的黑盒优化问题,在复杂系统仿真、超参数调优等领域表现优异。算法实现中关键参数如种群大小、学习率等均有自适应设置规则,使其成为连续优化领域的基准算法之一。

qq_42212808的博客 522

【C++】使用C++实现基于Socket的通信

Socket是一种网络通信接口,它提供了端到端的通信服务。Socket分为TCP(Transmission Control Protocol,传输控制协议)和UDP(User Datagram Protocol,用户数据报协议)两种类型。TCP是面向连接的、可靠的、基于字节流的传输层通信协议,而UDP则是无连接的、不可靠的、基于数据报的传输层通信协议。// Type部分,通常使用16位整型// Length部分,也是16位整型// Value部分,使用字节向量存储。

kewaqi618的博客 3836

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

C++网络通信实例(TCP/IP协议,包括服务端与客户端通信)

C++网络通信实例(TCP/IP协议,包括服务端与客户端通信)

showswoller的博客 5350

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

C++实现分析TCP、UDP、ICMP和IGMP协议

一代码 #include <sys/types.h> #include <sys/socket.h> #include <sys/ioctl.h> #include <net/if.h> #include <string.h> #include <stdio.h> #include <stdlib.h> #i...

实践求真知 1640

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

使用 C++ 实现通信协议的指南(四·上)

本文介绍了如何设计一个通用的二进制通信协议开发库,重点阐述了通用消息接口的实现方法。通过C++11可变参数模板技术,作者提出了一种灵活配置消息接口的方案,允许开发者按需选择功能(如消息ID类型、读写迭代器、字节序、有效性检查等)。文章详细展示了如何定义选项类(如MsgIdType、ReadIterator等),并通过模板元编程解析这些选项来生成定制化的消息接口类。该设计实现了接口功能的模块化配置,可根据项目需求灵活组合,为二进制通信协议开发提供了高度可复用的基础框架。

kpengk的博客 124

C++.IP协议通信

1. TCP协议通信 1.1 服务端实现 创建套接字 绑定地址 监听连接 接受连接 数据传输 关闭连接 1.2 客户端实现 创建套接字 连接服务器 数据传输 关闭连接 1.3 示例代码 服务端代码示例 客户端代码示例 绑定地址 接收数据 发送数据 关闭套接字 2.2 客户端实现 创建套接字 发送数据 接收数据 关闭套接字 2.3 示例代码 服务端代码示例 客户端代码示例 发送POST请求 示例代码说明 4.1 基本原理 4.2 示例代码 FTP文件下载 FTP文件上传 示例代码说明 5.1 基本原理 5.2

Rachelhi的博客 1265

C++网络通信

一、TCP/IP协议 1、OSI参考模型: OSI参考模型的建立不仅创建了通信设备之间的物理通道,还规划了各层之间的功能,为标准化组合和生产厂家定制协议提供了基本原则。 OSI参考模型采用分层的划分原则,将网络中的数据传输划分为7层,每一层使用下层的服务,并向上层提供服务。 应用层(第7层)—— 表示层——会话层——传输层——网络层——数据链路层——物理层(第1层) 2.TCP/IP参考模型: TCP/IP通信协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求,这4层分别为: 应用

Gin_ger的博客 3943

cip:C/C++包管理工具

文章目录cip:C/C++包管理工具介绍安装开源API使用方法 cip:C/C++包管理工具 本文博客链接:http://blog.youkuaiyun.com/jdh99,作者:jdh,转载请注明. 介绍 C/C++没有类似python中的pip,golang中的gomod这样的包管理工具,所以编写包管理工具cip解决此问题。 cip: C/C++ Install Package.cip是C/C++的包管理器. cip会自动从需求文件中拉取github或者gitee等仓库中的包,也可以自动更新包。 安装 pip in

jdh99的专栏 2965

《C++编程秘籍:高效网络协议解析实战指南》

通过选择合适的数据结构、使用位域优化内存占用、采用高效的算法和技术、利用多线程和异步编程提高并发性能以及进行性能测试和优化等方法,可以有效地提高网络协议解析的效率和性能。网络协议解析的目的就是将接收到的网络数据包按照特定的协议格式进行解析,提取出有用的信息,以便进行后续的处理。在网络协议解析中,可以使用状态机来跟踪协议的状态,根据不同的状态进行相应的处理。在网络协议解析中,可以使用正则表达式来匹配特定的协议字段,提取出有用的信息。在网络协议解析过程中,采用高效的算法和技术可以大大提高解析的效率。

xy520521的博客 1280

学懂C++(四十):网络编程——深入详解 HTTP、HTTPS 及基于 Windows 系统的 C++ 实现

深入详解 HTTP、HTTPS 及基于 Windows 系统的 C++ 实现

编程技术探索者,分享C/C++、C#、Java、数据库等开发经验,聚焦实战技巧与AI兴趣,助力编程爱好者成长。 2755
上一篇: 【C++体系】如何启动操作系统?不要只回答按电源键啦
下一篇: 【匠心之作】三道题带你简单复习C++和Java
CodeSlogan
博客等级 码龄6年 4227粉丝 130原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CodeSlogan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值