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

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

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

不过MAC地址是变化的,因为发送端开始不知道目的主机的MAC地址,所以每经过一个路由器,MAC地址都会发生变化。

目的MAC地址是如何得到的?

TCP/IP里面是用的ARP协议。比如新建了一个内网,如果一台机器A找机器B,封装Fram时(OSI的第二层用的数据格式),要封装对方的 MAC,开始时A不知道B的MAC,只知道IP,它就发一个ARP包,源IP是自己的,目的IP是B的,源MAC是自己的,目的MAC是广播的。然后这个ARP请求包在内网内被广播,当其他机器接到这个包时,用目的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。


本文出自 “E网情深” 博客,转载请与作者联系!

本页内容版权归属为原作者,如有侵犯您的权益,请通知我们删除。
1、隐藏nginx header版本号 2、更改源码隐藏软件名称 3、更改nginx默认用户及用户组 4、配置nginx worker进程个数 5、根据CPU核数进行nginx进程优化 6、nginx事件处理模型优化 7、调整Nginx worker单个进程允许的客户端最大连接数 8、配置Nginx worker进程最大打开文件数 9、开启高效的文件传输模式 10、设置连接超时时间 11、上传文件大小设置(动态应用) 12、fastcgi调优(配合PHP引擎动态服务) 13、配置nginx gzip压缩功
收到通知公司断网,公司核心交换机是两台cisco4507做了VSS,但是由于出口线只有一个跟所以没有正常切换,进入机房发现主交换机办卡都是亮红灯,经过重启,恢复正常。 但是楼层网络依然不通,进入弱电间,查看交换机端口不亮。 console进入交换机,发现error-disable ZPBMC-F16-1# showetherchannelsummary Flags:D-downP-bundledinport-channel I-stand-alones-suspended H-Hot-standby(LA

Linux用户与组之权限管理 - 2016-08-22 18:08:54

Linux用户与之权限组管理 权限(rwx、sst、umask) chown chmod ACL(见下篇) 试验环境:CentOS 7.2 与CentOS 6.8,具体会在应用场景明确指出 权限 Linux系统对用户与组的管理,其具体操作手段就是对于权限的分配,而常见的权限分配工具有 rwx, sst, umask, ACL. 跟用户与组有uid和gid一样,权限也有自己的数字标识,用八进制数表示。 我们先逐一作个简单认知,其具体的应用就在后面的实验中慢慢说明了! rwx 当我们在ls -l 时,会看见如
1、LVS环境组网 由于是使用的VM环境,自己PC当作客户机(即公网地址),调度器与服务器都是VM中虚拟机,所以客户和所有服务器之间都是物理直接相连网络,逻辑拓扑图如下: 2、ipvsadm安装前准备 外部IP地址 内部IP地址 角色 10.211.55.16/24 192.168.1.3/24 LVS调度器(虚拟机) 10.211.55.15/24 192.168.1.4/24 RS1(虚拟机) 10.211.55.14/24 192.168.1.5/24 RS2(虚拟机) 10.211.55.19/2

CentOS下搭建cacti监控 - 2016-08-22 17:08:13

一、cacti 监控软件简介 1. cacti 是用 php 语言实现的一个软件,它的主要功能是用 snmp 服务获取数据,然后用 rrdtool 储存和更新数据,当用户需要查看数据的时候用 rrdtool 生成图表呈现给用户。因此, snmp 和 rrdtool 是 cacti 的关键。 Snmp 关系着数据的收集, rrdtool 关系着数据存储和图表的生成。 2. Mysql 配合 PHP 程序存储一些变量数据并对变量数据进行调用,如:主机名、主机 ip 、 snmp 团体名、端口号、模板信息等变量

记一次服务器timewait事件 - 2016-08-22 17:08:07

之前一直没怎么关注过TCP,直到公司这次的事件,这才开始慢慢去研究,去学习TCP的相关知识,中间也尝试了很多方法,走了很多弯路,因此记下这篇文章,方便以后回顾 首先说下网络架构 Nginx和jetty都在同一个服务器,Nginx代理HTTP流量至多个jetty应用,基本情况就是这样 首先我们来看下,为什么会有TIMEWAIT的状态 客户端主动关闭连接时,会发送最后一个ack后,然后会进入TIME_WAIT状态,再停留2个MSL时间,进入CLOSED状态。 也就是说一般timewait只会出现在client
因为都知道安装linux软件包rpm 很好用;但是不能解决软件包的个别依赖关系;所以安装数据包时出现依赖时、yum到可以解决这类数据包依赖关系;而且还能便于管理大量数据包更新的问题;它的特点 、可以同时配置多个资源库(Repository) ,简洁的配置文件(/etc/yum.conf) ,自动解决增加或删除rpm包时遇到的倚赖性问题,保持与RPM数据库的一致性这也是它的优势。因此解决数据包的依赖关系;也是基于服务器和客户端的一种应用。 首先呢 介绍一下YUM 的简单指令: yum info // 查询详
最近在做一个Exchange升级的项目,在部署Exchange Server 2016之前需要将现有环境的Exchange 2010 SP1更新至Exchange Server 2010 SP3RU11或更新的版本中。在更新完SP3+RU11后发现登录OWA时出现异常,在最开始初步以为是RU11的问题,但是卸载后RU11还是一样的问题,所以当时排除是花了比较长的时间的。如下是本次的现象和最后解决的办法供大家参考。 升级至SP3+RU11重启后发现有时可以登录OWA但是点击“新建“邮件时提示 ”无法完成您的
谁说Lync Server 前端不可以使用Windows网络负载平衡实现高可用的?(仅限测试环境) 本章内容有: 1.两台Lync Server安装Windows功能---网络负载平衡 2.配置网络负载平衡 3.DNS记录修改 4.测试故障切换(模拟两种故障,网络故障和服务故障) 5.开始的时候别忘了上一章中的提示,将两台前端Server都进行重启 = = 安装网络负载平衡 两台服务器都需要进行安装 = = 配置网络负载平衡 1)新建群集 2)将LyncFE01先添加到群集中 3)群集IP自己随便填写 4
建立完存储池之后,创建虚拟硬盘的时候,在此虚拟磁盘上创建存储层无法勾选,原因是windows系统识别不出来RAID卡下的硬盘,显示未知如图: 解决办法:powershell 运行在管理员模式下,用下面两条命令(视情况使用其中一条命令即可)。 set-physicaldisk -friendlyname physicaldisk3(看名称自己改) -mediatype hdd (转换磁盘类型为HDD) set-physicaldisk -friendlyname physicaldisk3(看名称自己改)-