ip数据包经由路由转发的时候源ip MAC,目的ip 目的MAC是否改变
轉載自https://blog.csdn.net/yiluyangguang1234/article/details/56666109
ip数据包经由路由转发的时候源ip,目的ip是否改变?
最近面试网络方面的经常问到这个问题,答案是不能改变的,*除非做了nat转换才能改变。
不过mac地址是变化的,因为发送端开始不知道目的主机的mac地址,所以每经过一个路由器mac地址是变化的。
目的mac地址是如何得到的?
TCP/IP里面是用的ARP协议。比如新建了一个内网,如果一台机器A找机器B,封装FRAME时(OSI的第二层用的数据格式),要封装对方的MAC,开始时A不知道B的MAC,只知道IP,它就发一个ARP包,源IP是自己的,目的IP是B的,源MAC是自己的,目的MAC是广播的。然后这个请求包在内网内被广播,当其他机器接到这个包时,用目的IP和自己的IP比较,不是的话就丢弃。B接到时,发现IP与自己的一样,就答应这个包的请求,把自己的MAC送给A。如果B是其他子网的机器,那么路由器会判断出B是其他子网,然后路由器把自己的MAC返回给A,A以后再给B发包时,目的MAC封装的是路由器的。
路由转发过程:
当主机A发向主机B的数据流在网络层封装成IP数据包,IP数据包的首部包含了源地址和目标地址。主机A会用本机配置的24位IP网络掩码255.255.255.0与目标地址进行与运算,得出目标网络地址与本机的网络地址是不是在同一个网段中。如果不是将IP数据包转发到网关。
在发往网关前主机A还会通过ARP的请求获得默认网关的MAC地址。在主机A数据链路层IP数据包封装成以太网数据帧,然后才发住到网关……也就是路由器上的一个端口。
当网关路由器接收到以太网数据帧时,发现数据帧中的目标MAC地址是自己的某一个端口的物理地址,这时路由器会把以太网数据帧的封装去掉。路由器认为这个IP数据包是要通过自己进行转发,接着它就在匹配路由表。匹配到路由项后,它就将包发往下一条地址。
路由器转发数据包就是这样,所以它始终是不会改IP地址的。只会改MAC.
当有数据包传到路由器时,路由器首先将其的目的地址与路由表进行对比,如果是本地网络,将不会进行转发到外网络,而是直接转发给本地网内的目的主机;但是如果目的地址经路由表对比,发现不是在本网中,有nat就将改变源地址的IP(原源地址的Ip地址改为了路由器的IP地址),路由器将数据包转发到相应的端口,进行通信。
比如:
如:A访问B,
首先对比是否同一子网,如果是,检查ARP表,有B的MAC就直接发送,没有就发送ARP请求.如果否,发送到默认网关C,源IP为A,源MAC为A,目的IP为B,目的MAC地址为C,
C接收到这个包,检查路由表,发送到下一跳D,源IP为A,源MAC为C,目的IP为B,目的MAC为D…..
如此循环,直到发送到B.
NAT为特殊应用,会修改源IP为网关自己外网IP。
ip数据包经由路由转发的时候源ip MAC,目的ip 目的MAC是否改变相关推荐
- IP数据包经由路由转发的时候,源ip和目的IP是否改变
IP数据包经由路由转发的时候源IP,目的ip是否改变? 这是个搞网络的基础问题,答案是不能改变的,除非做了nat转换才能改变.否则,数据包在整个传输过程中,源IP和目的IP不会发生改变. 不过MAC地 ...
- ip数据包经由路由转发的时候源ip,目的ip是否改变
ip数据包经由路由转发的时候源ip,目的ip是否改变? 最近面试网络方面的经常问到这个问题,答案是不能改变的,*除非做了nat转换才能改变. 不过mac地址是变化的,因为发送端开始不知道目的主机的ma ...
- 数据包经由路由转发时源、目的IP地址及MAC地址变化情况
IP数据包经由路由转发的时候源ip,目的ip,源MAC,目的mac是否发生改变,如何改变? A-–(B1-B2)-–(C1-C2)---E 如上拓扑图为例,B1和B2是路由器B上的两个接口,C1和C2 ...
- IP数据包的路由转发
IP路由器是连接多个IP网络的设备,其主要的工作就是为经过IP路由器的每个IP数据包寻找一条最佳传输路径. 路由表就是记录了各种传输路径的数据的一张表,分为静态路由表和动态路由表. 静态路由表是事先固 ...
- Teardrop攻击--伪造虚假的IP数据包发送并抓取及完成简易静态网页
目录 Teardrop攻击--伪造虚假的IP数据包发送并抓取 一.相关介绍 1.IP协议 2.Teardrop攻击 二.编写Teardrop程序(伪造一个虚假地址的IP包) 三.参考链接 完成简易静态 ...
- 计算机网络ip数据包分析题,计算机网络课程设计-IP数据包解析实验报告
计算机网络课程设计-IP数据包解析实验报告 解析 IP数据报实验报告目录目录 21.课程设计目的 .22.课程设计要求 .23.相关知识 .24.课程设计分析 .64.1 网卡设置64.2 使用套接字 ...
- Tracert(跟踪路由)是路由跟踪实用程序,用于确定 IP 数据包访问目标所采取的路径...
Tracert(跟踪路由)是路由跟踪实用程序,用于确定 IP 数据包访问目标所采取的路径. Tracert 命令用 IP 生存时间 (TTL) 字段和 ICMP 错误消息来确定从一个主机到网络上其 ...
- ip数据包转发和iptables
Linux内核数据包转发功能和iptables的关系 内核数据包转发(路由)功能是内核将从A网卡接收到的目的地址不是自身地址的ip数据包通过B网卡发送出去的功能(即路由器的功能). 使用以下命令即可开 ...
- 第五期 IP数据包结构和OSI第三层网络层
一. IP数据包格式 优先级与服务类型(8位):优先级与服务类型 标识符.标志.段偏移量:这几个字段用来对数据包进行标识,使数据到达目的端重组的时候,不会乱序 首部长度:ip包头首部长度最短20字节 ...
最新文章
- gradle仓库配置
- mybatis处理查询map列表属性为null的问题,而导致查询map无该key对象
- 第十六届全国大学生智能车汽车竞赛第二次扩大会议
- css中那些容易被我们程序猿所忽略的选择器
- 计划策略的配置参数(1)
- 工作之本地存储RAID5一硬盘离线恢复简要说明
- 一些常用且实用的原生 JavaScript函数[转]
- java方法不可覆盖_详解Java构造方法为什么不能覆盖,我的钻牛角尖病又犯了.......
- 论文趣读:人工智能里程碑?回顾2015年登上Nature的DQN(全文翻译+批注)
- c语言字符串汇编,C语言调用汇编实现字符串对换
- ubuntu16.04下ROS操作系统学习笔记(三 / 四)ROS基础-ROS中的关键组件
- carmaker/matlab联合仿真(二) 新建测试场景
- 动态获取API函数地址
- java中类图概念_UML类图详细介绍
- 基于ARM-Linux系统开发平台下嵌入式MP3的设计与实现
- Foxmail登录网易邮箱提示LOGIN Login error user suspended
- 【C语言】充当右值时,数组名前加不加的区别
- ubuntu下公式编辑器EqualX的安装和使用
- php怎么改北京时间,php如何设置北京时间
- haproxy 客户端真实IP地址添加白名单
热门文章
- 按键精灵手机版 山海插件 Call shanhai.SetIME(1) 设置讯飞输入法无效
- python代码加密--pyinstaller
- 新零售模式有新玩法 个人如何抓住这波红利?
- thinkpad e480 f1键常亮没有声音
- antd DatePicker RangePicker限制时间范围,其中结束时间限制时分秒不可选
- 笔记本3060显卡+windows11配置tensorflow-gpu
- WKWebView 点击无反应
- win11安装python3环境
- 小米手机5怎么卡刷开发版开启root超级权限
- ubuntu 10.04 安装sun java