TCP/IP详解卷1第三章笔记

引言

所有的TCP、UDP、IP、ICMP、IGMP都以IP数据报格式传输。IP提供不可靠,无连接的数据包传输服务。

(1) IP协议不可靠(unreliable)的意思是它不能保证数据包能够成功到达目的地。IP仅仅提供最好的的传输服务。
(2) IP协议无连接(connectionless)的意思是IP数据报并不维护后续数据报的状态信息。每个数据报的处理是相互独立的。

IP首部

IP首部

图一.IP首部
TCP/IP首部中所有的二进制整数在网络中传输时都要求以big endian次序(网络字节序)传输。其他传输格式,如little endian,则必须在传输数据之前将首部转换成网络字节序。

首部长度指的是首部占32bit字(4字节)的数目。由于是4bit字段,所以首部最长是60字节。(4bit,最大数字为15,15*4字节=60字节)

服务类型(TOS)字段包含3bit的优先权子字段(已被忽略),4bit的TOS子字段和1 bit未用位字段(必须置0)(所以一共是8bit)。4bitTOS分别代表:
(1)最小时延
(2)最大吞吐量
(3)最高可靠性
(4)最小费用
4bit中只能置1bit,如果都置0则说明该IP数据报是一般服务
不同应用的TOS值

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

总长度字段是指整个IP数据报的长度,以字节为单位。根据总长度字段,IP数据报最长可达65536字节。当数据报被分片时,总长度字段也会根据此进行变化。主机也要求不能接收超过576字节的数据报。总长度字段是IP首部中必要的内容。因为有可能以太网帧比IP数据报更长,在这样的情况下,如果没有总长度字段,IP就不知道IP数据报的大小。

标识字段唯一地标志主机发送地每一份数据报,通常它每发送一份数据报它的值就会加1

TTL生存时间字段是根据IP首部计算的校验和(checksum)码。进行校验时,如果校验结果不全是1(反码+原码),IP就丢弃收到的数据报,由上层协议进行差错校验并重传。

最后一个字段是任选项,是数据报中的一个可变长信息。有如下几种选项:

  • 安全和处理限制(用于军事领域)
  • 记录路径(让每个路由器都记下它的IP地址)
  • 时间戳(每个路由器记下它的IP地址和时间)
  • 宽松的源站选路(为数据报提供一系列必须经过的IP地址,但不是一定非得经过这些地址)
  • 严格的源站选路(与宽松的源站选路类似,但是要求只能经过指定的这些地址,不能经过其他地址)
    并非所有的主机和路由器都支持这些选项。

IP路由选择

从概念上说,IP路由选择都是简单的,特别对于主机来说。如果目的主机和源主机直接相连(如点对点链路)或都在一个共享网络上(以太网或令牌环网),那么IP数据报就直接送到目的主机上。

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

路由表中包含:

  • 目的IP地址,既可以是一个完整的主机地址,也可以是一个网络地址
  • 下一站(或下一跳)路由器的IP地址,或者有直接连接的网络IP地址。
  • 标志。其中一个标志指明目的IP是网络还是主机地址,另一个标志指明下一站路由器是否是真正的下一站路由器,还是一个直接相连的接口
  • 为数据报的传输指定一个网络接口

IP路由选择主要完成以下功能:
(1) 第一步,搜索路由表,寻找能与目的IP地址完全匹配的表目(网络号和主机号都要匹配)
(2) 第二步,搜索路由表,寻找能与目的网络号匹配的表目
(3) 第三步,搜索路由表,寻找标为“默认”的表目
如果上述三项都没有成功,则会向生成数据报的应用程序返回“主机不可达”或“网络不可达”的错误。

子网寻址

现在所有的主机都要求支持子网编址。不是把主机看作一个单纯的网络号和一个主机号组成,而是把主机号再分成一个子网号和一个主机号。

子网对外部路由器来说隐藏了内部网络组织(一个校园或公司内部)的细节。划分子网的目的是它可以缩小Internet路由表的规模。
网络noao.edu(140.252)中的大多数子网安排

图三.网络noao.edu(140.252)中的大多数子网安排

子网掩码

任何主机在引导(boot)时进行的部分配置是指定主机IP地址。大多数系统把IP地址存在一个磁盘文件里供引导时读用。

除了IP地址之外,主机还需要知道有多少比特用于子网号以及多少比特用于主机号。这是在引导过程中通过子网掩码确定的。

尽管IP地址一般以点分十进制方法表示,但是子网掩码却经常用十六进制表示,特别是当界限不是一个字节时,因为子网掩码是一种比特掩码。
两种不同的子网掩码

图四.两种不同的B类地址子网掩码

给定IP地址和子网掩码之后,主机就可以确定IP数据报的目的IP是:
(1) 本子网上的主机
(2) 本网络中其他子网中的主机
(3) 其他网络上的主机

特殊情况的IP地址

特殊情况的IP地址

图五.特殊情况的IP地址