如上图右侧,我们将145.13.0.0这个网段划分了三个子网,其中一个是145.13.3.0,一个是145.13.21.0,问题来了,如果一个网络包来了,网络包要交给的ip地址是145.13.3.10,我们怎么知道给哪个子网呢?
方法是将目的包的ip地址,跟子网的子网掩码相与预算(二进制与预算规则是,1跟1得1,其它为0),也就是目的地址145.13.3.10跟子网145.13.3.0的子网掩码255.255.255.0的与预算,得到的结果是145.13.3.0,所以发送到的子网就是145.13.3.0。
7.3 ARP协议这里有人会问什么是子网掩码,子网掩码的格式跟IP是一样的,0,0,0,0 到 255.255.255.255,主要是帮助我们划分子网的,了解到这里对我们前端就够了。
为什么需要ARP协议呢?
我们简单回顾一下以太网的帧的格式
上图有一个源地址和目的地址,这两个地址都是指的mac地址,mac地址是什么呢?简单说来就是两台相邻的路由器A和B,A怎么把数据传给B呢,它总要知道B的物理地址吧,物理地址就像门牌号一样,我要知道你住在哪里,才能把数据送过去吧?
首先你肯定知道自己的mac地址是多少,因为在网卡上有,问题在于,别人的mac地址是多少?ARP协议就是来帮你找mac地址的。
接着我们说一下ARP协议的过程(比较官方的介绍,看不懂可以略过):
- 每台主机都会在自己的ARP缓冲区中建立一个 ARP列表,以表示IP地址和MAC地址的映射关系
- 当源主机需要将一个数据包要发送到目的主机时,会首先检查自己 ARP列表中是否存在该IP地址对应的MAC地址
- 如果有,就直接将数据包发送到这个MAC地址;如果没有,就向本地网段发起一个ARP请求的广播包,查询此目的主机对应的MAC地址
- 此ARP请求数据包里包括源主机的IP地址、硬件地址、以及目的主机的IP地址。网络中所有的主机收到这个ARP请求后,会检查数据包中的目的IP是否和自己的IP地址一致
- 如果不相同就忽略此数据包;如果相同,该主机首先将发送端的MAC地址和IP地址添加到自己的ARP列表中
- 如果ARP表中已经存在该IP的信息,则将其覆盖,然后给源主机发送一个 ARP响应数据包,告诉对方自己是它需要查找的MAC地址
- 源主机收到这个ARP响应数据包后,将得到的目的主机的IP地址和MAC地址添加到自己的ARP列表中,并利用此信息开始数据的传输
- 如果源主机一直没有收到ARP响应数据包,表示ARP查询失败
DHCP(动态主机配置协议)是一个局域网的网络协议。指的是由服务器控制一段lP地址范围,客户机登录服务器时就可以自动获得服务器分配的lP地址和子网掩码。说白了,当你接入局域网的时候,自动由这个dhcp服务器给你分配ip,windows用户可能知道网卡配置里面,由自动获取ip的功能,如果路由器提供DHCP服务,你就会自动获取随机分配的ip。
路由器里可以开启这个服务。
大致工作过程(了解即可)
7.5 ICMP协议ICMP协议是一个网络层协议。 为什么我们需要ICMP协议呢?
一个新搭建好的网络,往往需要先进行一个简单的测试,来验证网络是否畅通;但是IP协议并不提供可靠传输。如果丢包了,IP协议并不能通知传输层是否丢包以及丢包的原因。
所以我们就需要一种协议来完成这样的功能–ICMP协议。
ICMP协议的功能主要有:
- 确认IP包是否成功到达目标地址
- 通知在发送过程中IP包被丢弃的原因 我们举一个例子: