IP知识

基本概念

IP在TCP/IP参考模型中处于第三层,也就是网络层。网络层的主要作用是实现主机与主机之间的通信。 IP的作用是在复杂的网络环境中将数据包发送给最终的主机。

网络层和数据链路层的区别和联系 IP的作用是实现主机与主机之间的通信,而MAC的作用是实现直连的两个设备之间的通信,而 IP 则负责在「没有直连」的两个网络之间进行通信传输。计算机网络中也需要「数据链路层」和「网络层」这个分层才能实现向最终目标地址的通信。源IP地址和目标IP地址在传输过程中是不会变化的(前提:没有使用 NAT 网络),只有源 MAC 地址和目标 MAC 一直在变化。

IP地址

在 TCP/IP 网络通信时,为了保证能正常通信,每个设备都需要配置正确的 IP 地址,否则无法实现正常的通信。IP 地址(IPv4 地址)由 32 位正整数来表示,IP 地址在计算机是以二进制的方式处理的。而人类为了方便记忆采用了点分十进制的标记方式,也就是将 32 位 IP 地址以每 8 位为组,共分为 4 组,每组以「.」隔开,再将每组转换成十进制,最大允许 43 亿台计算机连接到网络。实际上IP地址并不是根据主机台数来配置的,而是以网卡。像服务器、路由器等设备都是有 2 个以上的网卡,也就是它们会有 2 个以上的 IP 地址。 ip与主机网卡路由器的关系

ip地址的分类

IP 地址分类成了 5 种类型,分别是 A 类、B 类、C 类、D 类、E 类。 IP分类

  • 主机号全为 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 类地址是没有主机号的,所以不可用于主机 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地址分类的优缺点:

  • 优点就是简单明了、选路(基于网络地址)简单

  • 缺点1就是同一网络下没有地址层次,缺少地址的灵活性。比如一个公司里用了 B 类地址,但是可能需要根据生产环境、测试环境、开发环境来划分地址层次,而这种 IP 分类是没有地址层次划分的功能

  • 缺点2就是不能很好的与现实网络匹配,C 类地址能包含的最大主机数量实在太少了,只有 254 个

CIDR

CIDR(Classless Inter-Domain Routing):无类别域间路由 (CIDR) 是一种 IP地址分配方法,可提高互联网上的数据路由效率。每台连接到互联网的计算机、服务器和最终用户设备都有一个与之关联的唯一编号,称为 IP 地址。设备通过使用这些 IP 地址相互查找和通信。组织使用 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地址

在 A、B、C 分类地址,实际上有分公有 IP 地址和私有 IP 地址。 私有IP地址

私有 IP 地址通常是内部的 IT 人员管理,公有 IP 地址是由 ICANN 组织管理,中文叫「互联网名称与数字地址分配机构」。 公私ip

IANA 是 ICANN 的其中一个机构,它负责分配互联网 IP 地址,是按州的方式层层分配。 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 数据报在被重组的时候,只能由目标主机进行,路由器是不会进行重组的。 假设发送方发送一个 4000 字节的大数据报,若要传输在以太网链路,则需要把数据报分片成 3 个小数据报进行传输,再交由接收方重组成大数据报。 分片和重组

在分片传输中,一旦某个分片丢失,则会造成整个 IP 数据报作废,所以 TCP 引入了 MSS 也就是在 TCP 层进行分片不由 IP 层分片,那么对于 UDP 我们尽量不要发送一个大于 MTU 的数据报文。