网络层作用、子网掩码及子网划分、四大网络协议

一、网络层的主要作用

 

1、提供了通讯过程中必须使用的IP地址

2、连接不同的媒介类型,即内网到外网的互通

3、根据运行的不同路由协议,选择不同的最佳路径

4、在选择好的最佳路径上复制路由数据包

 

二、IP头部

 

我们前边提到,数据在传输的时候,在经过应表会这三层时不发生变化,数据直接透传到传输层,传输层给数据打上一个TCP/UDP头部,然后在传到网络层,网络层在打上一个IP头部,再给到数据链路层......如下图所示。

 

那么IP头部中都有什么呢?

整个IP头部默认一共有20个字节。首先第一个是版本字段,因为我们研究的是IPV4网络,所以版本字段是IPV4;第二个是首部长度字段,它规定了整个IP头部一共有多长,没有别的特殊含义,我们知道IP头部默认有20个字节,20个字节这几个字也是要占地方的,它占的地方就是首部长度这个字段;这里需要知道IP头部默认是20个字节,它是可以变长的,IP头部最长可以被扩展到60个字节;然后第三个是优先级与服务类型,提供3层的QoS;第四个是总长度字段,总长度字段包含的是所有包头长度和用户发送的原始数据的长度之和,即IP数据总长度;第五个是标识符、标识和段偏移量,上层来的数据到IP层会被分段,这几个字段用来对数据包进行标识,使在数据到达目的端重组的时候,不会乱序。第六个是TTL字段,TTL指time to live,即生存时间,TTL值默认是128,每经过一个三成设备(路由器、三层交换机、防火墙等)值减去1,减到值为0时,数据包被丢弃,此目的是为了防止一个数据包在网络中无限的循环下去。TTL值可以被锁定,锁定之后值不会被减,多数情况下TTL值都会被锁定,不然我们可能连本区的网络都出不了。而TTL值减少被应用在没有明确的目的地,单纯是网络中的无效数据的情况下。第七个是协议号字段,用来标识封装的上层数据是UDP还是TCP,UDP是17,TCP是6;第八个是首部校验和字段,用来校验数据是否损坏等;最后一个是源IP地址和目标IP地址。

 

 我们用wireshark抓一个真实的包来看,如下图所示,网络层的内容和我们上述的内容是一致的,所有字段都可以看到。

 

 

 三、IP地址分类

A类(1-126):常用地址

B类(128-191):常用地址

C类(192-223):常用地址

D类(224-239):组播使用

E类(240-254):科研使用

 

127这个地址是本地回环接口地址,用来实现本机网卡测试。127.0.0.1代表本机地址

 

私有地址

A类中的:10.0.0.0/8

B类中的:172.16.0.0 - 172.31.255.255/12

C类中的:192.168.0.01 - 192.168.255.255/16 

这三类中的这些地址被称为私有地址。什么叫做私有地址呢? 私有地址就是指 这些地址你能用我也能用,但都是在内网中使用。除了私有地址以外的其他地址都是公有地址。私有地址的目的是降低对公有地址的使用率,以完成IPV4到IPV6的过渡。

 

 

四、子网掩码

 

子网掩码用来划分不同的网段。

举个例子,有A、B、C、D四台主机,IP地址如下图所示:

 

 

此时,当这4台主机掩码为255.0.0.0的时候,那么他们的网段就相当于都是100段,ABCD之间可以互相通信;当这4台主机掩码都是255.255.0.0的时候,ABD的网段都是100.50,C的网段是100.60,所以ABD之间可以通信,C和ABD之间不能通信;当这4台主机掩码是255.255.255.0的时候,AB的网段是100.50.20,C的网段是100.60.30,D的网段是100.50.30,只有AB之间可以通信。所以子网掩码的作用就是划分网络中网段的范围。

我们平常在书写的时候会写 192.168.12.0/24 ,可能还会写成192.31.0.0/16 , 那么 /24 /16代表什么意思呢? 其实他们代表的就是子网掩码,/24是指255.255.255.0,因为255是2的8次方,三个255就是3个8相加等于24,/16是指255.255.0.0,2个8相加就是16。所以这就是这种写法所代表的意思。192.168.12.0/24的网段就是192.168.12,它所包含的IP地址就是最后一位,即2的8次方减2个地址,一共254个

192.31.0.0/16的网段就是192.31,它所包含的IP地址就是最后二位,即2的16次方减2个地址,一共254个

 

五、子网划分

 

我们知道同一个网段之间的地址都是可以通信的,比如现在我们用的都是192.168.1.0/24这个网段,那么这个网段中的254个地址之间是可以互相通信的。那么如果我现在的地址是192.168.1.1,另一个人的地址是192.168.1.2,我们就想我们两个人之间通信,和别的252个地址之间不能通信,这应该怎么办呢?通过主网的划分可以实现。把主网分割成多个小的子网,这就是子网的划分。

 

怎么划分子网呢?举个例子,如果我们要把上述的254个地址分成4份,我们知道最后一位地址是2的8次方,一共有8位,那么我们就把前两位也当做网段位,那么一共有 00 01 10 11这四种组合,刚好代表分成的4份,只有剩下的最后6位代表地址位。这样以来就分成了这样4个网段,分别是:192.168.1.0/26;192.168.1.64/26;192.168.1.128/26;192.168.1.192/26,如下图所示。26就是指现在前26位都代表网段位。192.168.1.0/26这个网段中包含的地址是从192.168.1.1-63,192.168.1.64/26这个网段中包含的地址是从192.168.1.65-127,以此类推,而0,64,128,192代表的是网段而不是地址,因为前26位都代表网段。

 

 如果我们要把一个网段划分成8个子网,划分方式如下图所示:

 

 

  

六、四个网络协议

 

1、ARP协议。地址解析协议。已经对方的IP地址,将IP地址解析为MAC地址

如下图所示,如果主机10.1.1.1想给主机10.1.1.2发送数据,那么10.1.1.1会先检查自己的ARP缓存,看有没有10.1.1.2的MAC地址。

 

如果发现缓存中没有10.1.1.2的MAC地址,那么10.1.1.1会向全网发送ARP广播要10.1.1.2的MAC地址

 

10.1.1.2接收到广播之后,会给10.1.1.1一个单播回复,并同时缓存10.1.1.1的MAC地址,而10.1.1.3和4收到之后会把这个信息丢弃

 

 

 10.1.1.1收到回复之后,会将10.1.1.2的MAC地址保存到ARP缓存中,然后就能和10.1.1.2正常通信了。

 

 

 2、RARP协议:反向地址解析协议。已知自身的MAC地址,广播请求一个IP地址。然后网络中的负责分配IP地址的服务器单播给予响应,为它分配一个IP地址。

如下图所示,主机A只有自己的MAC地址,没有IP地址,此时它向全网广播一个请求,请求得到一个IP地址

 

 

主机10.1.1.3和10.1.1.4收到这个请求之后没有任何反应,因为他们也只是普通的客户端。而10.1.1.254是一个分配IP地址的server,它在收到请求之后,会以单播的形式给A回复一个IP地址

 

 

 

我们发现RARP协议的功能和DHCP一样,那么它不是和DHCP冲突了嘛? 其实RARP就是DHCP的前身协议,RARP因为需要让负责分配IP地址的服务器预先知道客户端的MAC地址后,才能给客户端分配IP地址,所以RARP已经被淘汰,完全被DHCP取代。DHCP不需要知道客户端的MAC地址就可以为其分配IP地址。

 

3、代理ARP

10.1.1.1想和不在同一网段的主机172.16.1.1通信,他们不在同一网段,理论是是不能直接通信的。但是10.1.1.1不知道。10.1.1.1先检查自身的RAP缓存表,发现没有172.16.1.1的MAC地址,然后它在网络中发送广播。

 

 

 10.1.1.2和10.1.1.254这个路由器都会收到这个请求,路由器发现它发送请求机器的地址是10.1.1.1,和它想要请求的目标地址172.16.1.1不在同一个网段,所以路由器不会把这个广播给传过去,而是会单播回复10.1.1.1自己的MAC地址和IP地址,所以在10.1.1.1的ARP缓存表中保存的是它直连的路由器的MAC地址。

 

 

所以之后10.1.1.1会把所有访问172.16.1.1的请求都统一发送给路由器。这个功能就叫做代理ARP。路由器代替10.1.1.1访问172.16.1.1,然后172.16.1.1会把响应报文回给路由器,路由器在回给10.1.1.1。从而完成转发工作。

  

 
 
 
 
4、ICMP协议:internet control message protocol。用来检测网络的双向连通性。ping命令就是ICMP协议。
 
posted @ 2022-08-23 14:37  云计算成长路  阅读(1082)  评论(0)    收藏  举报