1、计算机网络技术基础协议集章节导读不同的厂家生产的计算机运行的操作系统可能完全不同,却因为有了TCP/IP协议族而能够进行相互通信。TCP/IP协议族包含很多协议,其中最重要的两个协议分别是传输控制协议(Transmission Control Protocol,TCP)协议和网际互连协议(Internet Protocol,IP)。本章将介绍TCP/IP协议族里比较核心的一些协议。学 习 目 标掌握UDP的特点、端口分配和数据报格式。掌握TCP的特点、端口分配和报文段格式。掌握TCP传输连接的建立和释放过程。理解子网掩码的概念,掌握子网划分的方法。理解地址解析协议和网际控制报文协议ICMP。掌
2、握IPv4地址的结构和分类。4.1 用户数据报协议UDP在TCP/IP协议族中,有两个传输层协议:传输控制协议(Transmission Control Protocol,TCP)和用户数据报协议(User Datagram Protocol,UDP)。其中,TCP是面向连接的、提供可靠服务的协议;UDP则是无连接的,它提供高效但低可靠性的服务。UDP是一个简单的面向数据报的传输层协议:发送端的UDP对应用程序传下来的报文,只在其首部仅仅加入了复用和数据校验字段后就交付IP层。也就是说,应用层交给UDP多长的报文,UDP就一次照样发送一个报文,如图4-1所示。在接收端的UDP收到IP层交付的数
3、据报后,去掉首部后原封不动地交付给上层的应用程序。图4-1 发送端的UDP传输过程UDP提供应用进程之间传送数据的基本机制,它使用网络层协议所提供的功能,向应用层提供服务,为网络层以上和应用层以下提供了一个简单的接口。4.1.1 UDP的主要特点UDP的主要特点包括:4.1 用户数据报协议UDP(1)UDP提供无连接的服务,即在传输数据之前不需事先建立连接。UDP无连接的特点使得数据传输时延比较小。(2)UDP不提供可靠性。UDP把应用层传给IP层的数据发送出去,使用尽最大努力交付,但是并不保证它们能够可靠交付。由于缺乏可靠性,UDP应用一般必须允许一定量的丢包、出错和复制。绝大多数UDP应用
4、都不需要可靠机制,甚至可能因为引入可靠机制而降低性能。流媒体、实时多媒体游戏和VoIP(Voice over IP)就是典型的UDP应用。4.1 用户数据报协议UDP(3)UDP缺乏拥塞避免和控制机制,网络出现的拥塞不会使源主机的发送速率变低,因此需要基于网络的拥塞控制机制来减小因失控和高速UDP流量负荷而导致的拥塞崩溃效应。使用包队列和丢弃技术的路由器等网络基本设备往往就成为了降低UDP过大通信量的有效工具。此外,数据报拥塞控制协议(Datagram Congestion Control Protocol,DCCP)是通过在诸如流媒体类型的高速率UDP流中增加主机拥塞控制来解决拥塞问题。(4
5、)UDP支持一对一、一对多、多对一和多对多的交互通信。4.1.2 UDP端口号分配协议端口是传输层引入的一个非常重要的概念。网络中的通信实际上是进程间的通信,应用程序才是一个IP数据报的最终目的地。大多数计算机的操作系统都支持多进程并发功能,即允许多个应用程序同时运行。因此,通信双方进行通信时,不仅要知道目的主机的IP地址,还应该确定数据交付的具体应用进程。为了解决这个问题,传输层协议引入了不同的协议端口(简称端口)来表示不同的应用程序。与远程服务程序通信时,发送方不仅要知道目的主机的地址,每个IP数据报还必须带有目的主机的协议端口号。同样,为使接收方知道把回应数据发送给谁,发送端在IP数据报
6、中还必须带有自身的协议端口号。4.1 用户数据报协议UDPTCP/IP参考模型的传输层用一个16位的端口号来标志一个端口,因此允许有65 535个不同的端口号,这对于一个计算机来讲是足够用的。TCP/IP协议约定:01023为保留端口号,为标准应用服务使用;1024以上是自由端口号(也称动态端口号),为用户应用服务使用。4.1 用户数据报协议UDP表4-1列出了常见的UDP服务端口号。表4-1 常见UDP服务及端口号UDP端口号协议名称说 明53DOMAIN域名服务(DNS)69TFTP简单文件传输协议161SNMP简单网络管理协议520RIP路由信息协议4.1 用户数据报协议UDP提 示由于
7、TCP和UDP是两个独立的模块,因此,它们的端口号也是相互独立的。也就是说,TCP和UDP可以使用相同的端口号,TCP端口号由TCP协议来查看,UDP端口号由UDP协议来查看。4.1 用户数据报协议UDP4.1.3 UDP数据报格式UDP数据报有数据字段和首部字段两个字段。首部字段只有8个字节,由4个字段组成,每个字段长度都是两个字节,如图4-2所示。图4-2 UDP数据报格式4.1 用户数据报协议UDPUDP数据报首部中各16位的源端口号和目的端口号用来标记发送和接收的应用进程。因为UDP不需要应答,所以源端口号是可选的(如果源端口不用,那么置为零)。在目的端口号后面是长度固定的以字节为单位
8、的长度字段,用来指定UDP数据报中包括数据部分的长度,最小值为8(仅有首部)。16位的UDP校验和是用来对首部和数据部分一起做校验和的,检测UDP用户数据报在传输中是否出错。当传输层从IP层收到UDP数据报后,根据首部中的目的端口将其交付给相应的应用程序。如果接收方UDP发现没有与收到的报文中的目的端口号匹配的端口,则丢弃该报文,并发送“端口不可达”差错报文给发送端;如果匹配端口号已满,也丢弃该报文,但不回送差错报文,只能等待超时重发。4.2 传输控制协议TCP传输控制协议(Transmission Control Protocol,TCP)是传输层上另一著名的协议,它也是TCP/IP最具代表
9、性的协议。4.2.1 TCP的主要特点TCP除提供进程通信能力外,主要提供端到端的面向连接的、可靠的字节流服务。从应用程序的角度看,TCP提供的服务有如下特征。(1)面向连接的服务。面向连接意味着两个使用TCP的应用程序(通常为一个客户和一个服务器)在彼此交换数据之前必须先建立一个TCP连接。TCP连接只存在于两个终端结点,网络当中的中间结点(如路由器和网桥)对这个连接毫不知情(只知道传输的数据而不是连接本身)。4.2 传输控制协议TCP(2)面向字节流的服务。流是无报文丢失、重复和失序的数据序列,两个应用程序通过TCP连接交换字节流。TCP协议从应用程序处收集数据后,封装成长度适中的一个数据
10、报文段。在报文头中的序号域指出段中数据在发送端数据流中的位置。TCP协议为实现流传输服务付出了大量开销。(3)可靠交付。TCP的传输过程由建立连接、传输数据和释放连接3个步骤组成。一个应用程序在发送数据时,首先要请求建立连接。通过TCP连接传送的数据,无差错、不丢失、不重复并且按序到达。(4)全双工通信。TCP连接提供的是全双工的数据传输,采用点对点的方式,即在一个TCP连接中仅有两方进行通信,因此广播和多播方式不能用TCP。(5)流量控制。TCP连接的双方都有固定大小的缓冲区,流量控制可以防止较快主机致使较慢主机的缓冲区溢出。通常把缓冲区中的空闲部分称为窗口。TCP采用可变滑动窗口协议,并且
11、当交付的数据不够填满一个缓冲区时,流服务提供“PUSH”机制,应用程序可以用其进行强迫传送。4.2 传输控制协议TCP4.2.2 TCP端口号分配TCP模块以IP模块为传输基础,可以面向多种应用程序提供传输服务。为了能够区分出对应的应用程序,引入了TCP端口的概念(与UDP类似)。TCP端口号采用了动态和静态相结合的分配方法,对于一些常用的应用服务使用固定的端口号;对于其他的应用服务,尤其是用户自行开发的应用服务,端口号采用动态分配方法,由用户指定其分配。表4-2列出了常见的TCP服务端口号。4.2 传输控制协议TCPTCP端口号协议名称说 明21FTP文件传输协议-控制(File Trans
12、fer Protocol-Control)22SSHSSH远程登陆协议(SSH Remote Login Control)23TELNET远程登录(Telnet)25SMTP简单邮件传输协议(Simple Mail Transfer Protocol)53DNS域名服务器(Domain Name Server)69TFTP简单文件传输协议(Trivial File Transfer Protocol)80WWWWeb服务(World Wide Web)119NNTP网络新闻传输协议(Network News Transfer Protocol)表4-2 常见TCP服务及端口号4.2 传输控制协
13、议TCP4.2.3 TCP报文段格式TCP数据报被封装在一个IP数据报中进行传输,如图4-3所示。图4-3 TCP数据在IP数据报中的封装4.2 传输控制协议TCPTCP虽然是面向字节流的,但TCP传送的数据单元是报文段。一个TCP报文段分为首部和数据两部分,如图4-4所示。TCP首部的前20个字节是固定的,后面的选项字段根据需要而增加,因此TCP报文段的最小长度为20字节。图4-4 TCP报文段的格式4.2 传输控制协议TCP(1)源端口号和目的端口号。源端口号和目的端口号用于表示发送端和接收端的端口号。这两个值加上IP首部中的源IP地址和目的IP地址可以确定一条唯一的TCP连接。(2)序号
14、。序号字段用于标识从TCP发送端向TCP接收端发送的数据字节流,它表示在这个报文段中的第一个数据字节的序号。例如,当前报文段的第一个数据字节的序号为201,数据长度为100字节,则当前报文段的序号字段的值为201,下一报文段的序号值为301。序号字段占4个字节,当序号到达232-1后又从0开始。(3)确认序号。确认序号包含发送确认的一端所期望收到的下一个序号。既然每个传输的字节都被计数,确认序号应当是上次已成功收到数据字节序号加1。例如,接收端已成功接收发送端发送的序号为501,数据长度为200的报文段。那么,接收端期望收到的下一个数据序号是701,则该确认序号为701。TCP为应用层提供全双
15、工服务。这意味着数据能在两个方向上独立地进行传输。因此,TCP连接的每一端必须保持每个方向上的传输数据序号。4.2 传输控制协议TCP(4)数据偏移。数据偏移字段指出TCP报文段的数据起始处距离TCP报文段的起始处有多远。需要这个字段是因为选项字段的长度是可变的。这个字段占4位,以4字节为单位,因此TCP数据偏移的最大值是60字节,也就是说TCP首部的最大长度为60字节。(5)保留。保留字段占6位,保留为今后使用,目前设置为0。(6)标志位。在TCP首部中有6个标志位,具体含义如下:uURG(urgent)为紧急数据标志。当URG=1时,表示紧急指针字段的值有效。此时,该报文段中有紧急数据,应
16、尽快传送,而不是按照原来的顺序传送。这时需要与首部中的紧急指针字段配合使用。uACK(acknowledgement)为确认标志位。当ACK=1时,表示报文段中的确认序号有效;当ACK=0时,确认序号无效。TCP规定:在连接建立后,所有传送的报文段的ACK字段必须置1。4.2 传输控制协议TCPuPSH(push)为推送标志位。当PSH=1时,表示发送端希望立即得到接收端的响应。此时,发送方的TCP协议软件马上发送该数据包,接收方收到后也应尽快把这个报文段交给应用层。uRST(reset)为复位标志位,用来复位一条连接。如果TCP收到的数据不属于该主机上的任何一个连接,则将RST字段置1,向发
17、送端发送一个复位数据包,释放当前连接。RST字段置1还可用来拒绝一个非法的报文段或拒绝打开一个连接。uSYN(synchronous)为同步标志位,在建立连接时用来同步序号。如果SYN=1,而ACK=0,表示这是一个连接请求报文段;如果SYN=1,而ACK=1,则表示这是一个连接接受报文段。具体的连接过程将在4.2.4节中进行讲解。uFIN(finish)为终止标志位,用来释放连接。当FIN=1时,表示发送端端完成发送任务,希望释放连接。4.2 传输控制协议TCP(7)窗口。窗口表明该报文段的发送端当前能够接收的从确认序号开始的最大数据长度,该值主要向对方声明本地接收缓冲区的使用情况。窗口大小
18、是一个16位字段,因而窗口字段最大65 535字节。(8)校验和。校验和覆盖了整个TCP报文段:TCP首部和TCP数据。这是一个强制性的字段,一定是由发送端计算和存储,并由接收端进行验证。(9)紧急指针。只有当URG=1时,该字段才有效。紧急指针是一个正的偏移量,指出本报文段中紧急数据的字节数。也就是说,紧急指针字段和序号字段中的值相加表示紧急数据最后一个字节的序号。值得注意的是,即使窗口字段为零,也可以发送紧急数据。4.2 传输控制协议TCP(10)选项。选项字段长度可变,最长可达40字节。TCP规定了最长报文大小,又称为MSS(Maximum Segment Size)。每个连接方通常都在
19、通信的第一个报文段中指明这个选项,它指明本端所能接收的报文段的最大长度。从图4-4中可以注意到TCP报文段中的数据部分是可选的,在一个连接建立和释放的过程(具体内容在4.2.4节中进行讲解)中,双方交换的报文段都是仅有TCP首部,没有数据部分的。如果一方没有数据要发送,也可以使用没有任何数据的首部来确认收到的数据。在处理超时的许多情况中,也会发送不带任何数据的报文段。4.2 传输控制协议TCP4.2.4 TCP传输连接建立和释放TCP是一个面向连接的协议,传输层连接的建立和释放是每一次面向连接的通信中所必不可少的过程。TCP的连接和建立都采用客户/服务器方式,主动发起连接建立的应用进程称为客户
20、(client),而被动等待连接建立的进程称为服务器(server)。下面具体来看一下TCP连接的建立与释放过程。4.2 传输控制协议TCP建立TCP连接1 1假设客户机上的一个进程想与服务器上另一进程通信,两者要通过“三次握手(three-way handshake)”建立TCP连接,如图4-5所示。图4-5 三次握手建立TCP连接(1)第1次握手:客户发送连接请求。(2)第2次握手:服务器同意连接确认。是利用多条网络连接来支持一条运输连接上的数据传输,目的是使低吞吐量、低速率和高传输延迟的网络可以支持用户高速传输数据的要求。是将多条运输连接上的数据汇集到一条网络连接上传输,使具有高吞吐量、
21、高速率和低传输延迟且高费用的网络可以支持用户的低传输成本的要求。(3)第3次握手:客户确认连接。是将一个长的运输服务数据单元分成若干个运输协议数据单元进行传输,使传输长度有限的网络可以支持用户的无限长度数据的传输。4.2 传输控制协议TCP4.2 传输控制协议TCP(1)第1次握手:客户发送连接请求。客户发送一个特殊的TCP报文段给服务器,这个报文段不包含应用数据,而将段首的SYN标志位置1,该报文段也因此被称为SYN报文段。同时,客户还为这个连接设置初始序列号seq=client_isn。该段被封装成IP数据报发送给服务器。(2)第2次握手:服务器同意连接确认。一旦包含SYN段的IP数据报到
22、达服务器(假设正常到达),服务器从IP数据报中提取出SYN段,并初始化TCP缓存及连接变量,同时发送给客户一个同意连接的确认信息。这个确认报文段也不包含应用数据,却在段首包含三条重要的信息:SYN=1,ACK=1,TCP段首的确认号ack=client_isn+1,服务器选择连接的初始序列号seq=server_isn。这个报文段通常被称为SYN&ACK报文段。4.2 传输控制协议TCP(3)第3次握手:客户确认连接。在接收到服务器同意连接的确认后,客户同样要设置连接的缓存和变量,并再向服务器发送一个确认(即对服务器SYN&ACK报文段的确认)。这时ACK=1,SYN=0,表示连接已经建立。三
23、次握手过程结束后,客户和服务器就可以相互发送数据了。4.2 传输控制协议TCP释放TCP连接2 2客户和服务器之间数据发送完成后,需要释放连接。建立一个连接需要三次握手,而释放一个连接则需要经过四次握手。这是由TCP的半关闭造成。TCP连接是全双工通信的(数据在两个方向上能同时传输),因而每个方向必须单独进行关闭。也就是说,当任意一方完成数据发送任务后都可以发送一个FIN报文段来释放这个方向的连接;另一端收到FIN报文段后,通知应用层另一端已经终止了该方向的数据传输,也就是对FIN报文段进行确认。图4-6 四次握手释放TCP连接通常情况下都是客户端主动释放连接,因此以客户端主动关闭一个TCP连
24、接为例讲解释放TCP连接的过程,如图4-6所示。4.2 传输控制协议TCP(1)第1次握手:客户请求关闭连接。客户向服务器发送一个FIN=1的TCP报文段,并设置初始序列号seq=client_isn。该报文段封装成IP数据报传送给服务器。(2)第2次握手:服务器确认客户请求。服务器收到上述TCP报文段后,发送一个ACK报文段对这个报文进行确认。ACK报文段中,ACK=1,seq=server_isn,ack=client_isn+1。这时的TCP连接处于半关闭状态,即客户机无法向服务器发送数据,但可以接收服务器发来的数据。客户收到服务器的确认报文段后,进入终止等待状态,等待服务器发出的连接释
25、放报文段。4.2 传输控制协议TCP(3)第3次握手:服务器请求关闭连接。若服务器中没有需要发送给客户的数据了,则发送自己的FIN=1的连接释放报文段给客户端。该报文段中,ACK=1,seq=server_isn,ack=client_isn+1。(4)第4次握手:客户确认服务器请求。客户收到服务器的连接释放报文段后,对服务器的FIN报文段进行确认。在确认报文段中把ACK位置1,确认号ack=server_isn+1,序号seq=client_isn+1。然后进入时间等待状态。经过时间等待计时器设置的时间2MSL后,客户才真正释放连接。4.2 传输控制协议TCP提 示MSL是最长报文段寿命(M
26、aximum Segment Lifetime),设置这个时间是为了保证客户发送的最后一个ACK报文段能够到达服务器。RFC 793建议将MSL设为2分钟,TCP允许不同的实现根据具体情况使用更小的MSL值。4.3 网际互连协议IP网际互连协议IP是一个网络层协议,它包含寻址信息和控制信息,可使数据包在网络中路由。IP协议是TCP/IP协议族中最为核心的协议,与TCP协议结合组成整个因特网协议的核心协议。与IP协议配套使用的还有4个子协议:u地址解析协议ARP(Address Resolution Protocol,ARP);u逆地址解析协议RARP(Reverse Address Resol
27、ution Protocol,RARP);u因特网控制报文协议ICMP(Internet Control Message Protocol,ICMP);u因特网组管理协议(Internet Group Management Protocol,IGMP)。4.3.1 IPv4地址当网络中的两台主机要进行通信时,必须知道通信双方各自的地址,这就是我们所理解的Internet地址,即IP地址。IP地址实际上是一种标识符,TCP/IP协议通过IP地址来识别网络中不同的主机。4.3 网际互连协议IPIP地址的表示1 1根据TCP/IP协议规定,IP地址由32位二进制数所组成。例如,互联网上一台主机的IP
28、地址为11000001001000001101100000001001。为了记忆方便,可以将IP地址的32位二进制数进行分段,每段8位,共4段,然后将每段8位二进制数转换为相应的十进制数,中间用“”号间隔,这种表达方式称之为“点分十进制”。也就是说,上 述 的 I P 地 址 可 以 表 示 成193.32.216.9,如图4-7所示。图4-7 点分十进制表示IP地址从概率学的角度看,32位二进制数能表达232种不同的情况。也就是说,按照IP地址的设计初衷考虑,32位的地址空间可以表达4 294 967 296个不同的Internet地址。4.3 网际互连协议IPIP地址的分类2 2每个IP地
29、址内部分成两部分,即网络号和主机号,如图4-8所示。u网络号:也叫做网络地址,用于标识大规模TCP/IP网际网络(即由网络组成的网络)内的单个网段。u主机号:也叫做主机地址,用于识别每个网络内部的TCP/IP节点,如工作站、服务器、路由器或其他TCP/IP设备。图4-8 IP地址的结构4.3 网际互连协议IPIP地址中的网络号和主机号总共32位(4个字节),那么,如果网络号部分占总地址空间比较少,相应的主机号部分位数就增多,这样的网络中容纳的主机数就比较多,也就是说网络规模就比较大;反之也很好理解。因网络规模有所不同,为了方便网络的管理,IP地址被分为A,B,C,D,E五类,如图4-9所示。图
30、4-9 IP地址分类4.3 网际互连协议IPA、B、C类地址称之为单目传送地址,这些地址通常只能分配给唯一的主机;D类地址是组播地址;E类地址则是在IP地址设计之初保留作为科学研究用的。各类IP地址类别详述如表4-3所示。表4-3 IP地址类别详述IP地址类型二进制固定最高位二进制网络位二进制主机位网络号地址范围A类08位24位1.0.0.0126.0.0.0B类1016位16位128.0.0.0191.255.0.0C类11024位8位192.0.0.0223.255.255.0D类1110组播地址E类11110保留地址注:该表中的网络号、主机号排除了一些特殊IP地址。4.3 网际互连协议I
31、P特殊IP地址3 3在IP地址中,有一些特殊地址被赋予特殊的作用。主机地址全为1的IP地址称为广播地址。广播地址专门用于同时向网络中所有主机发送数据。例如,对于IP地址为192.168.10.0的C类网段,当发出一个目的地址为192.168.10.255的分组时,它将被分发给该网段上的所有主机。广播地址又分为直接广播地址和有限广播地址两种。直接广播地址有网络号,但主机字段通常全为1,这类广播会被送到专门网络(由网络号决定)上的每台主机。有限广播地址是指网络字段和主机字段全为1的地址,即255.255.255.255,它不被路由但会被送到相同物理网络段上的所有主机。1)广播地址4.3 网际互连协
32、议IP组播地址就是前面讲的D类地址,主要用于视频广播和视频点播系统,IP地址范围从224.0.0.0到239.255.255.255。其中,224.0.0.1特指所有主机,224.0.0.2特指所有路由器。组播地址和广播地址是不一样的:广播地址按主机的物理位置来划分各组,而组播地址指定一个特定的逻辑组,参与该组的计算机可能遍布整个Internet。2)组播地址网络地址是127的IP地址称为环回地址或者回送地址,主要用于对本地回路测试及实现本地机进程间的通信。在实际中经常使用的环回地址是127.0.0.1,它还有一个别名叫做localhost。3)环回地址4.3 网际互连协议IP提 示事实上,只
33、要第一字节为127的任意IP地址(甚至是非法的IP地址),系统都会自动识别为127.0.0.1。4.3 网际互连协议IP一般的IP地址是由网络信息中心(Network Information Center,NIC)统一管理并分配给提出注册申请的组织机构的,这类IP地址称为公有地址,通过它可以直接访问因特网。而私有地址属于非注册地址,专门为组织机构内部使用。常用的私有地址分类如表4-4所示。4)私有地址私有地址类别范围A类10.0.0.010.255.255.255B类172.16.0.0172.31.255.255C类192.168.0.0192.168.255.255表4-4 私有地址分类使
34、用私有地址的私有网络由于不与外部互连,因而可能使用随意的IP地址。私有网络在接入Internet时,要使用地址翻译(NAT),将私有地址翻译成公用合法IP地址。4.3 网际互连协议IP提 示在实际生活中,一些宽带路由器往往使用192.168.1.1作为缺省地址。4.3 网际互连协议IP不同类型的特殊IP地址总结如表4-5所示。表4-5 特殊IP地址汇总网络地址主机地址地址类型用 途全0全0本机地址启动时使用有网络号全0网络地址标识一个网络有网络号全1直接广播地址在专门网络上广播全1全1有限广播地址在本地网上广播127任意环回地址回送测试4.3 网际互连协议IP4.3.2 子网技术在实际使用过程
35、中,许多单位会把单一网络划分为多个物理网络,并使用路由器将它们连接起来,如图4-10所示。这些物理网络通称为子网,这种操作方法称为子网划分。子网1 1图4-10 子网划分4.3 网际互连协议IP划分子网的好处有很多,主要体现在以下3个方面。充分利用IP地址:由于A类网和B类网的地址空间太大,致使在不使用路由设备的单一网络中无法使用全部地址。因此,为了能更有效地使用地址空间,有必要把可用地址分配给更多较小的网络。易于管理网络:当一个网络被划分为多个子网时,每个子网变得易于控制,管理变得简单,减轻了大型网络的管理难度。提高网络性能:将一个大型的网络划分为若干个子网,其中的路由器设备可以把不同的子网
36、隔离开来。同一子网中的主机之间只能在各自的子网中进行广播和通信,不会转到其他子网中。另外,用路由器隔离还可以将网络分为内外两个子网,限制外部网络用户对内部网络的访问,从而提高内部子网的安全性。4.3 网际互连协议IP划分子网的方法2 2对于标准的A类、B类和C类地址来说,它们只具有网络号和主机号两层结构。为了划分子网,可以将其主机号分为两个部分,其中一部分用于子网号的编制,剩余部分用于主机号的编制。这样就形成了一个三层结构,即网络号、子网号和主机号,如图4-11所示。图4-11 IP地址的三层结构4.3 网际互连协议IP子网号的位数取决于组网的实际需要:子网号所占的比特位越多,则可以分配给主机
37、的位数就越少。也就是说,在一个子网中所包含的主机就少。(1)假设当前主机号有M位,向主机位部分借用n位来划分子网,则可以划分出2n个子网。反之,知道所需网络数,也可以计算出所需借用的主机位位数。(2)假设当前主机号有M位,划分子网后主机位有m位,则最多可容纳主机数量为2m-2台。反之,知道子网中的主机数量,也可以计算出所需主机位数。用当前主机位M减去划分子网后的m位,即可得到需借用的主机位位数。4.3 网际互连协议IP提 示如果网络不是无类别域间路由(CIDR)的环境,则必须去除全0和全1的子网号,因此只能划分出2n-2个子网,每个子网中最多容纳2m-n-2台主机。例如,将一个C类网络203.
38、66.77.0划分为4个子网,那么需要借用3位主机位作为子网号,每个子网可以容纳25-2=30台主机。又例如,一个B类网络172.17.0.0,将主机号的前8位作为子网号,另外8位作为主机号,那么这个B类网络就被分为28-2=254个子网,每个子网可以容纳28-2=254台主机。4.3 网际互连协议IP子网掩码3 3图4-12中给出了两个B类IP地址,这两个IP地址从外观上没有任何差别,那么应该如何区分这两个地址呢?这就要用到子网掩码。图4-12 使用子网划分和未使用子网划分的IP地址子网掩码(或称子网屏蔽码)与IP地址相同,也是一个32位的二进制数。对于子网掩码的取值,通常是将对应于IP地址
39、中网络地址(网络号和子网号)的所有位设置为“1”,对应于主机地址(主机号)的所有位都设置为“0”。子网掩码有两种表示方法,一是“点分十进制”表示法,二是网络前缀标记法。(1)“点分十进制”表示法与IP地址中相同。(2)子网号是从IP地址高字节以连续方式选取的,即从左到右连续地取若干位作为网络号。因此,可用网络地址(网络号和子网号)的位数来表示子网掩码,形式为“/”,这种表示方法称为“网络前缀标记法”。例如,一个子网掩码为255.255.0.0的B类网络地址156.81.0.0,用网络前缀标记法可以表示为156.81.0.0/16。4.3 网际互连协议IP4.3 网际互连协议IP标准的A类、B类
40、、C类网络地址的默认子网掩码如表4-6所示。表4-6 标准的A类、B类、C类网络地址的默认子网掩码地址类型子网掩码二进制位点分十进制A类地址11111111000000000000000000000000255.0.0.0B类地址11111111111111110000000000000000255.255.0.0C类地址11111111111111111111111100000000255.255.255.0用子网掩码判断IP地址的方法是用IP地址与子网掩码进行“按位与(AND)”运算,运算结果即为网络地址。4.3 网际互连协议IP例4-1已知IP地址为168.16.16.51,子网掩码为2
41、55.255.0.0,指出其网络地址。分析:168.16.16.51是B类地址,其默认子网掩码是255.255.0.0,将IP地址与子网掩码 进 行“按 位 与(AND)”运算即可得到网络地址,如图4-13所示。图4-13 使用子网掩码求网络地址(1)4.3 网际互连协议IP例4-2 已知IP地址为168.16.16.51,子网掩码为255.255.255.0,请指出其网络地址。分析:168.16.16.51是B类地址,采用非默认子网掩码255.255.255.0划分子网,将IP地址与子网掩码 进 行“按 位 与(AND)”运算即可得到网络地址,如图4-14所示。图4-14 使用子网掩码求网络
42、地址(2)通过例4-1和例4-2可以看出,使用子网掩码可以区分一个IP地址是否使用子网划分,还可以计算出其网络地址。4.3 网际互连协议IP划分子网的步骤4 4划分子网的步骤如下:(1)根据所需网络数确定需要多少位子网号来唯一标识网络上的每一个子网。(2)根据子网中的主机数确定需要多少主机号来标识每个子网上的每一台主机。(3)计算符合网络要求的子网掩码。(4)确定标识每一个子网的网络地址。(5)确定每一个子网上所使用的主机的地址范围。4.3 网际互连协议IP例4-3假设某公司网络不是无类别域间路由(CIDR)的环境,且只向相关机构申请了一个C类网络号,为203.66.77。但是该公司有4个分布
43、于各地的局域网络,每个网络各约有15台主机。请为这4个子网分配子网地址及子网掩码,并计算IP地址范围。(1)确定子网号位数。网络中有4个子网,则2n-2=4,计算得出n=3,即需要从IP地址中借用3位主机位。注意,n采用向上取整。剩余主机位为8-3=5位,则子网中最多容纳25=32台主机,符合题目要求。(2)将IP地址的网络位和子网位写为1,主机位写为0,即可得到子网掩码。二进制 十进制11111111.11111111.11111111.11100000255.255.255.2244.3 网际互连协议IP(3)3位子网位共有000、001、010、011、100、101、110、111等8
44、种组合,扣掉不可使用的000(代表本身)与111(代表广播),还有6个组合,也就是它共可提供6个子网,如下:二进制 十进制11001001.01000010.01001101.00100000 203.66.77.3211001001.01000010.01001101.01000000 203.66.77.6411001001.01000010.01001101.01100000 203.66.77.9611001001.01000010.01001101.10000000 203.66.77.12811001001.01000010.01001101.10100000 203.66.77.
45、16011001001.01000010.01001101.11000000 203.66.77.192 网络位子网位主机位4.3 网际互连协议IP(4)各子网提供的IP地址范围如图4-15所示。图4-15 每个子网的主机地址范围4.3 网际互连协议IP可变长子网划分5 5当用户选择了一个普通子网掩码之后,就不能支持不同尺寸的子网了,这对于网络内部不同网段需要不同大小子网的情形来说非常不方便。相对于普通子网掩码,在RFC 1878中定义了可变长子网掩码(Variable Length Subnet Mask,VLSM),它在划分子网并保留足够的主机数的同时,将子网进一步分成多个小子网,这种方法
46、能将网络划分为三级或更多级子网,使子网划分具有更大的灵活性,也使IP地址具有更高的利用率。如果对一个网络进行了可变长子网划分,那么就可以用不同长度的子网网络号来唯一标识每个子网,并能通过对应的子网掩码进行区分。VLSM规定了如何在一个进行了子网划分的网络中的不同部分使用不同的子网掩码。4.3 网际互连协议IP例4-4某公司有两个主要部门:市场部和技术部。市场部有员工100人;技术部又分为硬件设计部和软件设计部两个部门,各有员工52人。该公司申请到了一个完整的C类IP地址段:210.31.233.0,子网掩码255.255.255.0。为了便于分级管理,该公司准备采用VLSM计算,将原主网络划分
47、为两级子网,请给出可变长子网掩码划分方案。(1)一个能容纳100台主机的子网。4.3 网际互连协议IP用主机号中的1位(第4个字节的最高1位)进行子网划分,产生2个子网,分别为210.31.233.0/25、和210.31.233.128/25两个子网段。这种子网划分允许每个子网有126台主机(27-2)。选择210.31.233.0/25(子网掩码为255.255.255.128)作为网络号,该一级子网共有126个IP地址可供分配,能够满足市场部的需求。表4-7中给出了能容纳126台主机的一个子网。分析表4-7 划分市场部子网子网编号子网网络(点分十进制)子网掩码子网网络(网络前缀)1210
48、.31.233.0255.255.255.128(2)两个能容纳52台主机的子网。4.3 网际互连协议IP为满足2个子网各能容纳52台主机的需求,可以使用一级子网中的第2个子网210.31.233.128/25(子网掩码为255.255.255.128),取出其主机号的1位进一步划分成两个二级子网,其中第1个二级子网为210.31.233.128/26(子网掩码为255.255.255.192),划分给硬件部门,该二级子网共有62个IP地址可供分配;第2个二级子网为210.31.233.192/26(子网掩码为255.255.255.192)划分给软件部门,该二级子网共有62个IP地址可供分配
49、。表4-8给出了能容纳62台主机的两个子网。分析表4-8 划分技术部的2个子网子网编号子网网络(点分十进制)子网掩码子网网络(网络前缀)1210.31.233.128255.255.255.192210.31.233.128/262210.31.233.192255.255.255.192210.31.233.192/264.3 网际互连协议IP对这个可变长子网的划分结果如图4-16所示。图4-16 可变长子网划分结果4.3 网际互连协议IP超网和无类域间路由6 6目前,在Internet上使用的IP地址是在1978年确立的协议,它由4段8位二进制数字组成。由于Internet协议当时的版本号
50、为4,因而称为“IPv4”。尽管这个协议在理论上有大约43亿个IP地址,但是,并不是所有的地址都得到了充分的利用。A类和B类地址所包含的主机数又太多,而C类地址包含的主机数又太少,如一个B类网络其中所包含的主机数可以达到65 534个,一个C类网络中只能容纳254台主机,这对于拥有上千台主机的单位来说,选择哪类网络地址都是不合适的。此外,由于Internet的迅猛发展,主机数量急剧增加,它正以非常快的速度消耗着IP地址。为了解决当前IP地址面临的严重资源不足的问题,InterNIC设计了一种新的网络分配方法:对于一个主机数量介于B类网络和C类网络的单位,InterNIC给它分配多个C类网络的范