IP学习 | 青训营笔记
这是我参与「第四届青训营」笔记创作活动的第8天。
什么是IP
IP 在 TCP/IP 参考模型的网络层。在 TCP/IP 网络通信时,为了保证能正常通信,每个设备都需要配置正确的 IP 地址;IP 地址(IPv4 地址)由32位正整数来表示。
IP地址
IP 地址分类成了A 类、B 类、C 类、D 类、E 类 5 种类型。有两个 IP 是特殊的,分别是主机号全为 1 和 全为 0 地址。主机号全为 1 指定某个网络下的所有主机,用于广播;主机号全为 0 指定某个网络。在分配过程中,应该去掉这两种情况。
- A、B、C 类主要分为两个部分,分别是网络号和主机号。
- A 类 IP 地址是首位以 “0” 开头的地址。 从第 1 位到第 8 位是它的网络标识,后24位相当于主机标识。用十进制表示为0.0.0.0~127.0.0.0。一个网段内可容纳的主机地址上限为16777214个。
- B 类 IP 地址是前两位 “10” 的地址。 从第 1 位到第 16 位是它的网络标识,后16位相当于主机标识。用十进制表示为128.0.0.0~191.255.0.0。一个网段内可容纳的主机地址上限为65534个。
- C 类 IP 地址是前三位为 “110” 的地址。 从第 1 位到第 24 位是它的网络标识,后8位相当于主机标识。用十进制表示为192.0.0.0~223.255.255.0。一个网段内可容纳的主机地址上限为254个。
- D 类和 E 类地址没有主机号,不可用于主机 IP;D 类常被用于多播,E 类是预留的分类,暂时未使⽤。
- D 类 IP 地址是前四位为 “1110” 的地址。 从第 1 位到第 32 位是它的网络标识。
广播地址和多播地址
- 广播地址用于在同一个链路中相互连接的主机之间发送数据包,将 IP 地址中的主机地址部分全部设置为 1,就成了广播地址。
- 多用于将包发送给特定组内的所有主机。 由于广播无法穿透路由,若想给其他网段发送同样的包,就可以使用可以穿透路由的多播。多播既可以穿透路由器,又可以实现只给那些必要的组发送数据包。
IP地址分类简单明了、选路(基于网络地址)简单,但同一网络下没有地址层次,缺少地址的灵活性,也不能很好的与现实网络匹配。
无分类地址 CIDR
划分网络号和主机号
CIDR中32比特的IP地址被划分为两部分,前面是网络号,后面是主机号。它的表示形式为a.b.c.d/x,其中 /x表示前x位属于网络号,x的范围是0 ~ 32,这就使得IP地址更加具有灵活性。
还有另一种划分网络号与主机号形式,那就是子网掩码,将子网掩码和IP地址按位计算AND,就可得到网络号。
划分子网
子网划分实际上是将主机地址分为两个部分:子网网络地址和子网主机地址。
- 做子网划分后的 ip 地址:网络地址+(子网网络地址+子网主机地址)
公有IP地址与私有IP地址
在 A、B、C 分类地址,实际上有分公有 IP 地址和 私有 IP 地址。
公有 IP 地址在中国是由 CNNIC 的机构进行管理,它是中国国内唯一指定的全局 IP 地址管理的组织。
IP 地址与路由控制
- IP 地址的网络地址部分用于进行路由控制。
- 路由控制表中记录着网络地址与下一步应该发送至路由器的地址。
- 在发送 IP 包时,首先要确定 IP 包首部中的目标地址,再从路由控制表中找到与该地址具有相同网络地址的记录,根据该记录将 IP 包转发给相应的下一个路由器。如果路由控制表中存在多条相同网络地址的记录,就选择相同位数最多的网络地址,也就是最长匹配。
IP 分片与重组
- 每种数据链路的最大传输单元(MTU)都不尽相同,因为每个不同类型的数据链路的使用目的不同。以太网的 MTU 是 1500 字节。
- 任何一台主机都有必要对 IP 分片进行相应的处理。分片往往在网络上遇到比较大的报文无法一下子发送出去时才会进行处理。
- 经过分片之后的 IP 数据报在被重组的时候,只能由目标主机进行。路由器虽然做分片但不会进行重组。
IPv6 基本认识
- IPv6(IP version 6)是为了根本解决 IPv4 地址耗尽的问题而被标准化的网际协议。
- IPv4 的地址长度为 4 个 8 位字节,即 32 比特。而 IPv6 的地址长度则是原来的 4 倍,即 128 比特, 一般写成 8 个 16 位字节。
- 一般人们将 128 比特 IP 地址以每 16 比特为一组,每组用冒号(“:”)隔开进行标记。而且如果出现连续的 0 时还可以将这些 0 省略,并用两个冒号(“::”)隔开。但是,一个 IP 地址中只允许出现一次两个连续的冒号。
IPv4 首部与 IPv6 首部
IPv6 相比 IPv4 的首部改进:
- 取消了首部校验和字段。
- 取消了分片/重新组装相关字段。
- 取消选项字段。
IP 协议相关技术
IP 旨在让最终目标主机收到数据包,但是在这一过程中仅仅有 IP 是无法实现通信的。必须还有能够解析主机名称和 MAC 地址的功能,以及数据包在发送过程中异常情况处理的功能。
- DNS 域名解析
- ARP 与 RARP 协议
- DHCP 动态获取 IP 地址
- NAT 网络地址转换
- ICMP 互联网控制报文协议
- IGMP 因特网组管理协
DNS
DNS(Domain Name System,域名系统)将域名和 IP 地址相互映射,将域名映射成 IP 地址称为正向解析,将 IP 地址映射成域名称为反向解析。
ARP
- ARP(Address Resolution Protocol) 是一种解决地址问题的协议。以目标IP地址为线索,用来定位下一个应该接收数据分包的网络设备对应的MAC地址。如果目标主机不在同一个链路上时,可以通过ARP查找下一跳路由器的MAC地址。不过ARP只适用于IPv4。
- RARP(Reverse Address Resolution Protocol)是将ARP反过来,从MAC地址定位IP地址的一种协议。
DHCP
为了实现自动设置IP地址、统一管理IP地址分配,就产生了DHCP(Dynamic Host Configuration Protocol)协议。
NAT
NAT(Network Address Translator)是用于在本地网络中使用私有地址,在连接互联网时转而使用全局IP地址的技术。它缓解了 IPv4 地址耗尽的问题。
ICMP
ICMP(Internet Control Message Protocol,互联网控制报文协议)的主要功能包括,确认IP包是否成功送达目标地址,通知在发送过程当中IP包被废弃的具体原因,改善网络设置等。
IGMP
IGMP(Internet Group Management Protocol,互联网组管理协议)在本地网络上的主机和路由器之间传达组成员信息。路由器定时向“所有主机组”多播IGMP查询。主机多播IGMP报告报文以响应查询。
IP隧道
夹着 IPv4 网络的两个 IPv6 网络之间无法直接进行通信,为了让它们之间正常通信,这时必须得采用 IP 隧道的功能。在IP隧道中,每个IP数据包,包括其源和目标IP网络的寻址信息,都被封装在另一种传输网络本地的数据包格式中。