基本认识
IP在TCP/IP参考模型中处于第三层,也就是网络层。
网络层的主要作用是:实现主机与主机之间的通信,也叫点对点的通信。
网络层与数据链路层的关系:
MAC的作用是实现直连的两个设备之间通信,而IP负责没有直连的两个网络之间进行通信传输
因此计算机网络中需要数据链路层和网络层这个分层才能实现向最终目标地址的通信
在TCP/IP网络通信时,为了保证能够正常通信,每个设备都需要配置IP地址,否则无法实现正常的通信。
IP地址(IPV4)有32位正整数表示,IP地址在计算机中是以二进制方式处理的。
为了方便记忆人们采用了点分十进制的标记方式,也就是将32位IP地址以每8位为一组,共分为4组,每组以 . 隔开,再将每组转换为十进制。
所以,IP地址的最大值也就是:
即最大允许约43亿台计算机连接到网络。
实际上,IP地址并不是根据主机台数来配置的,而是以网卡。像服务器、路由器等设备都是有2个以上的网卡,也就是它们会有2个以上的IP地址。
因此,让43亿台计算机全部连网其实是不可能的,更何况IP地址是由 [网络标识] 和 [主机标识] 这两个部分组成的,所以实际能够连接到网络的计算机个数更是少了很多。
但是现在不仅电脑配备了IP,手机等电子设备都配备了IP,早就超过了43亿,是如何支持这么多IP的呢?
根据一种可以更换IP地址的技术:NAT
IP地址的分类
IP地址分类主要有五种类型,分别是A类、B类、C类、D类、E类。
图中的黄色为分类号,用以区分IP地址类别。其中A,B,C类主要分为两个部分:网络号和主机号。
A、B、C分类对应的地址范围、最大主机个数如下表:
A、B、C分类地址最大主机个数是如何计算的?
最大主机个数。就是要看主机号的位数,如C类地址的主机号占8位,那么C类地址的最大主机个数:
为什么要减2呢?
因为在IP地址中,有两个IP是特殊的,分别是主机号为全1和全0的地址。
- 主机号全为1指定某个网络下的所有主机,用于广播
- 主机号全为0指定某个网络
广播地址用于什么?
广播地址用于在同一个链路中相互连接的主机之间发送数据包。
广播地址可以分为本地广播和直接广播两种:
- 在本网络内广播的叫做本地广播。例如网络地址为192.168.0.0/24的情况下,广播地址是192.168.0.255.因为这个广播地址的IP包会被路由器屏蔽,所以不会到达192.168.0.0/24以外的其他链路上。
- 在不同网络之间的广播叫做直接广播。例如网络地址为192.168.0.0/24的主机向192.168.1.255/24的目标地址发送IP包。收到这个包的路由器,将数据转发给192.168.1.0/24,从而使得所有的192.168.1.1-192.168.1.254的主机都能收到这个包(直接广播有一定的安全问题,多数情况下会在路由器上设置不转发)
什么是D、E类地址?
D类和E类地址是没有主机号的,所以不可用于主机IP,D类常被用于多播,E类是预留的分类,暂时未使用。
多播地址由于什么?
多播用于将包发送给特定组内的所有主机。
由于广播无法穿透路由,若想给其他网段发送同样的包,就可以使用穿透路由的多播。
多播使用的D类地址,前四位是1110表示多播地址,而剩下的28位是多播的组编号。
从 224.0.0.0 ~ 239.255.255.255 都是多播的可用范围,其划分为以下三类:
- 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地址的时候,我们判断其IP地址的首位是否为0,为0则为A类地址,那么就能很快的找出网络地址和主机地址。
所以,这种分类地址的优点就是简单明了、选路(基于网络地址)简单。
IP地址分类的缺点
缺点一:
同一网络下没有地址层次,比如一个公司用了B类地址,但是可能需要根据生产环境、测试环境、开发环境来划分地址层次,而这种IP分类是没有地址层次划分的功能,所以缺少地址的灵活性。
缺点二:
A、B、C类地址不能很好的与现实网络匹配。
- C类地址能包含的主机数量实在是太少了,只有254个。
- 而B类地址包含的最大主机量又太多了,6万多台机器放在一个网络下面,一般的企业基本达不到这个规模。
这两个缺点,都可以在CIDR无分类地址解决。
无分类地址CIDR
正因为IP分类存在许多缺点,所以后面提出了无分类地址的方案:CIDR
这种方式不再有分类地址的概念。32比特的IP地址被划分为两部分,前面是网络号,后面是主机号。
怎么划分网络号和主机号
表示形式:a.b.c.d/x,其中/x表示前x位属于网络号,x的范围是0~32,这就使得IP地址更加具有灵活性。
比如 10.100.122.2/24,这种地址表示形式就是 CIDR,/24 表示前 24 位是网络号,剩余的 8 位是主机号。
还有另一种划分网络号与主机号形式,就是子网掩码,掩码的意思就是掩盖掉主机号,剩余的就是网络号。
将子网掩码与IP地址按位计算AND,就可得到网络号.
为什么要分离网络号与主机号?
因为两台计算机要通讯,首先要判断是否处于一个广播域内,即网络地址是否相同。如果网络地址相同,表明接收方在本网络上,那么可以吧数据包直接发送到目标主机。
路由器寻址工作中,也是通过这样的方式来找到对应的网络号的,进而把数据包转发给对应的网络内。
怎么进行子网划分
子网掩码不仅可以划分出网络号和主机号,实际上子网掩码还有一个作用,就是划分子网。
子网划分实际上是将主机地址分为两个部分:子网网络地址和子网主机地址。
- 未做子网划分的IP地址:网络地址+主机地址
- 做子网划分后的IP地址:网络地址+(子网网络地址+子网主机地址)
假设对C类地址进行子网划分,网络地址192.168.1.0,使用子网掩码255.255.255.192对其进行子网划分。
C类地址中前24位是网络号,最后8位是主机号,根据子网掩码可知从8位主机号中借用2位作为子网号。
由于子网网络地址被划分为2位,那么子网地址就有4个,分别是00,01,10,11,具体划分如下:
划分后的4个子网如下表:
公有IP地址与私有IP地址
在A、B、C类地址中,实际上分公有IP地址和私有IP地址。
平时办公室、家里、学校的IP,一般都是私有IP地址。因为这些地址允许组织内部的IT人员自己管理、自己分配,而且可以重复。因此,多个学校的私有IP地址可以是一样的。
就像是每个小区都有自己的楼编号和门牌号,可以一样。但一但出了小区,就需要带上中山路666号(公网IP地址),是国家统一分配的,不能两个公网IP地址相同。
所以,公共IP地址是有一个组织统一分配的,假设你要开一个博客网站,那么就需要申请购买一个公有IP,这样全世界的人才能访问。并且公有IP地址基本上要在整个互联网范围内保持唯一。
公有IP地址由谁管理?
私有IP地址通常是内部的IT人员管理,公有IP地址是由ICANN组织管理,中文叫[互联网名称与数字地址分配机构]。
IANA 是 ICANN 的其中一个机构,它负责分配互联网 IP 地址,是按洲的方式层层分配。
- ARIN 北美地区
- LACNIC 拉丁美洲和一些加勒比群岛
- RIPE NCC 欧洲、中东和中亚
- AfriNIC 非洲地区
- APNIC 亚太地区
其中,在中国是由 CNNIC 的机构进行管理,它是中国国内唯一指定的全局 IP 地址管理的组织。
IP地址与路由控制
IP地址的网络地址这一部分是用于进行路由控制。
路由控制表中记录着网络地址与下一步应该发送至路由器的地址。在主机和路由器上都会有各自的路由器控制表。
在发送IP包时,首先要确定IP包首部中的目标地址,再从路由控制表中找到与该地址具有相同网络地址的记录,根据该记录将IP包转发给相应的下一个路由器。如果路由控制表中存在多条相同网络地址的记录,就选择相同位数最多的网络地址,也就是最长匹配。
- 主机A要发送一个IP包,其源地址是10.1.1.30和目标地址是10.1.2.10,由于没有在主机A的路由表找到与目标地址10.1.2.10相同的网络地址,于是包被转发到默认路由(路由器1)
- 路由器1收到IP包后,也在路由器1的路由表匹配与目标地址相同的网络地址记录,发现匹配到了,于是就把IP数据包转发到了10.1.0.2这台路由器2
- 路由器2收到后,同样对比自身的路由表,发现匹配到了,于是把IP包从路由器2的10.1.2.1这个接口发出去,最终经过交换机把IP数据包转发到了目标主机。
环回地址是不是会流向网络
环回地址是在同一台计算机上的程序之间进行网络通信时所使用的一个默认地址。
计算机在使用一个特殊的IP地址127.0.0.1作为环回地址。改地址具有相同意义的是一个叫做localhost的主机名。使用这个IP或主机名时,数据包不会流向网络。
IP分片与重组
每种数据链路的最大传输单元MTU都是不相同的,如FDDI数据链路 MTU 4352、以太网的MTU是1500字节等。
每种数据链路的MTU之所以不同,是因为每个不同类型的数据链路的使用目的不同。使用目的不同,可承载的MTU也就不同。
其中,最常见的数据链路就是以太网,其MTU是1500字节。
当IP数据包大于MTU时,IP数据包就会被分片。
经过分片之后的IP数据包在被重组的时候,只能由目标主机进行,路由器是不会进行重组的。
在分片传输中,一旦某个分片丢失,则会造成整个IP数据包报废,所以TCP引入了MSS也就是在TCP层进行分片不由IP层分片(可参见),那么对于UDP尽量不要发送一个大于MTU的报文。
IPV6基本认识
IPV4的地址是32位的,大约可以提供42亿个地址,但是早在2011年IPV4地址就已经被分配完了。
但是IPv6的地址是128位的,这可分配的地址数量是巨大的,IPv6 可以保证地球上的每粒沙子都能被分配到一个 IP 地址。
但IPv6除了有更多的地址之外,还有更好的安全性和扩展性,简单点就是IPv6相比于IPv4能带来更好的网络体验。
但是因为IPv4和IPv6不能互相兼容,所以我们不但要我们电脑、手机之类的设别支持,还需要网络运营商对现有的设备进行升级,这也是IPv6普及较慢的一个原因。
IPv6的亮点
IPv6不仅仅只是可分配地址变多了,它还有非常多的亮点:
- IPv6可自动配置,即使没有DHCP服务器也可以实现自动分配IP地址,即插即用
- IPv6包头包首部长度采用固定的值40字节,去掉了包头校验和,简化了首部结构,减轻了路由器负荷,大大提高了传输的性能
- IPv6有应对伪造IP地址的网络安全功能以及防止线路窃听的功能,大大提升了安全性。
IPv6地址的标识方法
IPv4地址长度共32位,是以每8位作为一组,并用点分十进制的表示方式。
IPv6地址长度是128位,是以每16位作为一组,每组用[ : ]隔开
如果出现连续的0时还可以将这些0省略,并用两个冒号[ :: ]隔开。但是,一个IP地址中只允许出现一次两个连续的冒号。
IPv6地址结构
IPv6类似IPv4,也是通过IP地址的前几位标识IP地址的种类。
IPv6地址主要有以下类型的地址:
- 单播地址,用于一对一的通信
- 组播地址,用于一对多的通信
- 任播地址,用于通信最近的节点,最近的节点是由路由协议决定的
- 没有广播地址。
IPv6单播地址类型
对于一对一通信的IPv6地址,主要划分了三类单播地址,每类地址的有效范围都不同。
- 在同一链路单播通信,不经过路由器,可以使用链路本地单播地址,IPv4无此类型
- 在内网里单播通信,可以使用唯一本地地址,相当于IPv4的私有IP
- 在互联网通信,可以使用全局单播地址,相当于IPv4的公有IP
IPv4首部与IPv6首部
IPv4 首部与 IPv6 首部的差异如下图:
IPv6相比IPv4的改进:
- 取消了首部校验和字段。因为在数据链路层和传输层都会校验,因此IPv6直接取消了IP的校验
- 取消了分片/重新组装相关字段。分片和重组是耗时的过程,IPv6不允许在中间路由器进行分片和重组,这种操作只能在源与目标主机,大大提高了路由器的转发速度。
- 取消选项字段。选项字段不再是标准IP首部的一部分了,但它并没有消失,而是可能出现在IPv6首部中的[下一个首部]指出的位置上。删除该字段IPv6的首部成为固定的40字节。