数据包转发过程

2024-01-20 11:32
文章标签 数据 过程 包转发

本文主要是介绍数据包转发过程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 数据包转发过程
    • 中间网络数据传输
    • 接收方数据解封装
    • 地址解析协议(ARP)
      • ARP是什么呢?
      • ARP原理

数据包转发过程

中间网络数据传输

封装好的完整数据,将会在网络中被传递

接收方数据解封装

封装不一定按照顺序一层一层下来,可能应用层直接到网络层等

地址解析协议(ARP)

从网络分层上看,我们知道二层网络中,使用 MAC 地址进行传输,MAC 地址做为数据链路层的设备标识符。

三层网络中,使用 IP 地址进行传输,IP 地址做为网络层的设备标识符。

域名通过 DNS 解析成 IP 地址,有了 IP 地址就可以在网络上找到目的地。

IP 地址通过 ARP ,获得 MAC 地址,有了 MAC 地址才能在物理网络上传输数据。

ARP是什么呢?

ARP(Address Resolution Protocol)地址解析协议,根据已知的IP地址解析获得其对应的MAC地址。主机通过 ARP 查询到 MAC 地址后,将在 ARP 缓存表中增加映射表项,即 IP 地址和 MAC 地址的映射表项。

ARP原理

ARP 是通过 ARP 请求ARP 响应报文确定 MAC 地址的。

假如主机 A 向同一网段上的主机 B 发送数据。主机 A 的 IP 地址为 10.0.0.1 ,主机 B 的 IP 地址为 10.0.0.2 ,主机 C 的 IP 地址为 10.0.0.3 。它们都不知道对方的 MAC 地址。ARP 地址解析过程如下:

  • 主机 A 首先查看自己的 ARP 表(即 ARP 缓存表),确定是否有主机 B 的 IP 地址对应表项。如果有,则直接使用表项中的 MAC 地址进行封装,封装成帧后发送给主机 B 。

  • 如果主机 A 的 ARP 表没有对应的表项,就发送一个广播帧,源 IP 和源 MAC 地址是主机 A ,目的 IP 地址是主机 B ,目的 MAC 地址是广播 MAC 地址,即 FFFF-FFFF-FFFF 。这就是 ARP 请求报文

  1. ARP 请求是广播报文,同一个网段的所有主机都能收到。只有主机 B 发现报文中的目的 IP 地址是自己,于是主机 B 发送响应报文给主机 A ,源 MAC 地址和源 IP 地址是主机 B ,目的 MAC 地址和目的 IP 地址是主机 A ,这个报文就叫 ARP 响应报文。同时,主机 B 的 ARP 表记录主机 A 的映射关系,即主机 A 的 IP 地址和 MAC 地址的对应关系。

  2. 主机 C 也收到了 ARP 请求报文,但目的 IP 地址不是自己,所以不会进行响应。于是主机 C 添加主机 A 的映射关系到 ARP 表,并丢弃 ARP 请求报文。

  3. 主机 A 收到 ARP 响应报文后,添加主机 B 的映射关系,同时用主机 B 的 MAC 地址做为目的地址封装成帧,并发送给主机 B 。

主机发送报文时,首先会查看它的 ARP 表,目的是为了确定是否是已知的设备 MAC 地址。如果有,就直接使用;如果没有,就发起 ARP 请求获取。不过,缓存是有一定期限的。ARP 表项在老化时间( aging time )内是有效的,如果老化时间内未被使用,表项就会被删除。

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

  • 动态 ARP 表项由 ARP 动态获取,因此在网络通信中,无需事先知道 MAC 地址,只要有 IP 地址即可。如果老化时间内未被使用,表项就会被自动删除。
  • 静态 ARP 表项是手工配置,不会老化。静态 ARP 表项的优先级高于动态 ARP 表项,可以将相应的动态 ARP 表项覆盖。

arp -a查看当前网卡MAC地址

arp -d *(管理员运行)清除所有地址缓存

由于要触发arp解析MAC地址,有时候ping的第一个包延迟会远大于其他的包

其他还有代理ARP、免费ARP、RARP等

这篇关于数据包转发过程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

SQL Server修改数据库名及物理数据文件名操作步骤

《SQLServer修改数据库名及物理数据文件名操作步骤》在SQLServer中重命名数据库是一个常见的操作,但需要确保用户具有足够的权限来执行此操作,:本文主要介绍SQLServer修改数据... 目录一、背景介绍二、操作步骤2.1 设置为单用户模式(断开连接)2.2 修改数据库名称2.3 查找逻辑文件名

canal实现mysql数据同步的详细过程

《canal实现mysql数据同步的详细过程》:本文主要介绍canal实现mysql数据同步的详细过程,本文通过实例图文相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的... 目录1、canal下载2、mysql同步用户创建和授权3、canal admin安装和启动4、canal

MySQL存储过程之循环遍历查询的结果集详解

《MySQL存储过程之循环遍历查询的结果集详解》:本文主要介绍MySQL存储过程之循环遍历查询的结果集,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言1. 表结构2. 存储过程3. 关于存储过程的SQL补充总结前言近来碰到这样一个问题:在生产上导入的数据发现

SpringBoot集成LiteFlow实现轻量级工作流引擎的详细过程

《SpringBoot集成LiteFlow实现轻量级工作流引擎的详细过程》LiteFlow是一款专注于逻辑驱动流程编排的轻量级框架,它以组件化方式快速构建和执行业务流程,有效解耦复杂业务逻辑,下面给大... 目录一、基础概念1.1 组件(Component)1.2 规则(Rule)1.3 上下文(Conte

使用SpringBoot整合Sharding Sphere实现数据脱敏的示例

《使用SpringBoot整合ShardingSphere实现数据脱敏的示例》ApacheShardingSphere数据脱敏模块,通过SQL拦截与改写实现敏感信息加密存储,解决手动处理繁琐及系统改... 目录痛点一:痛点二:脱敏配置Quick Start——Spring 显示配置:1.引入依赖2.创建脱敏

Spring Boot 整合 Apache Flink 的详细过程

《SpringBoot整合ApacheFlink的详细过程》ApacheFlink是一个高性能的分布式流处理框架,而SpringBoot提供了快速构建企业级应用的能力,下面给大家介绍Spri... 目录Spring Boot 整合 Apache Flink 教程一、背景与目标二、环境准备三、创建项目 & 添

详解如何使用Python构建从数据到文档的自动化工作流

《详解如何使用Python构建从数据到文档的自动化工作流》这篇文章将通过真实工作场景拆解,为大家展示如何用Python构建自动化工作流,让工具代替人力完成这些数字苦力活,感兴趣的小伙伴可以跟随小编一起... 目录一、Excel处理:从数据搬运工到智能分析师二、PDF处理:文档工厂的智能生产线三、邮件自动化:

Python数据分析与可视化的全面指南(从数据清洗到图表呈现)

《Python数据分析与可视化的全面指南(从数据清洗到图表呈现)》Python是数据分析与可视化领域中最受欢迎的编程语言之一,凭借其丰富的库和工具,Python能够帮助我们快速处理、分析数据并生成高质... 目录一、数据采集与初步探索二、数据清洗的七种武器1. 缺失值处理策略2. 异常值检测与修正3. 数据

pandas实现数据concat拼接的示例代码

《pandas实现数据concat拼接的示例代码》pandas.concat用于合并DataFrame或Series,本文主要介绍了pandas实现数据concat拼接的示例代码,具有一定的参考价值,... 目录语法示例:使用pandas.concat合并数据默认的concat:参数axis=0,join=

pytest+allure环境搭建+自动化实践过程

《pytest+allure环境搭建+自动化实践过程》:本文主要介绍pytest+allure环境搭建+自动化实践过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、pytest下载安装1.1、安装pytest1.2、检测是否安装成功二、allure下载安装2.