协议详解3——IP
1. 特点:
所有的TCP,UDP,ICMP,IGMP数据都以IP数据报格式传输。 提供不可靠,无连接服务。
不可靠:
不能保证IP数据报能成功到达目的。IP仅提供最好的传输服务。如果发生某种错误时,如某个路由器暂时用完了缓冲区,IP有一个简单的错误处理算法:丢弃数据报,然后 发送ICMP消息给信源端。任何要求的可靠性必须由上层提供(如TCP);
无连接:
IP不维护任何关于后续数据报的转态信息。每个数据报的处理是相互独立的。即,IP数据报可以不按发送顺序接收。如果一个信源向相同的信宿发sing两个连续的数据报 (先A后B),每个数据报都是独立进行路由选择,B可能比A先到达。
2. IP首部
版本目前大部分为4.也称为IPV4.
首部长度指首部占32 bit的数目.因此IP首部最长为60 Byte,且为4 Byte的倍数.
服务类型(TOS)包括3bit的优先权子字段(现在已被忽略),4 bit的TOS子字段和1 bit未用位但必须置0.4 bit的TOS分别代表:最小时延,最大吞吐量,最高可靠性和最小费用.
总长度字段指整个数据报的长度.以Byte为单位.该字段16 bit,所以IP数据报的最大长度可达65535 Byte.
标识字段唯一地标识主机发送的每一份数据.标志位和片偏移字段与分片重组有关.
TTL(time-to-live)生存时间字段设置了数据报可以经过的最多路由器数.
协议字段表示那个协议向IP传送数据报.1为ICMP协议,2为IGMP协议,6为TCP协议,17为UDP协议.
首部检验和字段是根据IP首部计算的检验和码.它不对首部后面的数据进行计算.
选项字段是一个可变长的可选信息.但必须为32 bit的倍数(首部长度字段所要求).
IP地址为32 bit.
服务类型(TOS):包括3bit的优先权字段(已被忽略),4bit的TOS子字段和1bit未用位但必须置0。4bit的TOS分布代表:最小延迟,最大吞吐量,最高可靠性,最小费用。4bit只能置其中1bit。如果4bit均为0,意味着是一般服务。Te l n e t和R l o g i n这两个交互应用要求最小的传输时延,因为人们主要用它们来传输少量的交互数据。另一方面, F T P文件传输则要求有最大的吞吐量。最高可靠性被指明给网络管理(S N M P)和路由选择协议。用户网络新闻( Usenet news, NNTP)是唯一要求最小费用的应用。
3. IP路由选择
在一般情况下,IP从TCP,DUP,ICMP和IGMP接收数据报(即本地生成的数据)并进行发送,或者从其他接口接收数据(待转发的数据)进行转发或接收.
当数据报来自某个接口:
1).IP首先判断IP地址是否为本地地址或者广播地址,如果是就送到首部协议段所指定的协议模块进行处理.
2).如果不不满足这些地址,且IP层设置为了路由功能,那么就对数据进行转发,否则数据报被丢弃.
IP路由选择顺序:
1)搜索路由表,寻找与目地IP完全匹配的表目.(网络号和主机号)
2)搜索路由表,寻找与目地IP网络号相同的表目.
3)搜索路由表,寻找默认(default)表目.
以上3步依次执行,成功即跳出,如果都不成功,该数据报就不能被转发.
从bsdi到ftp.uu.net(192.48.96.9)的初始路径:
主机bsdi有一份IP数据报要传到ftp.uu.net主机上,它的IP地址是192.48.96.9。经过的前三个路由器如图所示。首先,主机bsdi搜索路由表,但是没有找到与主机地址或网络地址相匹配的表目,因此只能用默认的表目,把数据报传给下一站路由器,即主机sun。当数据报从bsdi被传到sun主机上以后,目的IP地址是最终的信宿机地址(192.48.96.9),但是链路层地址却是sun主机的以太网接口地址.
当sun收到数据报后,它发现数据报的目的IP地址并不是本机的任一地址,而sun已被设置成具有路由器的功能,因此它把数据报进行转发。经过搜索路由表,选用了默认表目。根据sun的默认表目,它把数据报转发到下一站路由器netb,该路由器的地址是140.252.1.183。数据报是经过点对点SLIP链路被传送的。这里,我们没有给出像以太网链路层数据帧那样的首部,因为在SLIP链路中没有那样的首部。当netb收到数据报后,它执行与sun主机相同的步骤:数据报的目的地址不是本机地址,而netb也被设置成具有路由器的功能,于是它也对该数据报进行转发。采用的也是默认路由表目,把数据报送到下一站路由器gateway(1 4 0 . 2 5 2 . 1 . 4)。位于以太网1 4 0 . 2 5 2 . 1上的主机netb用ARP获得对应于1 4 0 . 2 5 2 . 1 . 4的48 bit以太网地址。这个以太网地址就是链路层数据帧头上的目的地址。路由器gateway也执行与前面两个路由器相同的步骤。它的默认路由表目所指定的下一站路由器I P地址是140.252.104.2。
说明:
1) 该例子中的所有主机和路由器都使用了默认路由。事实上,大多数主机和一些路由器可以用默认路由来处理任何目的,除非它在本地局域网上。
2) 数据报中的目的I P地址始终不发生任何变化(只有使用源路由选项时,目的I P地址才有可能被修改,但这种情况很少出现)。所有的路由选择决策都是基于这个目的IP地址。
3) 每个链路层可能具有不同的数据帧首部,而且链路层的目的地址(如果有的话)始终指的是下一站的链路层地址。在例子中,两个以太网封装了含有下一站以太网地址的链 路层首部,但是S L I P链路没有这样做。以太网地址一般通过A R P获得。
4. 子网寻址
子网编制:不是吧IP地址看成由单纯的一个网络号和一个主机号组成,而是把主机号再分为一个子网号和一个主机号。
这样做的原因是因为A类和B类地址为主机号分配了太多的空间,可分别容纳的主机数为224-2 和 216-2。事实上,在一个网络中人们并不安排这么多的主机。由于全0或全1的主机号都是无效的(有其他用途),因此我们把总数减去 2。 在InterNIC获得某类I P网络号后,就由当地的系统管理员来进行分配,由他(或她)来决定是否建立子网,以及分配多少比特给子网号和主机号。例如,这里有一个 B类网络地址(1 4 0 . 2 5 2) ,在剩下的16 bit中,8 bit用于子网号,8 bit用于主机号,格式如图所示。这样就允许有2 5 4个子网,每个子网可以有2 5 4台主机。
5. 子网掩码