zl程序教程

您现在的位置是:首页 >  前端

当前栏目

计算机网络 - 网络层-ip包头格式-路由器工作原理-路由器转发数据包封装过程-路由器实验

封装原理IP 过程 工作 格式 实验 路由器
2023-09-11 14:17:06 时间

目录

1.  ip地址汇总

2. 路由器实验(一)

3.  ip包头的格式

3.0  tcpdump抓包工具

3.1  -i选项 : 指定网卡接口 interface

3.2  -v选项:更详细的信息

3.3  -p 指定协议,icmp,arp

4.  路由(route)

4.1  路由器(router) 

4.2  路由器工作原理

4.3  路由器转发数据包封装过程

4.4  路由表

4.5  路由的类型:

4.5.1  直连路由(优先级最高)

4.5.2  静态路由:

4.5.3  默认路由

4.6  路由器实验(二):

4.7  核心路由器实验

4.7.1  ping不通的情况如何排查:

1.  ip地址汇总

将小网汇总为大网。

汇总后的地址:172.16.0.0/21 10101100.00010000.00000(看相同部分)

ip路由汇总

R1是核心路由,能到任何网段去

R1要添加八条路由,如果进行路由汇总就只用添加三条

###################################

路由器一个接口配置一个ip地址,一个接口对应一个网段

交换机的接口不需要配置ip地址

网关:局域网连接路由器的LAN口地址

WAN口是用来连接广域网的

192.168.100.1/32 表示192.168.100.1这个ip地址是一个网段

###################################

2. 路由器实验(一)

网络拓扑图:

pc0 ping pc1

当不填网关时:

对于相同网段的网关,可以ping通

如果要实现跨网段通信就不可以ping通

没有填写网关一般是不可以上网的

没有填写dns服务器,不能打开网页,需要域名解析

###################################

3.  ip包头的格式

TTL(time to live):生命周期字段,经过一个路由器·值减1,为0时,数据包丢弃,为了防止一个数据包在网络中无限的循环下去

协议号:协议字段,用来标识封装的上层数据数UDP还是TCP,UDP是17,TCp是6

windows抓包工具:科来

linux抓包工具:tcpdump

host : 根据ip抓包

net:根据网段抓包

port:根据端口抓包

src:源(source)

dst:目的地(destination)

###################################

3.0  tcpdump抓包工具

3.1  -i选项 : 指定网卡接口 interface

tcpdump -i ens33 src host 183.57.50.225

[root@localhost /]# tcpdump -i ens33 src host 192.168.44.1
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes
17:29:49.295987 IP 192.168.44.1.60929 > localhost.localdomain.ssh: Flags [.], ack 860069013, win 4104, length 0
17:29:49.350603 IP 192.168.44.1.60929 > localhost.localdomain.ssh: Flags [.], ack 149, win 4104, length 0
17:29:49.396843 IP 192.168.44.1.60929 > localhost.localdomain.ssh: Flags [.], ack 297, win 4103, length 0
17:29:49.442767 IP 192.168.44.1.60929 > localhost.localdomain.ssh: Flags [.], ack 445, win 4103, length 0
17:29:49.488778 IP 192.168.44.1.60929 > localhost.localdomain.ssh: Flags [.], ack 593, win 4102, length 0
17:29:49.536188 IP 192.168.44.1.60929 > localhost.localdomain.ssh: Flags [.], ack 741, win 4101, length 0
17:29:49.582210 IP 192.168.44.1.60929 > localhost.localdomain.ssh: Flags [.], ack 889, win 4101, length 0
17:29:49.626742 IP 192.168.44.1.60929 > localhost.localdomain.ssh: Flags [.], ack 1037, win 4100, length 0
17:29:49.671927 IP 192.168.44.1.60929 > localhost.localdomain.ssh: Flags [.], ack 1185, win 4106, length 0
17:29:49.718159 IP 192.168.44.1.60929 > localhost.localdomain.ssh: Flags [.], ack 1333, win 4105, length 0
17:29:49.765310 IP 192.168.44.1.60929 > localhost.localdomain.ssh: Flags [.], ack 1481, win 4105, length 0
17:29:49.811679 IP 192.168.44.1.60929 > localhost.localdomain.ssh: Flags [.], ack 1629, win 4104, length 0
17:29:49.858292 IP 192.168.44.1.60929 > localhost.localdomain.ssh: Flags [.], ack 1777, win 4103, length 0
17:29:49.905544 IP 192.168.44.1.60929 > localhost.localdomain.ssh: Flags [.], ack 1925, win 4103, length 0
17:29:49.953183 IP 192.168.44.1.60929 > localhost.localdomain.ssh: Flags [.], ack 2073, win 4102, length 0
17:29:49.999487 IP 192.168.44.1.60929 > localhost.localdomain.ssh: Flags [.], ack 2221, win 4102, length 0
17:29:50.045257 IP 192.168.44.1.60929 > localhost.localdomain.ssh: Flags [.], ack 2369, win 4101, length 0
17:29:50.092446 IP 192.168.44.1.60929 > localhost.localdomain.ssh: Flags [.], ack 2517, win 4101, length 0
17:29:50.140600 IP 192.168.44.1.60929 > localhost.localdomain.ssh: Flags [.], ack 2665, win 4106, length 0
17:29:50.188215 IP 192.168.44.1.60929 > localhost.localdomain.ssh: Flags [.], ack 2813, win 4105, length 0
17:29:50.236324 IP 192.168.44.1.60929 > localhost.localdomain.ssh: Flags [.], ack 2961, win 4105, length 0
17:29:50.280509 IP 192.168.44.1.60929 > localhost.localdomain.ssh: Flags [.], ack 3109, win 4104, length 0
17:29:50.327396 IP 192.168.44.1.60929 > localhost.localdomain.ssh: Flags [.], ack 3257, win 4103, length 0
^C
23 packets captured
24 packets received by filter
0 packets dropped by kernel

 ###################################

3.2  -v选项:更详细的信息

tcpdump -i ens33 dst host 183.57.50.225 -v

[root@localhost /]# tcpdump -i ens33 src host 192.168.44.1 -v
tcpdump: listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes
17:32:37.864908 IP (tos 0x0, ttl 128, id 28194, offset 0, flags [DF], proto TCP (6), length 40)
192.168.44.1.60929 > localhost.localdomain.ssh: Flags [.], cksum 0x3e45 (correct), ack 860091605, win 4100, length 0
17:32:37.876116 IP (tos 0x0, ttl 128, id 28195, offset 0, flags [DF], proto TCP (6), length 40)
192.168.44.1.60929 > localhost.localdomain.ssh: Flags [.], cksum 0x3d1f (correct), ack 289, win 4106, length 0
17:32:37.922533 IP (tos 0x0, ttl 128, id 28196, offset 0, flags [DF], proto TCP (6), length 40)
192.168.44.1.60929 > localhost.localdomain.ssh: Flags [.], cksum 0x3c24 (correct), ack 541, win 4105, length 0
17:32:37.962913 IP (tos 0x0, ttl 128, id 28197, offset 0, flags [DF], proto TCP (6), length 40)
192.168.44.1.60929 > localhost.localdomain.ssh: Flags [.], cksum 0x3b29 (correct), ack 793, win 4104, length 0
17:32:38.006814 IP (tos 0x0, ttl 128, id 28198, offset 0, flags [DF], proto TCP (6), length 40)
192.168.44.1.60929 > localhost.localdomain.ssh: Flags [.], cksum 0x3a2e (correct), ack 1045, win 4103, length 0
17:32:38.064547 IP (tos 0x0, ttl 128, id 28199, offset 0, flags [DF], proto TCP (6), length 40)
192.168.44.1.60929 > localhost.localdomain.ssh: Flags [.], cksum 0x3933 (correct), ack 1297, win 4102, length 0
17:32:38.112833 IP (tos 0x0, ttl 128, id 28200, offset 0, flags [DF], proto TCP (6), length 40)
192.168.44.1.60929 > localhost.localdomain.ssh: Flags [.], cksum 0x3838 (correct), ack 1549, win 4101, length 0
^C
7 packets captured
8 packets received by filter
0 packets dropped by kernel

################################### 

3.3  -p 指定协议,icmp,arp

抓包的好处:

了解数据的封装,看是否到达

###################################

4.  路由(route)

跨越源主机到目标主机的一个互联网络来转发数据包的过程。

###################################

4.1  路由器(router) 

将数据从一个网络(网段)转发道另外一个网络(网段),并且在转发过程中选择最佳路径的设备。

###################################

4.2  路由器工作原理

主机1.1要发送数据到主机4.1,数据封装好了以后送到路由器A,路由器A收到数据包,查看数据包中的目的地址为4.1,然后就会查找路由表,找到以后就会从对应接口S0将数据包送到路由器B,路由器B接收到数据包就会查看数据包的目标地址,并查找路由表,找到对应网段和接口后就会从E0口出去送给主机4.1

如果查找路由表发现没有目的地址的话就会直接将包丢弃

###################################

4.3  路由器转发数据包封装过程

从网络层来讲,当数据刚刚封装好的时候,它的源ip地址是自己的,目的ip地址是对方的,从帧的层面来讲,它的源mac地址是自己的,因为是跨网段通信,目的mac地址是默认网关的mac地址,数据到了路由器A以后会查询路由表,发现要去往目的ip地址要从E1口送出来,于是数据从路由器A的E1口出来

这个时候源mac地址变成了E1口的mac地址,因为路由器A里面有一条静态路由,指定了下一跳的地址是路由器B的E1口,所以目的mac地址变成了路由器B的E1口的mac地址,数据从路由器A送到路由器B。(ip地址依旧没有变化)

到了路由器B以后,路由器把包拆开发现目的地址是192.168.2.2/24,查询路由表发现应该从E0口送出去,

于是源ip和目的ip依旧没有改变,但是源mac地址变成了E0口的mac地址,目的mac地址变成了目的ip的mac地址,数据送到HostB

在这个过程中,ip地址始终没有改变,但是mac地址一直在变化.

###################################

4.4  路由表

路由表中维护的路由条目的集合

路由器根据路由表做路径选择

路由表的形成

###################################

4.4.1  查看路由表

windows:

route print

linux:

ip route

###################################

4.5  路由的类型:

4.5.1  直连路由(优先级最高)

给端口配置ip地址,端口up状态(启用)

直连路由是自己产生的,不需要我们自己配置

静态路由:是人添加进去的

动态路由:是路由器自己学习的

默认路由:是特殊的静态路由

优先级:

直连路由>静态路由>动态路由>默认路由

非直连的网段,如果需要转发数据过去,就需要我们配置路由(静态或者动态)

哪些设备有路由表?

路由器

电脑

手机

三层交换机(需要配置ip地址)

防火墙(就是一台电脑,安装了安全软件,具有路由功能,vpn功能)可以对进出的数据进行检查

 ###################################

4.5.2  静态路由:

由管路员手工配置的,是单向的,缺乏灵活性

静态路由是单向的,只负责发,不负责回,回是对方的事情

ip route add 192.168.99.0/24 via 192.168.0.2 dev ens33

下一跳:192.168.0.2 --》对方路由器ip地址

192.168.99.0/24 目的网段 --》目的地

dev ens33 : 从ens33这个接口出去

下一跳可以是自己的接口名字也可以是对方路由器ip地址

###################################

4.5.3  默认路由

当路由器在路由表中找不到目标网络的路由条目时,路由器把请求转发到默认路由接口

默认路由是特殊的静态路由,适合于末节网络,去任何地方都要走这条路由,

配置默认网关其实就是添加一条默认路由

路由器工作在网络层

根据路由表转发数据

路由选择

路由转发

交换机工作在数据链路层

根据mac地址表转发数据

###################################

4.6  路由器实验(二):

网络拓扑图:

pc0 ping 192.168.100.254

如图所示pc0的默认网关是192.168.100.254.

所以pc0 ping 192.168.100.254是能够ping通的

##########################3

pc0 ping 192.168.20.1

pc0 ping 192.168.20.1 时候,首先会用子网掩码与ip地址进行与运算,判断两者是不同网段的,所以会将数据从默认网关送到路由器R1,路由器R1收到数据后发现是要到192.168.20.1 这个地址去,然后会查询路由表,路由表里面是有192.168.20.0/24这条直连路由的,所以数据能到达192.168.20.1这个接口,然后数据从192.168.20.1返回的时候又查路由表,发现是有192.168.100.0/24这条直连路由的,所以数据又可以回到pc0这台机器,

#########################

pc0 ping 192.168.20.2

pc0 ping 192.168.20.2 是ping不通的

因为数据从pc0送到192.168.20.1 这个端口时,192.168.20.1查路由表发现目的ip是到192.168.20.2这个地址去的,是子网掩码进行与运算,发现是相同网段的,可以通信,数据送到192.168.20.2这个地址的时候,数据返回的时候,目的ip地址变成了192.168.100.1,查询路由表发现没有这条路由,就会直接丢弃,不会响应,所以pc0 ping 192.168.20.2,数据可以送过去,但是回不来,所以 ping不通

如何让pc0 能ping通192.168.20.2?

可以在 路由器R2添加一条静态路由

Network :表示目标网段

Mask:表示目标子网掩码

Next Hop 下一跳的地址是要将数据送到192.168.100.1这个地址去的下一步要去的地方,这里根据网络拓扑图可以看出,下一跳的地址是192.168.20.1

配置了静态路由以后,pc0就可以ping通192.168.20.2了

如何让pc0 ping通192.168.200.254和192.168.200.1?

在路由器R1添加一条静态路由

next Hop 为192.168.20.2

现在pc0就可以ping通这两个ip地址

总结:只要是跨网段通信,先查询自己的路由表

需要考虑送过去,还要考虑送回来,

静态路由是单向的。

###################################

4.7  核心路由器实验

先拿出一台路由器,然后给它增加NM-4E模块

网络拓扑图:

查看核心路由器的路由表

要想实现三台电脑之间通信,我们要给三台电脑连接的路由器添加三条默认路由

0.0.0.0 表示任意网段

Next Hop 给核心路由器

这样我们就添加了三条默认路由,要和哪个网段通信,都直接送到核心路由器。所以我们还要给核心路由器添加三条相对应的静态路由

查看路由表:

现在就可以实现三台电脑之间的通信

################################### 

4.7.1  ping不通的情况如何排查:

检查ip地址是否配置正确

检查路由表

分段排查