IP 协议详解

11/13/2017 IP

# IP 协议简介

IP 协议位于 TCP/IP 协议的第三层——网络层。与传输层协议相比,网络层的责任是提供点到点(hop by hop)的服务,而传输层(TCP/UDP)则提供端到端(end to end)的服务。

# IP 地址的分类

# A类地址

一个A类IP地址由1字节的网络地址和3字节主机地址组成,网络地址的最高位必须是“0”.

  • 地址范围1.0.0.1-126.255.255.254(二进制表示为:00000001 00000000 00000000 00000001 - 01111110 11111111 11111111 11111110)。
  • 可用的A类网络有126个,每个网络能容纳1677214个主机。

# B类地址

一个B类IP地址由2个字节的网络地址和2个字节的主机地址组成,网络地址的最高位必须是“10”.

  • 地址范围128.1.0.1-191.255.255.254(二进制表示为:10000000 00000001 00000000 00000001 - 10111111 11111111 11111111 11111110)。
  • 可用的B类网络有16384个,每个网络能容纳65534主机 。

# C类地址

一个C类IP地址由3字节的网络地址和1字节的主机地址组成,网络地址的最高位必须是“110”。

  • 范围192.0.1.1-223.255.255.254(二进制表示为: 11000000 00000000 00000001 00000001 - 11011111 11111111 11111110 11111110)。
  • C类网络可达2097152个,每个网络能容纳254个主机。

# D 类地址

D类IP地址第一个字节以“1110”开始,它是一个专门保留的地址。它并不指向特定的网络,目前这一类地址被用在多点广播(Multicast)中。多点广播地址用来一次寻址一组计算机,它标识共享同一协议的一组计算机。

地址范围224.0.0.1-239.255.255.254

# E 类地址

以“1111”开始,为将来使用保留。

E类地址保留,仅作实验和开发用。

全零(“0.0.0.0”)地址指任意网络。全“1”的IP地址(“255.255.255.255”)是当前子网的广播地址。

# 广播与多播

广播和多播仅用于UDP(TCP是面向连接的)。

  • 广播

    一共有四种广播地址:

    1. 受限的广播

      受限的广播地址为255.255.255.255。该地址用于主机配置过程中IP数据报的目的地址,在任何情况下,router不转发目的地址为255.255.255.255的数据报,这样的数据报仅出现在本地网络中。

    2. 指向网络的广播

      指向网络的广播地址是主机号为全1的地址。A类网络广播地址为netid.255.255.255,其中netid为A类网络的网络号。

      一个router必须转发指向网络的广播,但它也必须有一个不进行转发的选择。

    3. 指向子网的广播

      指向子网的广播地址为主机号为全1且有特定子网号的地址。作为子网直接广播地址的IP地址需要了解子网的掩码。例如,router收到128.1.2.255的数据报,当B类网路128.1的子网掩码为255.255.255.0时,该地址就是指向子网的广播地址;但是如果子网掩码为255.255.254.0,该地址就不是指向子网的广播地址。

    4. 指向所有子网的广播

      指向所有子网的广播也需要了解目的网络的子网掩码,以便与指向网络的广播地址区分开来。指向所有子网的广播地址的子网号和主机号为全1.例如,如果子网掩码为255.255.255.0,那么128.1.255.255就是一个指向所有子网的广播地址。

      当前的看法是这种广播是陈旧过时的,更好的方式是使用多播而不是对所有子网的广播。

      广播示例:

      PING 192.168.0.255 (192.168.0.255): 56 data bytes
      64 bytes from 192.168.0.107: icmp_seq=0 ttl=64 time=0.199 ms
      64 bytes from 192.168.0.106: icmp_seq=0 ttl=64 time=45.357 ms
      64 bytes from 192.168.0.107: icmp_seq=1 ttl=64 time=0.203 ms
      64 bytes from 192.168.0.106: icmp_seq=1 ttl=64 time=269.475 ms
      64 bytes from 192.168.0.107: icmp_seq=2 ttl=64 time=0.102 ms
      64 bytes from 192.168.0.106: icmp_seq=2 ttl=64 time=189.881 ms
      
      1
      2
      3
      4
      5
      6
      7

    可以看到的确收到了来自两个主机的答复,其中 192.168.0.107 是本机地址。

  • 多播

    多播又叫组播,使用D类地址,D类地址分配的28bit均用作多播组号而不再表示其他。

    多播组地址包括1110的最高4bit和多播组号。它们通常可以表示为点分十进制数,范围从224.0.0.0到239.255.255.255。

    多播的出现减少了对应用不感兴趣主机的处理负荷。

    多播的特点:

    • 允许一个或多个发送者(组播源)发送单一的数据包到多个接收者(一次的,同时的)的网络技术

    • 可以大大的节省网络带宽,因为无论有多少个目标地址,在整个网络的任何一条链路上只传送单一的数据包

    • 多播技术的核心就是针对如何节约网络资源的前提下保证服务质量。

      多播示例:

      PING 224.0.0.1 (224.0.0.1): 56 data bytes
      64 bytes from 192.168.0.107: icmp_seq=0 ttl=64 time=0.081 ms
      64 bytes from 192.168.0.106: icmp_seq=0 ttl=64 time=123.081 ms
      64 bytes from 192.168.0.107: icmp_seq=1 ttl=64 time=0.122 ms
      64 bytes from 192.168.0.106: icmp_seq=1 ttl=64 time=67.312 ms
      64 bytes from 192.168.0.107: icmp_seq=2 ttl=64 time=0.132 ms
      64 bytes from 192.168.0.106: icmp_seq=2 ttl=64 time=447.073 ms
      64 bytes from 192.168.0.107: icmp_seq=3 ttl=64 time=0.132 ms
      64 bytes from 192.168.0.106: icmp_seq=3 ttl=64 time=188.800 ms
      
      1
      2
      3
      4
      5
      6
      7
      8
      9

# BGP

  • 边界网关协议(BGP)是运行于 TCP 上的一种自治系统的路由协议
  • BGP 是唯一一个用来处理像因特网大小的网络的协议,也是唯一能够妥善处理好不相关路由域间的多路连接的协议
  • BGP是一种外部网关协议(Exterior Gateway Protocol,EGP),与OSPF、RIP等内部网关协议(Interior Gateway Protocol,IGP)不同,BGP不在于发现和计算路由,而在于控制路由的传播和选择最佳路由
  • BGP使用TCP作为其传输层协议(端口号179),提高了协议的可靠性
  • BGP既不是纯粹的矢量距离协议,也不是纯粹的链路状态协议
  • BGP支持CIDR(Classless Inter-Domain Routing,无类别域间路由)
  • 路由更新时,BGP只发送更新的路由,大大减少了BGP传播路由所占用的带宽,适用于在Internet上传播大量的路由信息
  • BGP路由通过携带AS路径信息彻底解决路由环路问题
  • BGP提供了丰富的路由策略,能够对路由实现灵活的过滤和选择
  • BGP易于扩展,能够适应网络新的发展

# IPv4 与 IPV6 对比

IPV4 与 IPV6 对比使用 (opens new window)

# 参考资料