TCP-IP协议入门(轉)

. 前言

本文用于介绍TCP/IP协议的最基本内容,十分简单,也十分基本,如果希望了解详细的内容,请参阅其它资料,这只是给初学者用的。

2. TCP/IP介绍
TCP/IP通常指的是关于TCP和IP的任何东西,它是一个统称,它既可以包括其它协议,其它应用程序,还可以包括网络介质。

2.1 基本结构


这个结构存在于Internet中计算机之中,它决定了计算机在网络上的动作。

2.2 名词

数据块的名称会因为它处于不同的协议栈而不同。这里给出一个总结:在以太网时,它称为一个以太网帧,在IP上时,它称为IP包,如果数据在IP和UPD之间一般称为UDP数据报,而数据如果在IP和TCP之间,则称为TCP段(或消息),而数据在应用程序中时,则称为应用程序消息。这种定义不是绝对的,不同的文章会有不同的说法。


2.3 数据流

数据流从应用程序流向TCP或UDP,我们通常知道的FTP是应用TCP协议的,而SNMP协议却是使用UDP协议的。数据由不同协议模块流向同一个以太网适配器。由适配器将数据传送到网络介质上去。上面的过程在接收方反向发生。

 


以太帧传送到ARP或IP模块中,而以太帧中的数据决定此数据是由IP还是由ARP处理。如果是供IP处理的包,则由IP模块直接传送给TCP或UPD,具体传送给谁这由IP包头决定。而UDP包内的数据决定了应该由UPD协议上层的哪一个应用程序接收这个数据,这一点和TCP是一致的。数据在从应用程序下传到网络时,过程比较简单,各层把在数据上加入自己的包头信息,然后传送给下一层就行了。虽然Internet支持多种网络介质,但是一般我们都拿以太网范例。这里我们需要记住的是以太地址是唯一的,全球唯一的。计算机同时也拥有一个四个字节的IP地址,这个地址用于标记IP模块的地址,但对于Internet来说,IP地址不见得是唯一的。一台运行着的计算机通常知道自己的IP地址和以太地址。


2.4 两个网络接口

专用于转发IP包的计算机我们称为IP路由器。从上图中我们可以看出,IP转发的时候根本不需要TCP和UDP,所以有些IP路由器的实现中根本没有TCP和UPD模块。


2.5 IP创建信号逻辑网络

数据在从应用程序向网络介质传送的过程中,被各种协议加上包头,而由网络介质向应用程序传送时,这些加入的包头被一个个取消,而IP层加入的信息构成了一个逻辑网络,这个逻辑网络是相对于多个物理网络而言的。多个物理网络相互连接,就是我们现在经常听到的Internet的由来。


2.6 物理网络独立性

IP将下层的网络结构对上层的应用程序隐藏起来,如果您发明了一种新的网络,您只需要实现一种驱动程序,让它能够和IP进行通信就可以使您的网络连接入Internet。


2.7 互连性

如果Internet上的两台计算机能够进行通信,我们称它们互连了。我们的计算机一般都具有互连性,因此我们购买的计算机一般都可以在网络上相互通信。


3. Ethernet

下面我们看看以太技术,一个以太帧包括源地址,目的地址,类型域和数据。一个以太地址6个字节,每个以太适配器都有唯一的以太地址,而地址"FF-FF-FF-FF-FF-FF"代表一个广播地址。以太网使用CSMA/CD技术,这个技术使设备共享一条传输介质,某一时刻只能一台设备传送数据,如果两台同时传送就会产生冲突,而解释这种冲突的办法就是两个设备停一会儿(一个随机的时间)再传送数据。


我们可以把以太技术想成许多人在一个黑屋子里说话,如果每次只有一个人说,那么对这个话感兴趣的人就会听到,记录下来,而不感兴趣的人就不管它就是了。如果两个人同时说,两个人就会听到自己在说话的时候还有另外一个人也在说,于是就停下来,过一会儿再说,这样来达到传送消息的目的。这里需要注意的是,屋子里的每个人有一个唯一的名字,这个名字就是以太地址,而如果某个人想对所有人说话,它就应用那个广播地址传送消息就可以了。


4. ARP

ARP是为了解决IP包发出后,目的以太地址如何确定的问题。ARP是用来将IP地址解释为以太地址的协议,这个协议只对由IP传出的数据有用。


4.1 ARP地址翻译表

这个翻译的过程中通过查询一张表进行的,每个机器的IP地址和以太网卡号就在这个表中,如果我想向一个IP地址发送消息,只需要查询一下这张表,知道目的以太地址是什么就可以了。下面就是一张这个的ARP表:


IP地址 以太地址
223.1.2.1 08-00-39-00-2F-C3
223.1.2.3 08-00-5A-21-A7-22
223.1.2.4 08-00-10-99-AC-54

图1. ARP表

IP地址在机器内部是一个4字节数,而人类的表示是如上表中的表示方法,这种方法称为点为十进制。这种翻译表是必须的,因为IP地址的选择和以太地址的选择是独立进行的。以太地址是生产厂商根据分配给它的地址空间直接烧结在网卡上的。


4.2 经典的翻译过程

在通常网络作进行时,应用程序发送消息到TCP(或UDP),由TCP(或UDP)传送消息到IP模块,目的IP地址是已知的,在将这个包传送到以太适配器时一定要查找这个翻译表知道目的以太地址是什么。而这时ARP就管用了。


4.3 ARP请示/响应对

但是,ARP表如何从空变得那么充实呢?这是由ARP协议来完成填充工作的,它工作的基本过程是“需时再取”的原则。当ARP不能用于查询以太地址时,会发生下面两件事情:


1. ARP用以太广播地址发送一个以太包到网络上,所有的计算机都会接收到这个包;

2. 将需要发送的IP包放入发送队列中;

发出的那个以太包就象一个问路的人一样,它带有如下信息:“如果您的IP地址和我想找的IP地址一样,请告诉我您的以太地址”,下面是一个ARP请示包的例子:


发送者IP地址 223.1.2.1
发送者以太地址 08-00-39-00-2F-C3
目标IP地址 223.1.2.2
目标以太地址 (空)

表2. ARP请示包例子

每台计算机的ARP模块检查自己的IP地址是不是和这个包内的IP地址一致,如果不一致,就什么也不干,如果一致,则返回一个响应,其中包括的信息指出了这个IP地址的以太地址。下面是一个响应包的例子:


发送者IP地址 223.1.2.2
发送者以太地址 08-00-28-00-38-A9
目标IP地址 223.1.2.1
目标以太地址 08-00-39-00-2F-C3

表3. ARP响应包例子

这个响应由原来发出请求的计算机接收,ARP就将相应的IP地址和以太地址加入ARP表中,这个过程不断地发生,这个表也就不断地加大了,更新过的ARP表如下图所示:


IP地址 以太地址
223.1.2.1 08-00-39-00-2F-C3
223.1.2.2 08-00-28-00-38-A9
223.1.2.3 08-00-5A-21-A7-22
223.1.2.4 08-00-10-99-AC-54

表4. 更新后的ARP表

这个请求与响应的过程十分迅速,放入队列的IP包现在可以取出发送了,因为所需要的以太地址已经有了,可以发送了。如果没有目的主机,发出的请求就不会有回应,IP层抛弃需要发送的IP包,而上层协议也不清楚是网络断了,还是不存在目的主机,IP层不负责报告错误类型。


5. Internet协议

IP模块是Internet技术的核心,而它的路由技术是它成为核心的基础。了解路由需要也解互连是什么。

5.1 直接路由

下图是一个只有三台计算机的小网络,每台计算机有运行一个TCP/IP协议栈,每个计算机配有以太适配器,每个计算机都被指定一个独立的IP地址。

 


当A发送IP包到B时,IP包头包括A的IP地址(这是源地址)和A的以太地址(这是源以太地址);同时这个包也包括B的IP地址和以太地址作为目的地址。


地址 源 目的
IP头 A B
以太头 A B

表5. 从A到B的IP包

在这种情况下,使用IP是多余的,因为它根本没有起到什么作用,用IP只能增加多余的处理时间,占用了多余的传输带宽。B接收到这个包后,IP层检查这个包内的目的地址是不是和自己的IP地址一致,如果一致则将数据返回给上层协议。这称为直接路由。


5.2 间接路由

下面这个示意图更接近Internet真实的情况。三个小的以太网,每个网络中有三台计算机,它们有唯一以太地址,IP地址,这三个网络通过一台路由器连接,这台路由器有一个IP地址和三个以太地址,因为它和三个网络连接,当然要三个了。这里一定要记住,IP地址只有一个。

 


计算机D是一台路由器,它的TCP/IP协议栈内可能根本没有TCP和UDP,而可能有多个ARP模块和多个以太驱动程序(因为有多个以太适配器,所以要多个驱动程序才可以)。网络管理员为每个子网(上图中有三个子网)指定一个网络号,是这个网络的名称,这个名称在上图是没有表示。


如果计算机A希望和计算机B通信,采用直接路由就可以了。这个过程上面已经说过了。在同一个子网内均采用直接路由。如果计算机D希望和计算机A通信,这也是直接路由,直接通信就行了,D和其它所有计算机的通信都是直接通信。但是如果计算机A希望和非本子网内的计算机通信就不能采用直接路由了,它发送的IP包必须发到计算机D,由计算机D向其它网络发送,这种通信就是非直接的。


路由对于IP协议上层的协议来说是透明的,它们根本不知道有什么路由存在。

请注意下面的图,源地址是计算机A的,目的IP地址是计算机E,而目的以太地址却是计算机D的,这是因为计算机A和计算机E不处于同一个子网内,不能直接通信,需要由计算机D进行转发,因此这包只能发往计算机。


地址 源 目的
IP头 A E
以太头 A D

表6. 从计算机A到计算机E以太帧示意图

对于计算机D来说,它的以太帧地址如下:

地址 源 目的
IP头 A E
以太头 D E

表7. 从计算机D到计算机E以太帧示意图

因为计算机D和计算机E可以直接通信。我们可以看到,在

表7. 从计算机D到计算机E以太帧示意图

因为计算机D和计算机E可以直接通信。我们可以看到,在直接通信时,目的IP地址和以太地址都是接收者的,而在非直接通信时,目的IP地址是接收者的,而目的以太地址却是路由器的。上面的例子比较简单,真实的路由要比这个复杂得多,因为现实中的网络十分大,要许多路由器同时工作,这时的情况就比较复杂了。


5.3 IP路由规则

对于要发出的IP包,IP必须决定如何发送,是采用直接发送还是非直接发送,这是在路由表的帮助下完成的。对于传入的IP包,IP模块必须能够识别它是不是自己需要的包,如果是自己需要的,就把数据传送到上一层协议中,如果不需要则进行转发。在IP包达到目的地址后,它不再转发了。


5.4 IP地址

IP地址是由网络管理者为一台计算机指定的地址,IP地址的一部分作为网络号,另一部分作为网络中的主机号。具体内容请大家查询相关资料。IP地址是由NIC管理的,所有直接连接到Internet上的计算机如果需要IP地址,必须和NIC联系,则它指定;如果您需要建立自己的网络,那相应的网络号也需要从NIC取得。


5.5 名称

人们喜欢使用计算机的名称,而不喜欢使用数字来标记一台计算机,对于小型网络,计算机名和IP地址的对应表可以保存在每台计算机上,如果是一个大型网络,则需要一台专用的计算机来负责IP地址到计算机名的转换。下面就是一个IP地址和计算机名的对应表。


223.1.2.1 alpha

223.1.2.2 beta

223.1.2.3 gamma

223.1.2.4 delta

223.1.3.2 epsilon

223.1.4.2 iota

前一列是IP地址,后一列是计算机名。您可以为一个计算机名指定多个IP地址,那么通过哪一个IP地址都可以访问这台计算机。这个拥有多个IP地址的计算机在接收到包后,可以根据目的地址知道是不是发向自己的包,这个目的地址可以是自己的任何一个地址。名称也用于网络号,下面就是一个例子:


223.1.2 development

223.1.3 accounting

223.1.4 factory

前一列是IP地址,后一列是网络名。我们可以这个表上面的表对比一下,看看各个计算机属于什么网络。

5.6 IP路由表

我们上面已经提到过路由表这个名词,下面我们就仔细看一下这张表。它通常是由下面几列构成的:IP网络号,直接/非直接标记,路由器IP地址和接口号。这张表一般由管理员负责维护,因为是他为你的计算机指定了IP地址。


5.7 直接路由

下面我们仔细看一下我们上面看过的直接路由的例子。

 

在计算机alpha内的路由表如下所示:

网络 直接/非直接标记 路由器 接口号
development 直接 (空) 1

表8. 路由表范例

我们可能通过UNIX下的"netstat -r"命令看到类似这样的结果。

5.8 实例

Alpha发送IP包到beta,alpha中的IP包的目的地址是beta的地址(223.1.2.2)。IP取得网络号部分,查询路由表中的第一部分,看这个包应该包到什么地方,它发现这个网络和表中的第一个项目一致。而这个项目中的其它信息表示,目的计算机可以直接通信,于是直接进行ARP翻译(解析),通过接口1发送数据。


5.9 非直接路由

下面我们仔细看一下我们上面看过的非直接路由的例子。

 

计算机alpha内的路由表如下所示:

网络 直接/非直接标记 路由器 接口号
development 直接 (空) 1
accounting 非直接 devnetrouter 1
factory 非直接 devnetrouter 1

表10. Alpha内的路由表

5.10 实例

Alpha发送IP包到epsilon,IP包内的目的地址是epsilon的(223.1.3.2)。IP分析目的地址的网络号部分,查询路由表中的第一列,发现第二个项目符合条件。此项目中的信息表示计算机可以由路由器devnetrouter达到,Alpha的IP模块进行ARP解析,将数据通过接口1传送到devnetrouter的IP地址上。这个包仍然包括着目的机IP地址223.1.3.2。这个包到达development网络接口,传送到delta计算机的IP模块,delta计算机发现这个包不是给它的,于是决定转发。Delta的IP模块从目的地址中解析出网络号,查询路由表,Delta的路由表如下所示:


网络 直接/非直接标记 路由器 接口号
development 直接 (空) 1
factory 直接 (空) 3
accounting 直接 (空) 2

表11. Delta的路由表

 

第二条符合条件,于是IP模块接口3将数据发送到计算机epsilon,IP包到达epsilon时,epsilon的IP模块发现目的地址和自己的一致,于是将接收到的数据向上一层协议传送。


5.11 路由总结

在一个大型网络中,IP包在到达目的计算机前一般需要经过多个路由器,它前进的路线不是事先定好的,而是在各个路由器上一步步查询出来的,每个计算机只管一段,只保证把数据传送到下一站,至于下一站怎么办,它就不管了。


5.12 管理路由

在大型网络的每台机器上支持一张路由表可不是件容易事,路由器如果出了问题会对网络传输不能进行。我们也可以使用ICMP协议对网络进行监控。一台机器从一个地方移到另一个地方必须更改计算机的IP地址,如果要更新主机地址文件,这简单是不可能的,而DNS帮助解决这个问题。


6. 用户数据报协议(UDP)

UDP是在IP上的两个重要协议之一,它为用户的网络应用程序提供服务,我们经常使用的NFS,SNMP就是使用UDP协议的。UDP协议不是面向连接的。这一点是和TCP协议不同的。UDP在IP包上加上了端口号和校验码两个参数。


6.1 端口

一台计算机上的客户程序如何达到服务器呢?应用程序和UDP的通信线路是通过UDP端口一样的,这些端口是数字的,以0开始,一个端口一般和一个服务对应。服务器和客户就在这个端口等待对方的请求(或应答)。UDP保留由应用程序定义的消息边界。它决不把两个消息连接起来,或把一个消息分成两部分。


6.2 校验码

如果接收到的IP包内有一个标记“UDP”,IP模块就把数据传送到UDP,UDP检查校验码,如果运算得出的结果为0,数据是正确的。UDP的校验码可以产生也可以不产生。传送来的UDP包如果超过了上层应用程序的处理能力,就会暂时保存起来,如果保存的数据已经超过一定限制,则把UDP丢弃。


7. 传输控制协议(TCP)

TCP提供的服务不同于UDP,它们的最大区别在于TCP是面向连接的,TCP保证数据一定传送到接收者,而UDP可不保证。TCP用于一定要保证数据传输的场合,我们通常知道的FTP,TELNET是基于TCP协议的,而其它的一些TCP网络应用程序包括X-Window系统,rcp(远程复制)和R系列命令也是使用TCP的,TCP提供这样好的服务也是有代价的,它需要更多的CPU处理时间和网络带宽,TCP模块的复杂度也比UDP大得多。


与UDP相同的是,应用程序必须和TCP端口连接请求服务,接收和发送数据。在应用程序开始运行时,服务器和客户机上的TCP模块开始相互通信,这两个TCP包含了状态信息,维持一条虚链路,这条虚链路是全双工的。TCP可以任意打包数据,不必管什么边界。例如,应用程序可以在一个端口写5次,远方的应用程序可以读10次把数据读完,这和UDP不同,在UDP下,在一个端口写几次,远程应用程序就要读几次。


TCP支持滑动窗口协议,双方都进行流量控制,因此不会让缓冲区满。这也和UDP不同,在UDP的情况下,缓冲区可能因为应用程序的处理能力不足而变满。对于滑动窗口协议,它指定了一个窗口大小,这个大小指的是,在未接收到确认信息之前允许发送的数据数,在TCP中,窗口的大小是以字节为单位的。

 

8. 网络应用程序

TCP和UDP提供不同的服务,不同的应用程序会选择不同的协议,这里请您注意,如果您选择使用UDP进行可靠传输,那只能在UDP上层来提供可靠性。下面我们举出几个常用的应用程序。


TELNET使用TCP提供远程登录。TELNET工作得非常好,它虽然古老,但是现在仍然在广泛使用,它经常用于在不同的作系统间进行互连。
FTP协议和TELNET岁数差不多大了,它也使用TCP服务,在FTP时,您好象登录到远程计算机上,但您能够使用的命令却不那么多,FTP提供用户在计算机间复制文件的服务。UNIX中的远程命令一般都以R开始,这些命令一般都通过网络进行,我们就称它们为R系列命令,这些命令通常在UNIX系统中使用,它对安全性考虑不多,但是非常好用。NFS由Sun公司开发,它使用UDP,它用于在不同的计算机上加载UNIX文件系统,在这一点上它做得非常好。NFS为网络加重了负担,在慢速连接的网络上工作得不好,但它的功能可却是不错。随着网络规模不断扩大,原来的网络管理协议ICMP已经不能提供满意的服务了,于是在这一要求下提出了SNMP协议,它检测网络中各种设备的情况,根据这种情况对网络进行监控。X
Window系统使用X Window协议,X Window协议也使用TCP服务。
TCP(Transmission Control Protocol)
传输控制协议

TCP协议主为了在主机间实现高可靠性的包交换传输协议。本文将描述协议标准和实现的一些方法。因为计算机网络在现代社会中已经是不可缺少的了,TCP协议主要在网络不可靠的时候完成通信,对军方可能特别有用,但是对于政府和商用部门也适用。TCP是面向连接的端到端的可靠协议。它支持多种网络应用程序。TCP对下层服务没有多少要求,它假定下层只能提供不可靠的数据报服务,它可以在多种硬件构成的网络上运行。下面的图是TCP在层次式结构中的位置,它的下层是IP协议,TCP可以根据IP协议提供的服务传送大小不定的数据,IP协议负责对数据进行分段,重组,在多种网络中传送。


TCP的上面就是应用程序,下面是IP协议,上层接口包括一系列类似于作系统中断的调用。对于上层应用程序来说,TCP应该能够异步传送数据。下层接口我们假定为IP协议接口。为了在并不可靠的网络上实现面向连接的可靠的传送数据,TCP必须解决可靠性,流量控制的问题,必须能够为上层应用程序提供多个接口,同时为多个应用程序提供数据,同时TCP必须解决连接问题,这样TCP才能称得上是面向连接的,最后,TCP也必须能够解决通信安全性的问题。


网络环境包括由网关(或其它设备)连接的网络,网络可以是局域网也可以是一些城域网或广域网,但无论它们是什么,它们必须是基于包交换的。主机上不同的协议有不同的端口号,一对进程通过这个端口号进行通信。这个通信不包括计算机内的I/O作,只包括在网络上进行的作。网络上的计算机被看作包传送的源和目的结点。特别应该注意的是:计算机中的不同进程可能同时进行通信,这时它们会用端口号进行区别,不会把发向A进程的数据由B进程接收的。


进程为了传送数据会调用TCP,将数据和相应的参数传送给TCP,于是TCP会将数据传送到目的TCP那里,当然这是通过将TCP包打包在IP包内在网络上传送达到的。接收方TCP在接收到数据后会通信上层应用程序,TCP会保证接收数据顺序的正确性。虽然下层协议可能不会保证顺序是正确的。这里需要说明的是网关在接收到这个包后,会将包解开,看看是不是已经到目的地了,如果没有到,应该走什么路由达到目的地,在决定后,网关会根据下一个网络内的协议情况再次将TCP包打包传送,如果需要,还要把这个包再次分成几段再传送。这个落地检查的过程是一个耗时的过程。从上面,我们可以看出TCP传送的基本过程,当然具体过程可能要复杂得多。


在实现TCP的主机上,TCP可以被看成是一个模块,和文件系统区别不大,TCP也可以调用一些作系统的功能,TCP不直接和网络打交道,控制网络的任务由专门的设备驱动模块完成。TCP只是调用IP接口,IP向TCP提供所有TCP需要的服务。


上面已经说过了,TCP连接是可靠的,而且保证了传送数据包的顺序,保证顺序是用一个序号来保证的。响应包内也包括一个序列号,表示接收方准备好这个序号的包。在TCP传送一个数据包时,它同时把这个数据包放入重发队列中,同时启动记数器,如果收到了关于这个包的确认信息,将此包从队列中删除,如果计时超时则需要重新发送此包。请注意,从TCP返回的确认信息并不保证最终接收者接收到数据,这个责任由接收方负责。


每个用于传送TCP的通道都有一个端口标记,因为这个标记是由每个TCP终端确定的,因此TCP可能不唯一,为了保证这个数值的唯一,要使用网络地址和端口号的组合达到唯一标识的目的,我们称这个为了套接字(Socket),一个连接由连接两端的套接字标识,本地的套接字可能和不同的外部套接字通信,这种通信是全双工的。


通过向本地端口发送OPEN命令及外部套接字参数建立连接,TCP返回一个标记这个连接的名称,以后如果用户需要使用这个名称标记这个连接。为了保存这个连接的信息,我们假设有一个称为传输控制块(Transmission
Control Block,TCB)的东西来保存。OPEN命令还指定这个连接的建立是主动请求还是被动等待请求。

这里对TCP所一个简单的介绍。TCP/IP协议是互联上的广泛使用的一种协议,了解它对了解网络作是十分有好处的。
 

shijiechun 2005-09-05 16:07
TCP/IP在网络中的高效配置

引言

  随着计算机网络应用的日益普及,TCP/IP Internet协议已成为计算机工业中开放系统互连的事实上的标准。TCP/IP协议,即Transmission Control Protocol/Internet Protocol(传输控制协议/因特网协议),是目前最完美并广为接受的通信协议之一,它应用于在广域网中实现不同类型的网络以及不同类型的芯片和操作系统的主机之间的相互通信,各种类型的以太网中,如Windows 95/98的对等网、Windows NT、Unix、Linux、NetWare,目前都广泛地支持该协议。


TCP/IP寻址

在管理TCP/IP网络时,一个最有挑战性的工作是管理IP地址和保管记录好IP与地理位置的对应关系,尤其对于一个新的管理员或刚接触管理IP地址的人更是如此。信息从一个主机取出,放到另一个主机的时候,有三种东西起了作用,即主机名、主机地址、主机路径。这就关系到IP寻址的问题。

  一、IP地址类型

为了控制IP寻址的方式,制定了类型结构,即把IP地址分为五类(A-E类),有三种用在了商业网络中。

A类 A类地址的高端位总是置为0。只要最左一位置0,剩下的位数不管是0或1,都是A类地址。因为第一个八位组决定网络地址的类型,只要第一个八位组小于128就是A类地址。如:10.35.64.23是一个A类的TCP/IP地址。如果用缺省的A类地址子网掩码255.0.0.0。则网络部分地址为10.0.0.0,主机部分地址为:0.35.64.23。总共有128(0-127)个A类地址,但每个A类网络可以有16777216(224)个不同的主机标识。

B类 B地址是IP地址的高端前两位置位10。并且B类IP地址中,前两个8位组表示网络部分,后两个8位组表示主机部分。B类地址范围是从128.0.0.0至191.255.0.0。如136.35.26.64是一个B类TCP/IP地址。用B类缺省子网掩码255.255.0.0与此地址进行位操作,则网络部分为136.35.0.0,主机部分为0.0.26.64。B类可以有16384个网络地址,每个网中可有65536(216)个不同的主机标识。

C类 C类地址高端的三位设置为110。C类地址前三个八位组作为网络地址,最后一个八位组作为主机地址。C类地址的范围是从192.0.0.0到223.255.255.255。如198.35.64.85是一个C类TCP/IP地址,用C类缺省子网掩码255.255.255.0,则网络部分是:198.35.64.0,主机部分是0.0.0.85。C类有2097152个网址,每个C类网可有256(28)个不同的主机标识。目前局域网中最常用的是C类IP地址,我单位(龙岗区信息中心)局域网主机的IP地址为:192.168.168.1和192.168.168.2,子网掩码是255.255.255.0。

最后两类IP地址到现在还没有应用,这里不作介绍。

二、子网分割(以C类地址为例)

在实际应用中,即使是使用C类网址,也会浪费掉相当一部分IP地址,有一种更有效的方法使用IP地址,这就是子网分割。子网分割就是利用主机地址提供更多网址的技巧,减少了每段网中的主机数,并且更有效地利用配置给我们的网络地址。

每个IP地址有两部分组成,一部分为网络地址,一部分为主机地址。C类地址用前三个8位组表示网络地址,最后一个8位组为主机地址。像如下形式表示,其中N代表网络,H代表主机。

  NNNNNNNN.NNNNNNNN.NNNNNNNN.HHHHHHHH

建一个子网掩码,就是把部分H变为N,由此得的结果用于网络地址。决定有多少个H需要变为N的公式为2x-2=Y,其中X表示用于网络地址的位数,Y是得到的网络个数结果。如用主机部分的前三位给网络部分,地址如下所示:

  NNNNNNNN.NNNNNNNN.NNNNNNNN.NNNHHHHH

用公式计算,我们有23-2=6个子网,每个子网可以有25-2=30个主机。在缺省的情况下,C类地址的子网掩码是255.255.255.0,这表示前三个8位组用作网络地址,最后一个8 位组用作主机地址。现在我们决定有最后8位组的前三位也用于网址,而只用后五位作为主机地址,我们把前三位设置为1,把后五位主机地址设置为0。

  128   64   32   16   8   4   2   1

  1     1   1   0   0   0   0   0

128+64+32=224,这样我们的子网掩码就是255.255.255.224。

因我们前三位用于子网掩码,得到如下八种不同的形式(二进制数):000 001 010 011 100 101 110 111

在大多数情况下,全1和全0是不允许的,一些操作系统和路由器不能控制全1和全0的子网掩码,除去不能用的网号,还剩下六个潜在的子网掩码即:001 010 011 100 101 110。所以我们可 计算出来如下所示:其中H只代表主机位。

128   64   32   16   8   4   2   1   =

0     0   1   H   H   H   H   H   32

0     1   0   H   H   H   H   H   64

0     1   1   H   H   H   H   H   96

1     0   0   H   H   H   H   H   128

1     0   1   H   H   H   H   H   160

1     1   0   H   H   H   H   H   192

我们用向ISP申请的公有地址如:210.85.37.0和230.87.31.0进行子网分割,我们得到如下潜在网络地址:

    210.85.37.32     230.87.31.32

    210.85.37.64     230.87.31.64

    210.85.37.96     230.87.31.96

    210.85.37.128     230.87.31.128

    210.85.37.160     230.87.31.160

    210.85.37.192     230.87.31.192

因为子网ID定义的第一地址,同一子网的最后一个地址保留用作广播,余下的地址都可以用于主机。为求得第一个地址,我们分析最后一个用于主机得八位组,高端前三位用于子网掩码,我们可以得到网络地址如下所示:

128   64   32   16   8   4   2   1   =

0     0   1   H   H   H   H   H   32

再把高端前三位用N代替计算低端得五位,可计算出主机地址范围,如下所示:

128   64   32   16   8   4   2   1   =

N     N   N   0   0   0   0   1   32+1=33

N     N   N   1   1   1   1   0   32+30=62

主机地址范围在33到62,所以第一组IP地址210.85.37.33到210.85.34.62,余下的主机地址范围如下:

    210.85.37.65到210.85.37.94

    210.85.37.97到210.85.37.126

    210.85.37.129到210.85.37.158

    210.85.37.161到210.85.37.190

    210.85.37.193到210.85.37.222

第二组主机地址范围可相应计算得出。

三、寻址过程

每个网中每个主机要有唯一的TCP/IP地址,这样才能确保两个TCP/IP主机通讯成功。所以在计算机上安装和配置TCP/IP协议的时候,得给计算机一个有效的IP地址,并定义子网掩码,提供一个走出网络的网关(或路由器)地址;提供两个或更多的局域网外的DNS服务器的地址。以某站点为例:www.web站点.com,系统的第一件事就是“解析”或读HOSTS文件,看是否列有Web站点.com,如果没有,系统就去访问配置的DNS服务器,从配置信息中找到DNS服务器的IP地址,通过布尔与运算,比较源地址网络部门与目的地址的网络部分,如果网络地址一样,说明目的地址和源在同一网中;如果不一样,则目的地址是远程地址,并不需要计算机记录世界各地的远程地址,这些事情由定义好的网关或路由器来完成,传给路由器的包包括源地址和目的地址,路由器用这些信息找一条最佳路径到达目的地。但如果IP地址和主机实际所在网段的地址不匹配,经过与运算也不会知道目的地址是在局域网中或是远程的,并且所有的路由器不可能再找到你的计算机,这就意味着你不能和别人的计算机通讯,别人的计算机也不能和你通讯。


固定IP地址的设置

  (一)分配的IP地址能够满足网络的需求

  我们的IP地址一般都可以通过直接向当地的ISP提出申请而获得。当分配给你的IP地址从网络号到主机号都完全能够满足局域网的需求时,只要简单地为每台主机和可进行网管的设备分别指定一个IP地址即可,当然你应当建立一个必要的日志文件对IP地址的分配情况作一个记录,以便将来进行的查询。

  1.Windows 95/98主机的IP地址设置

  安装TCP/IP协议。在控制面板->网络->配置选项卡中单击“添加”按钮,从列表框中选中“协议”后再次单击“添加”按钮,然后在“厂商”列表框中选中“Microsoft”,在“网络协议”列表框中选中“TCP/IP”,单击“确定”按钮并根据提示插入Windows 9x安装光盘即可完成。重新启动计算机以便使新的设置生效。

  指定IP地址。在控制面板->网络->配置选项卡中选中与网卡绑定的TCP/IP协议,单击“属性”按钮,在IP地址选项卡中选中指定IP地址选项按钮,然后键入为该主机分配的IP地址和子网掩码。若分配的是A类IP地址,则其子网掩码为255.0.0.0;若分配的是B类IP地址,则其子网掩码为255.255.0.0;若分配的是C类IP地址,则其子网掩码为255.255.255.0。应当注意的是,主机部分全部为0或255的IP地址不能使用,因为该值已经定义并保留为网络内部的广播地址。

  2.Windows NT主机的IP地址设置

  安装TCP/IP协议。在控制面板->网络->协议选项卡中单击“添加”按钮,然后再在网络协议列表框中选中TCP/IP协议后,单击确定按钮,根据提示插入Windows NT安装盘,待机器重新启动后协议添加完成。

  指定IP地址。在控制面板->网络->协议选项卡的网络协议列表框中选中TCP/IP通讯协议,单击属性按钮。由于Windows NT可以安装两块网卡,因此应当在IP地址->适配器下拉列表框中选定不同的网卡分别进行配置。选中指定IP地址选项按钮后,分别键入为其分配的IP地址和子网掩码, 龙岗区信息中心局域网络主机分配的是C类IP地址,其子网掩码为:255.255.255.0。默认网关指用以联接到其它网络的路由器的IP地址,但若以本机充当联接两个不同子网的路由器则可将其设为本机的地址。

  3.网络连接设备的IP地址设置

  以龙岗区信息中心的Bay Networks 10/100M Switch Hub为例。

  (1)建立与终端的连接。用一根随机赠送的九芯交叉电缆将计算机的串口与Hub 的Console端口连接起来,启动计算机,运行附件中的仿真终端程序(Hyper Terminal),建立新的连接,并在Connect Using下拉列有框中选择以串口连接(Direct to Com)的方式,然后在串中属性中将波特率(Bits per second)设置为9600,数据位(Data bits)设置为8,奇偶校验位(Parity)设置为无,停止位(Stop bits)设置为1位,流量控制(Flow control)设置为无。

  (2)登录。Hub接电,建立连接后,按回车键显示登录信息,输入缺省用户名及口令。

  Login: security

  Password: security

  进入主菜单。

  (3)配置IP地址。在Select menu option行键入IP并回车,进入IP子菜单后,在Select menu option行键入interface并回车,在Select menu option (ip/interface)行输入命令define,然后根据提示分别键入其IP address(IP地址)为192.168.168.11、subnet mask(子网掩码)为255.255.255.0和default gateway(缺省网关)192.168.168.254,Enter SLIP address和Enter SLIP subnet mask二项内容可以忽略,。配置完毕,系统将把已经配置好的信息重新显示一遍以进行确认。此时,键入q,可回到上一级菜单。

至此IP地址已配置完毕,可用Ping 或 Display来验证。

  (二)分配的IP地址仅能满足对主机数量的需求

  随着主机地址以惊人的速度增长,世界上的IP地址迟早会超出现在IP地址的范围,IP地址会被用尽,IP网络通讯会陷于瘫痪。因此,您所分得的一个C类的地址或许远不能满足您欲在局域网中再建立若干子网的需要,于是我们使用子网掩码(Subnet Mask)进行子网分割来解决这个问题。

  子网掩码以四个字节24 bit表示,其主要功能包括两个方面,一是用来区分IP地址的网络号和主机号,二是用来将某个类地址再划分为若干子网。

以龙岗区信息中心为例,现有一个C类网络地址192.168.168.0,毫无疑问,所有的设备从192.168.168.0 - 192.168.168.254都将处于同一个网络之中,但需要将自己的网络划分为6个子网以便于管理,除去000和111作为保留地址不能够使用外,尚有六种组合可资建立子网。各子网的前三个字节当然仍然是192.168.168,所以各子网提供的主机的IP地址范围为:

    192.168.168.33到192.168.168.62

    192.168.168.65到192.168.168.94

    192.168.168.97到192.168.168.126

    192.168.168.129到192.168.168.158

    192.168.168.161到192.168.168.190

    192.168.168.193到192.168.168.222

每个子网都会保留全0或全1的两个地址作为广播地址使用。

  (三)网络及主机数量均不能满足需要

随着IP地址资源的日趋枯竭,可供分配的IP地址越来越少,往往一个拥有几十到几百台计算机规模的网络只能得到少数几个IP地址。对于这种情况,可采取代理服务器来解决,管理员可以通过组合使用这种方法把内网和外网隔离。以龙岗区信息中心为例,内部网的Windows NT Server 通过代理软件MS PROXY 2.0充当网关代理,实现Intranet网与Internet网的连接,网关上安装两块网卡,一块与外部Internet相连,一块与内部局域网相连。外部网卡赋予合法的公用IP地址(即向ISP申请的IP),内部网卡和整个内部局域网可采用专用IP地址即192.168.168.0-192.168.168.254,也可采用DHCP来动态分配IP地址。在局域网内部,将该地址当作公用IP地址一样地使用和配置。通过代理服务器,一方面,当局域网内部的主机访问Internet时,代理服务器接受来自该私用地址的请求,从公用Internet上获取所请求的信息,并返回给原始用户,或者干脆直接将来自内部的私用IP地址转换为公用的IP地址以实现与Internet主机间的通信,从而使内部网络内的所有主机都具有通过代理服务器访问Internet的能力。而且,MS PROXY可以通过IP地址、子码掩码、域名方式来控制访问站点,操作过程如下:开始->程序->IIS管理器,在管理器中双击“WEB PROXY”,打开“Web proxy service properties”对话框,选择service,单击security,在网络代理服务的安全设置对话框中选择过滤模式,并指定相应的范围即可。也可以对某些主机的访问能力进行必要的限制。另一方面,外部的主机也可以通过代理服务器访问指定的允许外界访问的主机,从而实现内外部主机的双向通讯。另外一种方法是通过网络地址变换(NAT),使网关把内部的IP地址隐藏起来,一个包到达网关,网关记住是谁送来的,然后把它的(网关的)公用IP地址放在包中源地址的位置,当这个包返回应答,网关再把隐掉的地址加上,像原来发出时一样。NAT是一种不错的解决地址问题的方法。


动态IP地址的设置

动态IP地址,顾名思义就是设备所取得的IP地址是非固定的,是可以动态分配和取得的。使用动态IP地址的原因主要有两个:一是可以用较少的IP地址构建较大的网络。如果与连入网络的主机和其它设备相比,所分得的公用IP地址略少一些,如果为每个设备都分配一个固定的IP地址,则显然部分计算机将不能接入网络。考虑到并非所有的计算机都在同一时间内运行并与网络连接,所以,如果将IP进行动态分配,即计算机连入网络时自动取得,断开与网络的连接时自动收回,即可满足网络对IP地址的需求。龙岗区信息中心的培训部的几十台电脑组成的局域网就是采用动态分配IP地址的方法。二是可以增加网络内计算机的可移动性。当某台主机从一个子网移动到另一个子网时,由于IP地址中网络号的不同,从而导致该计算机与其它主机间无法进行通信,解决该类问题最简单的方式就是为移动的主机在新子网中重新指定一个IP地址。但是,如果我们采用动态IP地址,就会减少这种网络管理的复杂性。Windows NT使用DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)来解决动态IP地址的分配问题。使用DHCP时,整个网络中必须至少有一台运行Windows NT主机安装有DHCP软件,充当DHCP服务器,而其它所有欲使用DHCP功能的工作站也必须具有支持DHCP的功能。这样,当DHCP工作站启动时,它就会自动与DHCP服务器通信,并由DHCP服务器为其提供一个IP地址。当然,这个地址只是临时的,当租约期满,这个地址就会还给DHCP服务器,并将其提供给其他的DHCP工作站使用。如果原DHCP工作站仍需要IP地址,可以再向DHCP服务器租用另一个IP地址。
 

posted on 2006-09-07 19:19  SuperCai  阅读(703)  评论(0编辑  收藏  举报

导航