学习网络协议

news2024/11/28 23:45:54

概述

先从知乎盗个图:怎么开始学习网络协议? - 知乎

1、应用层

作用定义数据格式并按照对应的格式解读数据。

2、传输层

作用定义端口,标识应用程序身份,实现端口到端口的通信

3、网络层

作用定义网络地址、区分网段、子网内MAC寻址、对于不同子网的数据包进行路由。

4、链路层

作用对电信号进行分组并形成数据帧,并以广播的形式通过物理介质发送给接收方(使用mac地址)。

IP协议

IP指网际互连协议,Internet Protocol的缩写,是TCP/IP体系中的网络层协议。 根据端到端的设计原则,IP只为主机提供一种无状态、无连接、不可靠的、尽力而为的数据包传输服务。

在这里插入图片描述

图片来源:IP协议详解_余识-的博客-CSDN博客_ip协议

IP模块收到来自数据链路层的IP数据报,首先对数据报的头部做CRC校验,无误后开始分析头部具体信息。

如果IP数据报头部设置了源站选路选项,则IP模块调用数据报转发子模块来处理该数据报。

严格源站路由选择:发送端指明IP数据报所必须采用的确切路由,如果一个路由器发现源路由所指定的下一个路由器不再其直接连接的网络上,那么它就会返回一个“源站路由失败”的ICMP差错报文。严格源站路由的变态之处,哪怕路由器上没有到达目的地的路由也可以通,因为严格源站路由提供了下一跳地址。

宽松的源站路由:发送端指明了一个数据报经过的IP地址清单,但是数据报子啊清单上指明的任意两个地址之间可以通过其他路由器。)

如果该数据报的头部目标IP地址是本机的某个IP地址,或者广播地址,则IP模块根据数据报协议字段来决定发送给哪个上层应用。如果不是本机,则掉用数据报转发子模块来处理该数据报。

数据报转发模块检查系统是否允许转发,不允许则丢弃。允许则将该数据报执行一些操作,就将它交给IP数据报输出模块。

IP数据报根据路由表计算下一跳路由。

IP输出队列存放所有等待发送的IP数据报。

IP分组的转发规则

路由器仅根据网络地址进行转发。当IP数据包经由路由器转发时,如果目标网络与本地路由器直接相连,则直接将数据包交付给目标主机,这称为直接交付;否则,路由器通过路由表查找路由信息,并将数据包转交给指明的下一跳路由器,这称为间接交付。路由器在间接交付中,若路由表中有到达目标网络的路由,则把数据包传送给路由表指明的下一跳路由器;如果没有路由,但路由表中有一个默认路由,则把数据包传送给指明的默认路由器;如果两者都没有,则丢弃数据包并报告错误。

IP分片

一个IP包从源主机传输到目标主机可能需要经过多个不同的物理网络。由于各种网络的数据帧都有一个最大传输单元(MTU)的限制,如以太网帧的MTU是1500;因此,当路由器在转发IP包时,如果数据包的大小超过了出口链路的最大传输单元时,则会将该IP分组分解成很多足够小的片段,以便能够在目标链路上进行传输。这些IP分片重新封装一个IP包独立传输,并在到达目标主机时才会被重组起来。

IP分组结构

一个IP分组由首部和数据两部分组成。首部的前20字节是所有IP分组必须具有的,也称固定首部。在首部固定部分的后面是一些可选字段,其长度是可变的。如果MF位是0,并且分段偏移为0,则表明这是一个完整的IP数据报。否则,如果分段偏移不为0,或者MF标志位为1,则表明它是一个分段。这时目的地端需要实行分段重组。

 IP协议使用非连接式的传送方式。非连接式的传送方式是指IP信息包传送时,源设备与目的设备双方不必事先连接,即可将IP信息包送达。即源设备完全不用理会目的设备,而只是单纯地将IP信息包逐一送出。至于目的设备是否收到每个信息包、是否收到正确的信息包等,则由上层的协议(例如TCP)来负责检查。TCP就是使用连接式的传送方式

  • 4位版本号:指定IP协议的版本,对于IPv4来说,其值为4,其它IPv4扩展版本则具有不同的版本号(如SIP协议和PIP协议)
  • 4位头部长度:表示IP头部有多少个32bit字(4字节)。因为4位最大15,所以IP头部最长为60字节。
  • 8位服务类型:3位优先级权字段(现已被忽略),4位TOS字段和1位保留字段(必须置0).4位TOS字段分别表示:最小延迟,最大吞吐量、最高可靠性和最小费用,其中最多1个能置为1。
  • 16位总长度:指整个IP数据包的长度,字节为单位。最长65535字节,由于长度超过MTU的数据报将被分片传输,所以实际传输的长度没有达到最大值。
  • 16位标识:唯一标识主机发送的每个数据报。初始值由系统随机生成,每发送一个数据报,其值加一。该值在数据报分片时被复制到每个分片中,因此同一个数据报的所有分片标识值都相同
  • 3位标志:第一位保留,第二位表示禁止分片,如果设置了该位,IP数据报长度超过MTU将被丢弃,返回错误。第三位表示更多分片,除了最后一个分片,其它都要置它为1.
  • 13位分片偏移:该分片相较于原始IP数据报开始处(仅指数据部分)的偏移。实际偏移值是该值左移3位得到。因此除了最后一个分片,每个分片的数据部分长度必须是8的整数倍。
  • 8位生存时间:数据报到达目的地之前允许经过的路由器跳数。每经过一个路由,该值减一,为0时被丢弃。并返回TCMP错误报文。
  • 8位协议:用于区分上层协议。ICMP为1,TCP为6,UDP为17。
  • 16位头部校验和:由发送端填充,接收端对其使用CRC算法检验数据是否被损坏。
  • 32位源端IP地址:标识数据报的发送端。在传输过程中保持不变
  • 32位源目的端IP地址:标识数据报的接收端。在传输过程中保持不变
  • 选项字段:可变长的可选信息,最多40字节。可用的IP选项有:
    • 记录路由:将数据包经由的所有路由器IP填入该段。
    • 时间戳:将数据报在每个路由器被转发时的时间填入该段。
    • 松散源路由选择:指定路由器IP地址列表,数据报发送过程中必须经过其中所有路由器
    • 严格源路由选择:类似上面,数据报只能经过被指定的路由器。

单点传送

单点传送是一对一的传递模式。在此模式下,源端所发出的IP信息包,其IP报头中的目的地址代表单一目的设备,因此只有该目的设备能收到此IP信息包。在互联网上传送的信息包,绝大多数都是单点传送的IP信息包。

广播传送

广播传送是一对多的传递方式。在此方式下,源设备所发出的IP信息包,其IP报头中的目的地址代表某一网络,而非单一设备,因此该网络内的所有设备都能收到、并处理此类IP广播信息包。由于此特性,广播信息包必须小心使用,否则稍有不慎,便会波及该网络内的全部设备。

多点传送

多点传送是一种介于单点传送与广播传送之间的传送方式模式。多点传送也是属于一对多的传送方式,但是它与广播传送有很大的不同。广播传送必定会传送至某一个网络内的所有设备,但是多点传送却可以将信息包传送给一群指定的设备。即多点传送的IP信息包,其IP报头中的目的地址代表的是一群选定的设备。凡是属于这一群的设备都可收到此多点传送信息包。

回送地址

任何一个以数字127开头的IP地址(127.x.x.x)都叫做回送地址。它是一个保留地址,最常见的表示形式为127.0.0.1。在每个主机上对应于IP地址127.0.0.1有个接口,称为回送接口。IP协议规定,当任何程序用回送地址作为目的地址时,计算机上的协议软件不会把该数据报向网络上发送,而是把数据直接返回给本主机。因此网络号等于127的数据报文不能出现于任何网络上,主机和路由器不能为该地址广播任何寻径信息。回送地址的用途是,可以实现对本机网络协议的测试或实现本地进程间的通信。

TCP协议

传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议,

TCP为了保证报文传输的可靠,就给每个包一个序号,同时序号也保证了传送到接收端实体的包的按序接收。然后接收端实体对已成功收到的字节发回一个相应的确认(ACK);如果发送端实体在合理的往返时延(RTT)内未收到确认,那么对应的数据(假设丢失了)将会被重传。

  • 在数据正确性与合法性上,TCP用一个校验和函数来检验数据是否有错误,在发送和接收时都要计算校验和;同时可以使用md5认证对数据进行加密。

  • 在保证可靠性上,采用超时重传和捎带确认机制。

  • 在流量控制上,采用滑动窗口协议,协议中规定,对于窗口内未经确认的分组需要重传。

在拥塞控制上,采用广受好评的TCP拥塞控制算法(也称AIMD算法)。该算法主要包括四个主要部分:

(1)慢启动

每当建立一个TCP连接时或一个TCP连接发生超时重传后,该连接便进入慢启动阶段。进入慢启动后,TCP实体将拥塞窗口的大小初始化为一个报文段,即:cwnd=1。此后,每收到一个报文段的确认(ACK),cwnd值加1,即拥塞窗口按指数增加。当cwnd值超过慢启动阈值(ssthresh)或发生报文段丢失重传时,慢启动阶段结束。前者进入拥塞避免阶段,后者重新进入慢启动阶段

(2)拥塞避免

在慢启阶段,当cwnd值超过慢启动阈值(ssthresh)后,慢启动过程结束,TCP连接进入拥塞避免阶段。在拥塞避免阶段,每一次发送的cwnd个报文段被完全确认后,才将cwnd值加1。在此阶段,cwnd值线性增加

(3)快速重传

快速重传是对超时重传的改进。当源端收到对同一个报文的三个重复确认时,就确定一个报文段已经丢失,因此立刻重传丢失的报文段,而不必等到重传定时器(RTO)超时。以此减少不必要的等待时间。

(4)快速恢复

快速恢复是对丢失恢复机制的改进。在快速重传之后,不经过慢启动过程而直接进入拥塞避免阶段。每当快速重传后,置ssthresh=cwnd/2、cwnd=ssthresh+3。此后,每收到一个重复确认,将cwnd值加1,直至收到对丢失报文段和其后若干报文段的累积确认后,置cwnd=ssthresh,进入拥塞避免阶段。

  1. 客户端发送SYN(SEQ=x)报文给服务器端,进入SYN_SEND状态。

  2. 服务器端收到SYN报文,回应一个SYN (SEQ=y)ACK(ACK=x+1)报文,进入SYN_RECV状态。

  3. 客户端收到服务器端的SYN报文,回应一个ACK(ACK=y+1)报文,进入Established状态。

DNS协议

域名系统(Domain Name System,缩写:DNS)是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS使用TCP和UDP端口53。当前,对于每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符。DNS协议是用来将域名转换为IP地址(也可以将IP地址转换为相应的域名地址)。DNS是应用层协议,事实上他是为其他应用层协议工作的,包括不限于HTTP和SMTP以及FTP,用于将用户提供的主机名解析为IP地址。

DNS数据包不会被拦截,因此可以基于DNS协议建立隐蔽信道,从而顺利穿过防火墙,在客户端和服务器之间传输数据。

DNS 定义了两种报文 ,一种为查询报文;另一种是对查询报文的响应,称为响应报文。都有12个字节的头和查询问题。

“递归解析”是最常见也是默认的一种解析方式。在这种解析方式中,如果客户端配置的本地域名服务器(Local DNS服务器)不能解析的话,则后面的查询过程全部由本地域名服务器代替DNS客户端进行查询 。迭代查询则是指所有查询工作全部由客户端自己进行。​​​​​​​

在以下条件之一满足时,就会采用迭代解析方式:

1.在查询本地域名服务器时,如果客户端的请求报文中没有申请使用递归查询,即在DNS请求报文中的RD字段没有设置为1

2.客户端在DNS请求报文中申请使用递归查询,但所配置的本地域名服务器禁止使用递归查询,即在应答DNS报文头部的RA字段设置为0

QR: 查询/应答标志位,0表这是一个查询报文,1表示应答报文

opcode: 定义查询/应答的类型,0表标准查询,1表反向查询(由IP地址获得主机域名),2表请求服务器状态

AA: 授权应答标志,仅被应答报文使用。1表示该DNS服务商是授权服务器

TC: 截断标志,仅被应答报文使用。因为UDP数据报是有长度限制的,过长的DNS报文将被截断。为1表DNS报文超过512字节并被截断

RD: 递归查询标志,1表执行递归查询:若目标DNS服务器无法解析某个主机名,则它将向其他DNS服务器继续查询,如此递归,直至获得结果并返回给客户端;0表示迭代查询:若目标DNS服务器无法解析某个主机名,则将它自己知道的其他DNS服务器的IP地址返回给客户端,让客户端决定是否继续往向其他DNS发送请求。

ZERO: 这3位未使用,须设置为0

rcode: 4位返回码,表应答状态。0表无错误,3表域名不存在

RA:允许递归标志,仅被应答报文使用。1表示DNS支持服务器递归查询

SMTP协议

SMTP是一种提供可靠且有效的电子邮件传输的协议。SMTP是建立在FTP文件传输服务上的一种邮件服务,主要用于系统之间的邮件信息传递,并提供有关来信的通知。SMTP独立于特定的传输子系统,且只需要可靠有序的数据流信道支持,SMTP的重要特性之一是其能跨越网络传输邮件,即“SMTP邮件中继”。使用SMTP,可实现相同网络处理进程之间的邮件传输,也可通过中继器或网关实现某处理进程与其他网络之间的邮件传输。

SMTP是一组用于从源地址到目的地址传送邮件的规则,并且控制信件的中转方式。SMTP协议属于TCP/IP协议族,它帮助每台计算机在发送或中转信件时找到下一个目的地。通过SMTP协议所指定的服务器,我们就可以把E—mail寄到收信人的服务器上了,整个过程只需要几分钟。SMTP服务器是遵循SMTP协议的发送邮件服务器,用来发送或中转用户发出的电子邮件。

一个简单的SMTP交换过程,包括了连接建立、邮件传送和连接释放三个具体过程:首先建立TCP连接,SMTP调用TCP协议的25号端口监听连接请求,客户端发送HElO命令以标识发件人自己的身份,服务器做出响应。然后,客户端发送MAII)命令,服务器以OK作为Ⅱ向应,表明准备接收。客户端发送RCPT命令以标识电子邮件的收件人,可以有多个RCPT行,即一份邮件可以同时发送给多个收件人。服务器端则表示是否愿意为收件人接收邮件。协商结束后,客户端用DATA命令发送信息,以<CRLF>表示结束输入内容。最后,控制交互的任一端可选择终止会话,为此它发出一个QUIT命令,另一端用命令221响应,表示同意终止连接,双方将关闭连接。

SMTP交换过程中服务器端发出的“250 0K”含义是一切都好。与使用其他协议一样,程序只读缩写命令和每行开头的三个数字,其余文本是用于帮助用户调试邮件软件。在命令成功时,服务器返回代码250,如果失败则返回代码550(命令无法识别)451(处理时出错)452(存储空间不够)421(服务器不可用)等,354则表示开始信息输入

SMTP的局限性表现在只能发送ASCII码格式的报文,不支持中文、法文、德文等,它也不支持语音、视频的数据。通过MIME协议,对SMTP补充。MIME使用网络虚拟终端(NVT)标准,允许非ASCII码数据通过SMTP传输。

IMAP协议和POP协议

IMAP(Internet Message Access Protocol)以前称作交互邮件访问协议(Interactive Mail Access Protocol),是一个应用层协议。IMAP是斯坦福大学在1986年开发的一种邮件获取协议。它的主要作用是邮件客户端可以通过这种协议从邮件服务器上获取邮件的信息,下载邮件等。当前的权威定义是RFC3501。IMAP协议运行在TCP/IP协议之上,使用的端口是143。它与POP3协议的主要区别是用户可以不用把所有的邮件全部下载,可以通过客户端直接对服务器上的邮件进行操作。

POP是TCP/IP协议族中的一员,POP允许本地计算机上的用户代理程序连接到邮件服务器,将用户的邮件取回到本地,这样用户就能在本地阅读邮件了。本协议主要用于支持使用客户端远程管理在服务器上的电子邮件。

  • 支持连接和断开两种操作模式。当使用POP3时,客户端只会在一段时间内连接到服务器,直到它下载完所有新信息,客户端即断开连接。在IMAP中,只要用户界面是活动的和下载信息内容是需要的,客户端就会一直连接服务器。对于有很多或者很大邮件的用户来说,使用IMAP4模式可以获得更快的响应时间。POP 协议支持“离线”邮件处理。邮件发送到服务器上,电子邮件客户端调用邮件客户机程序以连接服务器,并下载所有未阅读的电子邮件。这种离线访问模式是一种存储转发服务,将邮件从邮件服务器端送到个人终端机器上,一般是 PC 机或 MAC。一旦邮件发送到 PC 机或 MAC 上,邮件服务器上的邮件将会被删除。

  • 支持多个客户同时连接到一个邮箱。POP3协议假定邮箱当前的连接是唯一的连接。相反,IMAP4协议允许多个用户同时访问邮箱同时提供一种机制让客户能够感知其他当前连接到这个邮箱的用户所做的操作。

  • 支持访问消息中的MIME部分和部分获取。几乎所有的Internet邮件都是以MIME格式传输的。MIME允许消息包含一个树型结构,这个树型结构的叶子节点都是单一内容类型而非叶子节点都是多块类型的组合。IMAP4协议允许客户端获取任何独立的MIME部分和获取信息的一部分或者全部。这些机制使得用户无需下载附件就可以浏览消息内容或者在获取内容的同时浏览。

  • 支持在服务器保留消息状态信息。通过使用在IMAP4协议中定义的标志客户端可以跟踪消息状态,例如邮件是否被读取,回复,或者删除。这些标识存储在服务器,所以多个客户在不同时间访问一个邮箱可以感知其他用户所做的操作。

  • 支持在服务器上访问多个邮箱。IMAP4客户端可以在服务器上创建,重命名,或删除邮箱(通常以文件夹形式显现给用户)。支持多个邮箱还允许服务器提供对于共享和公共文件夹的访问。

  • 支持服务器端搜索。IMAP4提供了一种机制给客户使客户可以要求服务器搜索匹配多个标准的信息。在这种机制下客户端就无需下载邮箱中所有信息来完成这些搜索。

  • 支持一个定义良好的扩展机制。吸取早期Internet协议的经验,IMAP的扩展定义了一个明确的机制。很多对于原始协议的扩展已被提议并广泛使用。无论使用POP3还是IMAP4来获取消息,客户端均使用SMTP协议来发送消息。邮件客户端可能是POP客户端或者IMAP客户端,但都会使用SMTP。

IMAP4生来就支持加密注册机制,也支持明文传输密码。因为加密机制的使用需要客户端和服务器双方的一致,明文密码的使用是在一些客户端和服务器类型不同的情况下(例如Microsoft Windows客户端和非Windows服务器)。使用SSL也可以对IMAP4的通信进行加密,通过将在SSL上的IMAP4通信通过993端口传输或者在IMAP4线程创建的时候声明“STARTTLS”。

POP3 传输的是数据消息,这些消息可以是指令,也可以是应答。POP3 使用 TCP 作为传输协议,使用TCP的110号端口工作,它规定怎样将个人计算机连接到Internet的邮件服务器和下载电子邮件的电子协议。POP3允许用户从服务器上把邮件存储到本地主机(即自己的计算机)上,同时删除保存在邮件服务器上的邮件,而POP3服务器则是遵循POP3协议的接收邮件服务器,用来接收电子邮件的(但是目前很多POP3服务器都支持“下载邮件,服务器并不删除邮件”)。

POP3客户向POP3服务器发送命令并等待响应,POP3命令采用命令行形式,用ASCII码表示。服务器响应是由一个单独的命令行组成或多个命令行组成,响应第一行以ASCII文本+OK或-ERR(OK指成功,-ERR指失败)指出相应的操作状态是成功还是失败。

POP3三种状态

认证状态,处理状态和更新状态。当客户机与服务器建立连接时,客户机向服务器发送自己身份(账户和密码)并由服务器成功确认,即客户端由认可状态转入处理状态,在完成列出未读邮件等相应的操作后客户端发出quit命令,退出处理状态进入更新状态,开始下载未阅读过的邮件到计算机本地之后最后重返认证状态确认身份后断开与服务器的连接。

命令

参数

状态

描述

user

username

认可

此命令与下面的pass命令若成功,将导致状态转换

pass

password

认可

apop

name,digest

认可

一种安全传输口令的办法,执行成功导致状态转换。

stat

none

处理

请求服务器发回关于邮箱的统计资料,如邮件总数和总字节数

uidl

[msg#]

处理

返回邮件的唯一标识符,pop3会话的每个标识符都将是唯一的

list

[msg#]

处理

返回邮件数量和每个邮件的大小

retr

[msg#]

处理

返回由参数标识的邮件的全部文本

dele

[msg#]

处理

服务器将由参数标识的邮件标记为删除,由quit命令执行

rset

none

处理

服务器将重置所有标记为删除的邮件,用于撤消dele命令

top

[msg#],n

处理

服务器将返回由参数标识的邮件前n行内容,n必须是正整数

noop

none

处理

服务器返回一个肯定的响应,不做任何操作。

quit

none

更新

退出

使用APOP命令会在传输之前被加密.只有少数邮箱软件使用APOP命令(如qpopper)。初次与POP服务器连接时,服务器发送一个ASCII码问候(一串字符串,唯一的,与当前时间有关),客户端程序把纯文本口令添加到ASCII码问候字符串之后,然后计算出该字符串的MD5单出函数消息摘要,再将账号与MD5消息摘要作为APOP命令的参数一起发送给服务器。

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

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

相关文章

5个技巧提高项目领导技能

作为项目经理&#xff0c;一个典型的工作日涉及处理许多任务。监督不同的时间表和里程碑。解决问题&#xff0c;主动解决瓶颈。 这些后勤工作很重要&#xff0c;但您也知道成功的项目管理比协调这些细节要多得多。为了做好你的工作&#xff08;并且把它做好&#xff09;&am…

C语言模拟QT的信号与槽功能

文章目录前言一、Qt信号与槽的实现机理二、简化后的实现步骤1. 定义一些必要的宏2. 实现声明信号的宏3. 实现发射信号的宏4. 取代QObject类5. 实现connect函数6. 可有可无的slots三、完整的代码实现四、使用方法与QT中的区别1. SIG_SLOT_OBJ取代QObject2. 定义信号不同3. 发射信…

【NI Multisim 14.0原理图环境设置——原理图的组成】

目录 序言 一、原理图的组成 &#x1f46c; 1. 元器件 &#x1f46c;2. 仪表 &#x1f46c;3.导线 &#x1f46c;4.丝印层 &#x1f46c;5. 端口 &#x1f46c;6.网络标号 &#x1f46c;7.电源符号 序言 NI Multisim最突出的特点之一就是用户界面友好。它可以使电路设…

为iframe正名,你可能并不需要微前端

作者&#xff1a;刘显安(码怪) 任何新技术、新产品都是有一定适用场景的&#xff0c;它可能在当下很流行&#xff0c;但它不一定在任何时候都是最优解。 前言 最近几年微前端很火&#xff0c;火到有时候项目里面用到了iframe还要偷偷摸摸地藏起来生怕被别人知道了&#xff0c;…

Linux学习笔记——Tomcat安装部署

5.2、Tomcat安装部署 5.2.1、简介 Tomcat是由Apache开发的一个Servlet容器&#xff0c;实现了对Servlet和JSP的支持&#xff0c;并提供了作为Web服务器的一些特有功能&#xff0c;如Tomcat管理和控制平台、安全域管理和Tomcat阀等。 简单来说&#xff0c;Tomcat是一个WEB应用…

内核解读之内存管理(3)内存管理三级架构之内存区域zone

文章目录1、zone类型2、zone结构体3、zone的初始化流程1、zone类型 NUMA结构下, 每个处理器CPU与一个本地内存直接相连, 而不同处理器之前则通过总线进行进一步的连接, 因此相对于任何一个CPU访问本地内存的速度比访问远程内存的速度要快, 而Linux为了兼容NUMA结构, 把物理内存…

Flink数据流类型之间的转换(WindowedStream、DataStream、KeyedStream、AllWindowStream之间的转换)

Flink提供了一些流API&#xff0c;其中包括WindowedStream、DataStream、KeyedStream和AllWindowStream。 &#x1f34a;WindowedStream是一种特殊的流&#xff0c;其中数据已按时间或数据元素的键进行分组&#xff0c;并且每个分组的数据都在窗口中按时间划分。这意味着&…

2023年出入境政策-喜忧参半

2023年已经到来&#xff0c;随着卫健委公布中国防控新冠措施调整优化以后&#xff0c;出入境政策相应也有了很大变化&#xff0c;知识人网小编概括为喜忧参半。喜的是从国外入境中国不再需要集中隔离&#xff1b;忧的是有些国家对于中国人入境增加了核酸检测要求。下面我们就这…

第一章 Java入门开发

第一章 Java入门开发 目录一&#xff0e; 概述二&#xff0e; JDK1. 概述2. 安装3. JDK目录一&#xff0e; 概述 Java是一门高级程序设计语言&#xff0c;是支持跨平台和完成面向对象的程序设计语言。针对不同的开发市场&#xff0c;sun公司将Java分为Java SE&#xff08;标准版…

关于clip通信架构设计的调研

网络上大部分关于clip-as-service的描述都是关于它如何使用&#xff0c;基于它的编码功能上去计算文本相似度&#xff0c;根据文字推荐图片等等&#xff0c;只有作者的创作思路里面提及通信架构的设计。 作者博客&#xff1a; 链接: link 如何解决多个客户端同时请求服务端的场…

STS4中MVC项目中把log4j从1.x升级到2.x中遇到的两个问题

文章目录问题一 升级后看Maven Dependencies中还是有依赖1.x的log4j问题二 web.xml配置不对项目原来的log4j版本是1.2.14&#xff0c;有漏洞需要升级到2.18.0.问题一 升级后看Maven Dependencies中还是有依赖1.x的log4j 原因是有关联依赖&#xff0c; 项目中别的jar库有依赖低…

【算法笔记】【专题】RMQ 问题:ST表/树状数组/线段树

0. 前言 好久没更算法笔记专栏了&#xff0c;正好学了新算法来更新…… 这也是本专栏的第一个专题问题&#xff0c;涉及到三种数据结构&#xff0c;如果写得有问题请各位大佬多多指教&#xff0c;谢谢&#xff01; 1. 关于 RMQ 问题 RMQ 的全称是 Range Minimum/Maximum Que…

《Linux运维实战:Centos7.6基于docker-compose一键离线部署单节点redis6.2.8 》

一、部署背景 由于业务系统的特殊性&#xff0c;我们需要面向不通的客户安装我们的业务系统&#xff0c;而作为基础组件中的redis针对不同的客户环境需要多次部署&#xff0c;作为一个运维工程师&#xff0c;提升工作效率也是工作中的重要一环。所以我觉得有必要针对redis6.2.8…

使用 .NET 标记游戏地图关键坐标点

本文以天涯明月刀 OL 游戏的云上之城探索玩法为例&#xff0c;介绍如何使用 .NET 在游戏地图中标记大量关键坐标点。 1. 背景 大概很多程序员都是喜欢玩游戏的吧&#xff0c;我也不例外。我们经常会看到电视剧中的各路游戏大神&#xff0c;要么是有只有他一个人会的骚操作&…

Linux--信号--信号的产生方式--核心转储--0104

1. 什么是信号 生活中的信号&#xff1a;红绿灯&#xff0c;狼烟&#xff0c;撤退、集合...。 我们认识这些信号&#xff0c;首先是因为自己记住了对应场景下的信号后续需要执行的动作。如果信号没有产生&#xff0c;我们依旧知道如何处理这个信号。收到信号&#xff0c;我们…

springboot学习(七十八) springboot中通过自定义注解实现数据脱敏的功能

文章目录前言一、引入hutools工具类二、定义常用需要脱敏的数据类型的枚举三、定义脱敏方式枚举四、自定义脱敏的注解五、自定义Jackson的序列化方式六、使用七、脱敏效果前言 对于某些接口返回的信息&#xff0c;涉及到敏感数据的必须进行脱敏操作&#xff0c;例如银行卡号、…

带你了解ssh服务过程

远程连接服务 1、什么是远程连接服务器 远程连接服务器通过文字或图形接口方式来远程登录系统&#xff0c;让你在远程终端前登录linux主机以取得可操作主机接口&#xff08;shell&#xff09;&#xff0c;而登录后的操作感觉就像是坐在系统前面一样。 2、远程连接服务器的功…

【C++】函数重载的使用及原理

概述 在学校里&#xff0c;我们都会有班里同学被起外号的经历&#xff0c;而且同一个人可能还会有好几个外号。 在自然语言中&#xff0c;一个词可以有多重含义&#xff0c;人们可以通过上下文来判断该词真实的含义&#xff0c;即该词被重载了。 目录 概述 什么是函数重载 …

项目管理:如何制作项目进度计划表?

项目进度管理是根据项目目标&#xff0c;编制合理的进度计划&#xff0c;并在项目推进过程中随时检查项目执行情况。 项目进度管理的目的就是为了实现最优工期&#xff0c;多快好省地完成任务。 而甘特图&#xff0c;就是用表格图形的方式来展示项目的进展&#xff0c;是一个比…

赛狐ERP:优秀的亚马逊运营具备的五项能力!

我们都知道&#xff0c;亚马逊运营是整个店铺的主导&#xff0c;很大程度上会影响着一个店铺经营的好坏&#xff0c;那么一个好的亚马逊运营&#xff0c;应该具备哪些能力呢&#xff1f;今天赛狐ERP就来给和大家聊一聊&#xff0c;希望对各位亚马逊运营们会有启发&#xff01;1…