IP路由转发
来源:互联网 发布:帝国cms手机站 编辑:程序博客网 时间:2024/05/17 17:18
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。
转载自http://blog.csdn.net/gao1440156051/article/details/51213898
- IP路由转发
- 开机启动ip路由转发的Shell
- 公网ip路由设置端口转发
- 用IP转发和Route路由实现跨网段互访
- IP路由的转发原理 2012-03-20
- 路由转发过程的IP及MAC地址变化
- ip数据包经由路由转发的时候源ip,目的ip是否改变
- ip数据包经由路由转发的时候源ip MAC,目的ip 目的MAC是否改变
- ip转发
- Windows开启路由转发
- 路由表转发算法
- 一次路由,多次转发
- 路由分组转发算法
- 路由转发过程
- iptables实现路由转发
- 路由网关转发配置
- 路由转发原理
- ip_forward与路由转发
- 工作心得(day 3)--前一天的数据库问题及phpcms
- javaWeb服务详解【客户端调用】(含源代码,测试通过,注释) ——applicationContext.xml
- zookeeper集群
- 集成学习以及分类样本不均衡问题
- 直方图均衡化处理
- IP路由转发
- JavaScript中eval()函数用法详解
- 05-S3C2440学习之内核(移植)linux3.4.2移植(3)之支持DM9000C网卡及修改支持串口2
- PAT(BL)1003_我要通过
- STM32F1x系列——按键输入实验
- Unable to find a single main class from the following candidates
- 江学院-Problem K: qwb与小数
- java反射的field.get(null)
- php时间获取