网络层的主要作用是?
IP位于网络层,网络层的作用主要实现主机和主机之间的通信。
网络层和数据链路层的区别?
- IP网络层负责在没有直连的两个网络之间进行通信
- MAC数据链路层负责直连的两个设备之间通信
通信的双方源IP和目的IP保持不变,但源MAC和目标MAC却是始终变化的。
IP地址的格式
IP地址(IPV4)由32位正整数来表示,IP地址在计算机中是以二进制的方式处理,但为了方便记忆采用点十进制的标记方式(8位为一组,分四组,每一组都转换为十进制)如下:
格式 | 示例 |
---|---|
IPV4二进制 | 11000000 10101000 00000001 00000001 |
IPV4十进制 | 192 168 1 1 |
点分十进制 | 192.168.1.1 |
IP地址容纳的最大主机数
IP地址的数量是有限的,最大是2的32次方,但互联网中的设备是无法达到这个数量的,因为IP地址是根据网卡来配置的,而服务器、路由器等设备都是可以有2个以上的网卡,也就是会有两个以上的IP地址。
但实际上现在互联网的设备(手机、IPAD、电脑)等远远超过了2的32次方,这是通过NAT技术实现的。
IP地址分类
IP地址最初被划分为五大类:
- A类:首位为0,网络号为7位,主机号24位
- B类:前两位为10,网络号为14位,主机号16位
- C类:前三位为110,网络号21位,主机号8位
- D类:前四位为1110
- E类:前四位为1111
上述分类的示意图如下:
A、B、C类的IP范围
A、B、C类的IP地址范围如下图:
每类地址的主机个数为2^主机号位数-2。之所以减2是因为在网络中主机号全为1和全为0分别有特定的用处:
- 全为0:用于指定某个网络
- 全为1:指定某个网络下的所有主机,用于广播
广播地址的分类
广播地址分为本地广播和直接广播两种:
- 本地广播:在本网络内广播,例如网络地址是192.168.0.0/24,广播地址为192.168.0.255。该广播地址的IP包会被路由器屏蔽,无法抵达其他网络
- 直接广播:在不同网络中进行广播,例如网络地址是192.168.0.0/24的主机向192.168.1.255/24的目标地址发送IP包。收到这个包的路由器,会将数据转发给192.168.1.0/24,192.168.1.0/24网络下的主机都会收到该数据包(由于安全问题,多数情况下路由器上都设置不转发)。
D、E类地址有啥不同?
D、E类地址是没有主机号的,因此不可以用于主机IP。D类用于多播,E类是预留的分类未使用,如下图:
什么是多播?
多播用于将包发送给特定组内的所有主机。由于广播无法穿透路由发送给其他网络,因此需要使用可以穿透路由的多播。
多播使用的是D类地址,多播地址主要分为以下三类:
- 224.0.0.0~224.0.0.255:预留的组播地址,只能在局域网中,路由器不会进行转发
- 224.0.1.0~238.255.255.255:用户可用的组播地址,用于Internet上
- 239.0.0.0~239.255.255.255:本地管理组播地址,可供内部网在内部使用,仅在特定的本地范围有效
IP分类的缺点?
IP分类的优点是简单明了、路由(基于网络地址)简单。但也存在以下缺点:
- 同一网络下没有地址层次:比如公司使用了B类地址,但无法根据环境(生产、测试)来划分地址层次
- 无法很好的与显示网络匹配:A、B类地址过多,但C类地址太少
无分类地址CIDR
无分类地址使用a.b.c.d/x来划分网络号和主机号,其中x表示前x位属于网络号,比如:10.100.122.2,/24表示前24位是网络号,剩余的8位是主机号。
除了上述划分网络号的方式,还有一种是通过子网掩码,掩码就是掩盖掉主机号,剩余的就是网路号。
将IP地址和子网掩码按位计算与,就可以得到网络号。
为什么需要分离网络号和主机号?
两台计算机需要通讯,首先会判断是否处于同一个广播域(即网络地址相同),如果是同一个广播域,表明接收方在和发送方在同一个网络中,可以直接把数据包发到目标主机。
如何进行子网划分?
子网掩码可以划分出网络号和主机号,除了该功能以外,子网掩码还有一个作用就是划分子网。
子网划分实际上是将主机地址分为两个部分:子网网络地址和子网主机地址。
- 未做子网划分IP地址:网络地址 主机地址
- 做子网划分的IP地址:网络地址 (子网网络地址 子网主机地址)
假设我们的总网络地址192.168.1.0,使用子网掩码255.255.255.192(也就是借用两位主机号进行子网划分),划分后的子网如下图:
公有IP地址和私有IP地址
在A、B、C类地址中,分为公有地址和私有地址,如下图:
私有IP地址允许组织内部的IT人员自行管理、自行分配,但公有IP是由一个统一组织进行分配的,公有IP需要在整个互联网内保持唯一。
公有IP的管理组织机构
在国内,CNNIC机构是国内唯一指定的全局IP地址管理组织。
IP地址和路由控制
IP地址中的网络地址用于进行路由控制。
主机和路由器上都会有路由表,路由表中记录着网络地址与下一步应该发送至路由器的地址。
如果在路由表中存在多条相同网络地址的记录,就选择相同位数最多的网络地址(最长匹配)。
上图中的目的是要从主机A发送数据包给主机B,具体流程如下:
- 主机A发送数据包,源地址是10.1.1.30,目的地址是10.1.2.10,在主机A中的路由表查找具有相同网络地址结果是为查得,因此数据包被转发至特定路由器1(10.1.1.1)
- 路由器1收到IP数据包后,也查找自身的路由表,匹配到了相同的网络地址(101.2.0/24),因此路由器1会把数据包转发至路由器2(10.1.0.2)
- 路由器2收到数据包后,对比自身路由表发现匹配成功,于是把数据包从路由器2的10.1.2.1接口发送出去,最终经过交换机把数据包发送至目标主机。
什么是环回地址?
环回地址是同一台计算机上的程序之间进行网络通信所使用的的一个默认地址,这个特殊的IP地址是127.0.0.1,该地址相对应的主机名是localhost。在使用这个IP地址和主机名时,数据包不会流向网络。
IP分片与重组
每种数据链路的最大传输单元MTU是不相同的,我们最常见的以太网数据链路的MTU是1550字节。
当IP数据包超过MTU时,IP数据包就会进行分片。经过分片后的数据包在流经路由器时不会被重组,只能由目标主机重组。而且一旦某个分片丢失,整个IP数据包都会被废弃,因此TCP引入了MSS在TCP层进行分片,避免IP层的分片。
IPv6地址
IPv4地址长度为32位,但IPv6地址长度是128位,以16位作为一组,每组用:隔开,如果出现连续的0还可以将0省略,使用两个:隔开。但是一个IP地址中只允许出现一次两个连续的:。
IPv6地址的结构
IPv6地址主要有以下地址类型:
- 单播地址:用于一对一通信
- 组播地址:用于一对多通信
- 任播地址:用于通信最近的节点,最近的节点是由路由协议决定
- 没有广播地址
对于一对一通信的地址,主要划分了三类单播地址:
- 链路本地单播地址:同一链路单播通信,不经过路由器,IPv4没有此类型
- 唯一本地地址:内网里单播通信,相当于IPv4的私有IP
- 全局单播地址:互联网通信,相当于IPv4的公有IP
IPv4和Ipv6首部的区别
IPv6相比IPv4进行了如下改进:
- 取消首部校验和字段:因为在数据链路层和传输层都会校验。
- 取消了分片和重组相关字段:由于分片和重组只能在源主机和目的主机进行,中间路由器不能进行分片和重组,减少这些字段提高转发速度。
- 取消选项字段:选项字段部分内容可能会在IPv6首部中的下一个首部的位置上出现
IPv6与IPv4的区别
- IPv4和IPv6不能互相兼容,电脑、ipad等设备支持,网络运营商也要进行升级支持,普及较慢
- IPv6没有DHCP服务器也可以实现IP地址自动分配,即插即用
- IPv6包头固定为40字节,去掉包头校验和,简化首部结构,减轻了路由器的负荷,提高了传输性能
- IPv6可以应对IP地址伪造、防止线路监听,安全性获得提升