1、网络拓扑
三层路由是根据 IP 地址进行进行转发,本章根据如上拓扑图。对 PC1 发出的报 文如何发送到 PC2,以及 PC2 如何回复 PC1 的过程进行学习。
2、三层互通
首先使用 PC1 去 ping 着 PC2,然后在 PC1 上抓包,分别查看 ARP 报文, 和 ICMP 报文的内容。
过程如下:
- 首先 PC1 发出 ARP 请求,原 MAC 是 PC1 的 MAC,是一个目标 MAC 为全 F 的广播包。信息部分请求者的 IP 和 MAC 都是 PC1 的。请求的 IP 是 PC2 的 IP,由于不知道 PC2 的 MAC 所以请求的 MAC 为全 F。
- 网关回复 PC1 一个单播报文,原 MAC 是网关的,目标 MAC 是 PC1 的。信息部分发送者的 IP 是网关的 IP,MAC 是网关的 MAC。请求的 IP 是 PC1的 IP,请求的 MAC 是 PC1 的 MAC。
- PC1 发送 ICMP 报文,报文格式如下,原 IP 和 MAC 地址是自己的, 目标 IP 是 PC2 的,目标 MAC 是网关的。
- PC1 收到 PC2 的回复,原 IP 是 PC2 的,原 MAC 是网关的 MAC, 目标 IP 和 MAC 是 PC1 的。
3、点位抓包
在 PC2 上抓包查看,ICMP 报文的内容。
- 目标 IP 和原 IP,对比在发送端抓到的数据包一样。
(2)目标 MAC 为自己电脑的 MAC 。
(3)原 MAC 查看自己的 ARP 表可以看到是网关的 MAC。
4、 DHCP
学习自动获取IP的过程。
- PC1起discover报文寻找DHCP服务器,原MAC为PC1的MAC, 目标 MAC 为全 F 的广播报文,寻找 DHCP 服务器。由于自己没有 IP 所以原 IP 是 0.0.0.0,目标 IP 是 255.255.255.255。
Option53 | DHCP报文类型,01表示discover报文 |
Option61 | DHCP客户端的标识 |
Option55 | DHCP客户端向服务端请求的网络参数 |
- DHCP 服务器收到 discover 报文回复 offer 报文,由于 DHCP 知道客户端 MAC,所以发送的数据包目标 MAC 是 PC1,原 MAC 是自己的。原 IP 是 DHCP 的 IP,目标 IP 是分配给 PC2 的 IP。
Your (client) IP address | DHCP服务端分配给客户端的IP |
Option53 | DHCP报文类型,02表示offer报文 |
Option1 | 下发给客户端的子网掩码 |
Option3 | 下发给客户端的网关 |
Option6 | 下发给客户端的DNS |
Option54 | DHCP服务端标识 |
- 电脑发送广播的 request 报文回复 DHCP 的 offer 报文,并告诉其他 可能存在的 DHCP 这个客户端已经回复了其中一个 DHCP。原 MAC 为 PC1 的 MAC,目标 MAC 为全 F 的广播。由于客户端还没有获取到 IP 所以原 IP 是0.0.0.0,目标 IP 是 255.255.255.255。
Option53 | DHCP报文类型,03标识request报文 |
Option54 | DHCP服务端标识 |
Option50 | 客户端请求使用的IP |
Option61 | 客户端标识 |
- DHCP 服务器发送 ACK报文回复电脑的请求,原 MAC 为网关的 MAC, 目标 MAC 为 PC1 的 MAC。原 IP 为网关 IP,目标 IP 为 PC1 的 IP。
Your (client) IP address | DHCP服务端分配给客户端的IP |
Option53 | DHCP报文类型,05标识ACK报文 |
Option1 | 确认下发给客户端的子网掩码 |
Option3 | 确认下发给客户端的网关 |
Option6 | 确认下发给客户端的DNS |
Option54 | DHCP服务端标识 |
5、主机路由
为什么 ARP 请求的是网关的 MAC 地址?为什么 PC1 的 ICMP 报文目标 MAC 是网关地址? 电脑上 route print 打印出路由表,得知各项信息含义如下:
网络目标+网络掩码 | 标识网络范围 | 决定匹配的路由条目 |
网关 | 标识数据包送到的下一站IP | 决定ARP请求的MAC和数据包封装的目标MAC |
接口 | 标识数据包出去的网卡 | 决定数据包封装的源MAC |
跃点数 | 优先级,数值越小优先级越高 |
6、网关路由表
网关是连接两个不同 LAN 的设备,上面会有指向不同 LAN 的路由,基本结 构 和 电 脑 一 样 。 下 图 就 是 网 关 的 路 由 表 , 拥 有 192.168.1.0/24 和 192.168.166.0/24 这两个 LAN 的路由。
当有两条路由可以到达同一个目的地时,按照掩码位数更多的路由进行优先匹配是一种常见的路由选择策略。这种策略也被称为最长匹配(Longest Match)。
7、路由匹配
在IP网络中,每个路由条目都包含目的地址和对应的掩码。掩码表示了网络地址的前缀长度,即网络前缀中1的位数。当路由器接收到一个数据包时,它会根据目的地址和路由表中的路由条目进行匹配。
在最长匹配策略中,路由器会与路由表中所有的路由条目进行匹配,并选择掩码位数最长的路由条目作为最佳匹配。掩码位数更多意味着网络前缀更长,这样可以更精确地确定数据包的下一跳。
例如,假设有两个路由条目:
路由1:目的地址为192.168.0.0/24
路由2:目的地址为192.168.0.0/16
如果接收到一个目的地址为192.168.0.1的数据包,根据最长匹配策略,路由器会选择掩码位数更多的路由2作为匹配项,因为它的网络前缀更长。
通过使用最长匹配策略,路由器可以更准确地选择最佳路由,避免将数据包错误地发送到错误的目的地。这有助于提高网络的效率和可靠性。
需要注意的是,最长匹配策略通常仅适用于静态路由或路由协议中的基本配置。在动态路由协议中,如OSPF或BGP,路由器会自动学习和更新路由表,最长匹配也会自动应用于动态路由更新过程中。
8、多网卡
当主机具有多个网卡(网络接口)时,路由选择通常基于以下几个因素:
目标地址: 主机使用目标地址来确定哪个网卡应该用于发送数据包。如果目标地址与特定网卡的网络地址匹配,主机将选择相应的网卡发送数据。
默认网关: 如果目标地址不与任何网卡的网络地址匹配,主机将使用默认网关。默认网关是一个指定的IP地址,主机将将数据包发送到该地址,由网关负责将数据包转发到正确的目标。
路由表: 主机维护一个路由表,其中记录了特定网络地址或子网的路由信息。路由表根据数据包的目标地址选择最佳的网卡发送数据。路由表中的每个条目通常包含目标网络地址、掩码、下一跳网关以及出接口。
优先级和度量值: 在路由表中,每个条目可能会分配一个优先级或度量值。主机根据这些值选择最佳匹配项。优先级或度量值可以根据网络管理员的配置和需求进行调整。
需要注意的是,多网卡选择还取决于网络协议栈的配置和操作系统的路由策略。操作系统可能提供额外的配置选项,例如绑定特定的应用程序到特定的网卡,或根据流量负载均衡来选择网卡。
在实际应用中,多网卡选择可用于网络负载均衡、提高网络性能和可靠性。通过合理配置路由和网络接口,可以充分利用多个网卡资源,并确保数据包按照最佳路径传输。
9、互联网的DNS
电脑和服务器之间通信都是通过 IP 进行的,但是我们访问网页输入的都不 是具体的 IP,而是像 www.baidu.com 这样的域名。这样的域名是没法用来通 信的,所以需要知道这个域名和 IP 的对应关系。要用到 DNS 协议进行交互,实 际上就是客户端向服务端查找 IP 和域名的对应关系。 当访问 www.baidu.com 时,电脑会发送一个使用 UDP 协议目标 53 端 口的 DNS 报文,请求查询域名对应的 IP 地址。
DNS 服务器收到之后会回复一个,使用 UDP 协议原 53 的端口,给出域名 对应的 IP 信息。