一、TCP/IP协议
(一)背景知识——TCP/IP协议概述
TCP/IP(传输控制协议/网际协议)是Internet赖以存在的基础。
Internet的前身是ARPANET,ARPANET使用的并不是TCP/IP,而是一种叫NCP(Network Control Protocol,网络控制协议)的网络协议。
随着网络的发展和用户对网络需求的不断增加,人们发现,NCP协议存在着很多缺点以至于不能充分支持ARPANET网络。其中,最典型的问题是NCP仅可用于同构环境(同构环境要求网络中所有计算机都运行相同的操作系统),人们认为“同构”这一限制不应存在于一个分布广泛的网络上,这样在20世纪60年代后期开发出来了可用于“异构”网络环境中的TCP/IP协议。也就是说,TCP/IP协议可以在各种硬件和操作系统上实现。目前,TCP/IP协议已成为建立计算机局域网、广域网的首选协议,并将随着网络技术的进步和信息高速公路的发展而不断地完善。
TCP/IP协议开发早于OSI参考模型,故不甚符合OSI参考标准。大致说来,TCP协议对应于OSI参考模型的传输层,IP协议对应于网络层。虽然OSI参考模型是计算机网络协议的标准,但由于其开销太大,所以并未被真正用于工程实践。TCP/IP协议则不然,由于它的简洁、实用,从而得到了广泛的应用并成为事实上的工业标准。
TCP/IP通信体系中,通信双方均使用TCP/IP通信协议及相应的应用程序。当客户机应用程序启动并向服务器发出信息后,通信过程就开始了。客户机应用程序将来自客户机高层的信息代码按一定的标准格式转化,并将其传输到传输控制协议层(TCP)。当信息代码传输至客户机的传输控制协议层后,通过TCP协议将应用程序信息分解打包。随后,TCP程序将这些包发送给处于其下一级的Internet协议(IP)层。在IP层,IP程序将收到的数据包装成IP包,然后通过IP协议、IP地址及IP路由将信息发送给与之通信的另一台计算机。对方IP程序收到所传输的IP包后,剥去IP包头,将包中数据上传给TCP协议层,TCP程序剥去TCP包头,取出数据,传送给服务器的应用程序。这样,通过TCP/IP就实现了双方的通信。反过来,服务器发送信息给客户机的过程与上述过程类似。
(二)IP地址
在TCP/IP网络上,每个主机都有与其他主机不同的IP地址,该机制是通过IP协议来实现的。IP协议要求在与IP网络建立连接时,每台主机都必须为这个连接分配唯一的32bit地址,此地址就是所谓的IP地址。IP地址不但可以用来识别每一台主机,而且隐含着网络路径信息。在TCP/IP网络中进行数据通信时,需要涉及IP寻址、路由选择以及多路复用功能。
顺便指出,在TCP/IP网络中,IP地址实际上是分配给网络适配器的。一台计算机有多个网络适配器,就可以有多个IP地址。甚至,一个网络适配器也可以有多个IP地址。
1.IP地址分配
IP地址由32位二进制数组成。在实际应用中,将这32位二进制数分成4段,每段包含8位二进制数。为了便于应用,将每段都转换为十进制数,段与段之间用“.”号隔开,如192.168.0.1等。这种表示IP地址的方法称为“点分十进制”表示法。
通常用IP地址标识一个网络和与此网络连接的一台主机。IP地址采用两级结构,一部分表示主机所属的网络,另一部分代表主机,主机必须位于特定的网络中。IP地址的组成形式为:
地址分配的基本原则是,要为同一网络内的所有主机分配相同的网络标识符号,同一网络内的不同主机必须分配不同的标识号,以区分主机。不同网络内的每台主机必须具有不同网络标识号,但可以具有相同的主机标识号。
TCP/IP体系中的IP地址均由InterNIC(Internet Network Informtion Center,互联网信息中心)统一管理。InterNIC又按地域设置了3个分支机构,即ARIN、RIPE NCC和NPNIC。其中,NPNIC负责管理亚太地区的IP地址,总部设在日本东京大学,其在各国都有其代理机构。
设在清华大学的中国教育科研网(CERNET)信息中心即为NPNIC的代理机构之一,所有通过CERNET连入Internet的大学都必须向CERNET NIC申请IP地址。
2.IP地址级别
考虑到不同规模网络的需要,为充分利用IP地址空间,IP协议定义了5类地址,即A类至E类。其中A、B、C三类由InterNIC在全球范围内统一分配,D、E类为特殊地址。IP地址采用高位字节的高位来标识地址类别。
表1有助于理解地址编码方案。
表1 IP地址编码方案
地址类别 |
高位字节 |
最高字节范围 |
可支持的网络数目 |
每个网络支持的主机数 |
A |
0xxxxxxx |
1~126 |
126 |
16777214 |
B |
10xxxxxx |
128~191 |
16384 |
65534 |
C |
110xxxxx |
192~223 |
2097152 |
254 |
A类地址的第1个字节为网络标识号,后面3个字节为主机标识号。其中第1个字节的最高位为0,其余7位用于标识网络地址,格式如表2所示。
表2 A类地址格式
A类地址的高8位可以提供128种位图,转换成十进制后,数值范围在0~127之间。但是,网络0.0.0.0被用于表示未知网络,而127.x.x.x被保留用于回路测试,因此实际上A类地址只能够提供126个网络标识号,每个网络最多支持大约1678万个主机地址。由于每个网络支持的主机数量非常大,因此只有巨型网络才需要A类地址。由于Internet发展的历史原因,A类地址早已被分配完了。
B类地址的前两个字节为网络标识号,后两个字节为主机标识号。其中第1个字节中的高2位为10,其余6位和第二个字节(共14位)用于标识网络地址,格式如表3所示。
B类地址能够提供16384个网络标识号,每个网络最多支持65534个主机地址。由于每个网络支持的主机数量较大,所以适用于中型网络,通常将此类地址分配给规模较大的单位。由于剩余的B类地址数量已经很少,因此,B类地址的申请正变得越来越困难。
表3 B类地址格式
C类地址的前3个字节为网络标识号,最后一个字节为主机标识号。其中第1个字节的高3位为110,其余5位和后面2个字节(共21位)用于标识网络地址,格式如表4所示。
表4 C类地址格式
C类地址能够提供约200万个网络标识号,每个网络最多支持254个主机地址。由于每个网络支持的主机数量较小,所以适用于小型网络。
D类地址的前4位是1110,表示多播(multicast,也译为组播或多址传送)地址,并不表示特定的网络,而是用来指定一组计算机,这些计算机可共享同一应用程序(如视频广播)。该类地址可以提供268435456(228)个多播组,地址范围为224.0.0.0~239.255.255.255。
E类地址的前4位是1111,是特别的保留地址,目前尚未应用。
3.特殊IP地址
TCP/IP规定了一些特殊的IP地址。其中除0.0.0.0和127.x.x.x外,还有:
32位全“1”的地址:即255.255.255.255,用于在本网广播,称为有限广播地址(limited broadcast address)。
包含一个有效网络号、主机地址全为“0”的地址:用于代表一个特定的网络。
包含一个有效网络号、主机地址全为“1”的地址:用于对一个网络进行定向广播。如目的地址为210.31.233.255的分组将被广播至网络210.31.233.0。
此外,在A、B、C三类网络中,都包含有若干不需注册即可使用的地址,这些地址称为私有地址,与之相对,需注册才能使用的地址称为公有地址。私有地址专用于内网寻址,对拥有公有地址IP地址的主机而言,这些地址都是不可见。设置私有地址的主要目的是为了减缓IP地址的耗用速度及缩小路由器中路由表的规模。当拥有私有地址的内网主机需要访问Internet时,需要通过NAT(网络地址转换)进行由私有地址到共有地址的转换。
TCP/IP规定的私有地址的范围是:
10.0.0.1~10.255.255.254 (A类)
172.13.0.1~172.32.255.254 (B类)
192.168.0.1~192.168.255.254 (C类)