TCP/IP通信协议

TCP/IP通信协议是目前最完整、最被广泛支持的通信协议,它可以让不同网络结构、不同操作系统的计算机相互通信,例如:Windows Server2003、Windows2000计算机、Unix主机、大型计算机(mainframe)、NetWare客户端等。它是因特网 (Internet)的标准通信协议。
     在TCP/IP的网络上,每一台连接到网络上的计算机(与部分设备)被称为是一台“主机(host)”,而主机与主机之间的通信,主要是通过一下3个主要部件:
  IP地址(IP address)
  子网掩码(Subnet mask) 
  IP路由器(IP router)
IP地址:在以TCP/IP为通信协议的网络上,每一台主机都有一个唯一的IP地址(它的功能就好像是你家的门牌号码),而且不可以跟其他的主机相同。IP地址不但可以用来辨识每一台主机,而且其内也隐含着如何在网络间传送信息的路由信息。
    IP地址一共占用32位(bit),一般是以4个十进制数来表示,每一个数字称为一个Octet(八位组)。Octet与Octet之间以点(dot)隔开,也称点分十进制,例如:192.168.1.18
这个32位的IP地址内包含了Network ID与Host ID两部分信息:
NetworkID:网络识别码。每一个网络都有一个唯一的网络识别码。
HostID:主机识别码。同一个网络内的每一台主机都必须有一个唯一的主机识别码。
    此处所介绍的IP地址为目前最被广泛使用的IPv4,它共占用32位。以后的趋势都支持新版的IPv6,它是利用128位来代表IP地址,即2128个IP地址。
  如果你的网络要与外界通信,则你必须为你的网络申请一个NetworkID,整个网络内的所有主机都使用一个相同的NetworkID,然后再赋予网络内每一台主机一个唯一的HostID,因此网络上每一台主机都会有一个唯一的IP地址(NetworkID与HostID的组合)。你可以直接向ISP(互联网服务供应商)申请NetworkID,当然,如果你的网络并未与外界的Internet连接在一起,那么你可以自行选用任何一个可用的NetworkID,不用申请,不 过同一个网络内,各主机的IP地址不可相同。
IP地址的类别:
  IP地址被分为A、B、C、D、E五大类(见下表)其中的A类地址、B类地址、C类地址是可供主机所使用的IP地址,每种类型所支持的IP数量都不同,以便满足各种不同大小规模的网络需求。而D类地址和E类地址则是特殊用途的IP地址。                  
IP地址一共占用4个字节(byte),表中我们将IP地址的各字节以W、X、Y、Z的形式来加以说明。                   
    A类地址:A类IP地址适合于超大型的网络,其NetworkID占用一个字节,即W。W值的可用范围是1~126,因此可提供126个A类的NetworkID。HostID共占用X、Y、Z3个字节(1byte=8bit),因此24位可支持(224)-2=16777216-2=16777214台主机。
                                 
 B类地址:B类IP地址适合于中、大型网络,其NetworkID占用2个字节(W.Y),W值的可用范围是128~191,因此可提供(191-128+1)×256=16384个B类的网络。HostID共占用Y.Z2个字节,因此每一个网络可支持(216)-2=65536-2=65534台主机。
 
 C类地址:C类IP地址适合于小型网络,其NetworkID占用3个字节(W.X.Y),W值的可用范围是192~223,它可提供(233-192+1)×256×256=2097152个C类的网络。HostID只占用一个字节(Z),因此每一个网络可支持(28)-2=254台主机。
         
  D类地址:这个NetworkID具有特殊的用途,它是一个“多点传播”所使用的群组ID,这个群组内包含多台主机。其W值的范围为224~239。

 E类地址:这是一个专供试验用的NetworkID,其W值的范围为240~254。这5个等级中只有A类地址、B类地址和C类地址是可以供一般主机使用的,但是在使用时,需注意以下事项:
①.NetworkID不可以是127(回路IP)。127是用来执行回送测试的,不可拿来做其它用途。你可以利用Ping 127.0.0.1命令执行回送测试,以便检查网卡与驱动程序是否正常运行;
②.每一个网络的第1个IP地址是代表网络本身,最后一个IP地址代表广播地址,因此实际可分配给主机的IP地址将少2个。

子网掩码
                                                                                子网掩码也是占用32位,它有两大功能:              
1.用来区分IP地址中的NetworkID与HostID;
2.用来将网络划分为若干个子网。
当IP网络内的主机在相互通信时,它们利用子网掩码(见下表)来得知双方的NetworkID,进而得知彼此是否在同一个网段内。表中为各类子网默认的掩码设置值,表中为1的位用来指定NetworkID,为0的位用来指定HostID。例如,若某台主机的IP地址为192.168.1.3,其二进制值为11000000.10101000.0000001.00000011。则计算其NetworkID的原则是:
(1).将IP地址与子网掩码两个值中相对应的位做AND逻辑运算(见下表);
(2)将AND逻辑运算后的结果与子网掩码中大割字节互相对应,只要在子网掩码中值为1的,其所对应到的位,就是其NetworkID,表中箭头所指的前三部分就是NetworkID。后面的一部分就是HostID。
    因此,IP地址是192.168.1.3的NetworkID是192.168.1,也就是192.168.1.0,而HostID就是3.
    若A主机的IP地址为192.168.1.3,子网掩码为255.255.255.0,B主机的IP地址为192.168.1.5,子网掩码为255.255.255.0。当A主机要和B主机通信时,A主机会将A主机的IP地址与子网掩码做AND运算,以便得知其NetworkID为192.168.1.0,然后再利用类似的方法,得知B主机的NetworkID为192.168.1.0。由于两台主机的NetworkID都是192.168.1.0,故表示它们都是在同一个网段内,因此它们可直接通信(若两台主机分别位于两个不同的网段内,无法直接通信;要想通信,必须通过路由器来路由)。

利用子网掩码来划分子网
子网划分:将一个大的网段划分为若干个小的网段。

逻辑运算:1.与运算(AND运算):参与运算的条件全部为真,则结果为真;
2.或运算:参与运算的条件只要有一个为真,则结果为真;
3.非运算:参与运算的条件全部为假,则结果为假。

子网划分不易理解,现举例来说明:例如你要将网络划分成6个子网,每个子网都各有约25台主机,但是因为经费上的考虑和避免浪费IP地址,你只申请了一个C类的NetworkID,例如为203.66.77.0。正常情况下,C类的子网掩码应该设为255.255.255.0,但如此一来所有的计算机,实际上必须连接在同一个网段内才能相互通信,可是现在所有的计算机却是分别位于6个子网,而只申请了一个NetworkID,那该怎么办呢?解决的办法就是在子网掩码上动手脚。
    具体做法是将子网掩码中位值为1的个数增加,至于要增加多少个,应根据所划分的子网数目而定,以此处为例,划分6个子网需要增加3个为1的位,因为23=8,也就是可以划分出8个子网,满足要求;而若只增加2个为1的位,则22=4,只能够划分出4个子网,不够用。
    因此需要将子网掩码设为255.255.255.224,注意我们将最后一个字节由0改为224,224的二进制值为1110000,其最高的3 个位为111,也就是我们增加3个1的位。它也表示原HostID中的最高3个位将被改用来当作是SubnetID,也就是我们将HostID中最高的3个位拿来划分子网,这3个位已经不再属于HostID,HostID只剩下5个位。
    SubnetID的3个位共有000、001、010、011、100、101、110、111等8种组合,就是它共可划分出8个子网,此时每个子网可提供的IP地址是什么呢?
    IP地址的前3个字节当然还是203.66.77,而第4个字节如下表所示:  表中第4个字节中属于HostID的位只剩下bit0到bit4等5个位,但是必须扣掉全部为0(00000)与全部为1(11111)的两个。至于bit5到bit7则已变成SubnetID了。

    因此各子网所提供的IP地址与子网掩码的设置如下表所示。这8个子网都各可支持30台主机,足以应付6个子网和每个子网各25台主机的需求。注意每台主机的子网掩码都必须设为255.255.255.224。
    从这8个子网的IP地址中可发现,经过划分后,有一些IP地址就无法使用了,例如第2、3子网之间的203.66.77.63与203.66.77.64这两个地址,第3、4子网之间的203.66.77.95与203.66.77.96这两个地址。
    以上所举的例子,是将原HostID(第4个字节)的最高3个位拿来划分子网,总共可以划分出23=8个网段;而第4个字节只剩下5个位是用来代表HostID,因此每个网段内只可以有(25)—2=30台主机。但是如果我们拿4个位或5个位来划分的话,又会是如何呢?请见下表中的数值,此表是以C类地址为例并列出所有的可能情况。

默认网关
网关(Gateway)就是一个网络连接到另一个网络的“关口”。
    按照不同的分类标准,网关也有很多种。TCP/IP协议里的网关是最常用的,在这里我们所讲的“网关”均指TCP/IP协议下的网关。
  那么网关到底是什么呢?网关实质上是一个网络通向其他网络的IP地址。比如有网络A和网络B,网络A的IP地址范围为“192.168.1.1~192. 168.1.254”,子网掩码为255.255.255.0;网络B的IP地址范围为“192.168.2.1~192.168.2.254”,子网掩码为255.255.255.0。在没有路由器的情况下,两个网络之间是不能进行TCP/IP通信的,即使是两个网络连接在同一台交换机(或集线器)上,TCP/IP协议也会根据子网掩码(255.255.255.0)判定两个网络中的主机处在不同的网络里。而要实现这两个网络之间的通信,则必须通过网关。如果网络A中的主机发现数据包的目的主机不在本地网络中,就把数据包转发给它自己的网关,再由网关转发给网络B的网关,网络B的网关再转发给网络B的某个主机。网络B向网络A转发数据包的过程也是如此。所以说,只有设置好网关的IP地址,TCP/IP协议才能实现不同网络之间的相互通信。那么这个IP地址是哪台机器的IP地址呢?网关的IP地址是具有路由功能的设备的IP地址,具有路由功能的设备有路由器、启用了路由协议的服务器(实质上相当于一台路由器)、代理服务器(也相当于一台路由器)。
   什么是默认网关
  如果搞清了什么是网关,默认网关也就好理解了。就好像一个房间可以有多扇门一样,一台主机可以有多个网关。默认网关的意思是一台主机如果找不到可用的网关,就把数据包发给默认指定的网关,由这个网关来处理数据包。现在主机使用的网关,一般指的是默认网关。
  如何设置默认网关:
  一台电脑的默认网关是不可以随随便便指定的,必须正确地指定,否则一台电脑就会将数据包发给不是网关的电脑,从而无法与其他网络的电脑通信。默认网关的设定有手动设置和自动设置两种方式。
   1. 手动设置
   手动设置适用于电脑数量比较少、TCP/IP参数基本不变的情况,比如只有几台到十几台电脑。因为这种方法需要在联入网络的每台电脑上设置“默认网关”,非常费劲,一旦因为迁移等原因导致必须修改默认网关的IP地址,就会给网管带来很大的麻烦,所以不推荐使用。
  在Windows 9x中,设置默认网关的方法是在“网上邻居”上右击,在弹出的菜单中点击“属性”,

               在网络属性对话框中选择“TCP/IP协议”,点击“属性”,          在“默认网关”选项卡中填写新的默认网关的IP地址就可以了。
  需要特别注意的是:默认网关必须是电脑自己所在的网段中的IP地址,而不能填写其他网段中的IP地址。
  2. 自动设置
    自动设置就是利用DHCP服务器来自动给网络中的电脑分配IP地址、子网掩码和默认网关。这样做的好处是一旦网络的默认网关发生了变化时,只要更改了DHCP服务器中默认网关的设置,那么网络中所有的电脑均获得了新的默认网关的IP地址。这种方法适用于网络规模较大、TCP/IP参数有可能变动的网络。另外一种自动获得网关的办法是通过安装代理服务器软件(如MS Proxy)的客户端程序来自动获得,其原理和方法和DHCP有相似之处。

    私有IP的使用:我们在前面提到IP等级中的A类地址、B类地址和C类地址是可供主机使用的IP地址。在这些IP地址中,有一些被归类为私有IP,见下表:
各公司可以自行选用适合的私有IP,不需要申请。
    不过私有IP只能够在公司内部的局域网内使用,虽然它可以让内部计算机相互通信,但是无法与外界的计算机直接通信。因此使用私有IP的计算机若要对外通信,例如浏览网页、收发E-mail,就必须通过例如NAT(网络地址转换技术)等的协助。
    特殊的私网IP:169.254.0.0。一般情况下是在自动从DHCP服务器上获取IP失败时出现的。
    其它的不属于私有IP的地址被称为公网IP。使用公网IP的计算机可以直接对外通信,因此在这些计算机上可以建设商业网站,让外面的用户可以直接连接到这个商业网站。不过这些公网IP必须实现申请才可以使用并对外通信。