ARP协议详解 ARP报文结构_arp请求和应答数据包的数据部分-程序员宅基地

技术标签: ARP协议  

ARP

ARP作用

ARP(Address Resolution Protocol,地址解析协议)是将IP地址解析为以太网MAC地址(或称物理地址)的协议。

在局域网中,当主机或其它网络设备有数据要发送给另一个主机或设备时,它必须知道对方的网络层地址(即IP地址)。但是仅仅有IP地址是不够的,因为IP数据报文必须封装成帧才能通过物理网络发送,因此发送站还必须有接收站的物理地址,所以需要一个从IP地址到物理地址的映射。APR就是实现这个功能的协议。

ARP报文结构

ARP报文分为ARP请求和ARP应答报文,报文格式如图1-1所示。

图 1 ARP报文结构

  

ARP数据报格式

?              硬件类型:表示硬件地址的类型。它的值为1表示以太网地址;

?              协议类型:表示要映射的协议地址类型。它的值为0x0800即表示IP地址;

?              硬件地址长度和协议地址长度分别指出硬件地址和协议地址的长度,以字节为单位。对于以太网上IP地址的ARP请求或应答来说,它们的值分别为6和4;

?              操作类型(OP):1表示ARP请求,2表示ARP应答;

?              发送端MAC地址:发送方设备的硬件地址;

?              发送端IP地址:发送方设备的IP地址;

?              目标MAC地址:接收方设备的硬件地址。

?              目标IP地址:接收方设备的IP地址。

ARP地址解析过程

假设主机A和B在同一个网段,主机A要向主机B发送信息。如图1-2所示,具体的地址解析过程如下:

(1)        主机A首先查看自己的ARP表,确定其中是否包含有主机B对应的ARP表项。如果找到了对应的MAC地址,则主机A直接利用ARP表中的MAC地址,对IP数据包进行帧封装,并将数据包发送给主机B。

(2)        如果主机A在ARP表中找不到对应的MAC地址,则将缓存该数据报文,然后以广播方式发送一个ARP请求报文。ARP请求报文中的发送端IP地址和发送端MAC地址为主机A的IP地址和MAC地址,目标IP地址和目标MAC地址为主机B的IP地址和全0的MAC地址。由于ARP请求报文以广播方式发送,该网段上的所有主机都可以接收到该请求,但只有被请求的主机(即主机B)会对该请求进行处理。

(3)        主机B比较自己的IP地址和ARP请求报文中的目标IP地址,当两者相同时进行如下处理:将ARP请求报文中的发送端(即主机A)的IP地址和MAC地址存入自己的ARP表中。之后以单播方式发送ARP响应报文给主机A,其中包含了自己的MAC地址。

(4)        主机A收到ARP响应报文后,将主机B的MAC地址加入到自己的ARP表中以用于后续报文的转发,同时将IP数据包进行封装后发送出去。

图 2 ARP地址解析过程

  

当主机A和主机B不在同一网段时,主机A就会先向网关发出ARP请求,ARP请求报文中的目标IP地址为网关的IP地址。当主机A从收到的响应报文中获得网关的MAC地址后,将报文封装并发给网关。如果网关没有主机B的ARP表项,网关会广播ARP请求,目标IP地址为主机B的IP地址,当网关从收到的响应报文中获得主机B的MAC地址后,就可以将报文发给主机B;如果网关已经有主机B的ARP表项,网关直接把报文发给主机B。

ARP

设备通过ARP解析到目的MAC地址后,将会在自己的ARP表中增加IP地址到MAC地址的映射表项,以用于后续到同一目的地报文的转发。

ARP表项分为动态ARP表项和静态ARP表项。

动态ARP表项

动态ARP表项由ARP协议通过ARP报文自动生成和维护,可以被老化,可以被新的ARP报文更新,可以被静态ARP表项覆盖。当到达老化时间、接口down时会删除相应的动态ARP表项。

静态ARP表项

静态ARP表项通过手工配置和维护,不会被老化,不会被动态ARP表项覆盖。

配置静态ARP表项可以增加通信的安全性。静态ARP表项可以限制和指定IP地址的设备通信时只使用指定的MAC地址,此时攻击报文无法修改此表项的IP地址和MAC地址的映射关系,从而保护了本设备和指定设备间的正常通信。

静态ARP表项分为短静态ARP表项和长静态ARP表项。

?              在配置长静态ARP表项时,除了配置IP地址和MAC地址项外,还必须配置该ARP表项所在VLAN和出接口。长静态ARP表项可以直接用于报文转发。

?              在配置短静态ARP表项时,只需要配置IP地址和MAC地址项。如果出接口是三层以太网接口,短静态ARP表项可以直接用于报文转发;如果出接口是VLAN虚接口,短静态ARP表项不能直接用于报文转发,当要发送IP数据包时,先发送ARP请求报文,如果收到的响应报文中的源IP地址和源MAC地址与所配置的IP地址和MAC地址相同,则将接收ARP响应报文的接口加入该静态ARP表项中,之后就可以用于IP数据包的转发。

?    一般情况下,ARP动态执行并自动寻求IP地址到以太网MAC地址的解析,无需管理员的介入。

?    当希望设备和指定用户只能使用某个固定的IP地址和MAC地址通信时,可以配置短静态ARP表项,当进一步希望限定这个用户只在某VLAN内的某个特定接口上连接时就可以配置长静态ARP表项。

免费ARP

免费ARP报文是一种特殊的ARP报文,该报文中携带的发送端IP地址和目标IP地址都是本机IP地址,报文源MAC地址是本机MAC地址,报文的目的MAC地址是广播地址。

设备通过对外发送免费ARP报文来实现以下功能:

?              确定其它设备的IP地址是否与本机的IP地址冲突。当其它设备收到免费ARP报文后,如果发现报文中的IP地址和自己的IP地址相同,则给发送免费ARP报文的设备返回一个ARP应答,告知该设备IP地址冲突。

?              设备改变了硬件地址,通过发送免费ARP报文通知其它设备更新ARP表项。

免费ARP报文学习功能的作用

使能了免费ARP报文学习功能后,设备会根据收到的免费ARP报文中携带的信息(源IP地址、源MAC地址)对自身维护的ARP表进行修改。设备先判断ARP表中是否存在与此免费ARP报文源IP地址对应的ARP表项:

?              如果没有对应的ARP表项,设备会根据该免费ARP报文中携带的信息新建ARP表项;

?              如果存在对应的ARP表项,设备会根据该免费ARP报文中携带的信息更新对应的ARP表项。

关闭免费ARP报文学习功能后,设备不会根据收到的免费ARP报文来新建ARP表项,但是会更新已存在的对应ARP表项。如果用户不希望通过免费ARP报文来新建ARP表项,可以关闭免费ARP报文学习功能,以节省ARP表项资源。

定时发送免费ARP功能的作用

定时发送免费ARP功能可以及时通知下行设备更新ARP表项或者MAC地址表项,主要应用场景如下:

(1)        防止仿冒网关的ARP攻击

如果攻击者仿冒网关发送免费ARP报文,就可以欺骗同网段内的其它主机,使得被欺骗的主机访问网关的流量,被重定向到一个错误的MAC地址,导致其它主机用户无法正常访问网络。

为了尽量避免这种仿冒网关的ARP攻击,可以在网关的接口上使能定时发送免费ARP功能。使能该功能后,网关接口上将按照配置的时间间隔周期性发送接口主IP地址和手工配置的从IP地址的免费ARP报文。这样,每台主机都可以学习到正确的网关,从而正常访问网络。

(2)        防止主机ARP表项老化

在实际环境中,当网络负载较大或接收端主机的CPU占用率较高时,可能存在ARP报文被丢弃或主机无法及时处理接收到的ARP报文等现象。这种情况下,接收端主机的动态ARP表项会因超时而被老化,在其重新学习到发送设备的ARP表项之前,二者之间的流量就会发生中断。

为了解决上述问题,可以在网关的接口上使能定时发送免费ARP功能。使能该功能后,网关接口上将按照配置的时间间隔周期性发送接口主IP地址和手工配置的从IP地址的免费ARP报文。这样,接收端主机可以及时更新ARP映射表,从而防止了上述流量中断现象。

(3)        防止VRRP虚拟IP地址冲突

当网络中存在VRRP备份组时,需要由VRRP备份组的Master路由器周期性的向网络内的主机发送免费ARP报文,使主机更新本地ARP地址表,确保网络中不会存在与VRRP虚拟IP地址相同的设备。

由于用户可以设定VRRP虚拟IP地址和MAC地址对应关系,因此有以下两种情况:

?              如果当前VRRP虚拟IP地址和虚拟MAC地址对应,则免费ARP报文中的源MAC地址为VRRP虚拟路由器对应的虚拟MAC地址。

?              如果当前VRRP虚拟IP地址和实际MAC地址对应,则免费ARP报文中的源MAC地址为VRRP备份组中Master路由器接口的MAC地址。

(4)        及时更新模糊终结VLAN内设备的MAC地址表

三层以太网子接口上同时配置了模糊终结多个VLAN和VRRP备份组时,为了避免发送过多的VRRP通告报文,需要关闭VLAN终结支持广播/组播功能,并配置VRRP控制VLAN。此时,为了及时更新各个模糊终结VLAN内设备的MAC地址表项,可以在三层以太网子接口上使能定时发送免费ARP功能。使能该功能后,三层以太网子接口将按照配置的时间间隔周期性发送VRRP虚拟IP地址、接口主IP地址和手工配置的从IP地址的免费ARP报文。这样,当VRRP主备状态切换时,各个模糊终结VLAN内设备上可以及时更新为正确的MAC地址表项。

代理ARP

如果ARP请求是从一个网络的主机发往同一网段却不在同一物理网络上的另一台主机,那么连接它们的具有代理ARP功能的设备就可以回答该请求,这个过程称作代理ARP(Proxy ARP)。

代理ARP功能屏蔽了分离的物理网络这一事实,使用户使用起来,好像在同一个物理网络上。

代理ARP分为普通代理ARP和本地代理ARP,二者的应用场景有所区别:

?              普通代理ARP的应用环境为:想要互通的主机分别连接到设备的不同三层接口上,且这些主机不在同一个广播域中。

?              本地代理ARP的应用环境为:想要互通的主机连接到设备的同一个三层接口上,且这些主机不在同一个广播域中。

普通代理ARP

处于同一网段内的主机,当连接到设备的不同三层接口时,可以利用设备的代理ARP功能,通过三层转发实现互通。

代理ARP的典型应用环境如图3-1所示。设备Router通过两个三层接口Ethernet1/1和Ethernet1/2连接两个网络,两个三层接口的IP地址不在同一个网段,接口地址分别为192.168.10.99/24、192.168.20.99/24。但是两个网络内的主机Host A和Host B的地址通过掩码的控制,既与相连设备的接口地址在同一网段,同时二者也处于同一个网段。

图 3 普通代理ARP的应用环境

  

在这种组网情况下,当Host A需要与Host B通信时,由于目的IP地址与本机的IP地址为同一网段,因此Host A会直接发出请求Host B硬件地址的ARP请求。但是,此时的两台主机处于不同的广播域中,Host B无法收到Host A的ARP请求报文,当然也就无法应答。

通过在Router上启用代理ARP功能,可以解决此问题。启用代理ARP后,Router可以应答Host A的ARP请求。同时,Router相当于Host B的代理,把从其他主机发送过来的报文转发给它。

代理ARP的优点是,它可以只被应用在一个设备上(此时该设备的作用相当于网关),不会影响到网络中其他设备的路由表。代理ARP功能可以在IP主机没有配置缺省网关或者IP主机没有任何路由能力的情况下使用。

本地代理ARP

本地代理ARP的应用场景如图3-2所示。Host A和Host B属于同一个VLAN 2,但它们分别连接到被二层隔离的端口Ethernet1/3和Ethernet1/1上,通过在Router上启用本地代理ARP功能,可以实现Host A和Host B的三层互通。

图 4 本地代理ARP的应用环境

  

本地代理ARP可以在下列三种情况下实现主机之间的三层互通:

?              想要互通的主机分别连接到同一个VLAN中的不同二层隔离端口下;

?              使能Super VLAN功能后,想要互通的主机属于不同的Sub VLAN;

?              使能Isolate-user-vlan功能后,想要互通的主机属于不同的Secondary VLAN。

ARP Snooping

ARP Snooping作用

ARP Snooping功能是一个用于二层交换网络环境的特性,通过侦听ARP报文建立ARP Snooping表项,从而提供给ARP快速应答和MFF手动方式等使用。

ARP Snooping工作机制

设备上的一个VLAN使能ARP Snooping后,该VLAN内所有端口接收的ARP报文会被重定向到CPU。CPU对重定向上送的ARP报文进行分析,获取ARP报文的源IP地址、源MAC地址、源VLAN和入端口信息,建立记录用户信息的ARP Snooping表项。

ARP Snooping表项的老化时间为25分钟,有效时间为15分钟。如果一个ARP Snooping表项自最后一次更新后15分钟内没有收到ARP更新报文,则此表项开始进入失效状态,不再对外提供服务,其他特性查找此表项将会失败。当收到源IP地址和源MAC与已存在的ARP Snooping表项IP地址和MAC均相同的ARP报文时,此ARP Snooping表项进行更新,重新开始生效,并重新老化计时。当ARP Snooping表项达到老化时间后,则将此ARP Snooping表项删除。

如果ARP Snooping收到ARP报文时检查到相同IP的ARP Snooping表项已经存在,但是MAC地址发生了变化,则认为发生了攻击,此时ARP Snooping表项处于冲突状态,表项失效,不再对外提供服务,并在25分钟后删除此表项。

ARP快速应答

ARP快速应答作用

在无线产品组网中,AC与AP会建立隧道连接,Client通过AP连接到AC,通过AC,Client可以与网关建立连接。当Client发起ARP广播请求时,需要通过AC向所有的AP复制ARP请求,这样会导致ARP广播占用隧道的大量资源,导致性能下降。为了减少ARP广播占用的隧道资源,可以在AC上启用ARP快速应答功能,减少ARP广播报文的影响。

ARP快速应答功能就是根据AC设备收集的用户信息(用户信息可以是DHCP Snooping表项,也可以是ARP Snooping表项),在指定的VLAN内,尽可能的对ARP请求进行应答,从而减少ARP广播报文。

ARP快速应答工作机制

ARP快速应答的工作机制如下:

(1)        设备接收到ARP请求报文时,如果请求报文的目的IP地址是设备的VLAN虚接口的IP地址,则由ARP特性进行处理;

(2)        如果ARP请求报文的目的IP地址不是VLAN虚接口的IP地址,则根据报文中的目的IP地址查找DHCP Snooping表项:

?              如果查找成功,但是查找到的表项的接口和收到请求报文的接口一致,并且接口是以太网接口,则不进行应答,否则立即进行应答。

?              如果查找失败,则继续查找ARP Snooping表项,如果查找成功,但是查找到的表项的接口和收到请求报文的接口一致,并且接口是以太网接口,则不进行应答,否则立即进行应答。

?              如果两个表均查找失败,则直接转发请求报文或将报文交于其他特性处理。

ARP攻击防御

ARP协议有简单、易用的优点,但是也因为其没有任何安全机制而容易被攻击发起者利用。

?              攻击者可以仿冒用户、仿冒网关发送伪造的ARP报文,使网关或主机的ARP表项不正确,从而对网络进行攻击。

?              攻击者通过向设备发送大量目标IP地址不能解析的IP报文,使得设备试图反复地对目标IP地址进行解析,导致CPU负荷过重及网络流量过大。

?              攻击者向设备发送大量ARP报文,对设备的CPU形成冲击。

关于ARP攻击报文的特点以及ARP攻击类型的详细介绍,请参见"ARP攻击防范技术白皮书"。

目前ARP攻击和ARP病毒已经成为局域网安全的一大威胁,为了避免各种攻击带来的危害,设备提供了多种技术对攻击进行检测和解决。

下面将详细介绍一下这些技术的原理。

ARP防止IP报文攻击功能简介

如果网络中有主机通过向设备发送大量目标IP地址不能解析的IP报文来攻击设备,则会造成下面的危害:

?              设备向目的网段发送大量ARP请求报文,加重目的网段的负载。

?              设备会试图反复地对目标IP地址进行解析,增加了CPU的负担。

为避免这种IP报文攻击所带来的危害,设备提供了下列两个功能:

?              如果发送攻击报文的源是固定的,可以采用ARP源抑制功能。开启该功能后,如果网络中某主机向设备某端口连续发送目标IP地址不能解析的IP报文,当每5秒内由此主机发出IP报文触发的ARP请求报文的流量超过设置的阈值,那么对于由此主机发出的IP报文,设备不允许其触发ARP请求,直至5秒后再处理,从而避免了恶意攻击所造成的危害。

?              如果发送攻击报文的源不固定,可以采用ARP黑洞路由功能。开启该功能后,一旦接收到目标IP地址不能解析的IP报文,设备立即产生一个黑洞路由,使得设备在一段时间内将去往该地址的报文直接丢弃。等待黑洞路由老化时间过后,如有报文触发则再次发起解析,如果解析成功则进行转发,否则仍然产生一个黑洞路由将去往该地址的报文丢弃。这种方式能够有效地防止IP报文的攻击,减轻CPU的负担。

ARP报文限速功能简介

ARP报文限速功能是指对上送CPU的ARP报文进行限速,可以防止大量ARP报文对CPU进行冲击。例如,在配置了ARP Detection功能后,设备会将收到的ARP报文重定向到CPU进行检查,这样引入了新的问题:如果攻击者恶意构造大量ARP报文发往设备,会导致设备的CPU负担过重,从而造成其他功能无法正常运行甚至设备瘫痪,这个时候可以启用ARP报文限速功能来控制上送CPU的ARP报文的速率。

推荐用户在配置了ARP Detection、ARP Snooping、ARP快速应答、MFF,或者发现有ARP泛洪攻击的情况下,使用ARP报文限速功能。

MAC地址固定的ARP攻击检测功能简介

本特性根据ARP报文的源MAC地址进行统计,在5秒内,如果收到同一源MAC地址的ARP报文超过一定的阈值,则认为存在攻击,系统会将此MAC地址添加到攻击检测表项中。在该攻击检测表项老化之前,如果设置的检查模式为过滤模式,则会打印告警信息并且将该源MAC地址发送的ARP报文过滤掉;如果设置的模式为监控模式,则只打印告警信息,不会将该源MAC地址发送的ARP报文过滤掉。

对于网关或一些重要的服务器,可能会发送大量ARP报文,为了使这些ARP报文不被过滤掉,可以将这类设备的MAC地址配置成保护MAC,这样,即使该MAC存在攻击也不会被检测过滤。

只对上送CPU的ARP报文进行统计。

ARP报文源MAC一致性检查功能简介

ARP报文源MAC一致性检查功能主要应用于网关设备上,防御以太网数据帧首部中的源MAC地址和ARP报文中的源MAC地址不同的ARP攻击。

配置本特性后,网关设备在进行ARP学习前将对ARP报文进行检查。如果以太网数据帧首部中的源MAC地址和ARP报文中的源MAC地址不同,则认为是攻击报文,将其丢弃;否则,继续进行ARP学习。

ARP主动确认功能简介

ARP的主动确认功能主要应用于网关设备上,防止攻击者仿冒用户欺骗网关设备。

启用ARP主动确认功能后,设备在新建或更新ARP表项前需进行主动确认,防止产生错误的ARP表项。关于工作原理的详细介绍请参见"ARP攻击防范技术白皮书"。

授权ARP功能简介

所谓授权ARP(Authorized ARP),就是根据DHCP服务器生成的租约或者DHCP中继生成的安全表项同步生成ARP表项。

使能接口的授权ARP功能后:

?              系统会启动接口下授权ARP表项的老化探测功能,可以检测用户的非正常下线;

?              系统会禁止该接口学习动态ARP表项,可以防止用户仿冒其他用户的IP地址或MAC地址对网络进行攻击,保证只有合法的用户才能使用网络资源,增加了网络的安全性。

ARP Detection功能简介

ARP Detection功能主要应用于接入设备上,对于合法用户的ARP报文进行正常转发,否则直接丢弃,从而防止仿冒用户、仿冒网关的攻击。

ARP Detection包含三个功能:ARP报文有效性检查、用户合法性检查、ARP报文强制转发。

ARP报文有效性检查

对于ARP信任端口,不进行报文有效性检查;对于ARP非信任端口,需要根据配置对MAC地址和IP地址不合法的报文进行过滤。可以选择配置源MAC地址、目的MAC地址或IP地址检查模式。

?              对于源MAC地址的检查模式,会检查ARP报文中的源MAC地址和以太网报文头中的源MAC地址是否一致,一致认为有效,否则丢弃;

?              对于目的MAC地址的检查模式(只针对ARP应答报文),会检查ARP应答报文中的目的MAC地址是否为全0或者全1,是否和以太网报文头中的目的MAC地址一致。全0、全1、不一致的报文都是无效的,无效的报文需要被丢弃;

?              对于IP地址检查模式,会检查ARP报文中的源IP和目的IP地址,全0、全1、或者组播IP地址都是不合法的,需要丢弃。对于ARP应答报文,源IP和目的IP地址都进行检查;对于ARP请求报文,只检查源IP地址。

用户合法性检查

对于ARP信任端口,不进行用户合法性检查;对于ARP非信任端口,需要进行用户合法性检查,以防止仿冒用户的攻击。

用户合法性检查是根据ARP报文中源IP地址和源MAC地址检查用户是否是所属VLAN所在端口上的合法用户,包括基于IP Source Guard静态绑定表项的检查、基于DHCP Snooping安全表项的检查、基于802.1X安全表项的检查和OUI MAC地址的检查。

?              首先进行基于IP Source Guard静态绑定表项检查。如果找到了对应源IP地址和源MAC地址的静态绑定表项,认为该ARP报文合法,进行转发。如果找到了对应源IP地址的静态绑定表项但源MAC地址不符,认为该ARP报文非法,进行丢弃。如果没有找到对应源IP地址的静态绑定表项,继续进行DHCP Snooping安全表项、802.1X安全表项和OUI MAC地址检查。

?              在基于IP Source Guard静态绑定表项检查之后进行基于DHCP Snooping安全表项、802.1X安全表项和OUI MAC地址检查,只要符合三者中任何一个,就认为该ARP报文合法,进行转发。其中,OUI MAC地址检查指的是,只要ARP报文的源MAC地址为OUI MAC地址,并且使能了Voice VLAN功能,就认为是合法报文,检查通过。

?              如果所有检查都没有找到匹配的表项,则认为是非法报文,直接丢弃。

ARP报文强制转发

ARP报文强制转发功能是将ARP非信任端口接收到的已经通过用户合法性检查的ARP报文,按照一定的规则进行转发的防攻击功能,此功能不对ARP信任端口接收到的通过用户合法性检查的ARP报文进行限制。

对于从ARP非信任端口收到的已经通过用户合法性检查的合法ARP报文的处理过程如下:

?              对于ARP请求报文,通过信任端口进行转发;

?              对于ARP应答报文,首先按照报文中的以太网目的MAC地址进行转发,若在MAC地址表中没有查到目的MAC地址对应的表项,则将此ARP应答报文通过信任端口进行转发。

ARP自动扫描、固化功能简介

ARP自动扫描功能一般与ARP固化功能配合使用:

?              启用ARP自动扫描功能后,设备会对局域网内的邻居自动进行扫描(向邻居发送ARP请求报文,获取邻居的MAC地址,从而建立动态ARP表项)。

?              ARP固化功能用来将当前的ARP动态表项(包括ARP自动扫描生成的动态ARP表项)转换为静态ARP表项。通过对动态ARP表项的固化,可以有效的防止攻击者修改ARP表项。

推荐在网吧这种环境稳定的小型网络中使用这两个功能。

  

ARP网关保护功能简介

在设备上不与网关相连的端口上配置此功能,可以防止伪造网关攻击。

在端口配置此功能后,当端口收到ARP报文时,将检查ARP报文的源IP地址是否和配置的被保护网关的IP地址相同。如果相同,则认为此报文非法,将其丢弃;否则,认为此报文合法,继续进行后续处理。

ARP过滤保护功能简介

本功能用来限制端口下允许通过的ARP报文,可以防止仿冒网关和仿冒用户的攻击。

在端口配置此功能后,当端口收到ARP报文时,将检查ARP报文的源IP地址和源MAC地址是否和允许通过的IP地址和MAC地址相同:

?              如果相同,则认为此报文合法,继续进行后续处理;

?              如果不相同,则认为此报文非法,将其丢弃。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qliu83/article/details/53939557

智能推荐

题解 | #使用字符函数统计字符串中各类型字符的个数#-程序员宅基地

文章浏览阅读67次。大家好,我是涛哥,互联网大厂12年的老兵,某互联网大厂技术委员会委员,培养新人超百人。引流:字节跳动,海康威视,深信服,腾讯,阿里巴巴,拼多多,滴滴,京东,小米,大疆,各位大佬 你们好,请大佬们帮我做一下offer选择,个人情况,双非一本硕,学的java,但今年实在是难找工作,现有两个offer,请大佬帮我抉择一下。渣渣两个offer选择,各位路过大佬提提建议,招银网络科技(成都)年包26w,贝壳找房(北京)年包2.2*16=35.2w,考虑到未来房地产下行形势不理想,纠结。*//** * 代码中的类名、

利用ESP8266Wifi模块制作Wifi攻击“测试”_wifi pwn下载-程序员宅基地

文章浏览阅读3.2k次,点赞5次,收藏36次。这里写自定义目录标题准备工作烧录固件系统准备工作大家好!实验准备前你需要准备的设备:1.ESP8266Wifi模块 /1台;2.ESP8266烧录软件和固件;2.Mircro USB数据线 /1根;3.笔记本电脑 /1台。文章后我会将需要用到的软件工具及固件上传至云盘共大家学习研究。烧录固件系统1.笔记本电脑安装CH340串口驱动;2.用Mircro USB2.0数据线连接好ESP8266Wifi模块和笔记本电脑;3.运行ESP8266Flasher.exe烧录工具—>选择Con_wifi pwn下载

银河麒麟V10,Qt5.9.9,UnixOdbc,编译QODBC的libqsqlodbc.so_linux qt5 编译数据库-程序员宅基地

文章浏览阅读1.1k次,点赞15次,收藏28次。银河麒麟V10,达梦数据库,QT5.9.9,UnixOdbc,编译QODBC驱动_linux qt5 编译数据库

(opencv)任意四边形网格划分_opencv 网格-程序员宅基地

文章浏览阅读3.5k次,点赞3次,收藏19次。1 算法介绍算法功能:用于对任意四边形进行网格化处理输入:四边形的四个角点(类型为cv::Point),网格行数,网格列数输出:网格交叉点点集或网格中心点点集(类型为std::vector< cv::Point > )效果如下:vector gridret=Gridding(TEST_P0,TEST_P1,TEST_P2,TEST_P3,3,5,1);vector gri..._opencv 网格

求最小公倍数的python代码_python怎么求最大公约数和最小公倍数-程序员宅基地

文章浏览阅读922次。python怎么求最大公约数和最小公倍数一、求最大公约数用辗转相除法求最大公约数的算法如下:两个正整数a和b(a>b),它们的最大公约数等于a除以b的余数c和b之间的最大公约数。比如10和25,25除以10商2余5,那么10和25的最大公约数,等同于10和5的最大公约数。具体代码如下:def gongyue(a, b):"""欧几里得算法----辗转相除法:param a: 第一个数:par..._python最小公倍数和最大公约数代码

CUDA安装及环境配置——最新详细版-程序员宅基地

文章浏览阅读10w+次,点赞172次,收藏626次。在安装之前呢,我们需要确定三件事第一:查看显卡支持的最高CUDA的版本,以便下载对应的CUDA安装包第二:查看对应CUDA对应的VS版本,以便下载并安装对应的VS版本(vs需要先安装)第三:确定CUDA版本对应的cuDNN版本,这个其实不用太关注,因为在cudnn的下载页面会列出每个版本对应的cuda版本,11.x以上对应的范围很宽。_cuda安装

随便推点

数据结构(严蔚敏版)与算法的实现(含全部代码)_数据结构与算法严蔚敏代码csdn-程序员宅基地

文章浏览阅读10w+次,点赞788次,收藏5.4k次。目录基础c/c++ 代码优化及常见错误 c语言位运算的妙用-程序优化c/c++进制转换方法汇总(含全部代码) 二进制数-北邮2012研究生复试质因子分解除树和图外的数据结构可以使用STL: C++ STL的使用数据结构线性表顺序表 循环左移(2010联考真题)单链表 单链表相邻结点逆置(2019北邮考研真..._数据结构与算法严蔚敏代码csdn

vue-awesome-swiper安装使用时的坑_swiper\swiper.esm.js-程序员宅基地

文章浏览阅读3.7k次,点赞4次,收藏9次。关于vue-awesome-swiper官网:https://github.com/surmon-china/vue-awesome-swiper官方示例:https://github.surmon.me/vue-awesome-swiper/概述:vue-awesome-swiper是基于swiper的Vue组件。是swiper推荐的在vue中使用swiper的方式。关于SwiperSwiper 是一款免费以及轻量级的移动设备触控滑块的js框架,使用硬件加速过渡(如果该.._swiper\swiper.esm.js

vue+elementui实现el-table动态添加行数据_vue 动态el-table-程序员宅基地

文章浏览阅读2.3w次,点赞4次,收藏64次。思路:1.不管新增还是编辑都要有添加可编辑的输入行,所以在打开新增或者编辑的弹框或者页面中就要先push一个对象到table数据对象中。2.要区分我添加的行跟已完成的行。我这边定义的对象中通过设置start为0或者1的值来区分。当行中的start值为0说明是新增可编辑行,否则视为已完成的数据行3. 通过点击添加按钮把当前行的数据中的start值设置成1并且通过splice添加到数组后面中,再把table数组最后一个对象设置成空,start值改回为0;let tempRow = JSON.parse(_vue 动态el-table

Cloudify 学习(四):通过Cloudify的蓝图来创建第一个deployment,由k8s生成这个容器-容器编排_cloudiy 蓝图-程序员宅基地

文章浏览阅读1.9k次。Cloudify4.5.0和Kubernetes1.13.0进行混合容器编排demodemo背景Local Blueprint 的编写激动人心的时刻开始了,创建tomcat容器demo背景Cloudify4.5.0和Kubernetes1.13.0进行混合容器编排demo是基于前面两篇文章的环境而继续.1.安装k8s1.13.02.安装Cloudify4.5.03.Cloudify对接K..._cloudiy 蓝图

LINK : fatal error LNK1104: 无法打开文件“C:/XXX.obj”-程序员宅基地

文章浏览阅读2.8w次,点赞5次,收藏8次。问题: LINK : fatal error LNK1104: 无法打开文件“C:/XXX.obj” 遇到这样的问题时可以先看一下LINK命令行,项目->属性->链接器->命令行,在这里,前面设置的“附加依赖项”可能被IDE改写了,例如,要加入一个XXX.lib的链接库,完整路径为"C:/Program Files/XXX.lib",如果被IDE改写的话会变_link : fatal error lnk1104:

LaTeX 插入高亮代码(LaTex、Python、Java、C、C++等主流语言都支持)_latex代码引用高亮-程序员宅基地

文章浏览阅读1.2w次,点赞2次,收藏18次。相信刚入门LaTeX的盆友会感觉到LaTeX的强大之处,如果你了解markdown,那么使用LaTeX之后,你会感觉markdown除了便捷之外也就没有其它的优点了,因为LaTeX太强大了,也由于LaTeX门槛比较高,如果你使用texlive编译环境的话,那么需要安装的文件将达到7G左右,当然也有简版的。使用LaTeX也是源于自己研究生的导师,在老师的介绍下,然后不断学习,不断了解,不断使用,也..._latex代码引用高亮

推荐文章

热门文章

相关标签