当前位置: 首页 > news >正文

tcp/ip协议

OSI参考模型

应用层:OSI最高层。确定进程之间通信性质

        协议:http:80,https:443,ftp:21,telnet:23,ssh:22,smtp:25,pop3

表示层:处理流经结点的数据编码的表示方式问题,以保证一个系统应用层发出的消息可被另一系统的应用层读出,数据压缩和加密也是表示层可提供的转换功能之一

会话层:管理和协调不同主机上各种进程之间的通信,负责建立、管理和终止应用程序之间的会话

传输层:为上次协议提供端到端的可靠和透明的数据传输服务

网络层:为传输层提供服务,通过寻址来建立两个节点之间的连接,进行路由选择数据链路层

数据链路层:为网络层提供服务(一个数据链路的连接)

物理层:利用物理传输介质为数据链路层提供物理连接(双绞线 光纤 无线介质等)

数据:比特流 比特最小数据传输单位

tcp/ip参考模型

        应用层

        传输层:定义两个协议:传输控制协议(TCP)和用户数据报协议(UDP)

        网络层:网际协议(IP)、地址解析协议(ARP)、互联网组管理协议(IGMP)和互联网控制报文协议(ICMP)

                IP协议是网际互联网最重要的协议,它提供的是一个不可靠、无连接的数据报传递服务

        数据链路层(数据:数据帧)物理层(数据:比特流)

                网络接入层与OSI参考模型中的物理层和数据链路层相对应。它负责监视数据在主机和网络之间的交换。事实上,TCP/IP本身并未定义该层的协议,而由参与互连的各网络使用自己的物理层和数据链路层协议,然后与TCP/IP的网络接入层进行连接。

OSI参考模型和TCP/IP参考模型

            共同点

                (1)OSI参考模型和TCP/IP参考模型都采用层次结构的概念

                (2)都能够提供面向连接和无连接两种通信服务机制

            不同点           

                (1)前者是七层模型,后者是四层结构

                (2)对可靠性要求不同(后者更高)

                (3) OSI模型是在协议开发前设计的, 具有通用性.TCP/IP是先有协议集然后建立模型, 不适用于非TCP/IP网络.

                (4)实际市场应用不同(OSI模型只是理论上的模型,并没有成熟的产品,而TCP/IP已经成为“实际上的国际标准”)

tcpdump抓包工具

        tcpdump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息

        -e 在输出行打印出数据链路的头部信息包括源mac和目的mac,以及网络层协议

        -n 不把网络地址转换成名字;

        -nn 不把ip和port转换成名字

        -c 在收到指定包的数目后,tcpdump就会停止

        -i 指定监听的网络接口

        -r从指定的文件中读取包(这些包一般通过-w选项产生)

        -w 直接将包写入文件,并不分析和打印出来

        -S指定打印每个监听到数据包的TCP绝对序列号而非相对序列号

        第一类型关键字 host,net,port 定义捕获数据包的范围

        tcpdump host 192.168.147.129 截获192.168.147.129 主机通信所有数据包

        tcpdump net 192.168.147.129 截获192.168.147.129该网络内数据包

        tcpdump host 192.168.147.129 and port 80 截获192.168.147.129主机80端口收到和发出的所有数据包

        第二类型关键字(确定传输方向)src,dst,dst or sec,dst and src

        tcpdump -nn src 192.168.147.129 and dst 192.168.147.130 截获源ip为192.168.147.129并且目标ip为192.168.147.130的数据包

        tcpdump -nn src 192.168.116.100 and src port 80 and dst 192.168.116.1 and dst port 22 截获源ip为192.168.116.100源端口80并且目标ip为192.168.116.1目标端口22的数据包

        第三类型关键字(协议)fddi,ip,arp,rarp,tcp,udp,icm

        Fddi指明是在FDDI(分布式光纤数据接口网络)上的特定 的网络协议,实际上它是"ether"的别名,fddi和ether具有类似的源地址和目的地址,所以可以将fddi协议包当作ether的包进行处理和 分析。

        tcpdump -nn host 192.168.147.129 and port 22 and tcp 截获主机192.168.147.129 端口22 并且是tcp协议的数据包

        tcpdump -i ens33 -s 1400 -nn host 192.168.116.250 and ! 192.168.116.74 and icmp -e 抓取网口ens33上192.168.116.250和除192.168.116.74外的其他主机之间的icmp报文

        除了这三种类型的关键字之外,其他重要的关键字如下:gateway, broadcast,less,greater,三种逻辑运算,取非运算是 'not ' '! ', 与运算是'and','&&';或运算 是'or' ,'||';

 数据链路层

        ARP协议是“Address Resolution Protocol”(地址解析协议)的缩写。

        将计算机的网络地址(IP地址32位)转化为物理地址(MAC地址48位)

        在以太网中的数据帧从一个主机到达网内的另一台主机是根据48位的以太网地址(硬件地址)来确定接口的,而不是根据32位的IP地址。内核(如驱动)必须知道目的端的硬件地址才能发送数据

        1、应用程序构造数据包,该示例是产生ICMP包,被提交给内核(网络驱动程序);

        2、内核检查是否能够转化该IP地址为MAC地址,也就是在本地的ARP缓存中查看IP-MAC对应表[1];

        3、如果存在该IP-MAC对应关系,那么跳到步骤7;如果不存在该IP-MAC对应关系,那么接续下面的步骤;

        4、内核进行ARP广播,目的地的MAC地址是FF-FF-FF-FF-FF-FF,ARP命令类型为REQUEST(1),其中包含有自己的MAC地址;

        5、当192.168.1.2主机接收到该ARP请求后,将源主机的IP地址及MAC更新至自己的arp缓冲中,然后发送一个ARP的REPLY(2)命令,其中包含自己的MAC地址;

        6、本地获得192.168.1.2主机的IP-MAC地址对应关系,并保存到ARP缓存中;

        7、内核将把IP转化为MAC地址,然后封装在以太网头结构中,再把数据发送出去;

        使用arp-a命令就可以查看本地的ARP缓存内容,所以,执行一个本地的PING命令后,ARP缓存就会存在一个目的IP的记录了。当然,如果你的数据包是发送到不同网段的目的地,那么就一定存在一条网关的IP-MAC地址对应的记录。

        

RARP协议是“Reverse Address Resolution Protocol”(反向地址转换协议)的缩写

        允许局域网的物理机器从网关服务器的ARP表或者缓存时请求其IP地址

        在局域网网关路由器里创建一个表映射物理地址(MAC)和与其对应的IP地址。

        设置一台新机器其RARP客户机程序需要向路由器上的RARP服务器请求相应的IP地址

        如果路由表已经设置了一个记录,RARP服务器将会返回IP地址给机器,该机器会存储起来一边日后使用

        tcpdump默认只抓包之前的96 bytes -s 1500可抓到整个包的数据

 

查看缓存表

        arp 注意:如果出现两个MAC,可能目标主机是双网卡,也可能IP冲突,如果不能正常通信则IP冲突否则双网卡

网络层

        ip协议:IP是英文Internet Protocol(网络之间互连的协议)的缩写,中文简称为“网协”,也就是为计算机网络相互连接进行通信而设计的协议。

        一.IP协议简介: 路由、分片

                特点:

                        不可靠(unreliable): 它不能保证IP数据报能成功地到达目的地。IP仅提供尽力而为的传输服务。如果发生某种错误时,如某个路由器暂时用完了缓冲区, IP有一个简单的错误处理算法:丢弃该数据报,然后发送ICMP消息报给信源端。任何要求的可靠性必须由上层来提供(如TCP)。

                        无连接(connectionless): 这个术语的意思是IP并不维护任何关于后续数据报的状态信息。每个数据报的处理是相互独立的。这也说明, IP数据报可以不按发送顺序接收。如果一信源向相同的信宿发送两个连续的数据报(先是A,然后是B),每个数据报都是独立地进行路由选择,可能选择不同的路线,因此B可能在A到达之前先到达。

                ip数据报分析

        

IP数据报首部的固定部分中的各字段

        (1)版本 占4位,指IP协议的版本。通信双方使用的IP协议版本必须一致。目前广泛使用的IP协议版本号为4(即IPv4)。关于IPv6

        (2)首部长度 占4位,可表示的最大十进制数值是15(1111)则表示60字节头长度.最常用的首部长度就是20字节(即首部长度为0101)

        (3)服务类型 占8位,区分服务 用来获得更好的服务. 高层协议通过服务类型字段告诉ip处理设备,应该如何处理这个数据包,该字段占一个字节长(包括3bit优先级[0~7最高] 第4bit延迟 吞吐量标志第5bit 可靠性标志第6个bit 第7bit最小开销标志)

        (4)总长度 总长度指首部和数据之和的长度,单位为字节。总长度字段为16位,因此数据报的最大长度为2^16-1=65535字节

        在IP层下面的每一种数据链路层都有自己的帧格式,其中包括帧格式中的数据字段的最大长度,这称为最大传送单元MTU(Maximum Transfer Unit)。当一个数据报封装成链路层的帧时,此数据报的总长度(即首部加上数据部分)一定不能超过下面的数据链路层的MTU值。

        (5)标识(identification) 占16位。IP软件在存储器中维持一个计数器,每产生一个数据报,计数器就加1,并将此值赋给标识字段。但这个“标识”并不是序号,因为IP是无连接服务,数据报不存在按序接收的问题。当数据报由于长度超过网络的MTU而必须分片时,这个标识字段的值就被复制到所有的数据报的标识字段中。相同的标识字段的值使分片后的各数据报片最后能正确地重装成为原来的数据报。

        (6)标志(flag) 包分片标识 占3位,但目前只有2位有意义。第一位保留

                标志字段中的最低位记为MF(More Fragment)。MF=1即表示后面“还有分片”的数据报。MF=0表示这已是若干数据报片中的最后一个。

                标志字段中间的一位记为DF(Don’t Fragment),意思是“不能分片”。只有当DF=0时才允许分片。

        (7)片偏移 占13位 表示当前的这个数据分片在原有数据包中所处的位置,有了这个字段就便于目标主机一片一片的重组数据包

        (8)生存时间 占8位,生存时间字段常用的的英文缩写是TTL(Time To Live),每记过一个路由器 该值就减1,当TTL值为0时,路由器就会丢弃该数据,并且向发包主机返回一个报警信息.后来把TTL字段的功能改为“跳数限制".TTL的意义是指明数据报在网络中至多可经过多少个路由器。显然,数据报在网络上经过的路由器的最大数值是255.若把TTL的初始值设为1,就表示这个数据报只能在本局域网中传送.这种机制避免了数据包在网络中无线的循环

        (9)协议 占8位,协议字段指出此数据报携带上层的数据是使用何种协议.比如 tcp 该值为6 udp该值17 1表示为ICMP协议, 2表示为IGMP协议

        (10)首部检验和 占16位。这个字段只检验数据报的首部,但不包括数据部分。这是因为数据报每经过一个路由器,路由器都要重新计算一下首部检验和(一些字段,如生存时间、标志、片偏移等都可能发生变化)。

        (11)源地址 占32位。

        (12)目的地址 占32位

        ip分片:超过1500 byte,发送端分片,接收端重组

        ip link show eth0 显示网卡eth0的网络接口信息,包括类型、Ethernet地址、链路状态等

        

利用ip碎片攻击

        ping of death 是利用ICMP协议的一种碎片攻击。攻击者发送一个长度超过65535的Echo Request数据包,目标主机在重组分片的时候会造成事先分配的65535字节缓冲区溢出,系统通常会崩溃或挂起。

        如何阻止碎片攻击

        * Windows系统请打上最新的Service Pack,目前的Linux内核已经不受影响。

        * 如果可能,在网络边界上禁止碎片包通过,或者用iptables限制每秒通过碎片包的数目。

        * 如果防火墙有重组碎片的功能,请确保自身的算法没有问题,否则被DoS就会影响整个网络。

        * Win2K系统中,自定义IP安全策略,设置“碎片检查

一.icmp协议简介

        ICMP是(Internet Control Message Protocol)Internet控制报文协议。它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。

        侦测远端主机是否存在

        建立及维护路由资料

        重导资料传输资料

二.ICMP首部

        

type 类型 8位

8 响应请求(ECHO-REQUEST)

0 响应应答(ECHO-REPLY)

3 不可到达

type

        Code=0 网络不可达 有网关 ping不存在的网段主机 网管开转发并且没有该网段路由(网关没有设置自己网关)

        Code=1 主机不可达

        Code=2 协议不可到达

        Code=3 端口不可达

        1.ping存在主机 对应主机有防火墙 REJECT

        2.指定一个主机 不打开的dns服务, 解析域名

        checksum校验和字段(16位)

传输层

        udp协议:UDP 是User Datagram Protocol的简称, 中文名是用户数据包协议.是OSI参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。在网络中它与TCP协议一样用于处理 UDP数据包。在OSI模型中,在第四层传输层,处于IP协议的上一层。UDP有不提供数据包分组、组装和不能对数据包进行排序的缺点,也就是说当报文发送之后,是无法得知其是否安全完整到达的。

        

        UDP协议 首部 8 字节

        不用先与对方建立连接(非面向连接)

        source port: 主动访问端的源端口总是大于1024的随机端口

        destination port: 目的端口

        length: 指的是当前UDP的数据段的长度(DATA长度+UDP首部的长度)

        数据报文的长度=DATA长度+8字节UDP首部的长度+20字节IP首部的长度

        syslog和dns默认用UDP,zone数据报传输的时候用TCP

        checksum:检查校验和

        非面向连接:不用先与对方建立连接,不握手

        不可靠的:没有确认机制

UDP Flood攻击

        原理UDP Flood是日渐猖厥的流量型DoS攻击,原理也很简单。常见的情况是利用大量UDP小包冲击DNS服务器或Radius认证服务器、流媒体视频服务器。 100k pps的UDP Flood经常将线路上的骨干设备例如防火墙打瘫,造成整个网段的瘫痪。由于UDP协议是一种无连接的服务,在UDP FLOOD攻击中,攻击者可发送大量伪造源IP地址的小UDP包。但是,由于UDP协议是无连接性的,所以只要开了一个UDP的端口提供相关服务的话,那么就可针对相关的服务进行攻击。

tcp协议

        TCP协议即TCP(传输控制协议):Transmission Control Protocol 传输控制协议,TCP是一种面向连接(连接导向)的、可靠的、基于字节流的传输层(Transport layer)通信协议,由IETF的RFC 793说明(specified)。TCP在IP报文的协议号是6。在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能,UDP是同一层内另一个重要的传输协议。

        

Source Port / Destination Port :来源端口/目的端口。其中包含来源端口/目的端口的端口号。

Sequence Number :封包序号。当数据要从一台主机传送去另一台主机的时候,发送端会为封包建立起一个起始序号,然后按照所传送的数据长度(字节数值),依次递增上去。使用递增之后的值来作为下一个封包的序号。这样接收端就可以根据序号来检测资料是否接收完整了。

Acknowledge Number :回应序号。当接收端接收到 TCP 封包并通过检验确认之后,会依照发送序号、再加上数据长度产生一个响应序号,附在下一个响应封包送回给对方(无需额外的送出专门的确认封包),这样接收端就知道刚才的封包已经被成功接收到了。假如基于网络状况或其它原因,当封包的定时器达到期限时,接收端还没接收到回应序号,就会认为该封包丢失了并加以重送。如果刚好重发封包之后才接收到响应,接收端就会根据序号来判断该封包是否被重复发送,如果是的话,将之丢弃不做任何处理

window滑动窗口

        T C P使用一种窗口(w i n d o w)机制来控制数据流。当一个连接建立时,连接的每一端分配一个缓冲区来保存输入的数据,并将缓冲区的尺寸发送给另一端。当数据到达时,接收方发送确认,其中包含了自己剩余的缓冲区尺寸。剩余的缓冲区空间的大小被称为窗口( w i n d o w) ,指出窗口大小的通知称为窗口通告(window advertisement) 。接收方在发送的每一确认中都含有一个窗口通告。

如果接收方应用程序读数据的速度能够与数据到达的速度一样快,接收方将在每一确认中发送一个正的窗口通告。然而,如果发送方操作的速度快于接收方(由于C P U更快) ,接收到的数据最终将充满接收方的缓冲区,导致接收方通告一个零窗口( zero window) 。发送方收到一个零窗口通告时,必须停止发送,直到接收方重新通告一个正的窗口。

tcp协议的3次挥手

        

tcp协议的4次挥手

        

重传机制(RTT)

        每个数据段都有一个重传时间 这个时间是根据网络情况算出来.如果在该时间范围内没有ack 那就要重传数据段注意不是数据包.(数据段可能是N个数据包) 网络层不是管重传的只能在传输层完成

TCP的特点总结

        1.面向连接:三次握手和四次挥手

        SYN同步标记

        FIN结束标记

        2.可靠的:确认和重传机制

        确认机制:ACK确认标记

        重传机制:在RTT(数据段往返时间),没有收到ACK,则认为需要重传整个数据段序列号,确认号

        3.TCP的状态

        4.TCP的标记

        SYN:同步标记位

        ACK:确认标记位(包括三次握手的确认及以后数据传输时确认)

        RST:重置标记位(访问一个未打开的TCP端口,服务器返回一个带RST标记位的响应)

        PSH:推标记位(延时性比较高的时候都会加上PSH,比较快的发送出去,不往缓存中放,ssh,telnet,ftp-command)

        URG:紧急标志位(通信的时候网络故障问题引起的数据没传完,会发送一个URG标记位)

        FIN:结束标记位(发送端完成发送任务,双方都需要确认没有数据再发给对方)

syn flood 

攻击原理:SYN Flood是当前最流行的DoS(拒绝服务攻击)与DDoS(分布式拒绝服务攻击)的方式之一,这是一种利用TCP协议缺陷,发送大量伪造的TCP连接请求,常用假冒的IP或IP号段发来海量的请求连接的第一个握手包(SYN包),被攻击服务器回应第二个握手包(SYN+ACK包),因为对方是假冒IP,对方永远收不到包且不会回应第三个握手包。导致被攻击服务器保持大量SYN_RECV状态的半连接,并且会重试默认5次回应第二个握手包,塞满TCP等待连接队列,资源耗尽(CPU满负荷或内存不足),让正常的业务请求连接不进来

应用层

        ftp协议

        FTP 是 TCP/IP 协议组中的协议之一,是英文File Transfer Protocol的缩写。该协议是Internet文件传送的基础,

        它由一系列规格说明文档组成,目标是提高文件的共享性,提供非直接使用远程计算机,使存储介质对用户透明和可靠

        高效地传送数据。简单的说,FTP就是完成两台计算机之间的拷贝,从远程计算机拷贝文件至自己的计算机上,称之为“下载(download)”文件。若将文件从自己计算机中拷贝至远程计算机上,则称之为“上载(upload)”文件

        在TCP/IP协议中,FTP标准TCP端口号为21,Port方式数据端口为20。

        二、FTP两种模式

        两种数据传输模式:主动模式,被动模式

        被动模式:服务器端只开21和大于1024随机端口

        服务器和客户端会协商好一个端口,然后客户端从这个端口读数据

        主动模式: 服务器端打开21和20端口

        客户端和服务端通过20号端口传输数据

http协议:超文本传输协议 (HTTP-Hypertext transfer protocol) 是一种详细规定了浏览器和万维网服务器之间互相通信的规则,通过因特网传送万维网文档的数据传送协议。

        使用浏览器访问web服务器

        tcpdump -i ens33 -nn port 80 -s 1500 -w /tmp/http //客户端抓取包        

        wireshark详细查看:

        

        HTTP GET / HTTP/1.1 -----> Follow TCP Stream (右键)

        红色部分: 客户端发给服务器

        蓝色部分: 服务器回给客户端        

使用协议命令访问web服务器

         nc 192.168.147.129

         GET / HTTP/1.1 //请求站点根目录 【HTTP协议名称及版本可选】

         HOST: 192.168.0.99 //发起请求的服务端主机 【可选】
        HTTP响应头
        HTTP/1.1 200 OK //协议返回码200
        Date: Thu, 25 Oct 2012 06:16:50 GMT
        Server: Apache/2.2.3 (Red Hat) //服务器软件及版本
        Last-Modified: Thu, 25 Oct 2012 05:40:00 GMT //告诉客户端是否需要从服务器更新,由于客户端有缓存的数据(提高效率)
        ETag: "330001-12-a2518c00" //和服务器比Etag值,作用为Last-Modified相似
        Accept-Ranges: bytes
        Content-Length: 18
        Connection: close
        Content-Type: text/html; charset=UTF-8 //和后面讲到的mime类型相关     

相关文章:

tcp/ip协议

OSI参考模型 应用层:OSI最高层。确定进程之间通信性质 协议:http:80,https:443,ftp:21,telnet:23,ssh:22,smtp:25,pop3 表示层:处理流经结点的数据编码的表示方式问题,以保证一个系统应用层发出的消息可被另一系统的应用层读出,数据压缩和加…...

小红书的视频怎么保存没有水印(方法分享)

你是不是也经常在小红书上刷到超赞的旅行vlog、美妆教程或美食探店视频,想保存下来慢慢看,却发现下载后总有烦人的水印?别急!今天教你一招,3秒轻松保存无水印高清视频,简单又实用! 为什么需要无…...

RK3568解码1080P视频时遇到系统崩溃内核挂掉的解决方案

接上篇rk3568。 实际使用 rock_mpp库硬解码时,会遇到解码1080P视频整个系统卡死,内核崩溃的问题。 以下是内核崩溃的日志,下面这句是典型的内核某块驱动挂掉的信息。 [ 292.469580] Unable to handle kernel NULL pointer dereference at…...

C++ —— Lambda 表达式

🎁个人主页:工藤新一 🔍系列专栏:C面向对象(类和对象篇) 🌟心中的天空之城,终会照亮我前方的路 🎉欢迎大家点赞👍评论📝收藏⭐文章 文章目录 L…...

Keepalived相关配置和高可用

目录 一. Keepalived的工作原理 二. 实现单独的心跳网卡 三. keepalive一些优化 3.1 主从之间加密验证 3.2 修改心跳线发送时间 四. 添加独立日志 五. 抢占模式,非抢占模式,延迟抢占模式 六. 单播地址和多播地址 1. 单播地址(Unicast…...

gtest 库的安装和使用

目录 介绍 安装 使用 介绍 官方文档:GoogleTest 入门 |GoogleTest 谷歌测试 gtest 库是谷歌开源的 C测试单元框架,方便我们测试程序的正确性。 安装 sudo apt-get install libgtest-dev 使用 GTest 中的断言的宏可以分为两类: • ASS…...

Python训练营打卡——DAY30(2025.5.19)

目录 模块和库的导入 一、导入官方库 1. 标准导入:导入整个库 2. 从库中导入特定项 3. 非标准导入:导入整个库 二、模块、包的定义 三、使用案例 场景1: main.py 和 circle.py 都在同一目录 场景2: main.py 和 circle.py 都在根目录的子目录 mo…...

Django框架的前端部分使用Ajax请求一

Ajax请求 目录 1.ajax请求使用 2.增加任务列表功能(只有查看和新增) 3.代码展示集合 这篇文章, 要开始讲关于ajax请求的内容了。这个和以前文章中写道的Vue框架里面的axios请求, 很相似。后端代码, 会有一些细节点, 跟前几节文章写的有些区别。 一、ajax请求使用 我们先…...

w~自动驾驶~合集3

我自己的原文哦~ https://blog.51cto.com/whaosoft/13269720 #FastOcc 推理更快、部署友好Occ算法来啦! 在自动驾驶系统当中,感知任务是整个自驾系统中至关重要的组成部分。感知任务的主要目标是使自动驾驶车辆能够理解和感知周围的环境元素&…...

LeetCode 39. 组合总和 LeetCode 40.组合总和II LeetCode 131.分割回文串

LeetCode 39. 组合总和 需要注意的是题目已经明确了数组内的元素不重复(重复的话需要执行去重操作),且元素都为正整数(如果存在0,则会出现死循环)。 思路1:暴力解法 对最后结果进行去重 每一…...

C++(2)关键字+数据类型 +数据类型输入

(1)如下关键字是 不能用于定义变量名和常量名的 !。 如int int 这样就会报错 所以注意即可 。 (2)标识符命名规则 (即变量和常量的命名规则) 最主要注意 第一个 字符必须是字母或是下划线 —…...

第二道re

题目来源:天狩CTF竞赛平台 Lihuas for 题目提示说是for循环,不管了干吧 先看加没加壳,没有,直接无脑IDAF5 代码功能概述 程序会要求用户输入一个 flag,然后将输入的每个字符与索引值进行异或运算,并将结…...

【C语言内存函数】--memcpy和memmove的使用和模拟实现,memset函数的使用,memcmp函数的使用

目录 一.memcpy的使用和模拟实现 1.1--memcpy的使用演示 1.2--memcpy的模拟实现 二.memmove的使用和模拟实现 2.1--memmove的使用演示 2.2--memmove的模拟实现 三.memset函数的使用 3.1--memset的使用演示 3.2--总结 四.memcmp函数的使用 4.1--memcmp的使用演示 4.2…...

java集合详细讲解

Java 8 集合框架详解 Java集合框架是Java中最重要、最常用的API之一,Java 8对其进行了多项增强。下面我将全面讲解Java 8中的集合框架。 一、集合框架概述 Java集合框架主要分为两大类: Collection - 单列集合 List:有序可重复Set&#xf…...

UniApp 实现的文件预览与查看功能#三方框架 #Uniapp

UniApp 实现的文件预览与查看功能 前言 在开发移动应用时,文件预览功能是一个非常常见的需求。无论是查看PDF文档、图片还是Office文件,都需要一个稳定且易用的预览解决方案。本文将详细介绍如何在UniApp中实现各类文件的预览功能,并分享一…...

用户行为日志分析的常用架构

## 1. 经典Lambda架构 Lambda架构是一种流行的大数据处理架构,特别适合用户行为日志分析场景。 ### 1.1 架构组成 Lambda架构包含三层: - **批处理层(Batch Layer)**: 存储全量数据并进行离线批处理 - **实时处理层(Speed Layer)**: 处理最新数据&…...

【VBA/word】批量替换字体大小

将5号或6号字体改为10.5号字体(循环10次) AI复制的文案问题调整 Sub Change5or6ptTo16pt_10Loops()Dim rng As RangeDim doc As DocumentDim found As BooleanDim i As IntegerDim totalChanges As LongDim targetSizes As VariantDim size As VariantSe…...

C++类与对象--3 C++对象模型和this指针

3.1 类成员分开存储 成员变量和成员函数在内存中是分开存储的只有非静态成员变量是存储在对象上的 C为空对象分配1字节的空间非空对象的大小为其内部非成员变量大小总和 静态成员不占对象空间不同对象的成员函数共享一个函数实例,不占对象空间(通过th…...

DV SSL证书管理主要有哪些功能?

在互联网信息传输高速发展的今天,用户对网站安全性的要求越来越高。SSL证书已成为网站“身份认证数据加密”的标配。其中,DV SSL证书由于其签发快速、价格低廉、使用广泛,成为大量中小型网站、个人博客、电商平台的首选。然而,选择…...

el-tree结合el-tree-transfer实现穿梭框里展示树形数据

参考文章&#xff1a;我把他的弹框单拉出来一个独立文件作为组件方便使用&#xff0c;遇到一些问题记录一下。 testComponet.vue <template><div class"per_container"><div class"per_con_left"><div class"per_con_title&q…...

浅谈GC机制-三色标记和混合写屏障

标记清除法 stw&#xff08;stop the world&#xff09;&#xff1a;暂停所有goroutine&#xff0c;扫描出可达与不可达对象&#xff0c;进行回收 三色标记法 不暂停&#xff0c;并发扫描&#xff0c;从根节点出发&#xff0c;扫描过对象的为黑&#xff0c;下一个可达对象为…...

Python训练营打卡 Day30

模块和库的导入 知识点回顾&#xff1a; 导入官方库的三种手段 直接导入整个库&#xff1a;使用 import library_name 语法。 导入库中的特定模块或函数&#xff1a;使用 from library_name import module_name 或 from library_name import function_name。 导入库并起别名&…...

深入探讨死区生成:原理、实现与应用

在电力电子、信号处理等众多领域中&#xff0c;“死区生成”是一个十分关键的概念&#xff0c;它能有效避免器件误动作、减少干扰&#xff0c;保障系统稳定运行。今天就通过问答的形式&#xff0c;和大家深入聊聊死区生成相关知识。 什么是死区生成&#xff1f; 死区生成是指…...

OpenCV 环境搭建与概述

// //OpenCV-4.11.0 C VS2019 // 一、OpenCV学习路线 1、入门: OpenCV图像读写、视频读写、基本像素处理、基本卷积处理、基本C开发知识。 2、初级: OpenCV自定义卷积操作、图像梯度、边缘提取、二值分析、视频分析、形态学处理、几何变换与透视变换。 3、中级: 角点查找、BL…...

c/c++的opencv均值函数

C/C 中的均值函数&#xff1a;从基础到应用 &#x1f4ca; 在 C/C 编程中&#xff0c;计算一组数值的**均值&#xff08;平均值&#xff09;**是一项非常基础且常见的操作。无论是数据分析、信号处理、图像处理还是机器学习&#xff0c;均值函数都扮演着重要的角色。本文将详细…...

go 数据类型转换

graph TDA[整型<br>int, int8, int16, int32, int64] -->|类型转换| B[浮点型<br>float32, float64]B -->|类型转换| AA -->|类型转换| C[布尔型<br>bool]C -->|类型转换| AB -->|类型转换| D[复数型<br>complex64, complex128]D -->…...

Go内存管理

内存管理 文章目录 内存管理何为内存&#xff1f;内存为什么需要管理&#xff1f;内存管理的方式操作系统存储模型操作系统是怎么管理内存的&#xff1f;虚拟内存与物理内存认识虚拟内存分页管理 Golang 内存模型TCMalloc核心概念go内存管理核心概念GO内存分配GO 内存逃逸机制一…...

解决软件连接RabbitMQ突发System.IO.IOException: 无法从传输连接中读取数据: 远程主机强迫关闭了一个现有的连接异常

一、问题描述 系统再运行时&#xff0c;突然出现 System.Exception: [RabbitMQ.Send Error] RabbitMQ.Client.Exceptions.AlreadyClosedException: Already closed: The AMQP operation was interrupted: AMQP close-reason, initiated by Library, code541, text“Unexpected…...

基于局部显著位置感知的异常掩码合成方法在CT图像肺部疾病异常检测与病变定位中的应用|文献速递-深度学习医疗AI最新文献

Title 题目 Local salient location-aware anomaly mask synthesis for pulmonary disease anomaly detection and lesion localization in CT images 基于局部显著位置感知的异常掩码合成方法在CT图像肺部疾病异常检测与病变定位中的应用 01 文献速递介绍 肺部疾病是全球发…...

【cursor疑惑】cursor续杯后使用agent对话时,提示“需要pro或商业订阅的用户才能使用“

背景 cursor的pro会员体验过期了&#xff0c;想再次体验deepseek、Claude等agent对话提示:“免费版本不可以使用agent对话功能(英文忘记截图了&#xff0c;大意是这样)”。 处理方法 Step-1&#xff1a;再次续杯cursor的pro会员14天体验 详情&#xff0c;见&#xff1a;【c…...

2022年下半年信息系统项目管理师——综合知识真题及答案(3)

2022年下半年信息系统项目管理师 ——综合知识真题及答案&#xff08;3&#xff09; 零、时光宝盒 &#xff08;https://blog.csdn.net/weixin_69553582 逆境清醒&#xff09; 此文是我2025-05-19回复头条上某作者文章时的评论记录&#xff0c;原作者的文章是写那些被有组织…...

华为云Flexus+DeepSeek征文|基于华为云Flexus云服务的云服务器单机部署Dify-LLM应用开发平台

目录 一、前言 二、华为云Flexus云服务优势 三、华为云Flexus一键部署Dify 3.1 选择模板 3.2 参数配置 3.3 资源栈设置 3.4 配置确认 3.5 创建执行计划 3.6 部署 四、Dify-LLM应用开发平台初体验 4.1 访问Dify-LLM应用开发平台 4.2 设置管理员账户 4.3 登录Dify-LLM应用开发平台…...

NC105NC106美光固态颗粒NC108NC109

NC105NC106美光固态颗粒NC108NC109 美光固态颗粒技术矩阵深度解析&#xff1a;NC105/NC106/NC108/NC109的性能博弈与市场卡位 一、技术基因图谱&#xff1a;解密NC系列颗粒的底层架构 1. TLC与QLC的技术路线分野 美光NC系列颗粒呈现出清晰的技术分层&#xff1a;NC105/NC10…...

洛谷U536262 井底之“鸡” 附视频讲解

题目截图 题目背景 2024年山东财经大学新生赛的时候&#xff0c;xz_chicken厌倦了在鸡舍的生活&#xff0c;于是决定把他的主人ZQH写成QH鸡&#xff0c;然而除了在第一题中已经出现了ZQH所在队伍征途再起的合影&#xff0c;同时xz_chicken还露出其他马脚&#xff0c;比如说答案…...

特征筛选方法总结(面试准备15)

非模型方法 一.FILTER过滤法&#xff1a; 1.缺失值比例&#xff08;80%以上缺失则删除&#xff09;/方差 注意&#xff1a; 连续变量只删方差为0的&#xff0c;因为变量取值范围会影响方差大小。 离散类的看各类取值占比,如果是三分类变量可以视作连续变量。 函数&#xff1a;V…...

深入解析分布式数据库TiDB:原理、优化与架构实践

前言 在云计算与大数据时代&#xff0c;传统单机数据库面临三大挑战&#xff1a;海量数据存储、高并发访问和实时分析需求。MySQL 分库分表方案复杂、NoSQL 缺乏 ACID 支持、MPP 数仓难以处理 OLTP… 在这样的背景下&#xff0c;TiDB 应运而生。作为一款开源的分布式 NewSQL 数…...

YouTube视频字幕转成文章算重复内容吗?

很多创作者误以为「自己说的话不算抄袭」&#xff0c;却不知道YouTube自动生成的字幕早已被搜索引擎存档。 去年就有案例&#xff1a;某美食博主将教程视频字幕转为图文&#xff0c;结果原创度检测仅42%&#xff0c;导致页面权重暴跌。 本文揭秘5个实操技巧&#xff1a;从删除…...

codeup添加流水线docker自动化部署

在项目根目录下增加Dockerfile文件 # 使用基础镜像 FROM maven:3.8.4-openjdk-17-slim AS build # 设置工作目录 WORKDIR /app # 复制项目源代码 COPY . . # 构建项目 RUN mvn clean package -DskipTests # 验证JAR包是否生成 RUN ls -l target/your-project.jar # 使用合适的…...

面试点补充

目录 1. 搭建lnmp Linux 系统基础命令 nginx相关命令 MySQL 相关命令 PHP 相关命令 验证命令 下载并部署 Discuz! X3.4 论坛 到 Nginx 网站 2. 脑裂 2.1 脑裂的定义 2.2 脑裂产生的原因 1. 主备节点之间的心跳线中断 2. 优先级冲突 3. 系统或服务负载过高 2.3 如何…...

深入解析 Oracle session_cached_cursors 参数及性能对比实验

在 Oracle 数据库管理中&#xff0c;session_cached_cursors参数扮演着至关重要的角色&#xff0c;它直接影响着数据库的性能和资源利用效率。本文将深入剖析该参数的原理、作用&#xff0c;并通过性能对比实验&#xff0c;直观展示不同参数设置下数据库的性能表现。 一、sessi…...

MyBatis:动态SQL

文章目录 动态SQLif标签trim标签where标签set标签foreach标签include标签和sql标签 Mybatis动态SQL的官方文档&#xff1a; https://mybatis.net.cn/dynamic-sql.html 动态SQL 动态SQL是 MyBatis的强大特性之一,如果是使用JDBC根据不同条件拼接sql很麻烦&#xff0c;例如拼接…...

数据库性能调优:索引设计、缓存配置与查询计划优化

在高并发、大数据量场景下,数据库性能直接影响系统稳定性与用户体验。 本文将从索引设计、缓存配置、查询计划优化三大核心维度出发,结合实战案例与代码示例,系统解析数据库性能调优的关键策略,并深入讲解 EXPLAIN ANALYZE 与 索引覆盖策略 的应用技巧。 一、索引设计:从…...

安全强化的Linux

SElinux简介 SELinux是security-Enhanced Linux的缩写,意思是安全强化的linux SELinux主要由美国国家安全局(NSA)开发,当初开发的目的是为了避免资源的误用。传统的访问控制在我们开启权限后,系统进程可以直接访问 当我们对权限设置不严谨时,这种访问方式就是系统的安全漏洞 在…...

计算机网络(2)——应用层(上)

1.应用层概述 应用层(Application Layer)属于计算机网络体系结构中的最顶层&#xff0c;直接面向用户&#xff0c;提供各种网络服务和应用程序的接口 本文主要的学习内容如下&#xff1a; (1)网络应用进程通信方式 客户端-服务器方式点对点方式混合方式 (2)网络应用的需求与传输…...

day017-磁盘管理-实战

文章目录 1. 硬盘命名规则2. 添加硬盘2.1 查看硬盘名称 3. 硬盘分区3.1 分区命名规则&#xff1a;mbr分区表格式3.2 创建分区&#xff1a;fdisk3.2.1 fdisk -l&#xff1a;查看硬盘及分区信息3.2.2 fdisk /dev/sdc :为该硬盘分区3.2.3 创建扩展分区和逻辑分区3.2.4 保存设置并退…...

Win10 安装单机版ES(elasticsearch),整合IK分词器和安装Kibana

一. 先查看本机windows是否安装了ES(elasticsearch)&#xff0c;检查方法如下&#xff1a; 检查进程 按 Ctrl Shift Esc 组合键打开 “任务管理器”。在 “进程” 选项卡中&#xff0c;查看是否有 elasticsearch 相关进程。如果有&#xff0c;说明系统安装了 ES。 检查端口…...

STM32 控制 OLED 全攻略(二):实现字符和汉字的显示

目录 一 前言 二 OLED介绍 &#xff08;一&#xff09;SSD1306 &#xff08;二&#xff09;OLED屏幕 三 显示原理结合代码解释 1 指令---0x00 2 数据---0x40 3 初始化oled函数 4 codetab.h 四 显示字符串的原理 &#x1f9fe; ASCII 编码范围&#xff1a; ✅ OLED_S…...

c#将json字符串转换为对象数组

在C#中&#xff0c;将JSON字符串转换为对象数组是一个常见的需求&#xff0c;特别是在处理来自Web API的响应或需要反序列化本地文件内容时。这可以通过使用Newtonsoft.Json&#xff08;也称为Json.NET&#xff09;库或.NET Core内置的System.Text.Json来完成。以下是如何使用这…...

Cryosparc里头restack的妙用

在Cryosparc里头经常需要迁移job或者将particle打包成relion可以识别的模式&#xff0c;总是会遇到一个问题&#xff0c;我们需要的颗粒明明很少&#xff0c;但总是保存出一大堆东西来。原因就是&#xff0c;他会把最开初的particle都给你算进来&#xff0c;而不是某个作业对应…...

.bat文档如何运行Python程序

.bat文档如何运行Python程序 在Windows操作系统中&#xff0c;你可以通过几种方式来运行Python程序&#xff0c;即使是通过.bat批处理文件。.bat文件是一种批处理脚本&#xff0c;它允许你执行一系列命令。以下是一些步骤和示例&#xff0c;说明如何从.bat文件运行Python程序。…...