Linux相关概念和易错知识点(44)(IP地址、子网和公网、NAPT、代理)

Linux Swap 子系统:架构、内存管理与虚拟化 Swap Linux Swap机制通过将不活跃内存页移至磁盘或压缩内存,扩展系统有效内存容量,缓解内存压力。传统架构中,逻辑Swap槽与物理存储绑定,导致资源浪费,尤其在使用Zswap等压缩技术时。为此,Vswap与Xswap提出虚拟化方案:前者以XArray实现灵活映射,支持多后端迁移;后者采用稀疏映射,简化管理但容量固定。二者在架构设计、资源记账与动态扩展上各有权衡,反映了内核开发中对性能、可维护性与灵活性的深层考量。 阅读详情

1.IP地址

(1)局域网和公网

我们之前一直把IP地址简单描述为起始地址和截止地址,就像重庆到北京,全程保持不变。但实际上网络的结构更复杂,分为局域网的IP和公网IP。

①局域网

局域网IP仅适用于局域网内部的唯一性。

家里的路由器连接到交换机,交换机又连接每个联网设备(家用交换机没有IP,它只负责扩散和划分碰撞域)。因此,在路由器之下的所有设备都在路由器划分的局域网下。下面是常用的局域网地址块,/8表示前8位定位网络(网络号),后24位定位主机(主机号),子网掩码就是将网络号占用的位数都设置为1,后续拿到IP后,用IP + 子网掩码借助&操作就能清楚地知道网络号和主机号。

专用IP地址块子网掩码/前缀地址范围使用范围
10.0.0.0/8255.0.0.010.0.0.0 ~ 10.255.255.255适合大型网络,如大型企业、跨国机构、大型园区等(单网络可容纳超1600万台设备)
172.16.0.0/12255.240.0.0172.16.0.0 ~ 172.31.255.255适合中型网络,如中型企业、高校、中型园区等(单网络可容纳约6.5万台设备)
192.168.0.0/16255.255.0.0192.168.0.0 ~ 192.168.255.255适合小型网络,如家庭网络、小公司、办公室等(单子网最多容纳254台设备)

后续都用其中一个地址块举例,其余地址块都同理。

注意,192.168.0.0 ~ 192.168.255.255并不包含192.168.0.0和192.168.255.255本身,主机号全0表示这个网络本身,全1表示广播,该网络下的所有主机都是目标。所以真正可用的、能正常用于定位主机的是192.168.0.1 ~ 192.168.255.254。另外两个地址块同理。

a.网关地址

路由器之下划分一个子网,其中路由器自己也有一个子网地址(网关地址),这个地址一般是198.168.0.1或192.168.1.1等,当然也可自己设置网关地址。那么子网下的设备怎么知道路由器的子网IP呢?除了手动设定网关地址,一般都是DHCP协议自动获取。

当有一个新设备连接到交换机后,它什么都不知道,只知道自己的mac地址。它不知道自己的网络号、主机号,也不知道路由器在哪。这个时候它会发送符合DHCP的数据,其中IP为255.255.255.255(未知网络号时也可广播),目的mac为全F,这样发出去的mac帧每个设备都能收到消息,其中DHCP服务器(一般也集成在路由器里)收到消息后会进行回应(新设备知道自己的mac,因此能单播回应)。其中就包含分配的网络号、主机号、网关地址等消息。

因此,联网的设备都知道自己的子网地址、子网掩码、网络号、主机号、网关地址等信息。

b.局域网通信

在局域网内有两个主机A、B,如果A想要给局域网内的设备发消息,它可以采用广播(类似DHCP)、查找服务器的方式获取B的子网IP地址。之后A会ARP请求B的mac地址,B回应后A发送数据,由交换机转发。全程IP地址都是子网IP,不管源IP还是目的IP。

同理,当A想要给不在局域网内的B发消息时,A会先发送给路由器,A知道路由器的LAN口IP(网关地址),ARP请求的目的IP就是路由器的网关地址。之后就将数据交给路由器转发,但在交给路由器的途中也完完全全是一个局域网通信。

②运营商子网

路由器有两个关键地址,一个是LAN口地址(网关地址),一个就是WAN口地址。其中在局域网通信中,路由器本身与其子网下的设备之间通信都是采用LAN口地址,而WAN口地址是面向局域网之外的。

在一般情况下,这个WAN口IP并不会直通公网IP(有的可以直通),而是会进入运营商子网。也就是说WAN口的IP地址可能是一个如100.64.20.1这样的运营商子网地址。

100.64.0.0 ~ 100.127.255.255是运营商级NAT(CG-NAT)专用的私网网段。有的也会使用10.0.0.0/8来划分。

不同家庭的WAN口IP都是运营商子网里的一个IP,我们的路由器就相当于运营商路由器划分的子网下的主机,运营商路由器也有自己的LAN口IP和WAN口IP,这是一个层级结构。 也就是说我们出了家庭内部的子网后并不一定走到了公网,大概率是进入了另一个更大的子网,并且极端情况下子网能够这样搭建好几层。

而运营商的WAN口IP才是一个真正的公网IP,这种设计方式极大的节约了公网IP地址。 一个运营商路由器WAN口只占一个公网IP,但其LAN口连接非常多个家庭的路由器的WAN口IP,每个家庭里面路由器又能单独划分子网,整个层级结构划分清晰。

一般来说运营商的子网不止一层,也就是说和家庭路由器WAN口直接相连的运营商路由器的WAN口出去又进入了另一个子网。 一般来说运营商子网有3层,其原因后面会提及。

③公网

公网IP地址不能和子网IP地址块、运营商子网地址块重合,所以我们可以直接通过IP的值就判断出这个IP到底是公网IP还是某一个私网的IP。 如看到192.168.1.5,我们能立刻能判断是一个私网IP,并且还能知道这类地址块分配的用户数较少;看到220.181.38.10,不在任何私网段、运营商子网地址块内,那么它就是公网IP。

公网IP具有全球唯一性,只要知道了IP并且判断其为公网IP之后,那么我们一定能够唯一地在全球某个地方找到它。

(2)NAPT

①NAPT过程

所有的路由器(家用、企业、运营商)都内置了NAT功能,用于IP地址的转换。但实际生活中采用的都是IP + 端口号的转换(NAPT,直接定位到一个主机里的进程),所以我们搞清楚NAPT即可,NAT同理。

NAPT是直接定位到某个具体的主机的某个具体的进程,IP定位主机,端口定位进程。

下面是NAPT核心流程图:

核心就是转换表:表左侧为转换前源IP + 源端口 + 目的IP + 目的端口(四元组),右侧是转换后的四元组,这两个四元组构成一对map。

左侧四元组在转换前的网段唯一,右侧四元组在另一个网段唯一。进程A、B离开局域网后,在外层的网段上看均来自同一个设备,就是路由器。

当服务器应答的时候,服务器只知道A、B均来自同一个地址,所以A、B的应答均会发给路由器,而路由器可以根据应答的目的端口号(对应转换表中的“转换后源端口号”)的不同,反向查表映射到子网下的具体设备,之后由交换机扩散转发。

我们可以将NAT形象地看作一次身份转换。出了子网就代表路由器的WAN口IP进行传输了。

真实的传输过程中,NAT可不止一次。当进程A发送数据时,在家庭路由器那里进行一次NAT,替换源IP和源端口号,其中源IP改成了路由器的WAN口IP;出了家庭路由器之后进入运营商子网,到达运营商路由器后再进行一次NAT,替换源IP和源端口号,其中源IP改成了运营商路由器的。之后在公网上传输,到此为止修改的全是源IP + 源Port,目的IP + 目的Port从来没有被修改过。

到指定IP地址后,其实还没完,万一这个目的IP其实只是对方的运营商路由器呢,根据转换表反向查表,替换目的IP和目的端口号,这就进入了运营商子网;找到对方的家庭路由器之后,根据对方家庭路由器的转换表反向查表,替换目的IP和目的端口号进入家庭子网,最后通过交换机扩散转发至目标主机上。

那么对于路由器来说,何时NAPT呢?什么情况下需要交给运营商路由器呢?万一通信双方都在运营商下的子网呢?

A要给B发消息,A首先要知道B的IP地址,同一局域网内的话这个地址就是子网IP,通过子网掩码判断网络号一致后直接通过交换机转发。如果不一致的话就交给路由器,路由器NAPT之后查看路由表,如果找到网络号匹配的下一跳,就会直接转发过去,找不到的话就交给默认路由(通常是运营商网关),继续NAPT和转发。

②理解NAPT

暂不考虑端口复用的情况。家庭路由器NAPT后出去的mac帧源IP都一样,靠的是端口号区分不同进程。到达运营商路由器之后,又被替代源IP和端口号,并且所有从运营商路由器出去的mac帧的源IP都是这个路由器的WAN口IP。这种分级结构能够极大的压缩IP地址的使用,成百上千的家庭发出去的mac帧经过一级路由器的NAT之后源IP都是一样的,这也是为什么运营商路由器一般会分成3级了。因此,我们能够很好地理解NAT在缓解IPv4地址枯竭问题上扮演的重要作用。

但是又出现了一个问题,端口怎么压缩呢?如果严格按照一一映射的方式,一个进程的mac帧被NAT映射之后虽然IP压缩了,但还是需要单独分配一个端口号来区分不同进程。端口复用是一个解决办法,端口复用有不同的方案,其核心思想就是找到映射前的信息不同之处,使得就算打破了一一映射之后,反向查表能区分开。

如果两个进程来自同一IP不同Port,但是两者的目的IP和端口不一样,这样NAPT映射后两个进程的源IP和Port可以一致。 因为对方应答的时候虽然通过转换后的IP + Port反向查表到了两条记录,但看到目的IP和Port不一致,它们就会去匹配目的IP + Port = 发起回应的源IP + Port这一项,这才符合正常的通信流程,这样就能找到正确的映射。

对于运营商来说,它们手上的公网IP都有成百上千个,加上有的采用五元组、七元组等方式设计端口复用。除此之外,还有很多方式尽量增加端口的利用,例如在TCP的情况下, 建立连接时, 就会生成转换表项,而在断开连接后,则会删除这个表项。

所以端口号也是可以进行数量压缩的,能够承担高并发的网络访问需求。

③理解源IP和目的IP

引入NAT之后,传输数据前半段源IP一直在变,后半段目的IP一直在变。那么如果我要给一个目的IP发数据,这个目的IP究竟是什么意思呢?如果我收到了一个消息,那个源IP又是什么意思呢?

我们忽略那些大型的直接接入公网的服务器,也认为所有家庭路由器都会接入运营商路由器的子网,即家庭路由器的WAN口IP是运营商子网下的一个私网IP。

a.目的IP

我要给目的IP发消息,首先思考我们拿到的目的IP为什么长这样?能长成什么样?

如果说通信双方的路由器在同一运营商子网下,我拿到的目的IP其实是对方路由器的WAN口IP,这个WAN口IP是运营商子网下的私网IP,只不过这个私网IP的网络号和我家里的网络号一定匹配不上,因为运营商有专用的私网网段,并且运营商采用的地址块会非常庞大,家里用的子网地址块不可能跟运营商用的一样。如果有的话那就归入企业的考量范围,直接接入公网而非运营商的子网了。这种情况下路由器一般在路由表上就能直接匹配上(都在同一运营商子网下,最长前缀匹配),转发过去,找不到的话交给默认路由,由默认路由进行转发。

如果我拿到一个公网IP,这个公网IP一定是对方主机本身吗?

我们拿到的公网IP,实际上是对方最外层接入了公网的运营商路由器的WAN口IP,我们发的数据被对方路由器接收到后需要不停反向查表、转发才能到达目标主机上。

b.源IP

同理,我收到消息了,如果这个源IP是一个子网IP,且网络号无法和当前局域网的网络号匹配的话,那么就一定是对方路由器的WAN口IP(运营商路由器下的子网IP);如果源IP是公网IP的话,这个IP一定是对方所在的接入公网的运营商路由器的WAN口IP。

当然,源IP和目的IP都有可能直接接入了对方的服务器(大型公司都有)或者路由器,我们上述是忽略了的,现实中都要进行考量。

③最长前缀匹配

路由器收到mac帧之后是如何转发的在这里的理解也很关键。

1.	解封装:从MAC帧中提取IP数据包

路由器接收MAC帧后,会先在数据链路层进行CRC校验,校验失败的话整个mac帧直接丢弃,不再进一步处理和转发。 之后就等待目标主机重组失败,发送端的传输层或应用层控制重传。

CRC校验通过的话,会继续解封装IP数据包,最终提取出目的IP地址,这个IP地址按理说分为网络号和主机号,但是由于IP报头没有子网掩码字段,所以路由器并不知道网络号占多少位。

2. 匹配:转发表查找并最长匹配

路由器的转发表每一项的条目都包含“网络地址 + 子网掩码 + 下一跳”,每一项都分别与提取的目的IP进行&运算,当路由表中/20、/24的网络地址均和目的IP的前几位匹配上时,就会选择/24的作为下一跳。因为网络号匹配得越长的离目标主机就越近。

如果路由表中的每一项都匹配不上,就会转发至默认路由,默认路由一般是运营商路由器,NAPT后进一步转发。

因此可以看出,路由器之间是一跳一跳的,收到数据报之后去最长匹配,然后发送过去。

对于一般的家庭路由器,其WAN口是运营商子网下的一个私网IP,那么这样的话转发表中的每一个待选项都不能是公网IP,否则直接转发过去,结果对方发现源IP是个私网IP,怎么找回来呢? 所以WAN口是子网IP的路由器只能在运营商子网内转发,但凡涉及到公网转发的,只有交给默认路由,由运营商路由器NAPT后转发。所以可以总结为WAN口IP是私网IP的路由器,其转发表中的项也都会是私网IP。

我们可以通过route查看本地的路由表

Destination表示目的网络的IP地址,default代表默认路由,当未被其他路由条目匹配的目的地址,都走这条路由;其它路由条目可以是一个网段(如 10.0.8.0),代表目标是这个网段内的所有主机;也可以是单个IP(如 183.60.82.98),目标是这台特定主机。可以看出,如果一个目的IP和网段路由和主机路由都匹配上了,那肯定是选择主机路由。

Gateway表示下一跳的IP地址。若为 0.0.0.0,无需再发给其他路由器了,已经到了最后一个路由器了,eth0网卡ARP解析目标IP的MAC地址,然后把数据包发给局域网内的交换机,交换机再直接转发到目标设备。 若为 _gateway,实际对应当前子网的网关IP,如路由器的LAN口IP,当本地主机想要跨网段发数据,就必须先发送数据到LAN口,路由器NAPT后再转发。

Genmask表示子网掩码。结合Destination和收到的数据的目的IP做&运算,判断目的IP是否属于该路由对应的网段,多次匹配的话选最长匹配的项(网段路由选最长的)。最长匹配的当然是 255.255.255.255的主机路由。

④NAT技术缺陷

其限制主要来源于 NAT 依赖的转换表:

1.无法从 NAT 外部向内部服务器建立连接
2.装换表的生成和销毁都需要额外开销
3.通信过程中一旦 NAT 设备异常,即使存在热备,所有的 TCP 连接也都会断开

1.当公网设备想主动连接内网里的服务器(比如在家搭建的文件服务器),最开始 NAT 设备上根本没有对应的映射表项,也没有办法向内建立映射,只有向外建立映射后反向查表,所以这种情况路由器不知道该把请求转发到哪个内网设备,因此连接无法建立。

2.频繁维护表项会提高性能需求。

3.如果当前 NAT 设备坏了,哪怕马上切换到备用机并马上开始工作,正在进行的网络连接(比如网游、视频通话)也会断连,因为就算启动备用机,但它的转换表是空的。

2.代理服务

(1)正向代理

正向代理简单来说就是正向代理服务器接收客户端的请求,将请求转发给目标服务器,最后将目标服务器的响应返回给客户端。 在目标服务器眼里,一直都是正向代理服务器在请求服务,而实际上代理服务器只负责转发请求和应答,这样就可以隐藏客户端的身份。

连接学校的校园内网,就是通过学校的正向代理服务器访问资源。用户请求通过正向代理服务器认证之后,由代理服务器负责出去访问资源,“认证”也就意味着正向代理服务器有权力拦截访问,这也是使用校园内网访问一些资源会被拦截的原因。访问的内网资源是交给代理服务器,由代理服务器转发回来。正向代理服务器还可以缓存一些常被客户端请求的资源。

正向代理服务器物理位置靠近客户端。

一般来讲,客户端和要访问目标服务器都有公网IP(这个公网IP是客户端经由家庭路由器NAPT到运营商子网,再由运营商子网NAPT得到的公网IP,并且这个公网IP并不是固定的),在不加限制的情况下其实能够直接通信。 加上正向代理服务器可以做到隐藏身份,并且像校园网那种虽然目标服务器有公网IP,但客户端直接访问的话目标服务器会直接拒绝,它只会回应正向代理服务器的请求。 这点和后面的反向代理有一定的区别。

(2)反向代理

当客户端发起请求时,请求会到达反向代理服务器。反向代理服务器会根据配置的规则将请求转发给后端众多服务器中的一个,服务器的应答交给代理服务器,由代理服务器返回给客户端。 在这个过程中,客户端并不知道实际与哪个服务器进行了交互,它只觉得是在与反向代理服务器进行通信。

当我们访问代理服务器时,代理服务器会把客户端的源IP + Port交给某一台内网服务器,然后这台服务器就和我们的主机进行通信。但注意服务器拿到我们的IP和Port后并不能直接传过来,一般而言,服务器只有内网IP而没有公网IP,真正传输需要先从内网传给代理服务器,由服务器通过公网传到客户端手上。同理,客户端拿到的服务器地址是公网IP,其实是NAPT后的代理服务器的公网IP,和服务器通信时,只有先将数据交给代理服务器,由代理服务器再转发给服务器的。所以无论服务器还是客户端都绕不开代理服务器。 代理服务器可以缓存一些客户端常常访问的资源(包括静态资源、图片等)。

反向代理服务器更靠近服务器端。

不管正向代理还是反向代理,代理服务器的角色和NAT很像。但NAT是网络基础设备,是网络层的设备,而代理服务器往往在应用层。NAT在局域网出口部署,而代理服务器在任何地方都能部署。

(3)内网穿透

现在有一台中转服务器,运行一个frps(服务端)程序。还有一台主机,运行frpc(客户端)程序。中转服务器有自己独立的公网IP,而主机虽然有公网IP,但那是NAPT后运营商提供的,这个公网IP完全不能唯一地定位到主机上。

虽然这台主机没有唯一的公网IP,但frpc(客户端)可以借助运营商提供的公网IP连接到中转服务器frps(服务端)上,建立长期连接,并且frpc的配置文件可以告诉这个中转服务器自己在家庭路由器划分的子网下面的私有IP地址是什么。

这个时候,我们可以粗略理解为主机获得了“两个公网IP”,其中一个就是运营商提供的公网IP,另一个就是中转服务器的公网IP,并且中转服务器直接知道了主机在家庭内网中的私有地址,这一点至关重要。

现在又有一台笔记本电脑(不需要安装frpc),它想要远程控制主机。那么它就连接至中转服务器,向中转服务器发起请求,中转服务器借助frpc - frps连接,向主机请求,主机回应后交给中转服务器,再发回笔记本电脑。

具体来说,主机建立frpc - frps连接时,frpc配置文件中就告知frps “我的本地服务在192.168.1.100:22,别人可以通过中转服务器公网IP:6000访问它” 。这样我们的笔记本电脑直接访问中转服务器公网IP:6000,中转服务器会转发需求和应答,实现控制。

整体上看,内网的主机就像是中转服务器公网IP下的一个服务,或是中转服务器划分子网下的一台主机。所以其他设备通过访问中转服务器就可访问内网的主机。但实际上这是需要依靠主机的运营商公网IP连接中转服务器实现的。

(3)内网打洞和P2P

一般内网打洞成功率高的都是家庭路由器(出入口路由器)的WAN口直接连接公网IP的,暂不考虑连接运营商子网的。

两边主机都通过出入口路由器连上中转服务器,中转服务器记录两边主机的出入口路由器的IP + Port,中转服务器交换两者的IP和Port给对方后,就不需要通过服务器转发了,两边可以直接借助互相的公网IP进行通信,这就是内网打洞。

“打洞”的含义就是直接通过一个中间服务器,交换双方主机的对外的IP + port,之后让双方直接通信。 有的时候双方打洞的IP也可以是同一运营商子网下的私网IP地址,也可能是运营商的公网IP,不过这些情况都有可能遇到拒绝转发的情况,运营商会不同程度限制。

下载的时候也可能打洞,如双方主机都在下载同一个资源时,资源提供商就直接交换双方出入口路由器的IP + Port,实现内网打洞。之后两边既是下载者,也是上传者,两边互相交换各自没有的需要下载的数据,这就是P2P。

(4)“科技”

以下仅为技术分享,请各位遵纪守法!

前面说过运营商路由器连上广域网,有公网IP。我们的如果要经由公网转发,就会经过运营商路由器,进行NAPT并转发。这也意味着我们的访问报文会被看到,可能被运营商拦截,常说的“Q”就设置在拦截这里。 “FQ”的基本思想就是想办法骗过运营商。

有些地区可以直接访问外网,如香港。假设有一台云服务器在香港,这个云服务器可以访问外网,而我们又能直接访问这个云服务器,那么我们就可以借助正向代理实现,这实际上借助了正向代理隐藏身份的特点。

某个客户端软件,这个软件能劫持主机上所有的流量,修改本地的路由表让它把下一跳改成软件自己,这样的话所有数据都会转给软件,这个软件叫透明代理软件(透明是因为我们用户感知不到)。 假设我们要访问google,软件会把www.google.com等敏感信息加密,即把真实请求藏起来(运营商扫描不出来),表面覆盖一个可以访问外网的正向代理服务器的IP + Port。这个代理服务器能够解密并提取信息,访问外网并应答。返回时同样进行加密,交给客户端解密。

本质上它就是搭建在公网上的正向代理。

【信息科学与工程学】计算机科学与自动化-——第十五篇云计算 12 公有云里的“多Region + 多AZ“ 02 运营算法01 算法逐步思考推理思考(含数学方程式、对象、资源、任务、进程/协程/线程及对应的代数、约束、目标函数/传递函数/依赖函数、参数及参数的数值范围及边界条件、逐步推理的数学方程式列表、上下文切换、并发/串行/随机/乱序/顺序)算法逐步思考推理思考(含数学方程式、对象、资源、任务、进程/协程/线程及对应的代数、约束、目标函数/传递函数/依赖函数、参数及参数的数值范围及边界条件、逐步推理的数学方程式列表、上下文切换、并发/串行/随机/乱序/顺序)云厂商提高闲置资源利用率。算法复杂度为O(N),N为实例数量。 阅读详情

相关推荐

Zemax实战:20×超高清变焦镜头设计全流程解析(从架构到制造)

本文详细解析了使用Zemax软件设计一款20倍变焦比、恒定F2.8光圈8K超高清镜头的全流程。从应对恒定光圈、宽光谱与8K解析力三大挑战的初始架构规划,到构建多重组态模型、分七阶段进行像差优化与公差分析,最终跨越制造鸿沟,为广播级影视与高精度工业检测应用提供了实战指南。

sun99的博客 552

理解 Linux 动态库加载:LD_LIBRARY_PATH

flyfish

二分掌柜的 347

开关变换器分析:大信号模型与小信号模型

是电力电子系统建模中的两类基本方法,分别用于描述系统在不同工作条件下的动态行为。它们的核心区别在于是否对变量进行线性化近似,以及适用的分析场景。

创新改变世界! 1909

Linux-iostat命令详解

Linux命令学习记录

m0xin的博客 119

MOSS-TTS开源语音合成家族:从架构解析到生产部署实战

语音合成(TTS)技术旨在让计算机将文本转换为自然流畅的语音,其核心原理通常涉及文本分析、声学模型和声码器等模块。近年来,基于深度学习的端到端TTS模型,特别是结合残差向量量化(RVQ)和Transformer架构的方案,显著提升了合成语音的自然度和效率。这类技术的价值在于能够广泛应用于有声内容创作、智能助手、无障碍服务以及实时交互等场景。本文聚焦于开源的MOSS-TTS家族,它通过模块化设计,针对高保真合成、多角色对话、实时交互等不同需求提供了专用模型。文章深入解析了其底层的Delay与Local两种架构

weixin_28745565的博客 422

RADIOML 2018.01A调制信号数据集介绍及处理

RadioML 2018.01A 由 DeepSig 发布,是专门针对自动调制识别(Automatic Modulation Recognition, AMR)和无线信号分类研究设计的基准数据集。它在原有 RadioML 2016.10a 的基础上,扩展并精细化了信道仿真模型,使得信号更接近真实无线环境下的表现。该数据集广泛用于机器学习模型的训练与评估,为各类深度学习算法提供了统一、可重复的实验条件。

weixin_56527269的博客 1887

USB 技术系列 11 · USB Linux 驱动框架

本文系统解析Linux USB驱动框架,涵盖USB Core、HCD(xhci-hcd/dwc3)、类驱动(CDC/HID/Mass Storage)分层架构,详解usb_device_id匹配、probe/disconnect生命周期及Device Tree配置。结合RISC-V N300实战,揭示Host/Device双模式驱动开发核心逻辑,助力嵌入式BSP开发者掌握USB子系统全栈能力。

peter_pan_study的博客 253

Python实现飞书机器人定时发送文本、图片等群消息

python实现飞书群自动发送告警消息

tyh_keephunger的博客 2万+

Linux 服务器性能排查手册(2026):CPU、内存、磁盘IO、网络四大瓶颈定位

iptables 四表五链模型、firewalld zone 信任级别、云安全组与主机防火墙的关系与优先级,避坑改了防火墙把自己挡在服务器外面的翻车事故。

2502_91473995的博客 320

Surface Pro 4/5/6/7保姆级黑苹果安装:从Windows分区到OC引导配置全流程(含EFI文件替换避坑)

本文详细介绍了在Surface Pro 4/5/6/7上安装黑苹果的全流程,包括Windows分区、OC引导配置和EFI文件替换等关键步骤。通过实战经验分享,帮助用户避开常见陷阱,实现Windows与macOS双系统完美共存,特别适合对黑苹果安装感兴趣的Surface Pro用户。

weixin_30300225的博客 1370

使用 MATLAB/Simulink 对一个开关磁阻电机进行建模

*开关磁阻电机(Switched Reluctance Motor, SRM)**是一种新型的无刷电机,以其简单的机械结构、宽广的调速范围和较高的效率在工业应用中得到了广泛关注。SRM的独特之处在于其定子和转子均为凸极结构,并且通过改变绕组电流的方向来实现转矩的产生和控制。本教程将详细介绍如何使用对一个开关磁阻电机进行建模,并探讨其基本控制策略,特别是针对双凸极结构的SRM。本文介绍了如何使用构建一个开关磁阻电机的双凸极结构模型,并探讨了其基本控制策略。

amy_mhd的博客 203

Linux rm 误删文件恢复实操教程

Linux使用rm删除文件时,并不会直接抹除磁盘上的数据,只是移除文件索引,让系统不再识别这块空间。只要没有写入新数据,原有扇区内容就会保留。新文件写入才有可能覆盖这些区域,一旦覆盖就很难找回。恢复的本质就是扫描磁盘,找到这些还存在、但索引丢失的数据条目,再把它们导出保存到其他分区。越早停止写入,恢复成功的概率越高。

海天数据恢复-winhex数据恢复教程 231

【YOLOv11工业级实战】27. TensorRT量化实战:FP16/INT8极致加速!边缘设备YOLOv11推理速度提升4倍,精度损失控制在1.5%内

摘要:本文针对智慧园区200路摄像头实时分析的工业痛点——RTX 3080单卡仅能处理12路视频流(YOLOv11-nano FP32精度45FPS,需≥120FPS且精度损失≤3%),提供TensorRT量化完整解决方案。从原理解析(FP16/INT8精度差异与量化逻辑)到实操落地(ONNX转换、FP16引擎构建、INT8精细校准),全程给出可复用代码。实测显示:FP16量化后速度达128FPS(×2.8),精度损失0.2%。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 1720

Windows/Linux下强实时运动控制内核(二):基于Qt的Delta机械手的开发应用

强实时运动控制内核MotionRT750下Qt开发Delta机械手的完整开发流程。

weixin_57350300的博客 241

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Linux epoll 一篇讲透:从 select/poll 到红黑树、LT/ET,再到完整 TCP 服务器

一万个客户端已经连上服务器,眼下只有十个客户端发来了数据。服务器怎样把时间花在这十个连接上?理解这个问题,就抓住了 epoll 的主线。接下来,我们沿着“为什么需要它 → 接口怎么用 → 内核如何实现 → LT/ET 怎么写 → 完整服务器怎么运行”的顺序,把知识连起来。**阅读基础:**了解socketbindlistenaccept的基本用途即可。本文示例面向 Linux,服务器使用 C++17,实验脚本使用 Python 3。

2601_94861874的博客 181

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Linux、Shell、MySQL 测试卷逐题细讲(下篇:MySQL)

本文为Linux、Shell、MySQL测试卷下半段MySQL部分逐题讲解,包含填空、选择与SQL分析三类题型。填空题覆盖COUNT、HAVING、DISTINCT、事务、约束、索引等核心语法;选择题辨析存储过程、索引类型、ACID、存储引擎、用户管理等考点。SQL大题围绕员工、部门、职位、地点四张关联表,考察多表连接、分组聚合、自连接、相关子查询、NULL处理等高频写法,标注LEFT JOIN统计计数、NULL判断、子查询别名等易错坑点,同时梳理试卷OCR识别带来的干扰问题,重点提示SQL实操中的常见失误

dongziwen1的博客 184

VC中sqlite的使用

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

Linux 网络基础详解:IP、子网、路由与 ip、ss 命令实战

建库建表、增删改查、连接查询(内连左连右连)、聚合函数、权限控制 GRANT/REVOKE,每条命令配可运行示例,零基础也能跟着敲会 SQL 基础。

2502_91473995的博客 617

深入浅出聊聊 Linux 的 PageCache 与系统极致性能

本文深入浅出解析了 Linux PageCache 的核心机制,揭示其如何通过“延迟写、预读读”提升系统性能。以监控告警为切入点,阐明 free -h 中 buff/cache 并非真正占用,真正可用内存由 available 决定。结合 Kafka、Elasticsearch、MySQL 等实战场景,说明中间件如何依赖 PageCache 实现极致性能。强调不可手动清理缓存,并建议合理调优脏页参数,避免卡顿。最终指出:内存满≠危机,而是系统高效运行的体现。

小小默:进无止境 482

Linux 下 OpenCode 接入自定义大模型 API 教程:以 DeepSeek-V4.1-Flash-1017 为例

本文介绍在Linux下通过Python脚本配置OpenCode接入自定义大模型API(以DeepSeek-V4.1-Flash-1017为例),实现永久化、非侵入式配置。通过修改~/.config/opencode/opencode.json文件,添加OpenAI兼容服务商BLSC,注册模型并设置APIKey。支持命令行测试、默认模型设定及安全权限控制,操作简单且不影响原有配置。适用于各类支持OpenAI接口的自定义模型服务,提升开发灵活性与安全性。

qq_15060477的博客 126

【Linux 命令实战(02):文件与目录操作,掌握 pwd、ls、cd 三个核心命令】

命令作用cd /进入根目录cd ~进入当前用户家目录cd返回当前用户家目录cd …返回上一级目录cd …/…返回上两级目录cd -返回上一次所在目录进入指定目录命令核心用途常用参数pwd查看当前目录-L、-Pls查看文件和目录cd切换目录…、~、-Linux 文件系统的基本结构。绝对路径与相对路径的区别。Tab 自动补全。Shell 通配符。使用&&组合命令。这篇文章主要解决的是如何在 Linux 文件系统中快速定位目录。

一些微不足道的见解、希望能帮助各位 197

【Linux 命令实战(06):Linux 文件权限管理,掌握 chmod、chown、chgrp】

chmod:修改文件和目录权限。chown:修改文件所有者,也可以修改所属用户组。chgrp:修改文件所属用户组。r:读取。w:写入。x:执行,对于目录则表示进入和访问能力。ugo:分别代表所有者、所属组和其他用户。我认为,权限管理最重要的不是记住755644这些数字,而是先弄清楚谁需要访问文件、需要执行什么操作,再给出恰当的权限。尤其是在测试服务器和生产服务器上,不要为了图方便直接使用chmod 777。权限开放得越大,并不代表问题解决得越好。

一些微不足道的见解、希望能帮助各位 335

Linux篇(五)

本文系统梳理了Linux常用终端快捷键、软件包管理(yum/apt)、服务管理(systemctl)、软链接(ln)、时间与IP配置、域名解析、固定IP设置及网络命令(ping/wget/curl),涵盖日常运维核心操作,助力高效管理Linux环境。

wykyzdq的博客 201

Linux的渲染与显示系统链路

Linux渲染与显示链路核心为DRM/KMS + EGL直连模式,绕过传统X11/Wayland中间层,实现低延迟、高效率的直接帧提交。相比X11的粗粒度权限控制与Wayland的合成开销,该方案链路短、资源消耗低,但仅支持单进程独占显示,缺乏窗口管理与系统级兜底。EGL作为跨平台桥梁,连接OpenGL ES与原生显示系统,通过Display、Surface、Context三要素构建渲染环境。内核层DRM管理GPU资源,KMS配置显示模式,用户态GDM负责登录会话,共同构成从硬件到应用的完整图形栈。

微小的鱼的博客 397

【Linux】进程间通信的基础概念及基于匿名管道的进程池

前面我们介绍了进程的创建、退出和等待,接下来看看进程之间怎样传递数据。这篇从匿名管道入手,再用管道把父子进程联系起来,写一个简单的进程池小demo。而且我把发行版从CentOS切换成Ubuntu了,主要是CentOS已经不维护了,可惜了。。。

qeen87的博客 323

Linux 启动流程与故障修复:GRUB、systemd 与救援模式实战

密钥登录配置替代密码、sshd_config 禁 root 禁密码改端口、fail2ban 自动封爆破 IP、端口改不改的权衡,服务器被扫描爆破时的完整加固方案。

2502_91473995的博客 460

linux 压缩文件时间 PG TDE下 tar cfz 压缩到20% pg_basebackup 基本没有压缩

数据,这个文件的精确压缩时长为。

jnrjian的博客 154
上一篇: Linux相关概念和易错知识点(43)(数据链路层、ARP、以太网、交换机)
下一篇: Linux相关概念和易错知识点(45)(网络层、网段划分)
-SGlow-
博客等级 码龄3年 1513粉丝 118原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值