网络-数据包在路由转发过程中MAC地址和IP地址,变与不变
关于MAC地址和IP地址在传输过程中变与不变的问题:
结论:MAC地址在同一个广播域传输过程中是不变的,在跨越广播域的时候会发生改变的;而IP地址在传输过程中是不会改变的(除NAT的时候),总结为 路由转发MAC不变,IP变。
我们知道的几个概念:
首先我们要知道,MAC地址是用于同意物理或逻辑第2层网络上的设备间进行通信的;
而第三层地址(IP地址)是可以在多个网络设备之间通信的。
下面我们来分析一下:
MAC地址是在同一个广播域有效的,那么去了另外一个广播域(网段)MAC地址肯定要改变的;
在同一个广播域中数据帧的mac地址是不会变的,因为所有交换机应该都知道该广播域中的所有主机的MAC地址(如果不知道会通过被动广播的方式来学习到)。既然知道所有的MAC地址,那么当我交换机收到数据帧的时候就看一下目标MAC地址,然后对照一下MAC地址表,从对应的接口仍出去就好了。
IP地址是在整个网络中有效的,整个Internet网络就相当于是一个大的地图,同样知道所有的IP地址如何到达,那么在传输过程中源ip和目的ip也是不会改变的。当路由器收到数据包的时候,检查数据包的目的IP地址,然后查找路由表(路由转发表),选择合适的接口发出去。

图中A-R4-R2-B 假设有数据帧X,传输过程中:
A到R4:MAC地址(存在的话)源地址是A,目的地址是R4;
R4到R2:MAC地址(存在的话)源地址是R4,目的地址是R2;
R2到B:MAC地址(存在的话)源地址是R2,目的地址是B;
在没有经过NAT情况下,源IP地址和目的IP地址在整个传输过程是不能改变的。
A到R4:IP地址 源地址是A,目的地址是R4;
R4到R2:IP地址 源地址是A,目的地址是R4;
R2到B:IP地址 源地址是A,目的地址是R4;
网络-数据包在路由转发过程中MAC地址和IP地址,变与不变的更多相关文章
- 转:数据包经由路由转发时源、目的IP地址及MAC地址变化情况
数据包经由路由转发时源.目的IP地址及MAC地址变化情况. IP数据包经由路由转发的时候源ip,目的ip,源MAC,目的mac是否发生改变,如何改变? A—–(B1-B2)—–(C1-C2)—— ...
- 【VS开发】使用WinPcap编程(4)——把网络数据包存储到一个文件中
这里用到的数据结构是pcap_dumper_t,这也是一个相当于文件描述符的东西,我们在用的时候先指定pcap_dumper_t *dumpfp; 使用两个函数来存储网络数据,一个是pcap_dump ...
- lwip:网络数据包读取和解析过程
1. 程序的某处(poll or interrupt)在有数据可读时调用ethernetif_input,该函数依次调用以下函数: 1.1 low_level_input(),将网络数据读入内存: 1 ...
- Linux 中的网络数据包捕获
Linux 中的网络数据包捕获 Ashish Chaurasia, 工程师 简介: 本教程介绍了捕获和操纵数据包的不同机制.安全应用程序,如 VPN.防火墙和嗅探器,以及网络应用程序,如路由程序,都依 ...
- sk_buff封装和解封装网络数据包的过程详解
转自:http://www.2cto.com/os/201502/376226.html 可以说sk_buff结构体是Linux网络协议栈的核心中的核心,几乎所有的操作都是围绕sk_buff这个结构体 ...
- sk_buff封装和解封装网络数据包的过程详解(转载)
http://dog250.blog.51cto.com/2466061/1612791 可以说sk_buff结构体是Linux网络协议栈的核心中的核心,几乎所有的操作都是围绕sk_buff这个结构体 ...
- Linux网络 - 数据包的接收过程【转】
转自:https://segmentfault.com/a/1190000008836467 本文将介绍在Linux系统中,数据包是如何一步一步从网卡传到进程手中的. 如果英文没有问题,强烈建议阅读后 ...
- Linux内核中网络数据包的接收-第一部分 概念和框架
与网络数据包的发送不同,网络收包是异步的的.由于你不确定谁会在什么时候突然发一个网络包给你.因此这个网络收包逻辑事实上包括两件事:1.数据包到来后的通知2.收到通知并从数据包中获取数据这两件事发生在协 ...
- [转]Linux网络 - 数据包的接收过程
转, 原文: https://segmentfault.com/a/1190000008836467 ------------------------------------------------- ...
随机推荐
- UVa 10318 Security Panel
题意:给你一个3*3的翻转模版,深色部分表示翻转,浅色部分不变.然后你可以在r*c的矩形里依照模版进行翻转,要求所有点亮所有块.输出最小的步骤. 思路:有一点比较好想.每个块至多被翻转一次,翻两次的效 ...
- 知道创宇CTO杨冀龙:网络安全人才决定行业格局
去年的时候,我曾经在团队内部分享了一个“网络安全人才迁徙图”,被圈子里的同行广为传播.几乎所有行业的安全人士都表示:国内网络安全行业人才资源情况并不乐观——有着10年以上网络安全行业经验的核心安全人才 ...
- Android异步更新UI的四种方式
Android异步更新UI的四种方式 2015-09-06 09:23 segmentfault 字号:T | T 大家都知道由于性能要求,android要求只能在UI线程中更新UI,要想在其他线程中 ...
- Repeater分页
void BindData() { PagedDataSource pds = new PagedDataSource(); ...
- HackRF实现ADS-B飞机信号跟踪定位
硬件平台:HackRF One软件平台:MAC运行环境搭建系统平台:OS X 10.11 EI Capitan文章特点:捕捉程序支持HackRF One且基于MAC平台验证通过有效. 1. 原理概述 ...
- PHP中常用正则表达式大全
常用正则表达式大全!(例如:匹配中文.匹配html) 匹配中文字符的正则表达式: [u4e00-u9fa5] 评注:匹配中文还真是个头疼的事,有了这个表达式就好办了 匹配双字节字符(包括汉字在内 ...
- Jumping Cows_贪心
Description Farmer John's cows would like to jump over the moon, just like the cows in their favorit ...
- Struts2 中遇到的问题
1. 警告: Could not find action or result: /Struts2Test/register.actionThere is no Action mapped for na ...
- break return
用 break 跳出循环 用 return 跳出函数 用 continue 结束本次循环开始下次循环
- Sqlserver 笔记 持续更新
1.sp_spaceused : sp_spaceused table_name ----------------------------------------------------------- ...