1 IP协议
IP 协议是一种无连接的不可靠数据报交付协议,协议本身不提供任何的错误检查与恢复机制。它是整个TCP/IP 协议栈的核心协议,上层协议都要依赖 IP 协议提供的服务, IP 协议负责将数据报从源主机发送到目标主机,通过 IP 地址作为唯一识别码。
1.2 IP 地址
IP 地址划分为 5 大类,分别为 A、 B、 C、 D、 E 五类,每一类地址都觉定了其中 IP 地址的一部分
组成。
受限广播地址:
限广播地址用于定义整个互联网, 如果设备想使IP 数据报被整个网络所接收,就发送这个目的地址全为 1 的广播包,但这样会给整个互联网带来灾难性的负担, 所以在任何情况下,路由器都会禁止转发目的地址为
255.255.255.255 的广播数据包, 因此这样的数据包仅会出现在本地网络中(局域网) ,255.255.255.255 这个地址指本网段内的所有主机。
直接广播地址:
受限广播地址是网络号与主机号都为 1 的地址,但是直接广播地址是主机号全为 1 而得到的地址,广播地址代表本网络内的所有主机,使用该地址可以向网络内的所有主机发送数据。
多播地址:
多播地址用在一对多的通信中,即一个发送者,多个接收者, 不论接受者员数量的多少, 发送者只发送一次数据包。 多播地址属于分类编址中的 D 类地址, D 类地址只能用作目的地址,而不能作为主机中的源地址。
环回地址:
127 网段的所有地址都称为环回地址,主要用来测试网络协议是否工作正常的作用。比如在电脑中使用 ping 命令去 ping 127.1.1.1 就可以测试本地 TCP/IP 协议是否正常。
本网络本主机:
IP 地址 32bit 全为 0 的地址(0.0.0.0)表示的是本网络本主机, 这个 IP 地址在 IP 数据报中只能用作源 IP 地址,这发生在当设备启动时但又不知道自己的 IP 地址情况下。在使用 DHCP 分配 IP 地址的网络环境中,这样的地址是很常见的, 主机为了获得一个可用的IP 地址,就给 DHCP 服务器发送 IP 数据报,并用这样的地址(0.0.0.0) 作为源地址,目的地址为 255.255.255.255(因为主机这时还不知道 DHCP 服务器的 IP 地址) ,然后 DHCP服务器就会知道这个主机暂时没有 IP 地址,那么就会分配一个 IP 给这个主机。
1.3 IP 数据报
整个 IP 数据报的理论最大长度为 65535 字节然而,数据报很少有超过 1500 字节的,这是因为底层链路硬件不允许那么大的数据报出现在链路上,以太网数据帧的最大长度为 1500 个字节,当有一个很大的 IP 数据报出现的时候,就需要进行分片处理;而如果 IP 数据报的数据很少的时候,比如少于 46 个字节,那么在以太网进行发送数据的时候会填充一定的字节以满足以太网帧最小度,那么在接收方就要根据这个字段的内容进行提取有效数据。
1.4 IP 数据报分片
分片处理是将 IP 数据报中的数据分片成两个或更多个较小的 IP 数据报,用单独的链路层帧封装这些较小的 IP 数据报;然后向输出链路上发送这些帧, 每个这些较小的数据报都称为分片,由于 IP 数据报的分片偏移量是用 8 的整数倍记录的,所以每个数据报中的分片数据大小也必须是 8 的整数倍。每个数据分片到达目标 IP 地址的主机时间是不一样的。
在发送主机中,它会把需要分片的数据进行切割(分片) ,按照数据的偏移量进行切割,切割后形成的每个 IP 数据报(即分片)具有与初始 IP 数据报几乎一样的 IP 数据报首部,为什么说是几乎一样而不是全部一样呢,因为 IP 数据报首部的标志、分片偏移量这两个字段与分片有关,不同的分片,这些信息可能不一样,不同的分片数据报长度也是不一样的,校验和字段也是不一样的。 但是源 IP 地址、目标 IP 地址与标识号肯定是一样的,每个分片上的分片偏移量字段是不一样的。
IP 是一种不可靠的服务,一个或多个分片可能永远到达不了目的地。因为这种原因,为了让目标主机相信它已经收到了初始 IP 数据报的最后一个分片,其最后一个分片上的标志字段(最后一位)被设置为 0。 而所有其他分片的标志被设为 1。另外,为了让目的主机确定是否丢失了一个分片(且能按正确的顺序重新组装分片),使用偏移字段指定该分片应放在初始 IP 数据报的哪个位置。