趣谈网络协议学习笔记——IP包的发送过程

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Q52077987/article/details/81483414

一个主机发送一个网络包到一个IP,第一步先看这个IP是不是和自己在同一个网段,如果是在同一个网段,使用ARP协议查询出目标的MAC地址,填入MAC头,就能直接发送给目标主机。(在物理上还是要到达路由器的网口的,但是不会经由网关处理)。如果不在同一个网段,则需要查询网关的MAC,将网关的MAC填入MAC头,将目标的IP填入IP头,发往网关。

网关拿到这个包后有3种可能:

  1. 如果通过这个IP能直接找到目标主机的MAC,则将目标主机的MAC放入MAC头,发往目标主机
  2. 通过路由表查到了这个IP应该继续发给下一个网关,则将下一个网关的MAC填入MAC头发给下一个网关。
  3. 发现这个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.255.0.0或者255.255.254.0等子网掩码,这样一个子网可以容纳更多的主机。

一个面试题:

16.158.165.91/22这个IP所在网段的第一个地址是什么?广播地址是什么?子网掩码是什么?

因为网络号是22位而不是24位。应该这样计算:将第17-24位的165写成二进制10100101,然后截掉后两位得到网段第一个IP 16.158<101001>.1,翻译成10进制就是16.158.164.1为第一个地址。广播地址为16.158.<101001><11>.255,翻译成10进制为16.158.167.255。子网掩码为255.255.<111111><00>.0,翻译成10进制是:255.255.252.0。

判断是否在同一个网段使用子网掩码和IP地址计算AND,得到网络号,如果网络号相同就在同一个网段。

猜你喜欢

转载自blog.csdn.net/Q52077987/article/details/81483414
今日推荐