第2版前言
随着因特网技术的发展,TCP/IP协议以其高效、可靠、实用的特点和得天独厚的因特网背景,逐渐确立了它在网络中的统治地位。一系列与因特网密切相关的新技术进一步推动了因特网的普及和应用。物联网将人与人联结的因特网延展到了所有智能物;移动互联网将因特网的固定联结拓展到了移动和无线联结;大数据将因特网的应用推进到了更深、更广和更有效的层次;云计算将因特网的服务提高到了完美的状态。而这些技术所基于的网络的核心就是TCP/IP协议。
TCP/IP协议是一个比较庞大的协议族,协议层次清晰、功能强大、性能稳定。TC/IP协议是网络研究工作者智慧的结晶,很多非常优秀的思想方法在该协议中得到了非常完美的体现。各种新型应用的技术需求推动着TCP/IP协议的不断发展和进步。
了解和掌握TCP/IP协议的体系结构、工作原理和实现方法是对每个网络应用程序开发人员和网络管理人员*基本的要求。
本书在介绍TCP/IP的基本概念、原理和方法的同时,注意从以下三个方面突出本书的特点:
① 内容上力求全面,涵盖TCP/IP的基本内容和各个主要方面;
② 改编中尽量反映互联网的*新发展;
③ 叙述方法上尽量做到深入浅出,理论联系实际,图文并茂,注意内容的联系、连贯及逻辑性。
第2版保持了第1版的结构、特点和风格;修订了原书中的文字错误;明确了原书中表述不够清晰的内容;增加了一些TCP/IP协议发展中涉及的新技术。
全书共分21章。第1章概述TCP/IP的形成和发展、相关的组织机构、标准文档的形成过程以及未来的发展方向。第2章在回顾计算机网络基本概念的基础上,介绍因特网的体系结构,并将TCP/IP的结构与ISO/OSI进行比较。第3章介绍IP地址的相关概念,对子网、子网掩码、超网和无类地址进行讨论。第4章介绍地址解析和反向地址解析的原理,给出地址解析的报文格式和处理过程,并对代理ARP技术进行介绍。第5章对TCP/IP网络层的IP协议进行介绍,主要围绕IP数据报的格式、IP数据报首部的校验、数据的分片与重组、IP 数据报的选项以及IP模块的结构等问题进行讨论。第6章介绍TCP/IP网络层的另一个重要协议——因特网控制报文协议ICMP,详细阐述ICMP协议原理、报文格式、差错报告、控制报文和请求应答报文对。第7章讨论TCP/IP的路由功能,给出路由表的基本结构和路由算法,介绍静态路由和动态路由的概念,重点介绍动态路由中的路由表的建立和刷新协议(RIP、OSPF、BGP)。第8章介绍TCP/IP传输层协议——面向连接的TCP协议、无连接的UDP协议和流控制传输协议SCTP,重点讨论TCP连接、流量控制、拥塞控制和差错控制问题。第9章讨论因特网的域名系统,介绍名称的解析方法、DNS 报文格式、资源记录以及包含资源记录信息的数据库文件。第10章讨论TCP/IP应用层的BOOTP 和DHCP协议,DHCP是在BOOTP的基础上发展起来的实现主机参数自动配置的协议。第11章介绍IP组播的基本概念和模型,重点讨论因特网组管理协议IGMP 和组播路由协议。第12章讨论TCP/IP应用层的文件传输协议,介绍FTP进程通信模型和命令,以及简单文件传输协议TFTP,并给出FTP 与TFTP 的比较。第13 章讨论TCP/IP 应用层的电子邮件系统,介绍简单邮件传输协议SMTP、邮件获取协议(POP3、IMAP)和通用因特网邮件扩充MIME。第14章讨论TCP/IP应用层的远程登录协议,介绍Telnet概念、命令、选项协商及操作模式。第15章讨论TCP/IP应用层的超文本传输协议HTTP,该协议是实现WWW全球信息服务系统的基本协议。第16章讨论TCP/IP应用层的简单网络管理协议SNMP,对简单网络管理模型、简单网络管理协议及其报文格式、管理信息结构SMI、管理信息库MIB进行介绍。第17章介绍移动IP的基本概念、工作原理以及相关的技术。第18章讨论当前广泛关注的因特网的服务质量问题,介绍服务质量的概念以及适应多媒体业务服务质量的实时传输协议RTP和实时传输控制协议RTCP,并重点讨论与服务质量相关的两个关键技术——集成业务和区分业务。第19章讨论能够灵活地为不同类型的业务提供支持的多协议标签交换(MPLS)技术,介绍MPLS的组件、体系结构、工作原理和相关协议。第20章讨论因特网的安全问题,介绍当前存在的安全威胁和对抗这些安全威胁的安全服务,讲述保证网络安全的基本技术,并对因特网的IP层安全、传输层安全和应用层安全进行深入的讨论。第21章讨论新一代因特网协议——IPv6协议,介绍IPv6的数据报格式、扩展首部、IPv6地址和ICMPv6,并讨论从IPv4向IPv6过渡的技术。
本书第1版的第1~9章和第20章由兰少华编写,第10~19章由杨余旺编写,第21章由吕建勇编写。全书由兰少华统稿。第2版主要由兰少华在第1版的基础上编写修订完成。
在本书的编写过程中参阅了大量的RFC文档,参考了百度百科、百度文库、Wikipedia以及网上的相关资料,由于这些资料大多没有原始的出处,所以无法在参考文献中一一列出,只能在此对这些资料的原始作者表示感谢,对他们所做的工作和贡献表示敬意。
由于编者水平有限,时间仓促,加之TCP/IP协议仍在不断地发展和完善之中,本书可能在某些点上仍未能反映*新的发展,甚至难免存在一些缺点和错误,殷切希望广大读者批评指正。
本书第1版曾荣获第八届全国高校出版社*书二等奖,荣获2007年江苏省高等学校精品教材奖。
编者2017年2月
第3章IP地址
IP地址是因特网技术中的一个非常重要的概念,IP地址在IP层实现了底层网络地址的统一,使因特网的网络层地址具有全局*性和一致性。IP地址含有位置信息,反映了主机的网络连接,是因特网进行寻址和路由选择的依据。本章在介绍IP地址概念、IP地址分类的基础上,讨论了与IP地址相关的子网技术、超网技术以及无类网络地址。
3.1IP地址概述
地址是标识对象所处位置的标识符。传输中的信息带有源地址和目的地址,分别标识通信的源结点和目的结点,即信源和信宿。目的地址是传输设备为信息进行寻址的依据。
不同的物理网络技术(底层网络技术)通常具有不同的编址方式,这种差异主要表现在不同的地址结构和不同的地址长度上。
在一个物理网络中,每个结点都至少有一个机器可识别的地址,该地址叫作物理地址。
物理地址有两个特点: 不一致性和不*性。不一致性是指不同的物理网络技术采用不同的编址方式;不*性是指不同的物理网络中结点的物理地址可能重复。
为了保证寻址的正确性,必须确保一个网络中结点地址的*性,这一要求在单一的物理网络中很容易得到满足。但是当多个不同的物理网络进行互联时,这种*性就难以得到保证。另外,不同物理网络在地址编址方式上的不统一会给寻址带来极大的不便。因此,在进行网络互联时首先要解决的问题是物理网络地址的统一问题。在第2章我们已经提到因特网是在网络级进行互联的,因此,因特网在网络层(IP层)完成地址的统一工作,将不同物理网络的地址统一到具有全球*性的IP地址上,IP层所用到的地址叫作因特网地址,又称为IP地址。实现地址统一的概念模式如图3.1所示。
图3.1用IP地址统一物理网络地址
因特网采用一种全局通用的地址格式,为全网的每一个网络和每一台主机都分配一个因特网地址,以此屏蔽物理网络地址的差异。
早期的ARPANET的主机地址就采用了层次型地址(P,N),这种地址体现了网络的层次结构,便于进行寻址。寻址时先找到主机所在的网点P,然后再根据N找到该网点中的主机。因特网沿用了ARPANET的思想, 仍然采用层次型地址。因特网由网络互联而成,网络由主机互联而成。因此,IP地址由网络号和主机号构成,如图3.2所示。IP地址可以表示为:
IP.address∶∶= {,}网络号(Network.number)主机号(Host.number)图3.2因特网IP地址结构TCP/IP网络与协议(第2版)第3章IP地址〖3〗其中网络号的长度决定整个因特网中能包含多少个网络,主机号的长度决定每个网络能容纳多少台主机。网络号的长度并不是固定的。通常因特网中的网络数难以确定,但每个网络的预期规模却比较容易确定。
因特网的IP协议提供了一种整个因特网通用的地址格式(保证一致性),并在统一管理下进行IP地址的分配(保证*性),确保一个地址对应一台因特网主机(或路由器),这样,对上层而言物理地址的差异就被IP层屏蔽了。
因特网地址是一种层次型地址,它携带了关于对象位置的信息。因特网所要处理的对象比广域网要复杂得多,无结构的地址是不能担此重任的。由于IP地址标识了一个主机的位置(所属的网络),当将一台主机从一个网络移到另一个网络时必须改变这台主机的IP地址。
IPv4规定,因特网地址长度为32位(IPv6规定地址长度为128位)。因此,IPv4的地址空间为232,即4 294 967 296个IP地址。本书中所涉及的IP地址若不特别说明,则指IPv4地址。
IP地址一般用点分十进制数表示,例如202.119.84.120。这4个用点分隔的段分别对应4个字节。IP地址也可以用二进制(如11001010 01110111 01010100 01111000)或十六进制(如0XCA775478)表示。IP地址的二进制表示法在讨论地址类别和掩码时经常会用到,而十六进制表示法则很少使用。
3.2分类IP地址
传统的因特网采用分类地址。因特网定义了5类IP地址: A类、B类、C类、D类和E类,如图3.3所示。
图3.3因特网IP地址类别
其中A、B和C是3个基本的类别,分别代表不同规模的网络。A类地址由1个字节的网络号和3个字节的主机号构成,用于少量的大型网络。B类地址由2个字节的网络号和2个字节的主机号构成,用于中等规模的网络。C类地址由3个字节的网络号和1个字节的主机号构成,用于小规模的网络。
各类网络所占因特网地址空间的比例如图3.4所示。50%25%12.5%6.25%6.25%A类B类C类D类E类231230229228228图3.4因特网IP地址空间A类地址第1个字节的*高位固定为0,另外7位可变的网络号可以标识128个网络(0~127),0一般不用,127用作环回地址。所以共有126个可用的A类网络。A类地址的24位主机号可以标识1 677 216台主机(224 =1 677 216),主机号为全0时用于表示网络地址,主机号为全1时用于表示广播地址,这两个主机号不能用来标识主机。所以,每个A类网络*多可以容纳1 677 214台主机。A类地址第1个字节的取值范围为0~127。
B类地址第1个字节的*高2位固定为10,另外14位可变的网络号可以标识214=16 384个网络。16位主机号可以标识65 536台主机(216=65 536),由于主机号不能为全0和全1。所以,每个B类网络*多可以容纳65 534台主机。B类地址的第1个字节的取值范围为128~191。
C类地址第1个字节的*高3位固定为110,另外21位可变的网络号可以标识221=2 097 152个网络。8位主机号可以标识256台主机(28=256),由于主机号不能为全0和全1。所以,每个C类网络*多可以容纳254台主机。C类地址的第1个字节的取值范围为192~223。
D类地址用于组播(multicasting)。因此,D类地址又称为组播地址。D类地址的范围为224.0.0.0~239.255.255.255,每个地址对应一个组,发往某一组地址的数据将被该组中的所有成员接收。D类地址不能分配给主机。D类地址的第1个字节的取值范围为224~239。有些D类地址已经分配用于特殊用途,如224.0.0.0是保留地址,224.0.0.1是指本子网中的所有系统,224.0.0.2是指本子网中的所有路由器,224.0.0.9是指运行RIPv2路由协议的路由器,224.0.0.11是指移动IP中的移动代理。另外,还有一些D类地址留给了网络会议,如224.0.1.11用于IETF.1.AUDIO,224.0.1.12用于IETF.1.VIDEO。
E类地址为保留地址,可以用于实验目的。E类地址的范围为240.0.0.0~255.255.255.254,E类地址的第1个字节的取值范围为240~255。
在分类地址网络中每个网络占用一个地址块。各类网络地址块的示例如表3.1所示。表3.1各类网络地址块的示例
〖BHDFG2,WK3,K6,K8,K6,K13,KW]类别起始地址结束地址网络地址主机地址范围广播地址A类86.0.0.086.255.255.25586.0.0.086.0.0.1~86.255.255.25486.255.255.255B类188.6.0.0188.6.255.255188.6.0.0188.6.0.1~188.6.255.254188.6.255.255C类206.8.2.0206.8.2.255206.8.2.0206.8.2.1~206.8.2.254206.8.2.255从表3.1中可看出,每个网络都要占用两个IP地址,一个用于标识网络,另一个用于网络广播。每个网络使用该网络地址块的起始地址作为网络地址,该地址仅作为网络的标识,主要用在网络路由中。网络地址块的结束地址被用作该网络的广播地址。
在因特网的地址中包含了网络信息。当一个路由器或网关连到多个网络上时,每个网络都会给路由器或网关分配一个IP地址,设备有多少个网络连接,就有多少个IP地址。而且这些IP地址分别属于不同的网络,这对于路由选择来说是非常有用的。一台主机也可以连接多个网络,这种主机叫作多宿主主机(multi.homed host)。多宿主主机拥有多个IP地址,每个地址对应一条物理连接。由此可见,因特网地址的本质是标识主机的网络连接。图3.5给出了多宿主设备的地址配置。
图3.5IP地址标识网络连接
因特网地址是由中央管理机构分配的。一个组织加入因特网时,将会从因特网的网络信息中心InterNIC获得网络前缀,然后负责组织内部的地址分配。这样,既解决了全局*性问题,又分散了管理负担。
3.3特殊IP地址
在IP地址中有些地址并不是用来标识主机的,这些地址具有特殊意义。这些地址包括网络地址、直接广播地址、受限广播地址、本网络地址、环回地址等。
1. 网络地址
因特网上的每个网络都有一个IP地址,其主机号部分为0。
网络地址的一般表达式为:
{,}={,0}
该地址用于标识网络,不能分配给主机,因此不能作为数据的源地址和目的地址。网络地址的使用可以减小路由表的规模。
A类网络的网络地址为: Network.number.0.0.0。例如120.0.0.0。
B类网络的网络地址为: Network.number.0.0。例如139.22.0.0。
C类网络的网络地址为: Network.number.0。例如203.120.16.0。
2. 直接广播地址
直接广播(direct broadcast)是指向某个网络上的所有主机发送报文。TCP/IP规定,主机号各位全部为1的IP地址用于广播,称为直接广播地址。路由器在目标网络处将IP直接广播地址映射为物理网络的广播地址,以太网的广播地址为6个字节的全1二进制位,即ff:ff:ff:ff:ff:ff。
直接广播地址的一般表达式为:
{,}={, -1}
这里的-1表示全1。
直接广播地址只能作为目的地址。
A类网络的直接广播地址为: Network.number.255.255.255。例如120.255.255.255。
B类网络的直接广播地址为: Network.number.255.255。例如139.22.255.255。
C类网络的直接广播地址为: Network.number.255。例如203.120.16.255。
3. 受限广播地址
直接广播要求发送方必须要知道信宿网络的网络号。但有些主机在启动时,往往并不知道本网络的网络号,这时候如果想要向本网络广播,只能采用受限广播地址(limited broadcast address)。
受限广播地址是在本网络内部进行广播的一种广播地址。TCP/IP规定,32位全为1的IP地址用于本网络内的广播。
受限广播地址的一般表达式为:
{,}={-1, -1}
受限广播地址的点分十进制表示为: 255.255.255.255。
受限广播地址只能作为目的地址。
路由器将隔离受限广播,不对受限广播分组进行转发。也就是说因特网不支持全网络范围的广播,这也是为了对网络进行保护,以防网络带宽被过多地占用。
……