IP就像一个专职的快递员,所有的TCP、UDP、ICMP等数据都通过IP数据报的形式来进行传输。
IP提供的运输服务有2个特点:
不可靠
不可靠的含义是,不能保证数据成功的送到收件人的手中。
如果传输中不幸发生错误,那么IP首先会丢弃包裹,然后发送ICMP消息给寄件人。
无连接
无连接的含义是,每个包裹之间的传输是独立的,可能B包裹后寄出,但是比A包裹先送达。
IP首部
我们可以把IP首部想象成快递单,一般快递单大小为20字节,格式如下:
下面来分析分析这张快递单:
目前使用的协议版本号是4,所以IP也叫做IPv4。
首部长度是指32位的数量,首部长度*32=首部大小。由于该字段长度为4比特,所以该数量的最大值为2的4次方-1=15。
所以首部最长为15*32/8=60字节。一般来说,这个值为5,也就是20字节(没有任何选项)。
服务类型(TOS)字段包括一个 3 bit的优先权子字段(现在已被忽略), 4 bit的TOS子字段和1 bit未用位但必须置 0。
4 bit的TOS分别代表:最小时延、最大吞吐量、最高可靠性和最小费用。
这4比特中,只能有1位是1,其余3位全部为0。
总长度字段是指整个 I P数据报的长度,以字节为单位。利用首部长度字段和总长度字段,
就可以知道 I P数据报中数据内容的起始位置和长度。由于该字段长 1 6比特,所以 I P数据报最
长可达 6 5 5 3 5字节(回忆图 2 - 5,超级通道的 M T U为6 5 5 3 5。它的意思其实不是一个真正的
M T U—它使用了最长的 I P数据报)。
标识字段唯一地标识主机发送的每一份数据报。通常每发送一份报文它的值就会加 1。
T T L(t i m e - t o - l i v e)生存时间字段设置了数据报可以经过的最多路由器数。它指定了数据
报的生存时间。 T T L的初始值由源主机设置(通常为 3 2或6 4),一旦经过一个处理它的路由器,
它的值就减去 1。当该字段的值为 0时,数据报就被丢弃,并发送 I C M P报文通知源主机。
协议字段,根据它可以识别是哪个协议向 I P传送数据。
首部检验和字段是根据 I P首部计算的检验和码。它不对首部后面的数据进行计算。 I C M P、
I G M P、 U D P和T C P在它们各自的首部中均含有同时覆盖首部和数据检验和码。
为了计算一份数据报的 I P检验和,首先把检验和字段置为 0。然后,对首部中每个 16 bit
进行二进制反码求和(整个首部看成是由一串 16 bit的字组成),结果存在检验和字段中。当
收到一份 I P数据报后,同样对首部中每个 16 bit进行二进制反码的求和。由于接收方在计算过程中包含了发送方存在首部中的检验和,因此,如果首部在传输过程中没有发生任何差错,
那么接收方计算的结果应该为全 1。如果结果不是全 1(即检验和错误),那么I P就丢弃收到的数据报。但是不生成差错报文,由上层去发现丢失的数据报并进行重传。
最后一个字段是任选项,是数据报中的一个可变长的可选信息。目前,这些任选项定义
如下:
• 安全和处理限制(用于军事领域,详细内容参见 RFC 1108[Kent 1991])
• 记录路径(让每个路由器都记下它的 I P地址,见7 . 3节)
• 时间戳(让每个路由器都记下它的 I P地址和时间,见7 . 4节)
• 宽松的源站选路(为数据报指定一系列必须经过的 I P地址,见8 . 5节)
• 严格的源站选路(与宽松的源站选路类似,但是要求只能经过指定的这些地址,不能
经过其他的地址)。
这些选项很少被使用,并非所有的主机和路由器都支持这些选项。
IP路由选择
发