TCP/IP-03-IP

第3章IP:网际协议

http://tools.ietf.org/html/rfc791
3.1 引言
IP是TCP/IP协议族中最为核心的协议。所有的TCP、UDP、ICMP及IGMP数据都以IP数据
报格式传输。
许多刚开始接触TCP/IP的人对IP提供不可靠、无连接的数据报传送
服务感到很奇怪,特别是那些具有X . 2 5或S N A背景知识的人。
不可靠( u n r e l i a b l e)的意思是它不能保证IP数据报能成功地到达目的地。IP仅提供最好
的传输服务。如果发生某种错误时,如某个路由器暂时用完了缓冲区, IP有一个简单的错误
处理算法:丢弃该数据报,然后发送ICMP消息报给信源端。任何要求的可靠性必须由上层来
提供(如TCP)。
无连接( c o n n e c t i o n l e s s)这个术语的意思是IP并不维护任何关于后续数据报的状态信息。
每个数据报的处理是相互独立的。这也说明, IP数据报可以不按发送顺序接收。如果一信源
向相同的信宿发送两个连续的数据报(先是A,然后是B),每个数据报都是独立地进行路由
选择,可能选择不同的路线,因此B可能在A到达之前先到达。
我们将简要介绍IP首部中的各个字段,讨论IP路由选择和子网的有关内容。还
要介绍两个有用的命令: ipconfig和netstat。关于IP首部中一些字段的细节,将留在以
后使用这些字段的时候再进行讨论。RFC 791[Postel 1981a]是IP的正式规范文件。

3.2 IP首部
普通的IP首部长为2 0个字节,除非含有选项字段。
最高位在左边,记为0 bit;最低位在右边,记为31 bit。4个字节的32 bit值以下面的次序传输:
首先是0~7 bit,其次8~15 bit,然后1 6~23 bit,最后是24~31 bit。这种传输次序称作big endian字节序。
由于TCP/IP首部中所有的二进制整数在网络中传输时都要求以这种次序,因此它又称作网络字节序。
以其他形式存储二进制整数的机器,如little endian格式,则必须在传输数据之前把首部转换成网络字节序。
目前的协议版本号是4,因此IP有时也称作IPv4。
3 . 1 0节将对一种新版的IP协议进行讨论。首部长度指的是首部占32 bit字的数目,包括任何选项。
由于它是一个4比特字段,因此首部最长为6 0个字节。
Te l n e t和R l o g i n这两个交互应用要求最小的传输时延,因为人们主要用它们来传输少量的
交互数据。另一方面, FTP文件传输则要求有最大的吞吐量。最高可靠性被指明给网络管理
(S N M P)和路由选择协议。用户网络新闻( Usenet news, NNTP)是唯一要求最小费用的应
用。
现在大多数的TCP/IP实现都不支持TO S特性,但是自4.3BSD Reno以后的新版系统都对它
进行了设置。另外,新的路由协议如O S P F和I S - I S都能根据这些字段的值进行路由决策。

为了计算一份数据报的IP检验和,首先把检验和字段置为0。然后,对首部中每个16 bit
进行二进制反码求和(整个首部看成是由一串16 bit的字组成),结果存在检验和字段中。当
收到一份IP数据报后,同样对首部中每个16 bit进行二进制反码的求和。由于接收方在计算过
程中包含了发送方存在首部中的检验和,因此,如果首部在传输过程中没有发生任何差错,
那么接收方计算的结果应该为全1。如果结果不是全1(即检验和错误),那么IP就丢弃收到的
数据报。但是不生成差错报文,由上层去发现丢失的数据报并进行重传。
ICMP、IGMP、UDP和TCP都采用相同的检验和算法,尽管TCP和UDP除了本身的首部和
数据外,在IP首部中还包含不同的字段。在RFC 1071[Braden, Borman and Patridge 1988]中有
关于如何计算Internet检验和的实现技术。由于路由器经常只修改T T L字段(减1),因此当路
由器转发一份报文时可以增加它的检验和,而不需要对IP整个首部进行重新计算。R F C
1141[Mallory and Kullberg 1990]为此给出了一个很有效的方法。


3.3 IP路由选择
从概念上说, IP路由选择是简单的,特别对于主机来说。
如果目的主机与源主机直接相连(如点对点链路)或都在一个共享网络上(以太网或令牌环网),
那么IP数据报就直接送到目的主机上。
否则,主机把数据报发往一默认的路由器上,由路由器来转发该数据报。
大多数的主机都是采用这种简单机制。
即IP层既可以配置成路由器的功能,也可以配置成主机的功能。
当今的大多数多用户系统,包括几乎所有的U n i x系统,都可以配置成一个路由器。
我们可以为它指定主机和路由器都可以使用的简单路由算法。
本质上的区别在于主机从不把数据报从一个接口转发到另一个接口,而路由器则要转发数据报。
内含路由器功能的主机应该从不转发数据报,除非它被设置成那样。
IP可以从TCP、UDP、ICMP和IGMP接收数据报并进行发送,
或者从一个网络接口接收数据报并进行发送,IP层在内存中有一个路由表。
当收到一份数据报并进行发送时,它都要对该表搜索一次。
当数据报来自某个网络接口时, IP首先检查目的IP地址是否为本机的IP地址之一或者IP广播地址。
如果确实是这样,数据报就被送到由IP首部协议字段所指定的协议模块进行处理。
如果数据报的目的不是这些地址,
那么(1)如果IP层被设置为路由器的功能,那么就对数据报进行转发;
否则(2)数据报被丢弃。
路由表中的每一项都包含下面这些信息:
.目的IP地址。
它既可以是一个完整的主机地址,也可以是一个网络地址,由该表目中的标志字段来指定。
.下一站(或下一跳)路由器( next-hop router)的IP地址,或者有直接连接的网络IP地址。
? 标志。其中一个标志指明目的IP地址是网络地址还是主机地址,
另一个标志指明下一站路由器是否为真正的下一站路由器,还是一个直接相连的接口
.为数据报的传输指定一个网络接口。
IP路由选择是逐跳地( hop-by-hop)进行的。
从这个路由表信息可以看出, IP并不知道到达任何目的的完整路径。
所有的IP路由选择只为数据报传输提供下一站路由器的IP地址。
它假定下一站路由器比发送数据报的主机更接近目的,而且下一站路由器与该主机是直接相连的。

3.4 子网寻址
现在所有的主机都要求支持子网编址( RFC 950 [Mogul and Postel 1985])。
不是把IP地址看成由单纯的一个网络号和一个主机号组成,而是把主机号再分成一个子网号和一个主机号。
这样做的原因是因为A类和B类地址为主机号分配了太多的空间,可分别容纳的主机数为22 4-2和21 6-2。
由于全0或全1的主机号都是无效的,因此我们把总数减去2。
就由当地的系统管理员来进行分配,由他(或她)来决定是否建立子网,以及分配多少比特给子网号和主机号。
例如,这里有一个B类网络地址(140 .252),
在剩下的16 bit中,8 bit用于子网号, 8 bit用于主机号。
这样就允许有2 5 4个子网,每个子网可以有254台主机。
许多管理员采用自然的划分方法,即把B类地址中留给主机的16 bit中的前8 bit作为子网
地址,后8 b i t作为主机号。这样用点分十进制方法表示的IP地址就可以比较容易确定子网号。
但是,并不要求A类或B类地址的子网划分都要以字节为划分界限。
大多数的子网例子都是B类地址。
其实,子网还可用于C类地址,只是它可用的比特数较少而已。
很少出现A类地址的子网例子是因为A类地址本身就很少.

3.5 子网掩码
B类IP地址:16位网络号,8位子网号,8位主机号:表示范围:192.x.x.x-255.255.255.0

任何主机在引导时进行的部分配置是指定主机IP地址。
大多数系统把IP地址存在一个磁盘文件里供引导时读用。
除了IP地址以外,主机还需要知道有多少比特用于子网号及多少比特用于主机号。
这是在引导过程中通过子网掩码来确定的。

3.8 ifconfig命令
到目前为止,我们已经讨论了链路层和IP层,现在可以介绍TCP/IP对网络接口进行配置
和查询的命令了。ipconfig( 8 )命令一般在引导时运行,以配置主机上的每个接口。
由于拨号接口可能会经常接通和挂断(如S L IP 链路),每次线路接通和挂断时,
ipconfig都必须(以某种方法)运行。
这个过程如何完成取决于使用的S L IP软件。下面是win32平台
windows->cmd->ipconfig
Windows 2000 IP Configuration
Ethernet adapter :
        Connection-specific DNS Suffix  . :
        IP Address. . . . . . . . . . . . : 192.168.1.216
        Subnet Mask . . . . . . . . . . . : 255.255.255.0
        Default Gateway . . . . . . . . . : 192.168.1.1

3.9 netstat命令
netstat命令也提供系统上的接口信息。
它在不同的系统的参数和命令是不一样的
- i参数将打印出接口信息, - n参数则打印出IP地址,而不是主机名字。
windows->cmd->netstat /?
D:/>netstat /?

Displays protocol statistics and current TCP/IP network connections.

NETSTAT [-a] [-e] [-n] [-s] [-p proto] [-r] [interval]

  -a            Displays all connections and listening ports.
  -e            Displays Ethernet statistics. This may be combined with the -s
                option.
  -n            Displays addresses and port numbers in numerical form.
  -p proto      Shows connections for the protocol specified by proto; proto
                may be TCP or UDP.  If used with the -s option to display
                per-protocol statistics, proto may be TCP, UDP, or IP.
  -r            Displays the routing table.
  -s            Displays per-protocol statistics.  By default, statistics are
                shown for TCP, UDP and IP; the -p option may be used to specify
                a subset of the default.
  interval      Redisplays selected statistics, pausing interval seconds
                between each display.  Press CTRL+C to stop redisplaying
                statistics.  If omitted, netstat will print the current
                configuration information once.
3.10 IP的未来
IP主要存在三个方面的问题。
这是Internet在过去几年快速增长所造成的结果。
1) 超过半数的B类地址已被分配。根据估计,它们大约在1 9 9 5年耗尽。
2) 32 bit的IP地址从长期的Internet增长角度来看,一般是不够用的。
3) 当前的路由结构没有层次结构,属于平面型( f l a t )结构,每个网络都需要一个路由表目。
随着网络数目的增长,一个具有多个网络的网站就必须分配多个C类地址,
而不是一个B类地址,因此路由表的规模会不断增长。

3.11 小结
开始描述了IP首部的格式,并简要讨论了首部中的各个字段。
我们还介绍了IP路由选择,并指出主机的路由选择可以非常简单:
如果目的主机在直接相连的网络上,那么就把数据报直接传给目的主机,否则传给默认路由器。
在进行路由选择决策时,主机和路由器都使用路由表。
在表中有三种类型的路由:特定主机型、特定网络型和默认路由型。
路由表中的表目具有一定的优先级。在选择路由时,主机路由优先于网络路由,最后在没有其他可选路由存在时才选择默认路由。
IP路由选择是通过逐跳来实现的。
数据报在各站的传输过程中目的IP地址始终不变,但是封装和目的链路层地址在每一站都可以改变。
大多数的主机和许多路由器对于非本地网络的数据报都使用默认的下一站路由器。
A类和B类地址一般都要进行子网划分。用于子网号的比特数通过子网掩码来指定。
我们为此举了一个实例来详细说明,即作者所在的子网,并介绍了变长子网的概念。
子网的划分缩小了Internet路由表的规模,因为许多网络经常可以通过单个表目就可以访问了。
接口和网络的有关信息通过ipconfig和netstat命令可以获得,包括接口的IP地址、子网掩码、广播地址以及M T U等。
在本章的最后,我们对Internet协议族潜在的改进建议—下一代IP进行了讨论。

习题
3.1 环回地址必须是1 2 7 . 0 . 0 . 1吗?
3.2 在图3 - 6中指出有两个网络接口的路由器。
3.3 子网号为16 bit的A类地址与子网号为8 bit 的B类地址的子网掩码有什么不同?
3.4 阅读RFC 1219 [Tsuchiya 1991],学习分配子网号和主机号的有关推荐技术。
3.5 子网掩码2 5 5 . 2 5 5 . 0 . 2 5 5是否对A类地址有效?
3.6 你认为为什么3 . 9小节中打印出来的环回接口的M T U要设置为1 5 3 6?
3.7 TCP/IP协议族是基于一种数据报的网络技术,即IP层,其他的协议族则基于面向连接的
网络技术。阅读文献[Clark 1988],找出数据报网络层提供的三个优点。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值