arp icmp 等报文格式

2024-05-11 08:20
文章标签 arp icmp 报文格式

本文主要是介绍arp icmp 等报文格式,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

ARP报文格式

ARP是一个独立的三层协议,所以ARP报文在向数据链路层传输时不需要经过IP协议的封装,而是直接生成自己的报文,其中包括ARP报头,到数据链路层后再由对应的数据链路层协议(如以太网协议)进行封装。ARP报文分为ARP请求和ARP应答报文两种,它们的报文格式可以统一为下图所示。
ARP报文格式

  • 硬件类型:占两字节,表示ARP报文可以在哪种类型的网络上传输,值为1时表示为以太网地址。
  • 上层协议类型:占两字节,表示硬件地址要映射的协议地址类型,映射IP地址时的值为0x0800。
  • MAC地址长度:占一字节,标识MAC地址长度,以字节为单位,此处为6。
  • IP协议地址长度:占一字节,标识IP得知长度,以字节为单位,此处为4。
  • 操作类型:占2字节,指定本次ARP报文类型。1标识ARP请求报文,2标识ARP应答报文。
  • 源MAC地址:占6字节,标识发送设备的硬件地址。
  • 源IP地址:占4字节,标识发送方设备的IP地址。
  • 目的MAC地址:占6字节,表示接收方设备的硬件地址,在请求报文中该字段值全为0,即00-00-00-00-00-00,表示任意地址,因为现在不知道这个MAC地址。
  • 目的IP地址:占4字节,表示接受方的IP地址。

ARP报文不是直接在网络层上发送的,它还是需要向下传输到数据链路层,所以当ARP报文传输到数据链路层之后,需要再次进行封装。以以太网为例,ARP报文传输到以太网数据链路层后会形成ARP帧。ARP帧如下图所示,他就是在ARP报文前面加了一个以太网帧头。
ARP帧格式

以太网帧头的三个字段说明

  • 目的MAC地址:占6字节,如果是ARP请求帧,因为它是一个广播帧,所以要填上广播MAC地址(FF-FF-FF-FF-FF-FF),其目标主机是网络上的所有主机。
  • 源MAC地址:占6字节,这是发送ARP帧的节点MAC地址。
  • 帧类型:占两字节,这里用来标识帧封装的上层协议,因为本帧的数据部分是ARP报文,所以直接用ARP的协议号0x0806表示就可以了。

ICMP封装

ICMP是IP层的一个组成部分,它传递查询报文和差错报文,ICMP报文通常被IP层或更高层协议(TCP或UDP)使用,它是在IP数据包内被传输的,如图1所示。

图1:ICMP封装在IP数据包内部

OSPF用IP报文直接封装协议报文,协议号为89。

OSPF分为5种报文:Hello报文、DD报文、LSR报文、LSU报文和LSAck报文。

  • Hello报文

  • DD报文

  • LSR报文

  • LSU报文

  • LSAck报文

报文头格式

OSPF这五种报文具有相同的报文头格式,长度为24字节。如图5-2所示。

图5-2 报文头格式

表5-9 OSPF报文头格式字段解释

字段名

长度

含义

Version

8比特

OSPF的版本号。对于OSPFv2,其值为2。

Type

8比特

OSPF报文的类型:

  • 1:Hello报文。

  • 2:DD报文。

  • 3:LSR报文。

  • 4:LSU报文。

  • 5:LSAck报文。

Packet length

16比特

OSPF报文的总长度,包括报文头在内,单位为字节。

Router ID

32比特

发送该报文的路由器标识。

Area ID

32比特

发送该报文的设备所属区域。

Checksum

16比特

包含除了认证字段的整个报文的校验和。

AuType

16比特

验证类型:

  • 0:不验证。

  • 1:简单认证。

  • 2:MD5认证。

    说明:

    MD5算法安全性低,存在安全风险。

Authentication

64比特

其数值根据验证类型而定:

  • 0:不对此字段作定义。

  • 1:此字段为密码信息。

  • 2:此字段包括Key ID、MD5验证数据长度和序列号的信息。

Hello报文

最常用的一种报文,其作用为建立和维护邻接关系,周期性的在使能了OSPF的接口上发送。报文内容包括一些定时器的数值、DR、BDR以及已知的邻居。Hello报文格式如图5-3所示。

图5-3 Hello报文格式

表5-10 Hello报文格式字段解释

字段名

长度

含义

Network Mask

32比特

发送Hello报文的接口所在网络的掩码。

HelloInterval

16比特

发送Hello报文的时间间隔。

Options

8比特

可选项:

  • E:允许Flood AS-External-LSAs。

  • N/P:处理Type-7 LSAs。

  • DC:处理按需链路。

Rtr Pri

8比特

DR优先级。默认为1。

说明:

如果设置为0,则设备不能参与DR或BDR的选举。

RouterDeadInterval

32比特

失效时间。如果在此时间内未收到邻居发来的Hello报文,则认为邻居失效。

Designated Router

32比特

DR的接口地址。

Backup Designated Router

32比特

BDR的接口地址。

Neighbor

32比特

邻居,以Router ID标识。

Hello报文在不同网络中的发送地址类型、发送时间间隔类型和时间间隔缺省值不同,参见表5-11。

表5-11 Hello报文的属性

网络类型

发送地址类型

发送时间间隔类型

时间间隔缺省值

广播

组播地址

HelloInterval

缺省情况下,接口发送Hello报文的时间间隔的值为10秒。

NBMA

单播地址

  • DR、BDR、有能力成为DR的设备时,发送时间间隔为HelloInterval。

  • 邻居的状态为Down时,发送时间间隔为Pollinterval,其他情况为HelloInterval。

缺省情况下,接口发送Hello报文的时间间隔的值为30秒。

缺省情况下,接口发送Pollinterval间隔为120秒。

P2P

组播地址

HelloInterval

缺省情况下,接口发送Hello报文的时间间隔的值为10秒。

P2MP

组播地址

HelloInterval

缺省情况下,接口发送Hello报文的时间间隔的值为30秒。

RIP报文类型及发送方式

RIP协议报文采用UDP封装,报文源和目的端口均是UDP端口。RIP定义了两种报文类型,分别是请求(Request)报文和响应(Response)报文。Request报文用于向邻居请求全部或部分RIP路由信息,而Response报文则用于发送RIP路由更新,在Respose报文中携带着路由及路由度量等信息。当路由设备的接口激活RIP后,该接口立即发送一个Request报文和Response报文,并开始侦听RIP协议报文,随后接口开始周期性发送Response报文。

其中,RIP-1使用的广播地址255.255.255.255作为协议报文的目的IP地址,RIP-1设备发布的广播报文在设备输出的广播域中泛洪,这使得与其同处一个广播域的其他设备都将接收该报文,并消耗资源去处理这些报文。RIP-2使用的组播地址224.0.0.9作为协议报文的目的IP地址,所有的RIP-2设备都会侦听该组播地址,进而减少对于广播域中的其他设备的影响。

RIP-2报文格式

RIP-2(即RIP version2)是一种无分类路由协议(Classless Routing Protocol),报文格式如图11-5所示。

图11-5 RIP-2的报文格式

RIP-2报文各字段含义如下。

  • 命令字段(Command):该字段用于标识RIP报文的类型。取值为1表示为Request报文,取值为2表示Response报文。
  • 版本字段(Version):在RIP-2中,该字段取值为2。
  • 地址族标识符(Address Family Identifier):与RIP-1类似。
  • 路由标记(Route Tag):用于为路由设置标记信息,可以在路由策略中根据Tag对路由进行灵活的控制。例如,当一条外部路由被引入RIP从而形成一条RIP路由时,RIP可以为该路由设置路由标记,当这条路由在整个RIP路由域传播时,路由标记不会丢失。
  • IP地址(IP Address):路由的目的网络地址。
  • 网络掩码(Subnet Mask):用于存储路由条目的目的网络掩码,RIP-2进而支持可变长子网掩码(VLSM,Variable Length Subnet Mask),支持路由聚合和CIDR(Classless Inter-Domain Routing)。
  • 下一跳(Next Hop):RIP-2定义了该字段,避免路由设备在多路访问网络上可以表面次优路径现象,在广播网上可以选择到最优下一跳地址。
  • 度量值(Metric):该路由的度量值。

这篇关于arp icmp 等报文格式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/979000

相关文章

【内网】ICMP出网ew+pingtunnel组合建立socks5隧道

❤️博客主页: iknow181 🔥系列专栏: 网络安全、 Python、JavaSE、JavaWeb、CCNP 🎉欢迎大家点赞👍收藏⭐评论✍ 通过环境搭建,满足以下条件: 攻击机模拟公网vps地址,WEB边界服务器(Windows Server 2008)模拟公司对外提供Web服务的机器,该机器可以通内网,同时向公网提供服务。内网同网段存在一台Windows内网服务

以太网通信之ARP

免责声明: 本文所提供的信息和内容仅供参考。作者对本文内容的准确性、完整性、及时性或适用性不作任何明示或暗示的保证。在任何情况下,作者不对因使用本文内容而导致的任何直接或间接损失承担责任,包括但不限于数据丢失、业务中断或其他经济损失。 读者在使用本文信息时,应自行验证其准确性和适用性,并对其使用结果负责。本文内容不构成专业技术咨询或建议,具体的技术实现和应用应根据实际情况和需要进行详细分析和验证

ARP协议和DNS的工作原理

ARP协议 ARP协议的工作原理: 首先主机向自己的网络广播发送一个arp请求,请求报文包括目的端的ip地址和目的端的以太网地址。网络上的其他机器收到这个请求,但只有被请求的才会回应一个应答报文,报文中有自己的物理地址。 arp维护了高速缓存包括最近访问的ip地址到物理地址的映射。提高了发送数据包的速度。可以防止多次发起arp请求。 arp报文格式: 这是arp通信过程两台机器的的通

使用python编写ICMP重定向攻击脚本,附代码

以下为您提供一些使用 Python 编写 ICMP 重定向攻击脚本的示例及相关代码: 参考示例如下: #!/usr/bin/python from scapy.all import *import osimport sysimport randomdef randomIP():ip = ".".join(map(str, (random.randint(0,255) for _ in

【网络基础】解析ARP协议:概念、工作原理、安全风险、相关指令

文章目录 1. 引入2. 概念3. ARP协议工作过程4. 通过指令 获取当前主机所处局域网的所有IP和MAC地址?5. arp欺骗5.1 防护措施 1. 引入 我们知道,在局域网通信中,一台主机想向另一台主机发送数据,自然需要得到目标网络 以及 目标主机,但发送方只知道目标IP,而不知道对方的MAC地址,自然就无法封装MAC帧; 此时就有一个概念:在同一个网段,通过目

常见协议工作原理 https ARP ICMP DHCP PING

1. HTTPS(HyperText Transfer Protocol Secure) HTTPS是HTTP的安全版本,它在HTTP和TCP之间加入了SSL/TLS协议层,用于加密数据传输,确保数据的安全性和完整性。 工作原理: 握手:客户端和服务器通过SSL/TLS握手协商加密算法和交换密钥。证书验证:服务器向客户端提供证书,客户端验证证书的有效性。加密通信:使用协商的密钥对数据进行加密

网络层 IV(ARP、DHCP、ICMP)【★★★★★★】

(★★)代表非常重要的知识点,(★)代表重要的知识点。 一、地址解析协议(ARP)(★★) 在局域网中,由于硬件地址已固化在网卡上的 ROM 中,因此常常将硬件地址称为物理地址。因为在局域网的 MAC 帧中的源地址和目的地址都是硬件地址,因此硬件地址又称为 MAC 地址。即物理地址、硬件地址和 MAC 地址常常作为同义词出现。 1. IP 地址与 MAC 地址 从层次的角度看,

【网络】数据链路层协议——以太网,ARP协议

目录 1.局域网转发 2.MAC地址 2.1.什么是MAC地址 2.2.Mac地址的作用 2.3.MAC地址和IP地址的区别和联系 3.以太网协议 4.MTU,IP MTU,MSS 4.1.MTU 4.2. IP MTU 4.3. MSS 4.4. 区别及联系 5.局域网的数据碰撞 5.1.局域网内通信过程  5.2.数据碰撞问题 5.3.令牌环网和以太网解决数据碰撞

Android文件图片上传的详细讲解(一)HTTP multipart/form-data 上传报文格式实现手机端上传

来源url:http://topmanopensource.iteye.com/blog/1605238 Android文件图片上传的详细讲解(一)HTTP multipart/form-data 上传报文格式实现手机端上传 博客分类: Android 开发学习        做一个文件上传到服务器端可能需要以下几点知识,如下: 1.HTTP multipart/form-d

【亲测有效】icmp,tcpping工具源码

icmp,tcpping工具源码 import socketimport subprocessimport platformimport timeimport sysdef icmp_ping(host, count=4):param = '-n' if platform.system().lower() == 'windows' else '-c'try:# 执行 ping 命令res