计算机网络(十一) —— 数据链路层

目录

一,关于数据链路层

二,以太网协议

2.1 局域网

2.2 Mac地址

2.3 Mac帧报头

2.4 MTU

三,ARP协议

3.1 ARP是什么

3.2 ARP原理

3.3 ARP报头

3.4 模拟ARP过程

3.5 ARP周边问题

四,NAT技术

4.1 NAT技术背景

4.2 NAT转换过程

4.3 NAPT

4.4 NAT技术缺陷

五,代理服务器

5.1 正向代理

5.2 反向代理

5.3 正反向代理的区别

5.4 NAT和代理服务器的区别

一,关于数据链路层

  • 做任何事情都是先有决策,后有执行,所以肯定是在网络层中先决策,是应该把报文转发到和我处于同一网段的其它主机还是交给下一跳,决策之后再把报文往下交付给路由器
  • IP协议解决的是:将数据跨网络从A主机送到B主机,但是在此之前,要解决的是把数据先发送到路由器中
  • 数据链路层解决的是:直接相连的主机之间,进行数据交付的问题,这个直接相连的主机不仅仅是电脑手机等,也包括路由器,路由器也是一个主机,它收到其它路由器发来的报文,可以继续转给其它路由器,也可以直接转给我构建的子网当中的某个主机,数据链路层就是解决路由器把报文发给它内网某个主机的问题
  1. 网络层IP协议解决数据跨网络发送
  2. 传输层Tcp/Udp协议保证数据发送的可靠性
  3. 数据链路层层解决数据在同一局域网中两台主机的通信问题

二,以太网协议

2.1 局域网

目前常用的局域网有三种:

  • 以太网:一种计算机局域网通信技术,是目前应用最广泛的局域网技术
  • 令牌环网:常用于IBM系统中,这种网络中有一种专门的帧被称为“令牌”,在环路上持续地传输来确定一个节点何时可以发送包,有点类似于锁
  • 无线LAN/WAN:是无线局域网地补充和扩展,现在已经是计算机网络地重要组成部分,一般用于大型的网络布局

在网络基础博客中,提到了以太网通信:计算机网络(一) —— 网络基础入门_计算机网络基础教程-CSDN博客 

其实这就是以太网通信的原理, 并且“以太网”不是一种具体的网络,是一种技术标准,包含数据链路层内容,也有一些物理层的内容,比如以太网规定了网络拓扑结构,访问控制方式,传输速率调整等

数据碰撞:

  • 我在发消息的时候,别人也在发消息,双方都发消息,接收方可能就无法分清哪个是哪个了,同时h1和h2也都能收到双方的消息,这就是数据碰撞
  • 所以局域网中,主机越多,发生碰撞的概率越大
  • 所以当主机识别到数据碰撞发生,都会进行“碰撞避免算法”,双方要等一等,在不同时间进行数据包重发,可以尽可能的让局域网当中的数据消散
  • 最后的结果就是,保证整个局域网中只有一个报文在传输

2.2 Mac地址

每台主即都有一张或多张网卡,每个网卡代表一个IP地址,同时网卡也有自己的Mac地址:

Mac地址的作用:在同一个局域网中区分主机,就和在广域网中用IP标识每个主机唯一性一样 

Mac地址 VS IP地址:

我们曾经讲过旅游的例子:计算机网络(一) —— 网络基础入门_计算机网络基础教程-CSDN博客

因此在路由过程中,源IP和目的IP是不会变化的, 但是数据每进行一次跳转后,源Mac地址和目的Mac地址都会被路由器替换掉 

2.3 Mac帧报头

Mac帧也可以称为以太网帧,它的格式如下:

  • 源地址和目的地址就是网卡的Mac地址,48位长度,在网卡出厂时就确定好了
  • 帧协议类型有三种:IP协议,ARP协议和RARP协议,就是上面图中下面三个短的
  • 帧末尾是CRC校验码,负责以太网协议的差错处理

接下来还是两个老问题:

1,如何将报头和有效载荷分离

  • Mac采用的是定长报头,所以只要根据定长数字提取固定长度的帧头和帧尾,就可以完成报头和有效载荷的分离

2,如何将有效载荷交给上层的哪一个协议?

  • 报头字段中有一个“类型”字段,为0800时,就是IP报文;为0806时,就是ARP报文;为8035时,就是RARP报文,如上图

如何看待局域网:

  • 系统角度:被所有主机共享,由于有碰撞检查和碰撞避免,可以把局域网看成多台主机共享的临界资源,而多台主机相当于多线程,碰撞避免算法相当于锁。
  • 路由器也是主机,也有网络协议栈,由网络层决策好之后把报文发给数据链路层面然后再做最后的Mac帧封装,然后发到下一个路由器
  • 下一个路由器的数据链路层最先收到报文,然后进行分离Mac报头,发现是IP数据,就交给网络层,然后发现不是我这个路由器,于是直接再次决策,再次往下交付给数据链路层,然后封装新的Mac再发给其它的路由器,这样一直这样搞,直到找到目录路由器
  • 结论:Mac只在局域网中有效,因为报文在各个主机跳转时,会重新解包封装Mac帧,上层接触不到

2.4 MTU

MTU(Maximum Transmission Unit),最大传输单元,标识底层的一个数据帧一次最多可以发送的数据量,使用ifconfig可以查看mtu:

  • 以太网对应的MTU一般是1500字节,不同的网络类型MTU不同,如果一次发送的数据超过了MTU,IP层就要进行 分片,这个我们上篇文章已经讲过了
  • 此外以太网规定Mac帧中数据的最小长度是46字节(帧的最小长度是64字节,帧包括帧头帧尾和数据三部分哦),如果发送的数据量小于46字节,则需要在数据后面填补充位,比如ARP数据包的长度就是不够46字节的 
  • 前面查到的mtu为1500不是Mac帧的最大大小,而是Mac有效载荷的最大大小,倒逼网络层进行分片;但是一般情况下不建议分片,因为会增加丢包率,所以要减少分片也就倒逼Tcp不要传长数据:
  • 网络层一个报文最多只能给数据链路层1500字节,1500减去IP协议报头的20个字节=1480,所以网络层要求Tcp只能给我最大1480字节的报文
  • 而Tcp是有自己的发送缓冲区的,在缓冲区中拿出特定数据,添加Tcp报头(20个字节),之后1480 - 20 = 1460,这个1460就是Tcp报头的有效载荷最大量,而这个1460的最大数据量叫做:“MSS”,在数据链路层叫做MTU,在传输层叫做MSS
  • 通信双方三次握手时也会协商MSS,选取双方MSS小的那个作为双方通信的MSS(MSS最大是1460,不是一定是1460)

三,ARP协议

3.1 ARP是什么

  • 所谓的数据发送,就是通过无数个连续的子网实现的
  • 到了目标子网之后,进入内网转发,路由器收到了报文,交给网络层拿着报文的目的IP查自己的IP表,之后就再次向下重新封装路由器自己的Mac帧
  • 但是路由器只知道主机B的IP地址,那么路由器重新封装Mac帧时,就要封装主机B的Mac地址,但是路由器咋知道主机B的Mac地址的呢?

所以在局域网中还要有一种协议:ARP协议,它的作用就是要在局域网中获取目标IP主机的Mac地址

在TCP/IP四层协议中,数据链路层最典型的就是Mac帧协议,但是数据链路层还有两种协议叫做ARP和RARP协议:

  • ARP,RARP和Mac帧协议虽然都属于数据链路层协议,但是ARP和RARP协议属于Mac的上层协议
  • 也就是说,Mac帧的上层协议不一定就直接是网络层的协议,Mac帧的上层协议有可能属于数据链路层的协议,如上图
  • 与之类似的,网络层中的ICMP协议和IGMP协议虽然和IP协议都属于网络层,但是也属于IP的上层协议

3.2 ARP原理

假设在用一个局域网中,主机1要给主机2发数据:

  • 首先主机1只知道主机2的IP,不知道主机2的Mac,那么首先会以广播(目的地址全1,16进制全F)的形式在以太网中发送一个ARP请求包,内容是“我是主机1,我的IP是IP1,我的Mac是Mac1,我要找一台主机IP2,我不知道主机2的Mac2,你们谁是主机2,发Mac2发我”
  • 然后每个主机收到了IP,但是大多数都在底层丢弃了,只有主机2识别到了,然后把自己的Mac2再发送回去

3.3 ARP报头

ARP报文的数据格式如下:

其中前面的以太网目的地址和源地址再加上帧类型就是Mac帧,中间的有效载荷就是ARP协议,简单来说就是ARP请求报文进行了再封装成了Mac帧

  • 硬件类型指链路层的网络类型,如果为1,表示以太网
  • 协议类型就是要转换的地址类型,固定写法为0x0800,表示要把IP地址转化为Mac地址
  • 硬件地址长度就是对应的以太网地址长度,6字节,因为Mac地址是48位的
  • 协议地址长度对于IP地址为4字节,因为IP地址是32位的
  • op字段表示ARP请求类型,为1时表示这是一个ARP请求,为2时表示这是一个ARP应答

从ARP数据格式也可以看出,ARP是Mac帧的上层协议,ARP数据格式中的前三个字段和最后一个字段对应的就是以太网首部,但由于ARP数据包的长度不足46字节,所以ARP报文被再次封装成Mac帧的时候还需要填上18自己的填充字段 

3.4 模拟ARP过程

  • 先构建ARP请求,然后往下交付,填充Mac帧报头,以太网地址目的地址和源地址和帧类型,但是我们不知道对方的Mac地址,于是全部用F填充,最后就形成了广播Mac帧,然后发到局域网里
  • 然后每台主机都能收到广播Mac帧,都要进行处理,先做Mac帧级别的报头和有效载荷分离,发现目的Mac全是F,然后每台主机都要受理,识别到帧类型是0806(ARP请求/应答类型),于是把有效载荷也就是ARP报文发给自己的ARP软件层
  • ①任何一台主机都可以发起ARP请求,然后收到ARP应答    ②同时,每台主机也会收到来自其它主机的ARP请求,然后给对方发送ARP应答。所以ARP软件层会收到ARP报文,但是它咋知道这是ARP请求还是应答呢?所以要先看一个字段:“op
  • 首先ARP软件层读取op的值,op为1表示请求,为2表示应答
  • 当op为1时,将报文的目的IP与自己的IP进行对比,发现不一样,于是直接丢弃;当目标主机收到后,不丢弃,填充我自己的Mac地址,然后给对方ARP应答
  • 应答时,再次构建ARP报文,op填为2,其它的固定填法,其它的目的Mac和目的IP填上和ARP请求的源IP和源Mac,然后构建好ARP应答报文,然后继续向下交付,构建Mac帧
  • 构建Mac帧时,将目的Mac填上主机1的,但是源Mac就填充我的了,然后再次发到局域网中,主机1收到了,然后就可以读取Mac帧的源Mac获取到主机2的Mac地址了。这时候每台主机也会收到主机2的ARP应答,但是其它主机直接在Mac帧的时候就直接丢弃了,因为这时候的目的Mac和源Mac都已经确定了

结论:所以每台主机最开始收到ARP报文时不管是应答还是请求,最先看的是op,然后再做后续操作

ARP请求完毕之后,主机1会把主机2的Mac地址和IP地址临时缓存起来:

上面所有的步骤目的就一个,就是让主机1得到主机2的Mac2地址,然后才是把我们收到的Mac地址封装,把主机1的数据封装成Mac帧,发给主机2

3.5 ARP周边问题

  • ARP不必每次都做,只在缓存失效的时候才做
  • 一个主机可以通过他自己的IP和子网掩码,得到它的网络号,由于局域网中前面3个字段是一样的,于是该主机就自己可以拼接IP地址,ping所有的主机,得到所有主机的IP和Mac(因为ARP请求和应答不仅仅是路由器和主机可以做,按道理来说,任意两个主机之间都可以做)
  • ARP还有一个特点:如果一个主机收到多次同样的ARP应答,会以最新的为准
  • 假设三个主机,首先主机1收到了主机2的IP2和Mac2并刷新到缓冲区里,但是此时主机3直接往主机1发送大量ARP应答,那么主机1会以最新的ARP报文为准,然后就将缓冲区的Mac2冲刷成了Mac3了(主机1以为Mac2发生变化了),在这之后主机1发送的以太网报文会直接推送给主机3了,但是主机3选择丢弃,这样就完成了一次“让主机1断网”的操作,这种网络攻击方式叫做“ARP欺骗”,当然主机3也可以转发给主机2,使主机3变为“中间人”

补充:关于ICMP协议

ICMP是一个网络层协议, 一个搭建好的网络,往往需要先进行简单的测试,来验证网络是否畅通;但是IP协议并不提供可靠性传输,如果丢包,IP协议不能通知传输层是否丢包以及丢包原因

所以ICMP的功能是:

  • 确认IP包是否成功到达目标地址
  • 通知在发送过程中IP包被丢弃的原因
  • ICMP也是基于IP协议工作的,但是它并不是传输层的功能,因此人们仍然把它归结为网络层协议
  • ICMP只能搭配IPv4使用. 如果是IPv6的情况下, 需要是用ICMPv6

面试题避坑:面试官可能会问你:telnet是23端口,ssh是22端口,那么ping是什么端口?这个是一个圈套,因为ICMP工作在网络层,而端口是传输层的内容,所以ping命令没有端口号一说

traceroute命令也是基于ICMP实现的,作用是遍历数据包传送到目标主机所经过的所有路由器:

四,NAT技术

4.1 NAT技术背景

NAT(Network Address Translation)网络地址转换技术,主要是用来环节IP地址不足的手段之一:

  • NAT能够将私有IP对外通信时转为全局IP,也就是就是一种将私有IP和全局IP相互转化的技术方法
  • 很多学校,家庭,公司内部采用每个终端设置私有IP,而在路由器或必要的服务器上设置全局IP
  • 全局IP要求唯一,但是私有IP不需要,在不同的局域网中出现相同的私有IP是完全不影响的

4.2 NAT转换过程

假设一个局域网中有A,B,C三台主机,公网中有一台服务器,以这三台主机访问这台服务器为例,下面是数据包在传输过程中,IP地址转换的简易图:

数据从主机A到服务器:

  •  刚开始,该数据包当中的源IP地址就是主机A的私有IP地址,目的IP地址就是服务器的公网IP地址
  • 当数据包经过NAT服务器时,路由器会将该数据包的源IP地址替换成自己的WAN口IP地址,此时该数据包的源IP和目的IP就都是目的IP了,而这个时候,就可以看成是“路由器在申请访问服务器”
  • 该数据包在互联网中经过各种路由转发,最终到达服务器主机,服务器处理完后,对主机A进行响应

数据从服务器到主机A:

  • 刚开始,数据报文中,源IP地址就是服务器的公网IP,目的IP就是路由器的WAN口IP
  • 当数据到达主机A所在局域网的NAT路由器时,路由器会将该数据包的目的IP地址替换成主机A的私有IP地址
  • 然后通过ARP协议得到主机A的Mac地址,最终,响应报文就成功交到了主机A手里 

4.3 NAPT

问题:以上面的转换过程为例,NAT服务器是如何直到要把响应数据交给局域网的哪一个主机的呢?

解答:

  • 在NAT路由器内部,有一张自动生成的,用于地址转换的表
  • 该转换表维护的就是局域网中主机的私有IP,与其对应访问的外网中某个公网IP之间的映射关系
  • 局域网中的主句第一次向外网发起数据请求时,就会在表中生成对应的映射关系,就是KV
  • 这个转换表的名字就叫做NAPT(Network Address Port Translation)网络地址端口转换

这个转换表会存储维护局域网主句私有IP与其对应访问的公网IP的映射关系,此外NAT路由器还会加上一个端口号,与主机A的端口做区分,这样,路由器就能通过IP + Port 的方式,来区分发给局域网中不同主机的数据包

如上图,通过IP+Port的方式,就能保证左到右的随机性,也能保证从右到左的随机性 

4.4 NAT技术缺陷

NAT技术进行私有IP和公网IP之间的转换,主要就是依赖于NAT路由器中维护的NAPT表,但是这张表也体现出了NAT技术的一些缺陷:

  • 无法从外部向NAT内部的服务器建立通信,因为外部无法知道内部的私有IP,无法主动与内部主机连接
  • 转换表的生成,销毁和添加删除都需要额外开销
  • 通信过程中一旦NAT设备有异常,及时存在热备,所有的TCP连接都会断开(过度依赖NAT路由器)

五,代理服务器

5.1 正向代理

  • 我们在学校想要上网,肯定是要先登录校园网的,我们所有的请求要先认证,才能允许我上网
  • 那么认证是在干嘛呢?认证的时候就是在申请局域网私有IP,然后学校的服务器替我们去连接外网,相当于路由器,目的是收费,并且组建校园网和管理局域网
  • 学校的这个服务器(也是Linux)就是代理服务器,而且像这种“客户端申请”的,称为“正向代理”

正向代理是一个位于客户端和目标服务器之间的服务器,客户端不直接访问目标服务器,而是先访问代理服务器,由代理服务器代替客户端去访问对应的目标服务器,并将目标服务器的响应结果返回给客户端 

正向代理好处

  • 加速资源访问,因为一般代理服务器的配置是比较高的
  • 虽然国内不允许直接访问外网,但是有些代理服务器是允许访问外网的一些资源的,能够满足一些特殊群体的需要

5.2 反向代理

  • 假设一个公司有4台服务器,全部开放IP让用户访问,但是可能主机1有100个连接,但是其它三个只有个位数,就导致了类似资源分配不平衡的问题
  • 所有就来了一个算力更高的服务器,这个服务器不处理业务,只负责任务的派发,让每一台服务器都能充分使用,这个服务器也是代理服务器,这种方式称为“反向代理”,替服务器代理的,有点类似于线程池,在后端中负责负载均衡

反向代理也是位于客户端和目标服务器之间的服务器,对于客户端来说,反向代理服务器相当于目标服务器,用户只要访问反向代理服务器就可以获得目标服务器提供的服务

反向代理好处

  • 对后端起负载均衡的作用,比如百度的官网,面对国内如此庞大的用户量,一台服务器肯定是不够用的,所以需要很多台服务器,构建成分布式系统,但是我们仍然可以快速通过www.baidu.com网址访问,这就是反向代理服务器的功劳
  • 能够对其内部的服务器起到安全防护作用,因为可以避免直接将内部服务器的对应的信息暴露出去,而当非法连接过来时,反向代理服务器相当于一层屏障,让非法请求直接过滤掉,保护了内部服务器安全

5.3 正反向代理的区别

相同点:

  • 两者都是位于客户端和服务器之间
  • 两者的主要功能,都是进行请求和响应的转发,并不直接提供服务

不同点:

二者代理的目的不一样

  • 正向代理是客户端的代理,目的是帮助客户端访问其无法访问的其它服务器资源
  • 反向代理是服务器的带俩,目的是帮助服务器做负载均衡,安全防护等工作 

二者的架设方不一样 

  • 正向代理一般是客户端架设的,比如校园网的正向代理服务器是学校作为客户端架设的
  • 而反向代理一般是服务端架设的。比如百度的反向代理服务器是百度这个大厂作为服务端架设的

正向代理中,服务器不知道真正的客户端的具体信息;在反向代理中,客户端不知道真正的服务器是谁 

5.4 NAT和代理服务器的区别

NAT和代理服务器都是代替我们向服务器发起数据请求的,也代替我们接收来自服务器的响应,但是它们由几个区别:

  • 从应用上:NAT主要缓解IP地址不足的问题,而代理服务器更注重具体应用,比如游戏加速器,或者翻墙服务器,但是国内翻墙是weifa的哦
  • 从底层实现上:NAT工作在网络层,直接对IP地址进行替换,而代理服务器往往工作在应用层,所谓的代理服务器,其实也是在操作系统上运行的一个特殊进程
  • 从 使用范围上:NAT一般部署在局域网出口路由器的位置,而代理服务器可以在局域网代理,也可以在广域网代理,也可以跨网络代理
  • 从部署位置上:NAT一般集成在防火墙,路由器等硬件设备上,而代理服务器是一个运行在操作系统之上的一个软件程序,比如Nginx和Apache,需要部署在操作系统上

补充:http隧道技术

我们可以在http请求报文中再内嵌一个加密后的http,把外面的http交给运营商,然后运营商看不到我的请求,然后交给了另一个服务器,这样就骗过了运营商;然后解密,就可以访问外网了,收到一个http响应,然后通过相同的步骤就可以把响应发给我了
但是在常规情况下,http默认携带的是非http的其它数据,上面这种http嵌套的叫做:“http隧道技术”,而且会有一些专业的服务器来专门搞这个隧道技术的,(socks5服务器,专业的隧道服务器)
为什么要这样搞,直接访问目标地址不行吗?因为我们每次发请求,必须先到运营商的)

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

图像分类-demo(Lenet),tensorflow和Alexnet

目录 demo(Lenet) 代码实现基本步骤: TensorFlow 一、核心概念 二、主要特点 三、简单实现 参数: 模型编译 模型训练 模型评估 Alexnet model.py train.py predict.py demo(Lenet) PyTorch提供了一个名为“torchvision”的附加库,其中包含…

GC1262E替代APX9262S/茂达芯片在笔记本和显卡风散热风扇中的应用分享

随着移动计算和高性能图形处理技术的不断进步,笔记本电脑和显卡的散热需求日益增加。散热风扇作为关键组件,其控制芯片的选择对系统性能和用户体验有着直接影响。本文将探讨芯麦的GC1262E芯片如何替代APX9262S/茂达芯片,应用于笔记本和显卡的…

ScriptableObject基本使用

使用方法 自定义类继承ScriptableObject 可以在类内部增加数据或者数据类,一般用于配置 注意事项 给继承ScriptableObject的类增加CreateAssetMenu特性。 CreateAssetMenu一般默认三个参数 第一个参数是父目录 第二个参数是父目录的子选项 第三个参数是可以…

SwiftUI 6.0(iOS 18)新增的网格渐变色 MeshGradient 解惑

概述 在 SwiftUI 中,我们可以借助渐变色(Gradient)来实现更加灵动多彩的着色效果。从 SwiftUI 6.0 开始,苹果增加了全新的网格渐变色让我们对其有了更自由的定制度。 因为 gif 格式图片自身的显示能力有限,所以上面的…

群晖使用frpc连接qbittorrent时会出现Unauthorized

跨域问题: 如果你是通过不同的网络或子网访问 qBittorrent Web UI,可能会引发跨域问题。尝试在 qBittorrent.conf 中添加以下设置,允许跨域访问: find / -name qBittorrent.conf WebUI\HostHeaderValidationfalse 成功

【微服务】springboot3 集成 Flink CDC 1.17 实现mysql数据同步

目录 一、前言 二、常用的数据同步解决方案 2.1 为什么需要数据同步 2.2 常用的数据同步方案 2.2.1 Debezium 2.2.2 DataX 2.2.3 Canal 2.2.4 Sqoop 2.2.5 Kettle 2.2.6 Flink CDC 三、Flink CDC介绍 3.1 Flink CDC 概述 3.1.1 Flink CDC 工作原理 3.2 Flink CDC…

2014年国赛高教杯数学建模D题储药柜的设计解题全过程文档及程序

2014年国赛高教杯数学建模 D题 储药柜的设计 储药柜的结构类似于书橱,通常由若干个横向隔板和竖向隔板将储药柜分割成若干个储药槽(如图1所示)。为保证药品分拣的准确率,防止发药错误,一个储药槽内只能摆放同一种药品。药品在储药槽中的排列…

PHP2-CTFWeb进阶wp-攻防世界13

CTFWeb进阶wp-攻防世界-PHP2 用了御剑和dirsearch扫描了一下发现什么也没扫描到,其它人好像有扫描到的,看了大佬的wp说有index.phps,去查了下。 phps 文件就是 php 的源代码文件,可以当作一个知识点记住,直接访问/index.phps,得…

基于SSM顶岗实习管理系统JAVA|VUE|Springboot计算机毕业设计源代码+数据库+LW文档+开题报告+答辩稿+部署教+代码讲解

源代码数据库LW文档(1万字以上)开题报告答辩稿 部署教程代码讲解代码时间修改教程 一、开发工具、运行环境、开发技术 开发工具 1、操作系统:Window操作系统 2、开发工具:IntelliJ IDEA或者Eclipse 3、数据库存储&#xff1a…

维生素对于生活的重要性

在探索健康奥秘的旅途中,维生素作为人体不可或缺的微量营养素,扮演着至关重要的角色。它们虽不直接提供能量,却是酶促反应、细胞代谢、免疫功能乃至心理健康的基石。今天,让我们一同深入探讨人体所需补充的维生素,这些…

Springboot 整合 Java DL4J 实现医学影像诊断功能

🧑 博主简介:历代文学网(PC端可以访问:https://literature.sinhy.com/#/literature?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编程,…

智能生成ppt软件哪个好?如何高效生成ppt?

想要快速制作出专业且吸引人的PPT演示文稿吗?ai智能生成ppt工具可以帮你实现这一目标。 无需复杂的设计技巧,也不必花费大量时间,只需几个简单的步骤,就能创造出令人印象深刻的演示文稿。下面是一份免费版教程,让你轻…

Word 首行缩进 2 字符怎么设置?具体步骤演示

在日常的文档编辑和排版中,首行缩进是一个非常常见且重要的排版需求。尤其是在中文文档中,首行缩进能够提高文章的美观度和可读性,使文章结构更加清晰。那 Word 首行缩进 2 字符怎么设置呢?下面就给大家展示具体的操作步骤。 设置…

JavaScript(Web APIs 作用和分类,DOM数是什么,document是什么,根据css选择器来获取DOM元素,修改DOM元素的方式,边量声明)

变量声明 变量声明有三个 var let 和 const建议: const 优先,尽量使用const,原因是: const 语义化更好 很多变量我们声明的时候就知道他不会被更改了,那为什么不用 const呢? 实际开发中也是,…

【计网】从零开始认识https协议 --- 保证安全的网络通信

在每个死胡同的尽头, 都有另一个维度的天空, 在无路可走时迫使你腾空而起, 那就是奇迹。 --- 廖一梅 --- 从零开始认识https协议 1 什么是https协议2 https通信方案2.1 只使用对称加密2.2 只使用非对称加密2.3 双方都使用非对称加密2.4 …

TCP/IP协议栈

一、TCP/IP和OSI模型的比较 相同点 两者都是以协议栈的概念为基础 协议栈中的协议彼此相互独立 下层对上层提供服务 不同点 OSI是先有模型;TCP/IP是先有协议,后有模型 OSI是国际标准,适用于各种协议栈;TCP/IP实际标准&…

论文笔记:Pre-training to Match for Unified Low-shot Relation Extraction

论文来源:ACL 2022 论文地址:https://aclanthology.org/2022.acl-long.397.pdf 论文代码:https://github.com/fc-liu/MCMN (笔记不易,请勿恶意转载抄袭!!!) 目录 A…

外卖点餐系统小程序的设计

管理员账户功能包括:系统首页,个人中心,外卖员管理,餐厅管理,用户管理,菜品分类管理,菜品信息管理,外卖订单管理,订单配送管理 微信端账号功能包括:系统首页…

linux下编译鸿蒙版curl、openssl

一.环境准备 1.参考说明 NDK开发介绍:https://docs.openharmony.cn/pages/v5.0/zh-cn/application-dev/napi/ndk-development-overview.md 2.NDK下载 点击介绍页面中的链接可以跳转到相应下载页面: 下载相应版本: 下载完毕后解压到指定目…

.NET 通过C#设置Excel工作表的页面设置

Excel文件数据准备就绪并需要以报告形式呈现时,调整Excel文件的页面设置变得尤为重要,不仅关乎文档的专业外观,还直接影响到打印或电子分享时的可读性和实用性。通过C#来自动化这一过程,不仅可以节省大量手动配置的时间&#xff0…