《TCP/IP详解:卷一》第3章:IP:网际协议

引言

IP是TCP/IP协议族中最核心的协议。所有的TCP,UDP,ICMP,IGMP数据都以IP数据报格式传输。IP提供不可靠,无连接的数据报传送服务。

不可靠:不能保证IP数据报能够成功地到达目的地。如果发生某种错误时,如某个路由器暂时用完了缓冲区,IP有一个简单的错误处理算法:丢弃该数据报,然后发送ICMP消息报给信源端。任何要求的可靠性必须由上层来提供。

无连接:IP并不维护后续数据报的状态信息。每个数据报的处理是相互独立的。可不按发送顺序接收。

IP首部

普通IP首部长20个字节,除非含有选项字段。

4位协议版本号,目前为4(IPv4)。

首部长度,指首部占32bit字的数目,普通IP数据报(没有任何选项)为5。也因它只占4bit,所以首部最长为60字节。

服务类型,3bit的优先权子字段(现已被忽略),4bit的TOS字段,1bit未用位但必须置为0。4bit TOS分别代表:最小时延,最大吞吐量,最高可靠性和最小费用。4bit中只能置其中1bit。如果4bit全为0则为一般服务。

服务类型字段推荐值:

Telnet和Rlogin是交互应用,要求最小传输时延。FTP文件传输则需要最大吞吐量。

路由协议OSPE和IS-IS都能根据这些字段进行路由决策。

总长度字段:指整个IP数据报的长度。利用总长度字段和首部长度字段就可以知道IP数据报中数据的起始位置和长度。该字段16bit,所以IP数据报最长到65535字节。数据报被分片时,该字段的值也随着变化。

总长度字段是IP首部中必要的内容,因为一些数据链路(如以太网)需要填充一些数据以达到最小长度。尽管以太网的数据帧最小为46字节,但是IP数据报可能更短。如果没用总长度字段,IP层就不知道多少是IP数据报的内容。

标识字段是唯一地标识主机发送的每一份数据报。在讨论分片时再讨论它和标志字段,片偏移字段。

TTL生存时间字段设置了数据报可以经过的最多路由数。指定了数据报的生存时间。

协议字段可以是哪个协议向IP传送数据。

首部检验和字段是根据IP首部计算的检验和码。不对首部后面的数据进行计算。

源IP地址,目的IP地址。

选项字段,是数据报中的一个可变长的可选信息。以32bit为界限,在必要时插入值为0的填充字节。这样就保证IP首部始终是32bit的整数倍(首部长度字段要求)。

IP路由选择

对于主机来说,如果目的主机与源主机直接相连(如点对点链路)或都在一个共享网络上,那么IP数据报就直接送到目的主机上。否则,主机吧数据报发往一默认路由器上,由路由器来转发数据报。

IP层即可以配置成路由器的功能又可配置成主机功能。
本质上的区别是主机不把数据报从一个接口转发到另一个接口,而路由器则要转发数据报。

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

数据表中每一项包含的信息:

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

IP路由选择主要完成下列的功能:

  • 搜索路由表,寻找能与IP地址完全匹配的表目(网络号+主机号)。
  • 搜索路由表,寻找能与目的网络号相匹配的表目。
  • 搜索路由表,寻找标为“默认”的表目。

如果都未成功,则该数据报不能被传送。

为一个网络指定一个路由而不是为每一个主机指定一个路由器,这是IP路由选择机制另一个基本特性。这样做可以极大的缩小路由表的规模。

子网寻址

子网编址。把主机号再分为一个子网号和一个主机号。

减少IP地址浪费。

子网对外部路由器影藏了内部网络组织的细节。

子网掩码

子网掩码以确定IP地址中多少bit用于子网号,多少用于主机号。值为1的bit留给网络号和子网号,0留给主机号。

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

特殊情况的IP地址

0:所有bit全为0;-1:全为1;netid、subnetid、hostid分别表示不全为0或全为1的对应字段。子网号为空代表没有进行子网划分。

头两项为特殊的源地址,中间项是特殊的环回地址,最后四项是广播地址。

ifconfig,netstat命令


查看系统上的接口信息

几个问题

1:环回地址必须是127.0.0.1吗?
不,任何网络号为127的A类地址都可以

2:子网号为16bit的A类地址与子网号为8bit的B类地址的子网掩码有什么不同?
没有什么不同。

3:子网掩码255.255.0.255是否对A类地址有效?
这是非连续的子网掩码,目前已不提倡使用。

4:TCP/IP技术是基于一种数据报的网络技术,即IP层,其他协议族则基于面向连接的网络技术。试找出数据报网络层提供的三个优点。

  • 数据报降低了路由器中对连接状态的需求。
  • 数据报提供了基本的构件,在它上面可以构造不可靠(UDP)和可靠的(TCP)运输层。
  • 数据报代表了最小的网络层假定,使得可以使用很大范围的数据链路层服务。
-------------本文结束感谢您的阅读-------------