IP协议

整个的因特网就是一个单一的、抽象的网络。IP地址就是给因特网上的每一个主机(或路由器)的每一个接口分配一个在全世界范围内唯一的32位的标识符。

每个 32 位的 IP 地址由高位的可变长网络和低位的主机两部分组成。同一网络的所有主机,其地址的网络值是相同的。这意味着一个网络对应一块连续的 IP 地址空间,这块地址空间就称为地址的前缀。如果前缀包含 2^8 个主机地址,那么就留下了 24 位用于网络部分,可以写成 .../24。子网掩码用来与一个 IP 地址进行 AND 操作,提取出该 IP 地址的网络部分。

子网划分:在内部将一个网络块分成几个部分供多个内部网络使用,但对外部世界仍像单个网络一样。 路由聚合:把多个小前缀的地址块合并成一个大前缀的地址块。(解决路由表过大的问题)。

所谓分类的IP地址,就是将IP地址划分为若干固定类,每一类地址都由两个固定长度的字段组成,其中一个字段是网络号 net-id,它标志主机(或路由器)所连接到的网络,一个网络号在整个因特网范围内必须是唯一的。而另一个字段则是主机号 host-id,它标志该主机(或路由器),一个主机号在它前面的网络号所指明的网络范围内必须是唯一的。由此可见,一个IP地址在整个因特网范围内是唯一的。

由于一个路由器至少应当连接到两个网络(这样它才能将 IP 数据报从一个网络转发到另一个网络),因此一个路由器至少应当有两个不同的 IP 地址。用转发器或网桥连接起来的若干个局域网仍为一个网络,因此这些局域网都具有同样的网络号。路由器只根据目的站的IP 地址的网络号进行路由选择。

1953年,IP 地址被分为 5 个类别:

IP协议 - 图1

全零(0.0.0.0)地址对应于当前主机。全1的IP地址(255.255.255.255)是当前子网的广播地址。

另外还有三个范围的 IP地址被声明为私有化,任何网络可以在内部随意地使用这些地址,但是不允许包含这些地址的数据包出现在 Internet 上。

  • 1 个A类地址:10.0.0.0~10.255.255.255/8 (2^24 个地址)
  • 16 个B类地址:172.16.0.0~172.31.255.255/16 (16 * 2^16 个地址)
  • 256个C类地址:192.168.0.0~192.168.255.255/24 (256*2^8 个地址) 保留IP地址不会在internet网上出现,用于企业网络,A企业可以用,B企业也可以使用!

IP报文

IP协议 - 图2

报头字段解析:

  • 版本号(Version):标识目前采用的IP协议的版本号。一般的值为0100(IPv4),IPv6的值(0110)
  • 头部长度(Header Length):这个字段的作用是为了描述IP包头的长度,因为在IP包中有变长的可选部分。
  • 服务类型(Type of Service):这个子段可以拆分成两个部分:Precedence和TOS。TOS目前不太使用。而Precedence则用于QOS应用。(TOS字段的详细描述RFC 1340 1349)
  • 总长(Total Length):长度16比特。IP包最大长度65535字节。
  • 标识符(Identifier):该字段和Flags和Fragment Offest字段联合使用,对大的上层数据包进行分段(fragment)操作。
  • 标记(Flags):该字段第一位不使用。第二位是DF位,DF位设为1时表明路由器不能对该上层数据包分段。如果一个上层数据包无法在不分段的情况下进行转发,则路由器会丢弃该上层数据包并返回一个错误信息。第三位是MF位,当路由器对一个上层数据包分段,则路由器会在除了最后一个分段的IP包的包头中将MF位设为1。
  • 分段序号(Fragment Offset):该字段对包含分段的上层数据包的IP包赋予序号。由于IP包在网络上传送的时候不一定能按顺序到达,这个字段保证了目标路由器在接受到IP包之后能够还原分段的上层数据包。到某个包含分段的上层数据包的IP包在传送是丢失,则整个一系列包含分段的上层数据包的IP包都会被要求重传。
  • 生存时间(TTL):TTL长度8 bit,最大值是255,TTL的一个推荐值是64。虽然从字面上翻译,TTL是IP数据包在计算机网络中的存在的最长时间。但实际上TTL是IP数据包在网络中可以转发的最大跳数。TTL字段由IP数据包的发送者设置,在IP数据包从源到目的的整个转发路径上,每经过一个路由器,把该TTL的值减1,然后再将IP包转发出去。如果在IP包到达目的IP之前,TTL减少为0,路由器将会丢弃收到的TTL=0的IP包并向发送者发送 ICMP time exceeded消息。TTL的主要作用是避免IP包在网络中的无限循环和收发,节省了网络带宽,并能使IP包的发送者能收到告警消息。这个字段可以防止由于故障而导致IP包在网络中不停被转发。
  • 起源和目标地址(Source and Destination Addresses):这两个地段都是32比特。标识了这个IP包的起源和目标地址。

路由协议

在互联网中,网络结构是相当复杂的(存在复杂的局域网或广域网),若想要将数据包从一个主机成功发送到目的主机,则需要合理的路由将数据转发最终发送到目的主机。而要使路由能够正确的工作,需要路由控制模块和相关的路由协议来支持路由的工作。