Linux网络编程:数据链路层 以太网协议

Linux下如何在数据链路层接收原始数据包 大多数的网络编程都是在应用层接收数据和发送数据的,本文介绍在数据链路层的网络编程方法,介绍如何在数据链路层直接接收从物理层发过来的原始数据数据包,文章给出了一个完整的范例程序。 阅读详情

目录

数据链路层

数据链路层解决的问题

以太网

局域网技术

以太网通信原理

碰撞避免算法

以太网帧格式

MAC帧如何将报头与有效载荷进行分离?

MAC帧如何决定将有效载荷交付给上层的哪一个协议?

理解局域网通信过程

认识MAC地址

对比理解MAC地址和IP地址

认识MTU

MTU对IP协议的影响

MTU对UDP协议的影响

MTU对TCP协议的影响

ARP协议

ARP协议作用

ARP协议的工作流程

为什么要有缓存表?

为什么表项要有过期时间⽽不是⼀直有效?

ARP数据报格式

ARP协议工作流程实例

ARP请求实例

ARP应答实例

进行局域网通信的时候,为什么不直接以广播的方式发送数据?


数据链路层

数据链路层解决的问题

网络层IP提供的是跨网络发送数据的能力,传输层TCP是为数据发送提供可靠性保证的,而链路层解决的则是两台相连主机之间的通信问题。

以太网

局域网技术

不同局域网所采用的通信技术可能是不同的,常见的局域网技术有以下三种:

1.以太网:以太网是一种计算机局域网技术,一种应用最普遍的局域网技术。
2.令牌环网:令牌环网常用于IBM系统中,在这种网络中有一种专门的帧称为“令牌”,在环路上持续地传输来确定一个节点何时可以发送包。
3.无线LAN/WAN:无线局域网是有线网络的补充和扩展,现在已经是计算机网络的一个重要组织部分。

虽然网络中各个局域网所采用的通信技术可能的不同的,但是IP屏蔽了底层网络的差异,对于网络通信双方的IP层及其往上的协议来说,它们并不需要关心底层具体使用的是哪种局域网技术。

数据在发送之前会先进行数据封装,此时链路层会给数据封装上对应的局域网的报头。
如果数据要进行跨网络传输,那么就需要经过路由器转发。
当数据在路由器进行向上交付时,会将该数据对应的局域网报头去掉。
而当路由器该数据转发给下一跳之前,又会给该数据封装上下一跳网络所对应的局域网报头。


也就是说,网络中的路由器会不断去掉数据旧的局域网报头,并添加上新的局域网报头,因此数据在进行跨网络传输时,就算所需跨越的网络采用的是不同的局域网技术,最终也能够正确实现跨越。

以太网通信原理

• "以太⽹" 不是⼀种具体的⽹络, ⽽是⼀种技术标准; 既包含了数据链路层的内容, 也包含了⼀些物

理层的内容. 例如: 规定了⽹络拓扑结构, 访问控制⽅式, 传输速率等;

• 例如以太⽹中的⽹线必须使⽤双绞线(就是路由器上带水晶头的那个); 传输速率有10M, 100M, 1000M等;

• 以太⽹是当前应⽤最⼴泛的局域⽹技术; 和以太⽹并列的还有令牌环⽹, ⽆线LAN等;

以太网中所有的主机共享一个通信信道,当局域网中的一台主机发出数据后,该局域网中的所有主机都能够收到该数据。

比如当局域网中的主机A想要发送数据给主机B时,其实局域网当中的每一台主机都能收到主机A发出去的数据,只不过最终只有主机B会将主机A发来的数据向上进行交付。
局域网当中的其他主机虽然也收到了主机A发出的数据,但经过识别后发现这个数据不是发送给自己的,于是就会直接将该数据丢弃而不会向上进行交付。

也就是说,在进行局域网通信的时候,局域网当中的所有主机都能够看到局域网中传输的任何数据,只不过每个主机都只关心发送给自己的数据罢了。

扩展:

  • 网络抓包不仅能够抓到发送给自己的报文数据,也能抓取到发给别人的报文数据,实际就是因为在进行网络抓包时,主机将从局域网中收到的所有报文数据都向上交付了而已。
  • 网卡有一种模式叫做混杂模式,被设置为混杂模式的网卡能够接收所有经过它的数据流,而不论其目的地址是否是它。
碰撞避免算法

由于以太网中的所有的主机共享一个通信信道,因此在同一时刻只允许有一台主机发送数据,否则各个主机发送的数据就会相互干扰。站在系统的角度来看,这里各个主机所共享的通信信道就是一种临界资源,这个临界资源同一时刻只允许一台主机使用。

对于这个问题,以太网的做法就是先不限制各个主机发送数据的能力,局域网中的每个主机想发数据的时候直接发就行了,但是只要发送出去的数据与其他主机发送的数据产生了碰撞,那就得执行碰撞避免算法。
所谓的碰撞避免算法就是,当主机发送出去的数据产生碰撞时,该主机需要等待一段时间后再进行数据重发,在主机等待的时候就能够就能够尽可能让局域网当中的数据消散。
以太网通信的原理就像现实生活中开会一样,在开会过程中同一时刻只允许一个人发言,如果两个人突然同时说话,那么双方都会有礼貌的等待别人先说。
也就是说,以太网中主机发送的数据产生碰撞后该主机会执行碰撞避免算法,所以我们说以太网是基于碰撞区和碰撞检测的局域网通信标准。

碰撞避免算法就是主机等待一段时间后重新发送数据,因此以太网底层也有重传机制,只不过以太网的重传机制只是为了保证将数据从局域网中的一台主机发送到另一台主机。

以太网帧格式

• 源地址和⽬的地址是指⽹卡的硬件地址(也叫MAC地址), ⻓度是48位,是在⽹卡出⼚时固化的;

• 帧协议类型字段有三种值,分别对应IP、ARP、RARP;

• 帧末尾是CRC校验码。

MAC帧如何将报头与有效载荷进行分离?

以太网MAC帧的帧头和帧尾都是固定长度的,因此当底层收到一个MAC帧后,直接提取出MAC帧当中固定长度的帧头和帧尾,此时剩下的就是有效载荷了。

MAC帧如何决定将有效载荷交付给上层的哪一个协议?

以太网MAC帧对应的上层协议不止一种,因此在将MAC帧的报头和有效载荷分离后,还需要确定应该将分离出来的有效载荷交付给上层的哪一个协议。

在MAC帧的帧头当中有2个字节的类型字段,因此在分离出报头和有效载荷后,根据该字段将有效载荷交付给对应的上层协议即可。

理解局域网通信过程

假设局域网当中的主机A想要将IP数据报发送给同一局域网当中的主机B,那么主机A封装MAC帧当中的目的地址就是主机B的MAC地址,源地址就是主机A的MAC地址,而帧协议的类型对应就是0800,紧接着就是要发送的IP数据报,帧尾部分对应就是CRC校验。

当主机A将该MAC帧发送到局域网当中后,局域网当中的所有主机都可以收到这个MAC帧,包括主机A自己。

首先发送方会争取发送完整的帧:

  1. 发送与实时监听:主机A开始发送帧,其网卡同时从共享信道上接收信号。

  2. 碰撞检测(核心机制):网卡硬件将接收到的信号与它自己正在发送的信号进行实时比对。

    • 一致:说明没有碰撞,继续发送直至完成。

    • 不一致:说明信号在信道中发生干涉(即碰撞)。这是发送方知晓碰撞的瞬间、也是唯一需要的证据。

  3. 立即中止:一旦检测到不一致,网卡立即停止发送当前帧,并发送一个拥塞信号,然后执行碰撞避免算法,等待一段时间后数据重发。这个不完整的帧不会在网络中传播。

完整的帧发送出去后,收到数据的所有主机的第一步,CRC检验,CRC是基于数据内容计算的,从而确保收到的数据内容和发送方发送的数据内容的一致性,避免其他可能因素导致的数据损坏。

CRC的作用(完全不同场景):CRC用于校验已成功完整接收的帧是否在传输中因其他原因(非碰撞,如信号衰减)而出错。对于被碰撞检测机制中止发送产生的碎片,因为其不构成一个合法帧,接收方网卡根本不会对其进行CRC校验。

所有主机第一步——CRC校验:每台主机的网卡都立即对这个帧的完整比特流进行CRC计算。

  • 情况A(数据内容正确):CRC校验通过。所有主机进入下一步。

    • 主机B:检查目的地址,匹配,接收帧并上交。

    • 主机A和其他主机:检查目的地址,不匹配,安静地丢弃帧。

  • 情况B(发生非碰撞因素  导致的 数据损坏):信号畸变,帧的某些比特位翻转了。这会导致所有正在接收的主机(包括主机A自己)计算出的CRC值不匹配。

    • 所有主机(包括A、B和其他):在CRC校验这一步就失败了。网卡直接丢弃这个损坏的帧,甚至不会去关心目的地址是谁。

也就是说,碰撞检测是发生在发送端完整正确发送MAC帧之前进行的。

当底层收到一个MAC帧后,首先肯定是没有发生碰撞,发送端的MAC帧正确发送出来了,再会对其进行CRC校验,从而进一步确定数据的一致性,避免其他非碰撞因素导致的数据损坏。CRC匹配正确后再根据MAC帧当中的目的地址来判断该MAC帧是否是发给自己的,如果是发送给自己的则会根据该MAC帧的帧协议类型,将该MAC交付给对应的上层协议进行处理;如果不是发送给自己的就直接丢弃。

认识MAC地址

• MAC地址⽤来识别数据链路层中相连的节点;

• ⻓度为48位, 及6个字节. ⼀般⽤16进制数字加上冒号的形式来表⽰(例如: 08:00:27:03:fb:19)

• 在⽹卡出⼚时就确定了, 不能修改. mac地址通常是唯⼀的(虚拟机中的mac地址不是真实的mac地

址, 可能会冲突; 也有些⽹卡⽀持⽤⼾配置mac地址).

我们可以通过ifconfig命令来查看我们的MAC地址。

对比理解MAC地址和IP地址

实际数据在路由过程中会存在两套地址,一套是源IP地址和目的IP地址,还有一套是源MAC地址和目的MAC地址。

IP地址描述的是路途总体的起点和终点。
MAC地址描述的是路途上的每一个区间的起点和终点。
比如做公交车时,源IP地址就是我们上车的站点,目的IP地址就是我们最终要下车的站点,而源MAC地址就是公交车上一个已经到达的站点,目的MAC地址就是公交车下一个将要到达的站点。

因此数据在路由过程中,源IP地址和目的IP地址可以理解成是不会变化的,而数据每进行一跳后其源MAC地址和目的MAC地址都会变化。

认识MTU

MTU相当于发快递时对包裹尺⼨的限制. 这个限制是不同的数据链路对应的物理层, 产⽣的限制.

• 以太⽹帧中的数据⻓度规定最⼩46字节,最⼤1500字节,ARP数据包的⻓度不够46字节,要在后⾯补

填充位;

• 最⼤值1500称为以太⽹的最⼤传输单元(MTU),不同的⽹络类型有不同的MTU;

• 如果⼀个数据包从以太⽹路由到拨号链路上,数据包⻓度⼤于拨号链路的MTU了,则需要对数据包

进⾏分⽚(fragmentation);

• 不同的数据链路层标准的MTU是不同的;

以下的这些影响,都可以借助快递寄包裹来记忆。

MTU对IP协议的影响

具体可以参考上一篇博客:IP分片和组装的具体过程https://blog.youkuaiyun.com/dqa__/article/details/155233055?spm=1001.2014.3001.5502

由于数据链路层MTU的限制, 对于较⼤的IP数据包要进⾏分包.

• 将较⼤的IP包分成多个⼩包, 并给每个⼩包打上标签;

• 每个⼩包IP协议头的 16位标识(id) 都是相同的;

• 每个⼩包的IP协议头的3位标志字段中, 第2位置为0, 表⽰允许分⽚, 第3位来表⽰结束标记(当前是

否是最后⼀个⼩包, 是的话置为1, 否则置为0);

• 到达对端时再将这些⼩包, 会按顺序重组, 拼装到⼀起返回给传输层;

• ⼀旦这些⼩包中任意⼀个⼩包丢失, 接收端的重组就会失败. 但是IP层不会负责重新传输数据;

MTU对UDP协议的影响

让我们回顾⼀下UDP协议:

• ⼀旦UDP携带的数据超过1472(1500 - 20(IP⾸部) - 8(UDP⾸部)), 那么就会在⽹络层分成多个IP数据报.

• 这多个IP数据报有任意⼀个丢失, 都会引起接收端⽹络层重组失败. 那么这就意味着, 如果UDP数据报在⽹络层被分⽚, 整个数据被丢失的概率就⼤ 增加了.

MTU对TCP协议的影响

对于TCP来说,分片也会增加TCP报文丢包的概率,但与UDP不同的是TCP丢包后还需要进行重传,因此TCP应该尽量减少因为分片导致的数据重传。

• TCP的⼀个数据报也不能⽆限⼤, 还是受制于MTU. TCP的单个数据报的最⼤消息⻓度, 称为

MSS(Max Segment Size);

• TCP在建⽴连接的过程中, 通信双⽅会进⾏MSS协商.

• 最理想的情况下, MSS的值正好是在IP不会被分⽚处理的最⼤⻓度(这个⻓度仍然是受制于数据链

路层的MTU).

• 双⽅在发送SYN的时候会在TCP头部写⼊⾃⼰能⽀持的MSS值.

• 然后双⽅得知对⽅的MSS值之后, 选择较⼩的作为最终MSS.

• MSS的值就是在TCP⾸部的40字节变⻓选项中(kind=2);

MSS和MTU的关系如下:

MSS 的作用就是确保“分”这个动作发生在发送端主机的TCP层,而不是发生在中途路由器的IP层。​ 这样就能利用TCP的可靠传输机制,获得极高的效率提升。

ARP协议

地址解析协议(Address Resolution Protocol,ARP)协议,是根据IP地址获取MAC地址的一个TCP/IP协议。

ARP不是⼀个单纯的数据链路层的协议, ⽽是⼀个介于数据链路层和⽹络层之间的协议;

ARP协议作用

在同一个局域网中要给对方发消息,就必须得知道对方的MAC地址,而实际大部分情况下我们只知道对方的IP地址,因此需要通过ARP协议来根据IP地址来获取目标主机的MAC地址。

ARP协议建⽴了主机 IP地址 和 MAC地址 的映射关系.

• 在⽹络通讯时,源主机的应⽤程序知道⽬的主机的IP地址和端⼝号,却不知道⽬的主机的硬件地址;

• 数据包⾸先是被⽹卡接收到再去处理上层协议的,如果接收到的数据包的硬件地址与本机不符,则

直接丢弃;

• 因此在通讯前必须获得⽬的主机的硬件地址;

ARP协议的工作流程

• 源主机发出ARP请求,询问“IP地址是192.168.0.1的主机的硬件地址是多少”, 并将这个请求⼴播

到本地⽹段(以太⽹帧⾸部的硬件地址填FF:FF:FF:FF:FF:FF表⽰⼴播);

• ⽬的主机接收到⼴播的ARP请求,发现其中的IP地址与本机相符,则发送⼀个ARP应答数据包给源主机,将⾃⼰的硬件地址填写在应答包中;

• 每台主机都维护⼀个ARP缓存表,可以⽤arp -a命令查看。缓存表中的表项有过期时间(⼀般为20分

钟),如果20分钟内没有再次使⽤某个表项,则该表项失效,下次还要发ARP请求来获得⽬的主机的硬

件地址

为什么要有缓存表?

为了极致的效率,避免重复且频繁的ARP请求。相当于空间换时间。

为什么表项要有过期时间⽽不是⼀直有效?

为了应对网络变化,保证地址映射的正确性和灵活性。确保IP到MAC的映射是最新、准确的,使通信可靠。

ARP数据报格式

• 注意到源MAC地址、⽬的MAC地址在以太⽹⾸部和ARP请求中各出现⼀次,对于链路层为以太⽹的情况是多余的,但如果链路层是其它类型的⽹络则有可能是必要的。

• 硬件类型指链路层⽹络类型,1为以太⽹;

• 协议类型指要转换的地址类型,0x0800为IP地址;

• 硬件地址⻓度对于以太⽹地址为6字节;

• 协议地址⻓度对于和IP地址为4字节;

• op字段为1表⽰ARP请求,op字段为2表⽰ARP应答。

从ARP的数据格式也可以看出,ARP是MAC帧协议的上层协议,ARP数据格式中的前3个字段和最后一个字段对应的就是以太网首部,但由于ARP数据包的长度不足46字节,因此ARP数据包在封装成为MAC帧时还需要补上18字节的填充字段。

ARP协议工作流程实例

ARP请求实例

首先路由器D需要先构建ARP请求。

首先,因为路由器D构建的是ARP请求,因此ARP请求当中的op字段设置为1。
ARP请求当中的硬件类型字段设置为1,因为当前使用的是以太网通信。
ARP请求当中的协议类型设置为0800,因为路由器是要根据主机B的IP地址来获取主机B的MAC地址。
ARP请求当中的硬件地址长度和协议地址长度分别设置为6和4,因为MAC地址的长度是48位,IP地址的长度是32位。
ARP请求当中的发送端以太网地址和发送端IP地址,对应就是路由器D的MAC地址和IP地址。
ARP请求当中的目的以太网地址和目的IP地址,对应就是主机B的MAC地址和IP地址,但由于路由器D不知道主机B的MAC地址,因此将目的以太网地址的二进制序列设置为全1,表示在局域网中进行广播。

此时ARP请求构建完成,如下:

ARP请求构建完成后,为了能将ARP请求发送到以太网当中,还需要将ARP数据包向下交付给MAC帧协议,封装成MAC帧。

封装MAC帧报头时,以太网目的地址和以太网源地址,对应分别是主机B和路由器D的MAC地址,但由于路由器D不知道主机B的MAC地址,因此MAC帧报头当中的以太网目的地址的二进制序列也只能设置为全1,表示在局域网中进行广播。
因为这里封装的是一个ARP请求数据包,因此MAC帧当中的帧类型字段设置为0806。
由于ARP请求数据包的长度只有28字节,不足46字节,因此还需要在MAC帧的有效载荷当中补上18字节的填充字段,最后再对MAC帧进行CRC校验即可。

此时ARP请求就被封装成MAC帧了,如下:

MAC帧封装完毕后,路由器D就可以将封装好的MAC帧以广播的方式发送到局域网当中了。

因为这个MAC帧是以广播的方式发出的,因此局域网当中的每台主机收到这个MAC帧后,都会对该MAC帧进行解包。当这些主机识别到MAC帧当中的帧类型字段为0806后,便知道这是一个ARP的请求或应答的数据包,于是会将MAC帧的有效载荷向上交付给ARP层。
当ARP层收到这个数据包后,发现ARP数据包当中的op字段为1,于是判定这是一个ARP请求,然后再提取出ARP数据包当中的目的IP地址字段,虽然局域网当中的所有主机都会将该数据包交给自己的ARP层,但最终只有主机B发现ARP数据包当中的目的IP地址与自己相同,因此只有主机B会对该ARP请求进行应答,而局域网当中的其他主机在识别到ARP数据包当中的目的IP地址与自己不匹配后,就会直接将这个ARP请求报文丢弃。

需要注意的是,局域网当中其他不相干的主机在收到这个ARP请求报文后,不是在MAC帧层丢弃的,而是在ARP层发现该ARP数据包的目的IP与自己的IP不匹配后丢弃的。

ARP应答实例

主机B在应答时首先需要构建ARP应答。

首先,因为主机B构建的是ARP应答,因此ARP应答当中的op字段设置为2。
ARP应答当中的硬件类型、协议类型、硬件地址长度、协议地址长度的值与ARP请求当中设置的值相同。
ARP应答当中的发送端以太网地址和发送端IP地址,对应就是主机B的MAC地址和IP地址。
ARP应答当中的目的以太网地址和目的IP地址,对应就是路由器D的MAC地址和IP地址,因为路由器D发来的ARP请求当中告知了主机B它的MAC地址和IP地址,因此主机B是知道的。

此时ARP应答构建完成,如下:

ARP应答构建完成后,为了能将ARP应答发送到以太网当中,也需要将ARP数据包向下交付给MAC帧协议,封装成MAC帧。

封装MAC帧报头时,以太网目的地址和以太网源地址,对应分别是路由器D和主机B的MAC地址。
因为这里封装的是一个ARP应答数据包,因此MAC帧当中的帧类型字段设置为0806。
由于ARP应答数据包的长度也只有28字节,不足46字节,因此也需要在MAC帧的有效载荷当中补上18字节的填充字段,最后再对MAC帧进行CRC校验。

此时ARP应答就被封装成MAC帧了,如下:

MAC帧封装完毕后,主机B就可以将封装好的MAC帧发送到局域网当中了。

此时局域网当中的每台主机在底层都能收到这个MAC帧,但局域网当中的不相干的主机,在发现该MAC帧对应的以太网目的地址与自己不同后,就会将该MAC帧丢弃,而不会交付给上层ARP层,最终只有路由器D会将解包后MAC帧的有效载荷向上交付给自己的ARP层。
当路由器D的ARP层收到这个数据包后,发现ARP数据包当中的op字段为2,于是判定这是一个ARP应答,然后就会提取出ARP数据包当中的发送端以太网的地址和发送端IP地址,此时路由器D就拿到了主机B的MAC地址。

需要注意的是,局域网当中其他不相干的主机在收到这个ARP应答报文后,直接在MAC帧层就丢弃了,并没有将其交付给自己的ARP层。

进行局域网通信的时候,为什么不直接以广播的方式发送数据?

在进行局域网通信时,就算只知道对方的IP地址,而不知道对方的MAC地址,也可以以广播的方式将数据发送到局域网当中,此时局域网当中的主机也能够在IP层比对目的IP地址与自己是否相符,来判断收到的这个数据是否是发送给自己的。

理论上确实可以这样,但这种方式是不妥的。

对于局域网当中的大多数主机来说,收到的这个报文其实早就应该被丢弃,而现在这个报文却交付到了IP层,我们都知道IP层是属于操作系统管控的,因此这对网络资源和系统资源来说都是一种浪费。
因此在底层MAC帧层就应该判定这个报文是不是发送给当前主机的,而不是当数据向上交付到了IP层再来判断。这里相当于节省了每台主机数据链路层解包到网络层再判断的时间。

此外,如果我要发送100个数据包,如果我有100个主机,直接采用广播相当于我要把数据包发送一万次!而选择ARP协议,就可以开始只发送一个ARP数据包,相当于只发了一百次相比之下几何量级就小了很多了,然后得到目标MAC地址,再进行单播,总共也才发了200个数据包,这样一看就知道哪种方法更节省效率了。

此外,如果无脑使用广播的方式来进行数据的发送,会使得广播和单播的概念变得模糊不清,你明明是想发送数据给局域网当中的一台主机,但你却采用了广播的方式,这显然是不合理的。


此篇完,感谢收看!

YOLO26涨点改进| CVPR 2026 | 独家创新首发、特征融合改进篇 | 引入 LFSB 差分双维注意融合模块,通过交替特征融合与分离策略,能够精准区分目标特征,顶会助力YOLO26有效涨点 本文提出LSFB差分双维注意融合模块,用于改进YOLO26目标检测模型。该模块通过融合-分离交替策略和差分注意力机制,有效提升模型在复杂场景下的特征分离能力,特别是在处理重叠物体或反射干扰时表现优异。LSFB采用双向投影、双维注意力计算和跨流减法算子,实现特征共享与独立提取的平衡。实验表明,该模块能显著减少特征混淆,提高检测精度和鲁棒性。文章还详细介绍了模块实现的核心代码、YAML配置文件修改方法以及三种改进方案,为YOLO26模型性能提升提供了创新解决方案。 阅读详情

相关推荐

DDR内存Prefetch机制详解:从DDR1到DDR4的技术演进与性能提升

本文深入解析DDR内存Prefetch机制从DDR1到DDR4的技术演进与性能提升。通过分析Prefetch技术的实现原理与Burst传输的协同机制,揭示DDR1的2n Prefetch、DDR2的4n Prefetch、DDR3的8n Prefetch以及DDR4的Bank Group架构创新如何显著提升内存带宽与系统性能。

weixin_30369041的博客 540

【Linux网络编程】数据链路层--以太网协议

ARP协议在网络协议栈的哪一层?ARP协议是在MAC协议之上,IP协议之下的一个链路层协议。ARP协议的功能ARP的主要功能是将一个IP地址转换为一个MAC地址,以便在同一局域网内进行数据帧的传输。由于网络层(如IP协议)和链路层(如以太网协议)使用不同的地址格式,ARP协议提供了这两者之间的桥梁。在网络通讯时,源主机的应用程序知道目的主机的IP地址和端口号,却不知道目的主机的硬件地址。

m0_73904148的博客 1971

蓝牙钥匙 第48次 全面解析防中继攻击保护:从原理到防护技术实践

中继攻击已成为物联网安全领域的重要威胁,2023年全球相关损失达数十亿美元。本文深入分析中继攻击原理,揭示其通过转发设备延长通信距离而不破解加密的特点。重点探讨两种关键防护技术:基于距离测量的方法(包括UWB超宽带技术)可精确检测异常距离;基于时间戳的挑战-响应机制则通过严格时间窗口识别中继延迟。文章还提出多层次防护体系构想,结合AI异常检测和量子安全协议等前沿技术。研究显示,集成多种防护技术并遵循行业标准是应对中继攻击的有效途径,为物联网设备安全提供重要参考。

IT深耕十余载,大道之简 1833

【深入浅出Linux网络编程】之数据链路层

数据链路层是TCP/IP五层协议和OSI七层协议中的倒数第二层,它主要负责在同一局域网之间的节点间进行可靠的数据帧的传输。注意:在网络中我们将主机可以称之为节点。以太网是局域网技术的一种,常见的局域网技术还有令牌环网技术、WIFI技术(无线局域网)。以太网是最流行的局域网技术,使用物理电缆(如双绞线或光纤)连接网络设备。它支持从10Mbps到100Gbps及以上的传输速率。

wszhj_的博客 1465

S32DS3.5图形化配置实战:从零构建S32K144通信接口工程

本文详细介绍了如何使用S32DS3.5图形化配置工具从零构建S32K144通信接口工程。通过实战演示引脚配置、时钟树设置、SPI接口搭建等关键步骤,帮助开发者快速掌握NXP S32K系列开发技巧,提升嵌入式开发效率。特别针对S32DS3.5版本的新特性进行了深度解析,包括智能代码生成和调试优化方法。

weixin_26834815的博客 200

海康威视GigE工业相机的python调用demo

默认路径安装完成后,在路径C:\Program Files (x86)\MVS\Development\Samples\Python\BasicDemo下的BasicDemo.py中,海康威视官方提供了基本的调用方法,本文也是基于这个修改的。BasicDemo.py提供了通过枚举选择相机的方法,在官方的另一个DEMO:ConnectSpecCamera.py中提供了另一种不通过枚举,直接访问特定IP相机的方法,也可以参考。另外,如果每台相机都定义了唯一的用户定义名,也可以通过用户定义名来区分相机。

xulibo5828的博客 2109

【Linux网络编程】数据链路层

数据链路层,以太网帧、IP地址、mac地址、MTU、局域网通信原理、ARP协议

2301_80277275的博客 1081

【MIT-BEVFusion代码解读】第四篇:融合特征fuser和解码特征decoder

的大小,实际上源代码也是这么做的。最后将得到两个分支的特征进行。,第一个特征使用卷积降低通道数即可,第二个则需要反卷积来提升。所以backbone只有两个分支,都是5个卷积模块组成。的长和宽都减半至90,然后在经过5个相同的。将通道降至128,后面再接5个相同的。,将通道数128上至256,并且将。特征进行融合,这里使用的。部分由两部分组成,分别是。,这个分支首先经过第一个。,然后再卷积得到 =>提取特征,最后得到特征。得到了两个大小不同的。

非晚非晚的博客 2957

linux网络编程(一)

1、linux的网络模型 linux使用的网络模型是TCP/UP四层网络模型,主要由应用程序、传输层、网络层、网络接口层组成。与OSI七层模型不同,但是又相互对应,它们之间关系如下图: OSI模型的应用层、表示层、会话层对应着TCP/IP模型的应用层,传输层对应传输层,网络层对应网络互连层,数据链路层和物理层对应主机到网络层(网络接口层)。linux中的网卡驱动属于7层模型中的数据链路层,属于四层模型中的最底层的网络接口层。 2、linux网络协议栈包含的网络协议 linux用到的网络协议主要有:TCP、

shuux666的博客 4782

Python爬虫教程:抓取社交媒体内容(以Facebook和Instagram为例)

为什么抓取社交媒体内容?品牌分析与监测:通过抓取品牌、产品或服务相关的社交媒体数据,可以获得公众对其的评价,识别市场趋势,制定营销策略。情感分析:分析用户在社交平台上的情感倾向,如对某事件、产品、服务的正面或负面情绪。舆情监控:通过抓取大量社交媒体内容,监测公众对热点事件的反应,发现潜在的社会问题。用户行为分析社交媒体的数据类型:帖子和内容:包括用户发布的文本、图片、视频等。用户互动用户信息:包括用户名、粉丝数、关注数等社交信息。社交媒体的反爬虫机制:API限制。

2201_76125261的博客 1340

YOLOv5改进 | 多尺度特征提取 | 结合多样分支块及融合的高级设计(CVPR2021)

YOLOv5改进 | 多尺度特征提取 | 结合多样分支块及融合的高级设计(CVPR2021)

qq_44224801的博客 2068

Linux网络编程_06_数据链路层MAC帧协议

Linux网络编程-数据链路层

柿子__ 1681

lammps案例:扭转

扭转有两种方式,一是固定一端旋转另外一端,二是两端沿相反的方向旋转。案例为两侧旋转方式,扭转后的效果如图所示。

lammps_jiayou的博客 1199

【Linux网络编程】

linux使用的网络模型是TCP/UP四层网络模型,主要由应用程序、传输层、网络层、网络接口层组成。与OSI七层模型不同,但是又相互对应。OSI模型的应用层、表示层、会话层对应着TCP/IP模型的应用层,传输层对应传输层,网络层对应网络互连层,数据链路层和物理层对应主机到网络层(网络接口层)。linux中的网卡驱动属于7层模型中的数据链路层,属于四层模型中的最底层的网络接口层。

K3169的博客 2295

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

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

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

2-22 网络协议分析及Linux网络编程模型

1.  Linux网络模型 /* 网卡驱动在OSI模型中属于数据链路层,在TCP/IP中属于网络接口层 */ 2.  协议分析     2.1以太网协议中协议和协议之间的关系           网络协议包含:    1.  多条规则                                         2.  数据包的格式

实验代码库在:github.com/elvinsys 558

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

【Linux】数据链路层

本期博客讲解了数据链路层的知识,如以太网协议、arp协议等,讲解了以太网、交换机,以及arp、arp欺骗等内容

2401_86785052的博客 341

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Linux网络编程——网络协议入门

它们读取这个包的“标头”,找到接收方的 MAC 地址,然后与自身的 MAC 地址相比较,如果两者相同,就接受这个包,做进一步处理,否则就丢弃这个包。TCP 数据包没有长度限制,理论上可以无限长,但是为了保证网络的效率,通常 TCP 数据包的长度不会超过 IP 数据包的长度,以确保单个 TCP 数据包不必再分割。(“路由”就相当于现象生活中的路标,规定这些数据包的走向,就是指如何向不同的子网络分发数据包,这是一个很大的主题,本文不涉及。上面提到,以太网数据包的“标头”,包含了发送者和接受者的信息。

qq_74811378的博客 1133

【Linux网络】数据链路层协议:以太网和 ARP

​ 本篇博客整理了 TCP/IP分层模型中数据链路层的 MAC 帧协议和 ARP 协议,旨在让读者更加深入理解网络协议栈的设计和网络编程。

NeeEk0的博客 1271

【Linux网络编程(一)】Linux网络模型

linux使用的网络模型是TCP/UP四层网络模型,主要由应用程序、传输层、网络层、网络接口层组成。与OSI七层模型不同,但是又相互对应。OSI模型的应用层、表示层、会话层对应着TCP/IP模型的应用层,传输层对应传输层,网络层对应网络互连层,数据链路层和物理层对应主机到网络层(网络接口层)。linux中的网卡驱动属于7层模型中的数据链路层,属于四层模型中的最底层的网络接口层。

K3169的博客 305

Linux网络编程----网络接口层(数据链路层+物理层)

目录以太网协议--局域网中工作局域网的争用问题解决局域网的争用问题--交换机以太网帧格式跨网络传输认识MAC地址对比理解IP与MAC地址ARP协议ARP协议格式ARP协议作用ARP请求与ARP应答ARP请求ARP 应答查看ARP 和MAC地址对应的映射关系DNS(域名解析)ICMP--工作在网络层的协议ping命令有端口号吗? 以太网协议–局域网中工作 局域网的争用问题 碰撞域:因为以太网同一时刻只允许一个人进行网络通信,所以整个局域网可视为一个碰撞域。 详细看这个 解决局域网的争用问题–交换机 工作原

qq_45313714的博客 1362

Linux网络编程

字节序是指数据在计算机内存中存储或传输时字节的顺序。主要有大端字节序(Big - Endian)和小端字节序(Little - Endian)两种。在不同字节序的系统间进行数据传输或共享时,需进行字节序转换,否则会导致数据错误。例如,大端序系统发送的数据,小端序系统接收后需转换字节序才能正确解析。也叫大端序或大字节序。数据的高位字节存于低地址,低位字节存于高地址。

2502_90478897的博客 1185

Linux网络编程(数据链路层)

数据链路层:负责相邻设备之间数据传输 以太网协议: 如何获取相邻指定设备的mac地址:ARP协议 ARP协议: 介于网络层和链路层之间的协议 通过IP地址获取MAC地址 在局域网广播ARP请求(smac+sip+dmac +dip)以太网中对端mac地址全为1 相邻设备收到ARP请求后,检测目的ip地址与自己是否相同,如果不相同则直接丢弃,如果相同则组织ARP应答,将自己mac地址填充进行回复 两端都会将mac-ip的映射关系保存一段时间后丢弃,防止DHCP动态分配ip导致ip改变影..

AllenSquirrel 2228

Linux网络编程基础、TCP与UDP、IP与端口等

Linux网络编程基础 本文由作者单独整理归纳,实属不易,难免存在漏、错地方,如有发现,请留言指出,定将及时纠正。 文章目录Linux网络编程基础1. OSI模型2. TCP/IP模型3. TCP/IP模型特点4. TCP5. UDP6. 网络编程基础7.端口8.字节序 1. OSI模型 网络体系结构指的是网络的分层结构、以及每层使用的协议的集合。(公司很多部门,每个部门有不同的工作范畴)

weixin_45756796的博客 454
上一篇: IP分片和组装的具体过程
下一篇: Linux网络编程:NAT、代理服务、内网穿透和打洞
_dindong
博客等级 码龄2年 107粉丝 91原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_dindong

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值