IP 转发分组的流程
IP 转发分组的流程
数据路由:路由器在不同网段转发数据包;
网络畅通的条件:数据包能去能回;
从源网络发出时,沿途的每一个路由器必须知道到目标网络下一跳给哪个接口;
从目标网络返回时,沿途的每一个路由器必须知道到源网络下一跳给哪个接口;

可以看到网段1~5对应的地址主机号都是归零的,即配置路由器端口网段地址时主机号要归零。如端口B连接的网段2地址:172.16.0.0 / 24 。
如图所示,计算机PC0 ping PC1,网络要想通,要求沿途的路由器Router0、 Router1、 Router2和Router3都必须有到192.168.1.0/24网络的路由(路由器中存储路径的路由表中的信息),这样数据包才能到达PC1;
PC1要回应数据包给PC0,沿途所有的路由器必须有到192.168.0.0 /24网络的路由,这样数据包才能回来。
由于网段1和2直连路由器Router0,所以不用给Router0的路由表手动添加关于网段1和2的路径信息。但是Router0路由表内是没有与Router0非直连网段3 、4 、5的相关路径信息的,需要管理员手动添加。同理Router1直连网段2 、3,非直连网段1 、4 、5,所以需要手动添加网段1 、4 、5路径信息。这叫做静态路由。
举例:如上图,PC0想要访问Router0的B端口,由于不在同一网段,PC0先把数据包给Router0的A端口(网关),路由器Router0就会自动把数据包转给B端口。B端口收到数据包之后向PC0发出一个回复数据包,Router0直连1网段所以知道到PC0要怎么走,所以Router0自动把回复的数据包通过A端口转给PC0;数据包能去能回,所以PC0访问Router0的B端口时不用手动给Router0添加路径信息,Router0会自动中转数据包;
如果PC0想要访问Router1的C端口,同样不在同一个网段,PC0先把数据包给Router0的A端口,由于Router0直连1 、2网段,所以Router0知道去Router1的C端口怎么走,然后Router1自动把数据包转给C端口。C端口收到数据包之后向PC0发出一个回复数据包,但是Router1直连的是2 、3网段,与1网段非直连,所以如果不给Router1手动输入关于网段1的相关路径信息,Router1将无法把数据传回PC0,数据包能去不能回,造成通信失败。
因此,判断两个地址能否通过路由器自动中转数据,要看数据包在两个地址间是否能去能回。
查看Windows本地路由表
在命令行窗口输入以下命令:
route print


可以发现Windows的默认网关就是默认路由。
只加IP地址和子网掩码没设置网关的话,就到不了其他网段,也就是说不知道到其他网段的路由。
以下为为计算机添加路由表的命令:
route add 0.0.0.0 mask 0.0.0.0 10.7.86.1
三个地址分别是网络目标IP地址、 网络掩码和网关。
现实意义:例子

问题:一个计算机有两个网卡1和2,它们对应的网关分别是A和B;网卡1通过网关A访问网络,网卡2通过网关B访问企业内网;出现的问题为Internet上的其他计算机与该计算机通信时断时通。
原因:由于该计算机存在两个网关就意味着存在两个默认路由,也就意味着该计算机认为到其他网段有两条路径,但是却不知道一条路径通Internet,另一条路径通企业内网,而是认为两条路径是等价的,可以随意选择路径访问;
所以当Internet上的计算机如C “ping” PC-PT的时候时不时会造成丢包。因为计算机C向PC-PT发数据包时只能通过网关A这条路径,但是PC-PT给计算机C发送数据包时却认为通过网关A和B两条路径都可以,都等价;所以PC-PT发出的数据包一部分通过网关A路径正常发送到计算机C,另一部分数据包则通过网关C路径发送到企业内网导致丢包,造成访问速度变慢,这是因为发生丢包时上层协议会要求重传,所以只会导致通信速度变慢,而不会导致无法通信。
解决方案:删除网卡2的默认路由,手动添加路由:
route add 172.16.0.0 mask 255.255.255.0 172.16.0.1
这样设置之后,网卡1通过默认路由访问Internet,网卡2通过指定路由访问公司内网,彼此互不影响。这就是在Windows上添加路由表的意义。
经验:存在多张网卡时,禁用所需使用的那张网卡之外的其余网卡,保证只有一个默认网关,防止出现路由表错误。
再如:

PC0一个网卡连接Internet把A设为网关,另一网卡连接一个交换机组成的内网,内网内的计算机通过PC0连接Internet,所以内网计算机需要把B作为网关,但是PC0连接内网的网卡不用设置网关,否则会出现路由表错误。
故障判断规律:通与断的次数相当很大可能是路由问题;通的次数多,断的次数少很大可能是网络阻塞的问题。
网络负载均衡
配置和验证网络负载均衡
如图所示:192.168.0.0/24网段的PC0到192.168.3.0/24网段的PC1有两条路①和②,可以通过设置网络中路由器的路由来实现:PC0到PC1走线路① / ②,PC1到PC0走线路② / ①。从而实现负载均衡控制。

图中:
Router0直连192.168.2.0和192.168.1.0网段,所以只需要手动添加网段192.168.0.0和192.168.3.0的路由便可在Router0中实现PC0到PC1的数据自动中转。
Router1直连192.168.5.0和192.168.4.0网段,所以只需要手动添加网段192.168.0.0和192.168.3.0的路由便可在Router1中实现PC0到PC1的数据自动中转。
Router3中删除路由192.168.5.2(192.168.1.2)即可实现PC0到PC1只走路线①(②);
Router2中删除路由192.168.2.1(192.168.4.2)即可实现PC1到PC0只走路线②(①);
最长前缀匹配
- 使用 CIDR 时,路由表中的每个项目由“网络前缀”和“下一跳地址”组成。在查找路由表时可能会得到不止一个匹配结果。
- 应当从匹配结果中选择具有最长网络前缀的路由:最长前缀匹配(longest-prefix matching)。
- 网络前缀越长,其地址块就越小,因而路由就越具体(more specific) 。
例如:目的地址 D = 206.0.71.128。路由表中的路由:A:206.0.68.0 / 22;B:206.0.71.128 / 25 ;A路由主机位10位,B路由主机位7位,B路由更具体,根据最长前缀匹配原则匹配B路由。
使用二叉线索查找路由表
- 为了进行更加有效的查找,通常是将无分类编址的路由表存放在一种层次的数据结构中,然后自上而下地按层次进行查找。这里最常用的就是二叉线索(binary trie)。
例:用 5 个前缀构成的二叉线索:

先将前缀按相同的位排列好,再按每位逐级分支查找。如现分为01开头和10开头的,在分别每一位分支查找下去,查找深度是5。如果为32位前缀构成的二差线索查找深度为32。
IP 转发分组的流程的更多相关文章
- 调用altera IP核的仿真流程—下
调用altera IP核的仿真流程—下 编译 在 WorkSpace 窗口的 counter_tst.v上点击右键,如果选择Compile selected 则编译选中的文件,Compile All是 ...
- 调用altera IP核的仿真流程—上
调用altera IP核的仿真流程—上 在学习本节内容之后,请详细阅读<基于modelsim-SE的简单仿真流程>,因为本节是基于<基于modelsim-SE的简单仿真流程>的 ...
- linux ip 转发设置 ip_forward
工作原理: 内网主机向公网发送数据包时,由于目的主机跟源主机不在同一网段,所以数据包暂时发往内网默认网关处理,而本网段的主机对此数据包不做任何回应.由于源主机ip是私有的,禁止在公网使用,所以必须将数 ...
- ubuntu wireshark找不到网卡及开启IP转发
wireshark找不到网卡问题? 解决办法1:sudo wireshark 解决办法2: 1)添加用户组,我以wireshark为例 sudo groupadd wireshark 2)将dumpc ...
- Ubuntu 防火墙IP转发做NAT,内网集群共享网络(简单)
服务器架构: 系统: Ubuntu 16.04 x64 使用自带防火墙 UFW 操作: 在有公网的服务器上,进行防火墙基本操作开启自己所需业务的端口,并按下方设置启动NAT: 其他内网机器修改网关或者 ...
- Linux下启用IP转发功能(主要针对Ubuntu的使用)
说明:以下的操作只要在Linux下都是通用的. Linux发行版默认情况下是不开启IP转发功能的.如果架设一个Linux路由或者VPN服务就需要开启该服务. 1.通过访问sysctl的内核ipv4.i ...
- Linux上用IP转发使内部网络连接互联网
IP转发的概念: 使 Linux 机器像路由器一样将数据从一个网络发送到另一个网络.所以,它能作为一个路由器或者代理服务器,实现将一个连接的互联网或者网络连接共享给多个客户端机器. 1. 启用 IPv ...
- IP转发和子网路由
IP地址的分类 在TCP/IP协议中,协议栈分为4层.从上到下依次是应用层.运输层.网络层.网络接口层. IP协议就工作在网络层.IP协议将纷繁复杂的物理层协议屏蔽掉,对上层提供统一的描述和管理服务. ...
- CentOS7 下使用 Firewall防火墙系统封禁允许IP和端口的访问 端口转发 IP转发方法
CENTOS7的防火墙系统默认已经从iptable改成了firewall,使用方法也有所不同,下面是详细介绍 一.管理端口 列出 dmz 级别的被允许的进入端口 # firewall-cmd --zo ...
随机推荐
- spark docker java kubernetes 获取cpu内核/线程数问题
升级服务从spark2.3.0-hadoop2.8 至 spark2.4.0 hadoop3.0 一日后导致spark streaming kafka消费数据积压 服务不是传统的部署在yarn上,而是 ...
- Error: Invalid or corrupt jarfile SpringBootTemplate.jar
当在尝试将SpringBoot打包成为Jar文件, 丢到linux服务器去运行的时候, 尝试在windows自带的CMD窗口命令行中运行jar文件的时候, 遇到了这样的问题. 错误的意思是: 无效 或 ...
- ionic3 修改打包时 android sdk 路径
修改 /platforms/android/local.properties 文件
- 金山wps的面试经历
故事从两个月前开始说起吧. 前段时间突然想跳槽,原因也没啥,就是想折腾下,看看外面的世界?有一部分原因是想离家近一些稳定下来,博主上份工作坐标厦门,风景好的简直随便拍照就是大片. 不废话了,机缘巧合, ...
- 概率DP——BZOJ4008 [HNOI2015]亚瑟王
[HNOI2015]亚瑟王 Description 小 K 不慎被 LL 邪教洗脑了,洗脑程度深到他甚至想要从亚瑟王邪教中脱坑.他决定,在脱坑之前,最后再来打一盘亚瑟王.既然是最后一战,就一定要打得漂 ...
- Xen入门系列四【Xen 管理实操】
1. 克隆一台虚拟机 # virt-clone -o base -n vm-clone -f /vm/vm-clone.img 参数说明: -o 原虚拟机的名称:必须为关闭或者暂停状态. -n 新虚拟 ...
- require.ensure和require.context
require.ensure和require.context https://www.cnblogs.com/fantasy-zxf/p/6760390.html https://www.jiansh ...
- HTML的img标签:alt属性和title属性
当浏览器卖主扭曲了标准并且自顾自的不按规则去做一些事,他们可能会造成一些问题,或者至少产生了混淆.例子之一就是一些浏览器处理alt属性(一般会被错误的称作alt标签)的方式,比如拥有大量用户的Wind ...
- 爬虫之使用requests爬取某条标签并生成词云
一.爬虫前准备 1.工具:pychram(python3.7) 2.库:random,requests,fake-useragent,json,re,bs4,matplotlib,worldcloud ...
- Spring-增强方式注解实现方式
SpringAOP增强是什么,不知道的到上一章去找,这里直接上注解实现的代码(不是纯注解,纯注解后续会有) 创建业务类代码 @Service("dosome")//与配置文件中&l ...