一个主机发送一个网络包到一个IP,第一步先看这个IP是不是和自己在同一个网段,如果是在同一个网段,使用ARP协议查询出目标的MAC地址,填入MAC头,就能直接发送给目标主机。(在物理上还是要到达路由器的网口的,但是不会经由网关处理)。如果不在同一个网段,则需要查询网关的MAC,将网关的MAC填入MAC头,将目标的IP填入IP头,发往网关。
网关拿到这个包后有3种可能:
- 如果通过这个IP能直接找到目标主机的MAC,则将目标主机的MAC放入MAC头,发往目标主机
- 通过路由表查到了这个IP应该继续发给下一个网关,则将下一个网关的MAC填入MAC头发给下一个网关。
- 发现这个IP是一个NAT,根据NAT表将IP转为局域网的IP,然后根据局域网的IP找到主机MAC,将局域网IP和主机MAC分别填入IP头和MAC头发送给目标主机。
改变IP头的网关叫做NAT网关,不改变IP头的网关叫做转发网关
如何判断是否同一个网段?
CIDR
CIDR,无类型域间选路。这种方式打破了原来IP设计的几类地址的做法,将32位的IP地址分为两部分,前边是网络号,后边是主机号。我们一般看到IP地址会有一个斜杠,如10.100.122.2/24,这表示前24位是网络号,后8位是主机号。伴随CIDR出现的就是子网掩码,子网掩码的作用是,将子网掩码和IP地址按位计算AND,就可以得到网络号。一般如果家里手动配置IP,子网掩码都配置成255.255.255.0。但是这不总是正确的,255.255.255.0只是24位网络号划分的子网掩码。所以在办公室经常看到255.25