IP 提供不可靠,无连接的数据报传送服务

不可靠: 不能保证IP数据报能成功的到达目的地,如果发生某种错误时,IP有一个简单的错误处理算法:丢弃该数据报,然后发送ICMP消息报给信源端

无连接:是指IP并不维护任何关于后续数据报的状态信息。每个数据报的处理是相互独立的

IP首部

目前的协议版本号是4,因此IP有时候也成为IPv4

首部长度指的是首部占32bit字的数目,包括任何选项

服务类型(TOS)字段包括一个3bit的优先权字段(现在已被忽略),4bit 的TOS字段和1bit未用但位置必须置为0, 4bit 的TOS分别代表:最小延迟,最大吞吐量,最高可靠性和最小费用

现在大多数的TCP/IP 实现都不支持TOS特性,但是自4.3BSD Reno以后的新版系统都对它进行了设置,另外新的路由协议如OSPF和IS-IS都能根据这些字段进行路由决策

总长度字段是指整个IP数据报的长度,以字节为单位。利用首部长度字段和总长度字段,就可以知道IP数据报中数据内容的起始位置和长度,由于该字段长16比特,所以ip数据报最长可达65535 字节

尽管可以传送一个长达65535字节的IP数据报,但是大多数拦路层都会对它进行分片。主机也要求不能接收超过576字节的数据报。

总长度字段是IP首部中必要的内容

标识字段唯一的标识主机发送的每一份数据报

TTL 生成时间字段设置了数据报可以经过的最多路由器数,它指定了数据报的生存时间。TTL 的初始值由源主机设置,通常为 32 或 64 ,一旦经过一个处理它的路由器,它的值就减去1,当改字段的值为0时,数据报就被丢弃,并发送ICMP报文通知源主机

首部检验和字段是根据IP首部计算的检验和码,它不对首部后面的数据进行计算,ICMP,IGMP,UDP和TCP 在它们各自的首部中均包含有同时覆盖首部和数据检验和码

IP 路由选择

IP层在内存中有一个路由表,当收到一份数据报并进行发送时,它都要对该表搜索一次,当数据报来自某个网络时,IP首先检查目的IP地址是否为本机的IP地址之一或者IP广播地址,如果是,数据报就被发送到由IP 首部协议字段所指定的协议模块进行处理。如果数据报的目的不是这些地址,那么(1)如果IP层被设置为路由器的功能,那么就对数据报进行转发 (2)数据报被丢弃

路由表中包含如下信息:

  • 目的IP地址
  • 站(或下一跳)的IP地址,或者有直接连接的网络IP地址
  • 标志
  • 为数据报的传输指定一个网络接口

IP路由选择是逐跳地进行,IP并不知道到达任何目的地的完整路径,所有的IP路由选择只为数据报传输提供下一站路由器的IP地址

IP路由选择主要完成以下功能: - 搜索路由表,寻找能与目的IP地址完全匹配的表目 - 搜索路由表,寻找能与目的网络号相匹配的表目 - 搜索路由表,寻找标为默认的表目

如果上面这些步骤都没有成功,数据就不能被传送,如果不能传送的数据报来自本机,那么会向生成数据报的应用程序返回一个主机不可达或网络不可达的错误

完整主机地址匹配在网络号匹配之前执行,只有当他们都失败之后才选择默认路由,默认路由以及下一站路由器发送的ICMP间接报文是IP路由选择机制中的功能强大的特性

为一个网络指定一个路由器,而不必为每个主机指定一个路由器也是基本特性