轉載自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是否改变相关推荐

  1. IP数据包经由路由转发的时候,源ip和目的IP是否改变

    IP数据包经由路由转发的时候源IP,目的ip是否改变? 这是个搞网络的基础问题,答案是不能改变的,除非做了nat转换才能改变.否则,数据包在整个传输过程中,源IP和目的IP不会发生改变. 不过MAC地 ...

  2. ip数据包经由路由转发的时候源ip,目的ip是否改变

    ip数据包经由路由转发的时候源ip,目的ip是否改变? 最近面试网络方面的经常问到这个问题,答案是不能改变的,*除非做了nat转换才能改变. 不过mac地址是变化的,因为发送端开始不知道目的主机的ma ...

  3. 数据包经由路由转发时源、目的IP地址及MAC地址变化情况

    IP数据包经由路由转发的时候源ip,目的ip,源MAC,目的mac是否发生改变,如何改变? A-–(B1-B2)-–(C1-C2)---E 如上拓扑图为例,B1和B2是路由器B上的两个接口,C1和C2 ...

  4. IP数据包的路由转发

    IP路由器是连接多个IP网络的设备,其主要的工作就是为经过IP路由器的每个IP数据包寻找一条最佳传输路径. 路由表就是记录了各种传输路径的数据的一张表,分为静态路由表和动态路由表. 静态路由表是事先固 ...

  5. Teardrop攻击--伪造虚假的IP数据包发送并抓取及完成简易静态网页

    目录 Teardrop攻击--伪造虚假的IP数据包发送并抓取 一.相关介绍 1.IP协议 2.Teardrop攻击 二.编写Teardrop程序(伪造一个虚假地址的IP包) 三.参考链接 完成简易静态 ...

  6. 计算机网络ip数据包分析题,计算机网络课程设计-IP数据包解析实验报告

    计算机网络课程设计-IP数据包解析实验报告 解析 IP数据报实验报告目录目录 21.课程设计目的 .22.课程设计要求 .23.相关知识 .24.课程设计分析 .64.1 网卡设置64.2 使用套接字 ...

  7. Tracert(跟踪路由)是路由跟踪实用程序,用于确定 IP 数据包访问目标所采取的路径...

    Tracert(跟踪路由)是路由跟踪实用程序,用于确定 IP 数据包访问目标所采取的路径.   Tracert 命令用 IP 生存时间 (TTL) 字段和 ICMP 错误消息来确定从一个主机到网络上其 ...

  8. ip数据包转发和iptables

    Linux内核数据包转发功能和iptables的关系 内核数据包转发(路由)功能是内核将从A网卡接收到的目的地址不是自身地址的ip数据包通过B网卡发送出去的功能(即路由器的功能). 使用以下命令即可开 ...

  9. 第五期 IP数据包结构和OSI第三层网络层

    一. IP数据包格式 优先级与服务类型(8位):优先级与服务类型 标识符.标志.段偏移量:这几个字段用来对数据包进行标识,使数据到达目的端重组的时候,不会乱序 首部长度:ip包头首部长度最短20字节 ...

最新文章

  1. gradle仓库配置
  2. mybatis处理查询map列表属性为null的问题,而导致查询map无该key对象
  3. 第十六届全国大学生智能车汽车竞赛第二次扩大会议
  4. css中那些容易被我们程序猿所忽略的选择器
  5. 计划策略的配置参数(1)
  6. 工作之本地存储RAID5一硬盘离线恢复简要说明
  7. 一些常用且实用的原生 JavaScript函数[转]
  8. java方法不可覆盖_详解Java构造方法为什么不能覆盖,我的钻牛角尖病又犯了.......
  9. 论文趣读:人工智能里程碑?回顾2015年登上Nature的DQN(全文翻译+批注)
  10. c语言字符串汇编,C语言调用汇编实现字符串对换
  11. ubuntu16.04下ROS操作系统学习笔记(三 / 四)ROS基础-ROS中的关键组件
  12. carmaker/matlab联合仿真(二) 新建测试场景
  13. 动态获取API函数地址
  14. java中类图概念_UML类图详细介绍
  15. 基于ARM-Linux系统开发平台下嵌入式MP3的设计与实现
  16. Foxmail登录网易邮箱提示LOGIN Login error user suspended
  17. 【C语言】充当右值时,数组名前加不加的区别
  18. ubuntu下公式编辑器EqualX的安装和使用
  19. php怎么改北京时间,php如何设置北京时间
  20. haproxy 客户端真实IP地址添加白名单

热门文章

  1. 按键精灵手机版 山海插件 Call shanhai.SetIME(1) 设置讯飞输入法无效
  2. python代码加密--pyinstaller
  3. 新零售模式有新玩法 个人如何抓住这波红利?
  4. thinkpad e480 f1键常亮没有声音
  5. antd DatePicker RangePicker限制时间范围,其中结束时间限制时分秒不可选
  6. 笔记本3060显卡+windows11配置tensorflow-gpu
  7. WKWebView 点击无反应
  8. win11安装python3环境
  9. 小米手机5怎么卡刷开发版开启root超级权限
  10. ubuntu 10.04 安装sun java