网络层向上只提供简单灵活的、无连接的、尽量大努力交付的数据报服务。
网络在发送分组时不需要先建立连接,每一个分组独立发送,与其前后的分组无关,也就是说,网络层不提供服务质量的承诺。
所传送中的分组可能出错、丢失、重复、失序,当然也不能保证分组交付的时限。
由于传输网络不提供端到端的可靠传输服务,这就使得网络中的路由器比较简单,而且价格低廉,采用这种方式使得网络造价大大降低,运行方式灵活,能够适应多种应用。
从一般概念来讲,将网络互连起来需要使用一些中间设备,根据中间设备所处的层次,可以有以下四种不同的中间设备:
物理层:转发器
数据链路层:网桥/桥接器
网络层:路由器
网络层以上:网关
转发器、网桥,仅仅是把一个网络扩大了,一般不称之为网络互连,所以不讨论;网关太复杂了,使用的也不多,所以我们本篇就讨论路由器。
由于参加互连的计算机网络都使用相同的网际协议IP,它的意思就是互连起来的各种物理网络的异构性本来就是真实存在的,但我们利用了IP协议就可以使得这些性能各异的网络在网络层上看起来好像统一的网络。
前面都是扯皮,该上干货了。
所谓的A类、B类、C类地址都是由两个固定长度的字段组成的,其中第一个字段是网络号,它标志主机(或路由器)所连接到的网络,一个网络号在整个互联网范围内必须是唯一的;第二个字段是主机号,它标志该主机(或路由器),这个主机号相对于网络号,也是惟一的。
所以,每个IP在网络中都是唯一的。
这种;两级的IP地址可以表示为:
IP地址 ::={<网络号>,<主机号>}
A类地址的网络号字段占一个字节,只有7位可供使用,第一位已经指派了(1),但是可以指派的网络号是126个,即2^7-2.
为什么减2?因为IP地址中全0(保留地址)和127(环回地址)是保留地址。
每一个A类地址中的最大主机数是2^24-2,即16777214,。为什么减2?因为全0的主机号表示的是“本机”所连接到的单个网络地址,而全1的主机号表示的是链接到这个地址上的所有主机。
IP地址空间有2^32
个地址,而A类地址就占用了2^31
个。
对于B类地址,128.0也是不指派的,由于前面两位已经指派了(1 0),所以B类网络地址可使用的网络数为2^14-1。
每一个B类地址可以挂载主机数为:2^16-2,
所以B类地址所占用空间为2^30。
C类地址就不再做相同的解释了吧。
Q:已知一个机器的IP地址,求其相应的硬件地址。
A:请了解一下ARP地址解析协议。
每一个主机都有一个ARP高速缓存,里面有本局域网上等待个主机和路由器的IP地址到硬件地址的映射表。
当主机A要向本局域网上的主机B发送IP数据的时候,就先在其ARP高速缓存中查看有无主机B的IP地址,如果有,就在ARP高速缓存中查出其对应的硬件地址,再把这个硬件写入MAC帧,然后通过局域网把改帧发往此Mac地址。
也有可能查不到主机B的IP地址的项目,这可能是主机B才刚入网,也可能是主机A刚加电,其高速缓存还是空的。这种情况下:
1)ARP进程在本局域网上广播一个ARP请求分组,内容如下:“我的IP地址是:209.0.0.5,硬件地址是00-00-C0-15-AD-18,我想知道IP地址为209.0.0.6的主机的硬件地址”。
2)在本局域网的所有主机上运行的ARP进程都收到此ARP请求。
3)主机B的IP与ARP请求分组中的IP地址一致,就收下这个ARP请求,并向主机A发送ARP响应分组,同时在这个请求分组中写上主机的硬件地址。
当主机A收到主机B的ARP响应分组后,就在其ARP高速缓存中写入主机B的IP和硬件地址的映射。
ARP对保存在高速缓存中的每一个映射地址都设置一个保存时间,凡超过保存时间的就从高速缓存中删掉,这种思想参考redis。
注意:ARP是解决同一个局域网下的主机或路由器的IP地址和硬件地址的映射问题
那如果两个主机是在不同的局域网上呢?其实主机A也不需要知道另一个局域网上主机B的硬件地址,主机A发给主机B的数据首先要经过与主机A连接在同一局域网的路由器Ra来转发,因此主机A这时候需要把路由器Ra的IP地址解析为硬件地址,以便能够把IP数据传送到路由器Ra,然后,Ra从转发表找出来下一个路由器Rb,同时由ARP地址解析出这个Rb的硬件地址,路由器Rb在转发这个IP数据报的时候通过类似方法解析出目的主机B的硬件地址,使得IP数据最终交付给主机B。