IP经过路由器都发生了什么
IP数据包到路由器之后,它首先要读去IP包头的目标IP地址,然后查看路由表,根据路由协议算法,确定一条最佳的路径,为什么要这样做呢,那是因为要确定这个数据包应该从路由器上的那个接口上转发出去,很明显路由的每一条可用的路由都和路由嚣上的接口是对应的,就这样一个数据包就离开了这个路由器。事情就是这样。看见楼上有一个不太正确的说法,IP数据包头里的源IP和目标IP都不会被改变,如果改变数据包不可能到达或者回来,但只有一种情况,源和目标IP是被改变的,那就是NAT.
路由器转发数据包不会对它的IP源地址和目标地址做修改,只会修改MAC.
具体路由器转发规则如下:
当主机A发向主机B的数据流在网络层封装成IP数据包,IP数据包的首部包含了源地址和目标地址。主机A会用本机配置的24位IP网络掩码255.255.255.0与目标地址进行与运算,得出目标网络地址与本机的网络地址是不是在同一个网段中。如果不是将IP数据包转发到网关。
在发往网关前主机A还会通过ARP的请求获得默认网关的MAC地址。在主机A数据链路层IP数据包封装成以太网数据帧,然后才发住到网关……也就是路由器上的一个端口。
当网关路由器接收到以太网数据帧时,发现数据帧中的目标MAC地址是自己的某一个端口的物理地址,这时路由器会把以太网数据帧的封装去掉。路由器认为这个IP数据包是要通过自己进行转发,接着它就在匹配路由表。匹配到路由项后,它就将包发往下一条地址。
路由器转发数据包就是这样,所以它始终是不会改IP地址的。只会改MAC.
当有数据包传到路由器时,路由器首先将其的目的地址与路由表进行对比,如果是本地网络,将不会进行转发到外网络,而是直接转发给本地网内的目的主机,改变的只是数据包的源地址,(原源地址MAC变为了路由器的MAC);当然其中的过程关系到相关的协议的使用,像什么ARP,IP等。但是如果目的地址经路由表对比,发现不是在本网中,将改变源地址的IP(原源地址的Ip地址改为了路由器的IP地址),路由器将熟数据包转发到相应的端口,进行通信。
IP经过路由器都发生了什么相关推荐
- 计算机网络——网络层路由协议、IP组播、移动 IP、路由器
文章目录 前言 一.RIP 协议与距离向量算法 1.RIP 协议 2.距离向量算法 二.OSPF 协议与链路状态算法 1.OSPF 协议 2.链路状态算法 三.BGP 协议和三种路由协议的比较 1.B ...
- 在浏览器中输入URL并回车后都发生了什么?
1.解析URL ________________________________________________________________________ 关于URL: URL(Universa ...
- Oppo面经:浏览器输入URL都发生了什么?
1.讲一下Java的虚拟机 2.说说怎么能让虚拟机中的方法区直接爆满 3.讲一下Java的垃圾回收机制 4.把Java中的容器类都讲一下 5.Java中的锁是怎么实现的? 6.引用计数法有啥缺点呢 7 ...
- 813-当你请求www.baidu.com时都发生了什么?
当你请求www.baidu.com时都发生了什么? 同一个局域网中不同主机的互联 先看个简单的,同一个局域网中的不同主机A.B之间是如何互联交换数据的.如下图: 那,既然是同一个局域网中,说明A.B的 ...
- 这一次!我在百度告诉你,当你请求百度时都发生了什么...
文章目录 一.Hi All 二.同一个局域网中不同主机的互联 三.跨网段不同主机的互联 四.百度的响应包如何再打回到你的机器? 五.求关注啦! 一.Hi All 这一次,我在IDC机房告诉你,当你请求 ...
- 当你打开网页的时候,世界都发生了什么(1)
你有没有好奇过,当你试图打开一个网页的时候,这个世界上都发生了一些什么事情?会不会因为你手气键落,产生了蝴蝶效应,指尖的风拂起千年后你梦中的那个女孩的刘海?咳,也不是没有可能.今天我就来告诉你会发生什 ...
- 服务器光猫一直亮不响应,光猫光信号正常,且光猫和路由器都重启过,还是上不了网咋办?...
昨天晚上,网邻空间接到朋友的电话说上不了网叫我过去帮忙检查一下,因只隔了一栋楼,我很快就赶到她家了.到后,先查看路由器,线路连接正常.接着,到弱电箱查看光猫,PON指示灯常亮说明光信号正常,网线连接也 ...
- 关于宽带路由器都有DNS代理功能之说
某日移动工作人员来单位排除网络故障,偶然发现的一点疑惑,就是本地电脑ip的DNS服务器设置成移动提供的地址或是本地路由的地址,都可以正常解析访问网站,莫非路由器也能通过DNS服务? 感觉很是奇怪,在网 ...
- 网络与安全1【什么ARP***,IP地址欺骗都是浮云】买台300元的交换机搞定
今天看到PConline上的相关文章,感觉写得不错,在这里分享给大家. 至于相关的配置命令,我也会紧接着跟进,与大家分享,若有什么不正确的地方,也欢迎大家多多交流. 首先限定一下话题的范围,本贴谈论的 ...
最新文章
- mysql complete_mysql 无意重启 [Note] /usr/sbin/mysqld: Normal shutdown
- Java和Android中一些常用的公共方法
- VC++ 从View类获取各种指针编程实例
- 我们应该这样理解鸿蒙
- 利用qsort二级排序
- 女婿的行为,老丈人哪些不能管,哪些必须管,哪些可管可不管?
- python中类的构成_Python类的构成元素
- 面试时,如何向公司提问?
- 如何编写可移植的c/c++代码
- 居中 html css
- MATLAB编程实例
- Cadence PSpice 仿真3: 电容器充放电瞬态仿真图文教程
- 如何把网站程序文件快速上传到服务器空间经历分享
- and no properties discovered to create BeanSerializer 问题解决
- ROG华硕幻系列原厂预装系统恢复出厂设置安装包
- 浏览器缩放时,页面布局发生变化
- 快速上手 Spring Boot 项目开发
- 最详细的MOS管讲解
- Arthas开源一周年,Github Star 160K,我们一直在坚持什么?
- mysql语法错误1064_MySQL语法错误#1064