第四章 网络互连与TCP/IP协议 【计划课时】16课时(要求预习教材第二章2.4~2.6节与第四章) 4.1 网络互连(internetworking) 4.1.1 网络互连概述 上一章讨论的局域网是单个的同种协议网,即网络中每台机器对应层所用协议相同,通信是在同一个网络内不同主机之间进行的。而所谓“网络互连”,就是采用各种网络互连设备将同一类型的网络或不同类型的网络相互连接起来,形成所谓“internet“(互连网络),使一个网络上的主机能与另一网络上的主机相互通信。因特网(Internet)是世界上最大的internet。 此外,为了保证网络的传输性能、可靠性及安全性,一般要求一个网络所管理的范围不要太大,这就要求把一个大的网络分解成若干个较小的子网,通过网络互连技术,形成所谓的Intranet(内部互连网),以便隔离故障,提高安全保密性,方便网络管理。校园网是典型的Intranet。 与局域网相比,通过互连网络进行通信的主机必须具有在不同网络间进行网间寻址(路由选择)的能力。从通信子网的角度看,不同网络之间的主机可以采用不同的物理层和数据链路层协议,但必须具有相同的网络层协议,采用统一的互连网络地址。从资源子网的角度看,由于网络通信的复杂性和多变性,网络层协议主要用来实现网间寻址,通常不能保证可靠的数据传输,所以各主机还必须具有相同的传输层协议,以保证通过网络互连进行通信的应用程序之间具有稳定可靠的数据传输。 目前网络互连技术中最常用协议是在因特网上得到广泛应用的TCP/IP协议族。对部门级和负责系统集成的网络工程师而言,技术的重点则是各个单位Intranet的组网及管理技术。 4.1.2 Intranet技术特点 【复习】本课程中叙述的Intranet可以包括以下网络类型: 企业内部网(Intranet) 园区网/校园网/小区网(Campus networks) 城域网(MAN,Metropolitan Area Network) 其基本特点—— ·服务基于Internet 技术:通常提供WWW、E-mail、FTP、BBS、虚拟网(VLAN)等服务或功能,良好安全性 ·组网基于LAN技术:主机/服务器为中心,核心交换机为主要通信设备,独立的网络资源和管理系统,部分或全部使用专门敷设的线路 ·使用代理服务器并通过路由器实现Internet接入(小系统可使用ISDN等其他接入方式) ·本身可由若干个LAN组成 ·使用TCP/IP协议实现内部及与外部的网络互联 ·高的网络通信带宽(10M/100M/1000M……) ·配置有各种网络数据库系统 4.1.3 Internet与Intranet比较 Internet与Intranet相比,主要差别在于前者强调其开放性,因为其服务对象是所有Internet用户,整个网络在管理上不隶属于任何组织或个人,用户使用简单的设备(如MODEM)就可以自由接入;后者注重网络资源的安全性,因为其服务对象是某一单位或组织内部的所有或部分人员,所以要有独立的网络软硬系统、严格的管理制度和专门的管理技术人员,并且为了达到安全保密的目的,要采取加密、认证、防火墙等安全管理措施。此外,Intranet组网投资高,需要进行认真规划和方案优化。 注:与Intranet相对的通常还有Extranet(外部网),即连接到另一组织的内部网的内部网。Extranet一般采用VPN(虚拟专用网络)技术。所谓VPN,简言之,即使用Internet而不是使用专线来动态地而非永久性地进行网络连接,降低了线路使用费用,同时通过独特的鉴别、加密和遂道操作,使电子邮件、数据传输和远程通话安全性得到极大提高。 4.2 TCP/IP协议族(TCP/IP protocol suite) P144 传输控制协议/互连网络协议(Transmission Control Protocol/Internet Protocol,TCP/IP)是由许多协议组成的一套网络通信标准协议,是TCP/IP是Internet的标准协议,所以实际上已成为几乎所有现代网络计算机必备的的协议。 4.2.1 TCP/IP模型 TCP/IP本身为一种四层模型,与OSI参考模型的对应关系见P145图5.14。  TCP/IP模型与协议族 作为通信协议组,TCP/IP包括如下重要功能: ·编址(使用网间统一地址——IP地址) ·信息分割(网间传送带IP地址的packet) ·流量控制(网间) ·差错控制(网间) ·路由(网间寻址) 比较一下以太网的相应功能: ·编址(使用固化的物理地址——MAC地址) ·信息分割(网内传送带MAC地址的frame) ·流量控制(帧类型和滑动窗口法,网内) ·差错控制(FCS,网内) ·广播(网内寻址)  从实用的角度看,TCP/IP提供了—— ·网络应用程序:smtp、ftp、telnet等 (用户角度) ·两种网络通信服务:无连接和面向连接 (TCP/IP驱动程序,供程序员开发软件使用) ·网络传送技术方法:寻址、路由选择、协议的具体实现(网络操作系统与硬件设计指南) 4.2.2无连接和面向连接的通信服务 a.面向连接(connection-oriented)的通信 发送数据包(packets)前,发送方的网络层协议应首先与接收方的网络层协议建立连接(握手)。连接建立后,从同一个源地址到同一个源目标地址的数据包串即开始一个接一个地沿同一条路径被逐个传送。连接建立后具有同样源地址和目标地址的数据包串的路由选择只在建立连接时进行一次。路由器不必为每个数据包重复计算路由。 b.无连接(connectionless)的通信 网络协议对每个数据包都单独处理,各数据包间不存在任何联系。一个报文中的各个数据包可能通过不同的路径到达目标地址。 这两种服务的区别类似于电话系统和普通邮政系统所提供服务的区别。面向连接的服务过程:建立连接——数据传送——断开连接。这个过程类似于电话通话:拨号等待对方摘机建立通路——相互交谈——挂机断开通话。而对于无连接服务来说,发送方发送的每一条信息或报文(message?)必须带有完整的目标地址,并且每一个报文都独立于其他报文经由系统选定的路径传递到目的地。这个过程类似于普通邮政系统,每一封信上都必须写上完整的收信方地址(打电话时只要一开始拨号电话接通,就不需要每讲一句话都重复拨一次对方的电话号码),并且每一封信都独立于其他信件经由邮政部门选定的路径传递到收信方。当使用无连接服务的两个报文发向同一目标时,可能先发的报文在途中丢失或延误了,而后发的报文反而先收到,如同信件可能在途中遗失或先发的后收到一样。换言之,无连接的服务不能保证报文不丢失和一定按序到达,而这在面向连接的服务中是绝对不可能发生的。 在OSI的传输层、网络层和TCP/IP的传输层中,都允许提供面向连接的服务或无连接的服务。但在TCP/IP的网络层中只提供无连接的服务。之所以如此,是考虑它所互连的通信子网是五花八门的,只要由源到目标途中任何一个通信子网是无连接的,互连在一起就是无连接的。 4.3 网络接口层(Host to network) P145 TCP/IP模型中,网络接口层相当于OSI的物理层(物理信号/编码)+数据链路层(帧传送)。该层在TCP/IP模型中不作规定,使用不同协议的各种通信网和各种LAN中各种主机只要支持并安装TCP/IP协议,即可与TCP/IP模型的上层(网络层)进行通信。 其功能:①将网际层送来的IP数据报封装为网络帧,然后通过传输媒介发送到网络上; ②接收并校验传输媒介送来的网络帧,然后还原为IP数据报送到网际层 该部分的功能实际上是由各通信网络本身提供的。 4.4 网际层(IP层,互连网层,网间网络层) P145 相当于OSI的网络层。该层运行的协议有: ·IP协议(用于数据传送) ·ARP、RARP、ICMP和IGMP协议(用于网络互连控制——差错报告与连接状态查询) ·路由协议(用于选择路由) 4.4.1 IP协议(互连网络协议,Internet Protocol) IP协议是网际层最重要的协议,负责在通信子网范围内实现跨越互连网络的主机间的相互通信(数据报的分类和交付)。其主要功能可以归纳为三点: ①携带所谓“IP地址”的数据报的生成与接收 ②在互连网络的不同主机间实现无连接的传输服务 ③在互连网络之间实现数据报传送的路由选择 【数据报,datagram】 Packets in the IP layer are called datagrams. (IP层中的数据包称为“数据报”)。《简明英汉词典》:“自带寻址信息的独立地从数据源行走到终点的数据包。” The Internet Protocol (IP) is an unreliable and connectionless protocol for host-to-host communication.——IP协议是一种不可靠的无连接协议,用于“主机-主机”间的通信。它提供的是一种所谓“尽力传送”的服务。所谓“尽力”是指IP不提供差错校验或跟踪服务。它只是“尽力”进行到目标地址的传送,但并不做任何保证。如果确实要求可靠传输,IP必须和某个高可靠性的协议(如TCP)配套使用。日常生活中提供“尽力传送”服务的实例是邮政局,它尽力传送邮件但并不保证全部成功。如果一封信由于这种“不可靠”的传递丢失了,只有让发送者或接收者自己来发现这种丢失,并解决问题。邮政局并不跟踪每封信的传递,也不通知发信人信件已经丢失或损毁了。 4.4.2 IP数据报 P152 IP数据报由两部分组成:报头和数据。报头部分20(基本)~60(加上选项)字节,数据报总长20~65536字节。 IP数据报的格式如下: P152图4.18 协议版本 报头长度 服务类型 TOS 总长度 total length 20字节 报头  标识 identifier 标志flag 片偏移fragment offset    生存时间 TTL 用户协议protocol 报头检验和 header checksum    源站点IP地址 source IP address    目的站点IP地址 destination IP address    选项 otions 填充 padding 40   数据 data    协议版本(4位):目前流行版本号为4,即IPv4。它向主机上运行的IP软件表明该数据报为IPv4格式。所有字段均应按IP协议第四版的规定翻译,如果机器正在运行其他版本的IP,该数据报被丢弃。 报头长度(4位):该字段以四个字节为单位规定了报头部分的长(默认为5,即5×4=20字节)。 服务类型(8位):规定优先级(0~7,7最高)、可靠度和延迟参量等。其中优先级IPv4不用。 优先级 低延迟D 高吞吐量T 高可靠性R 最小成本C 未用   0 1 2 3 4 5 6 7 DTRC四位称“TOS”(Type of Service)位,置“1”时表示启用该服务,但四者中一项较高其余三项必较差,四位都置“1”没有意义。各应用程序可以请求特定的服务类型,常用应用程序默认的服务类型如下表所示: 协议 TOS位 说明  ICMP 0000 普通  BOOTP 0000 普通  NNTP 0001 最小成本  IGP 0010 最大可靠性  SNMP 0010 最大可靠性  TELNET 1000 最小延迟  FTP(数据) 0100 最大吞吐量(throughput)  FTP(控制) 1000 最小延迟  TFTP 1000 最小延迟  SMTP(命令) 1000 最小延迟  SMTP(数据) 0100 最大吞吐量  DNS(UDP查询) 1000 最小延迟  DNS(TCP查询) 0000 普通  DNS(区域,zone) 0100 最大吞吐量   总长度(16位):65536个字节,即0~65535(216-1) 标识(16位):源主机赋予各数据报的唯一标识,当数据报分片通过子网传输时使用之。 标志(3位):第1位不用,第2位为1表示不分片,第3位为1表示非最后的报片。 片偏移(13位):本片数据在初始数据报区中的偏移量(以8个字节为一个单位)。 网络数据都是以帧的形式通过物理网络传输的,IP数据报也要封装成帧来传输。但是不同的物理网络对帧的大小有不同限制(可以被封装在一个帧中的最大数据长度称最大传输单元MTU)。数据报在一个物理网络即使能被完全封装在一个帧中,到另一个物理网络也未必如此。不同网络的MTU大小见下表: 协议 MTU(字节)  Hyperchannel 65535  令牌环(16Mbps) 17914  令牌环(4Mbps) 4464  FDDI 4352  以太网 1500  X.25 576  PPP(点对点) 296   为了使IP协议独立于具体的物理网络,IP协议选择在源主机所在物理网络上进行最大限度封装(可达65535字节),同时提供分片(fragmentation)机制,在MTU(由硬件决定)较小的网络上将数据报分成较小的“片”进行传输,每个片都有自己的报头,而且各片的报头基本相同。分片是在MTU不同的两个网络交界处(网关或路由器)进行,一个数据报在达到目标地址前可能会进行多次分片。而片的重组则在目标主机进行。 一个数据报在传输中,不管分成多个片,各片均具有相同的标识号。目标主机根据此标识号和源地址判断所收到的片属于哪个数据报。片偏移则用于重组时确定其顺序。标志第二位为0时,第三位将用来:为1表示非最后报片,否则目标主机便知收到了最后一片,并将其片偏移加上本片总长即为原始数据报长。通过将各已到片的长度之和和与原数据报长比较,便可知本数据报各片是否全部收到。 生存时间(TTL,time to live,8位):实际上是一个计数器,代表IP数据报在互联网中停留的最长时间(每通过一个路由器自动减1,为0时若仍未到达目的地则被丢弃)。 用户协议(8位):规定最后送达目标使用IP层服务的高层协议,如TCP、UDP、ICMP和IGMP,高层协议的号码(值)由TCP/IP权威管理机构分配,如下: 值 协议  1 ICMP  2 IGMP  6 TCP  8 EGP  17 UDP  41 IPv6  89 OSPF   报头检验和(16位):保证报头的正确性。 数据报选项:用于网络控制、测试和调试。 选项分为以下四类: ·记录路由(记录最多9个所经过的路由节点的IP地址)——测试用 ·严格源路由(预先设定数据报必须经过的传送路由——只能访问所列的路由节点) ·自由源路由(预先设定数据报必须经过的的部分传送路由——其间可有其他路由节点) ·时间戳(timestamp)(记录数据报经过的每一路由节点的IP地址和时间)——测试用 填充:通过填充一定数量的0来保证IP数据报头是4个字节的整倍数。 4.4.3 ICMP(互连网络控制报文协议,internet control message protocol) P157 使用不可靠的无连接的IP协议传送数据,优点是可以高效地利用网络资源,缺点则有两点: ·缺少出错报告和出错纠正功能——如果路由器找不到通往目标主机的路径或传送超时必须丢弃某个数据报时怎么办?如果目标主机无法及时接收所有发来的数据报而必须丢弃某个数据报时怎么办?(IP协议本身并不负责通知源主机) ·缺少主机和管理查询功能——主机有时需要确定一下某个路由器是否“alive”(在工作),网络管理员有时也需要了解其他主机或路由器的信息。 ICMP协议即是为了解决这两个问题而设计的。它发送五种出错报告报文和四组查询报文来支持不可靠的无连接IP协议。它本身是一个网际层协议,但其信息总是封装在IP数据报内再送到下层传送。(IP数据报中“用户协议”字段的值为1时表示是一个ICMP报文)。  ICMP报文    IP报头 IP数据   帧头 帧数据 帧尾(如果有时)   ICMP报文可以分为两类:出错报告报文和查询报文。报文格式如下: P158图4.24 类型(type,8位) 代码(code,8位) 检验和(checksum,16位)  报头其他部分  数据段  其中“类型”字段值如下: P158表4.4 报文种类 类型 报文内容  出错报告报文 3 目标不可到达(Destination unreachable)   4 源抑制(Source quench)   11 数据报超时(Time exceeded)   12 数据报参数错(Parameter problem)   5 重定向(Redirection)  查询报文 8或0 回应请求和应答(Echo request or reply)   13或14 时戳请求和应答(Timestamp request and reply)   17或18 地址掩码请求和应答(Address mask request and reply)   10或9 路由器请求和通告(Router solicitation and advertisement)   ①出错报告报文 当路由器或主机处理某个IP数据报遇到问题时报告之,例如,当IP数据报不能到达目的地(网络、机器或端口)或网络出现阻塞,网络中某个监测到此错误的站点(中间网关)便向源主机发送封装有ICMP信息的IP数据报。 【注意】ICMP的出错报告报文仅用于向源主机报告出错信息,并不能纠正数据报中的任何出错。此外,由于ICMP报文总是封装在无连接型的IP数据报中,ICMP本身也可能丢失。 可以报告的出错类型有五种:目标不能到达,源抑制,数据报超时,数据报参数错,重定向。 ·目标不能到达(Type:3) 共有15种出错代码,分别表示—— Code 0:网络不可到达 Code 1:主机不可到达 Code 2:协议不可到达(目标主机未运行IP数据报所需的上层协议如TCP、UDP等时) Code 3:端口不可到达(数据报发往的应用程序此刻未运行) Code 4:要求分片但未分片(发送的数据报太大) Code 5:源路由不能完成(源路由项中的一个或几个路由器无法访问) Code 6:目标网络未知 Code 7:目标主机未知 Code 8:源主机处于隔离状态(isolated) Code 9:与目标网络的通信被管理员禁止 Code 10:与目标主机的通信被管理员禁止 Code 11:网络不能到达,要求特定的服务(如果源主机请求某种服务,路由器才能处理数据报) Code 12:主机不能到达,要求特定的服务(如果源主机请求某种服务,路由器才能处理数据报) Code 13:主机不能到达,因为管理者对它设置了过滤 Code 14:主机不能到达,因为主机的优先权受到妨碍(所请求的优先权对目标主机不适用) Code 15:主机不能到达,因为主机的优先权被剥夺 带有Code 2和3的报文只能由目标主机产生,其余只能由路由器产生。 ·源抑制(Type:4;Code:0) 当源主机传送数据的速率太高时,路由器或目标主机用此报文通知源主机:因为缓冲来不及引起的阻塞(congested),数据报已被丢弃;请“抑制”(quench)! ·数据报超时(Type:11) Code 0:当路由器接收到一个数据报发现其TTL值为0时,它将丢弃该数据报并向源主机发送一个超时报文。 Code 1:当目标主机发现在规定时间内无法接收到某个数据报的所有分片时,它将丢弃所有的分片并向源主机发送一个超时报文。 ·数据报参数错(Type:12) 数据报头出现“语义含糊”(ambiguity)或错误时,路由器或目标主机将丢弃该数据报并向源主机发送报告“参数出了问题”的报文。Code 0用于报告报头中某个字段有问题,Code 1用于报告其他部分数据丢失。 ·重定向(Type:5,Code :0~4) 路由器和主机都必须使用路由表来引导数据报的发送和转发。路由器的路由表是动态更新的,而主机的路由表通常是静态的(因为主机数量很多,动态更新可能会严重占用带宽),且其路由条数很有限。重定向报文由路由器发给主机,帮助主机更新路由表。如下图,主机A欲向主机B发送数据报,显然通过R2是最有效的路由选择,但主机A根据自己的路由表,却不知道应该这样做,而将数据报先发给路由器R1。R1在查看了自己的路由表后,发现数据报应直接发给R2。于是一边向R2发送数据报,一边向主机A发送一个重定向报文,让它更新自己的路由表。  Code 0~4与路由的方式有关。 ② 查询报文 除了出错报告,ICMP还可诊断某些网络问题,具体是通过四对请求(源A)和应答(目标B)报文进行: ·回应请求和应答:检测两个系统(主机或路由器)能否在IP层进行彼此通讯(PING命令) ·时戳请求和应答:检测两个系统间信息往返时间或对两个系统的时钟进行同步 ·地址掩码请求和应答:主机向路由器(网关)发出请求,路由器的应答为该网络的子网掩码 ·路由器请求和通告:如果一台主机需要知道与其网络相连的各路由器地址及这些路由器是否在工作,可以广播一个“路由器请求”报文,收到该报文的所有路由器都将使用“路由器通告”报文广播其路由信息。 ③ PING命令的使用 用来测试网络通道连通性的PING命令就是一种使用ICMP回应请求和回应应答报文来确定网络上某台IP系统是否正常工作的连接验证命令。它连续`向对方发送ICMP数据包,根据对方回应的数据报判断网络连通与否并统计数据传输时间等: C>ping 172.16.1.20 Pinging 172.16.1.20 with 32 bytes of data: (正常) Reply from 172.16.1.20: bytes=32 time<10ms TTL=127 Reply from 172.16.1.20: bytes=32 time<10ms TTL=127 Reply from 172.16.1.20: bytes=32 time<10ms TTL=127 Reply from 172.16.1.20: bytes=32 time<10ms TTL=127 Ping statistics for 172.16.1.20: Packets: Sent = 4, Received = 4, Lost = 0 (0% loss), Approximate round trip times in milli-seconds: Minimum = 0ms, Maximum = 0ms, Average = 0ms Pinging 172.16.1.21 with 32 bytes of data: (有问题) Request timed out. Request timed out. Request timed out. Request timed out. Ping statistics for 172.16.1.21: Packets: Sent = 4, Received = 0, Lost = 4 (100% loss), Approximate round trip times in milli-seconds: Minimum = 0ms, Maximum = 0ms, Average = 0ms 4.4.4 ARP和RARP协议 P148-149 在同一个物理网络(如LAN)中,主机之间的通信是通过数据链路层中的所谓“物理地址”(“MAC地址”)相互访问的。该地址出厂时已固化在设备(如网卡)的ROM中,它在全球唯一。所以同一个物理网络中各个设备的物理地址一般是无规律可言的。 而在“互连网络”——由几个物理网络通过路由器和网关之类的网络互连设备组成的网络——中,为了便于通信和管理,往往需要对组成互连网络的各物理网络、网络互连设备及主机等进行统一编号。在TCP/IP网络中,此统一编号称为“IP地址”,它在整个互连网络中唯一。该地址仅用于网络层(如IP层),物理网络不能识别它。 从用户间通信的角度看,往往知道的是通信双方的逻辑地址(软件识别)。而从网络间通信的角度看,真正使用的只能是设备的物理地址(硬件识别)。这就需要在通信时实现逻辑地址与物理地址的相互“映射”(mapping)。 所谓“映射”,有两种方法:一是静态映射,即人工建立一个物理地址与逻辑地址的对照表(地址映射表),其缺点是网络发生变化时(如更换网卡或加入新站时),需对该对照表及时进行人工更新;二是动态映射,即由主机等通过地址解析协议,在高速缓存中建立一个物理地址与逻辑地址的地址映射表。通信时,只要知道对方的一个地址,就可以获得另一个地址。TCP/IP网络中,地址解析协议有两个:ARP用于将逻辑地址“映射”(map)成物理地址(MAC地址),RARP则的作用则正好相反。 ①ARP——地址解析协议(Address Resolution Protocol)  其原理是:主机试图发送数据报时,先检查机上ARP高速缓存中的地址映射表,如果找不到所需的IP-MAC地址项,则由IP自动调用ARP,向目标主机发送一个带有源硬件地址和主机IP地址、目标主机IP地址的ARP请求帧,然后将该请求帧在本地网上广播,IP地址与请求帧的目标主机IP地址相同的主机将接收该帧,并向源主机发送一个包含本身硬件地址的ARP响应帧。双方主机分别在内存的ARP高速缓存中建立一个IP-MAC地址映射表,此后双方通信均可按硬件地址直接发送。 如果跨子网,则两边主机分别与路由器两端口的硬件地址进行ARP地址解析。 ARP数据包格式: 硬件类型(2字节) 协议类型(2字节)  硬件长度 协议长度 操作方式(2字节)  发送者硬件地址(以太网中为6个字节)  发送者协议地址(IP中为4个字节)  目标硬件地址(以太网中为6个字节,请求时不填)  目标协议地址(IP中为4个字节)  ·硬件类型:ARP所运行的网络类型,以太网为1。 ·协议类型:IPv4为080016。ARP可以由任何更高层的协议使用。 ·硬件长度:硬件地址长度(字节),以太网为6。 ·协议长度:逻辑地址长度(字节),IPv4为4。 ·操作方式:请求为1,响应为2。 请求数据包中目标硬件地址填充0。 ARP数据包在以太网帧中的封装(类型值:0x0806): 1010…101011 前导和同步 DA 目标地址 SA 源地址 TYPE 类型 ARP请求或响应数据包 FCS 帧校验  8字节 6字节 6字节 2字节 46-1500字节 4字节 通常可用arp命令用于查看、管理ARP高速缓存,创建一个IP到MAC的地址关联。 arp –s 172.16.144.5 00A0F800D42A 设置关联 arp –a 显示关联情况 -d 删除关联 Interface: 172.16.128.48 on Interface 0x2 Internet Address Physical Address Type 172.16.115.110 08-0a-70-f1-32-11 static ②RAPP——逆向地址解析协议(Reverse Address Resolution Protocol)  与RAP相似,只是功能为将物理地址(MAC地址)转换为IP地址(无盘工作站等使用)。 RARP数据包在以太网帧中的封装(类型值:0x8035): 1010…101011 前导和同步 DA 目标地址 SA 源地址 TYPE 类型 RARP请求或响应数据包 FCS 帧校验  8字节 6字节 6字节 2字节 46-1500字节 4字节 RARP数据包格式: 硬件类型(2字节) 协议类型(2字节)  硬件长度 协议长度 操作方式(2字节)  发送者硬件地址(以太网中为6个字节)  发送者协议地址(IP中为4个字节,请求时不填)  目标硬件地址(以太网中为6个字节,请求时不填)  目标协议地址(IP中为4个字节,请求时不填)  操作方式:请求为3,响应为4。其余同RAP数据包。 4.4.5 IGMP(互连网络主机组管理协议,Internet Group Management Protocol) 用于建立和管理多播组。 附:网络上发送的所有TCP/IP协议帧(数据包)都是下述三种类型之一: ·广播(Broadcast)帧——通过目标地址FFFFFFFFFFFF发送到网上所有主机 ·组播(Multicast)帧——交付给一组主机(须注册组播地址)。 ·单播(Unicast)帧——最常见 (路由选择协议留下一章介绍) 4.5 传输层(TCP层) P77和P146 4.5.1 传输层的功能 a. 进程间的通信传输 ·主机对主机(host-to-host)的通信(计算机级通信) ·进程对进程(process-to- process)的通信(应用程序级通信) 网络层协议的IP协议用于实现计算机级的通信(主机-主机的通信),即它只负责将信息送到目标计算机处。这种传送是不够完整的,因为一台计算机往往可能同时运行几个程序。所以,通信的传输不仅是从一台计算机到另一台计算机,而且还应从一台计算机上的某个进程(process,正在运行的程序)到另一台计算机上的某个进程。传输层协议的任务之一就是把信息进一步传送给适当的进程,从而建立进程对进程的通信。或者说,网络层使组成报文的每个数据包到达了正确的计算机,而传输层使整个报文到达了该计算机上正确的进程。  b. 两种传输服务 ·面向连接的传输服务 TCP协议(要求可靠传输) ·无连接的传输服务 UDP协议(要求高效传输) 4.5.2 用户数据报协议(UDP,User Datagram Protocol) 一种无连接的不可靠(connectionless,unreliable)的传输层协议 1.UDP的特点 ·独立传送 由UDP发送的数据报都是一个独立的数据报(同源同目的不同路径)——接收后复装问题 ·不提供流量控制功能(接收端有可能出现接收溢出) ·简单的差错控制功能 只有报头的检验和,没有其他任何差错控制机制,发送端无法知道某个报文是否丢失或重复发送了。而当接收端通过检验和发现差错时,也只是悄悄地将用户数据报丢弃。 如果需要,流量控制和差错控制功能应由使用UDP的进程提供。 UDP数据报格式 报头(8字节) 数据   源端口号(16位) 目标端口号(16位)  总长度(16位) 检验和(16位)  最大数据总长度:65535-20(IP报头)-8(UDP报头)=65507字节。 2.端口号(Port Numbers) 进程间的通信标识(相当于邮箱),每个端口号只对应主机上的一个进程。 端口号取值范围:0~65535(整数) 对最常用的 “客户机-服务器”(client-server)系统,TCP/IP规定: ·Client端进程的端口号——由运行在客户端主机上的UDP或TCP软件随意选定 ·Server端进程的端口号——使用“公认的”端口号(well known port numbers)  端口号可分为3大类: 公认端口(Well Known Ports):0到1023。常用见下表: 端口 应用层协议 说明  7 Echo(响应) 向发送端回送一个接收数据报  9 Discard(丢弃) 丢弃所接收的任何数据报  20 FTP,数据 文件传输协议(数据连接)  21 FTP,控制 文件传输协议(控制连接)  23 Telnet (网络终端)远程登录  25 SMTP 简单邮件传输协议  53 DNS 域名服务器  80 HTTP 超文本传输协议  161 SNMP 简单网络管理协议   注:《Microsoft WindowsNT 4.0网络指南》(Microsoft公司著,希望图书创作室译,北京希望电脑公司1998年8月第一版)附录B有公认端口分配和注册端口分配详表。 注册端口(Registered Ports):从1024到49151。它们松散地绑定于一些服务。 动态和/或私有端口(Dynamic and/or Private Ports):从49152到65535。 3.套接字地址(Socket Address) 实现UDP实现端对端连接时需要用到两种标识符: ·IP地址(哪台主机) ·端口号(哪个进程) 这两种标识符的组合称为“套接字地址”。 IP 地址 端口号 80 172.16.1.30 172.16.1.30 80 套接字地址 使用UDP协议时,需要用到一对套接字地址:客户机的套接字地址和服务器的套接字地址。 TCP/UDP均使用套接字技术作为与应用程序的接口。 【套接字(socket)】 用于在网络上实现数据发送和接收功能的应用程序接口(API),一般由操作系统提供。网络应用程序编写者可以象调用标准函数一样调用它们以简化各种网络应用程序的开发工作量。其中Windows操作系统提供的叫Window socket。  Socket有三种类型: ·Stream socket(字节流套接字)用于面向连接的协议(如TCP)。 ·Datagram socket(数据报套接字) 用于无连接的协议(如UDP)。 ·Raw socket (原始套接字)用于某些直接使用IP服务的协议如ICMP和OSPF既不使用Stream socket,也不使用Datagram socket。  4.UDP的应用 UDP的突出优点是简单高效,主要适用于: ·要求简单“请求-响应”通信和不计较流量和差错控制的进程(SNMP等管理性进程)。 ·具有流量和差错内控机制的进程,如TFTP(简单文件传输协议)。 ·UDP软件内嵌的多播和广播功能使它很适合作为一种多播和广播传输协议使用。(TCP软件无此类功能)。 ·短信息传送进程(如OICQ)。需要发送大批数据的进程不宜用之。 ·所有的广播和组播也只能用UDP作传输协议。 OQ普通用户使用UDP(服务器端口号8000)传送。在用户注册时如果使用其会员功能,即可使用http协议登录。系统会提示“该功能目前只对会员开放,HTTP协议会比常规的QQ协议速度慢,因此,建议您在网络状态良好的情况下,请不要选择该项功能”。加入QQ俱乐部会员:http://club.tencent.com,会员卡:120元/年,200元/两年。 4.5.3传输控制协议(TCP,Transfer Control Protocol) 一种面向连接的可靠的(connection-oriented,reliable)传输层协议。 1.TCP的特点 它为各种IP服务提供了面向连接的可靠的功能。它建立并维护网络上两个通信主机间的连接,当两者之间传送IP数据包时,一个包含流量控制、排序和差错校验的TCP报头被附加在数据包上,到主机的每一个虚拟连接皆被赋予一个端口号(相当于一个邮箱)。与UDP一样,TCP寻址需要用到一对套接字地址:客户机的套接字地址和服务器的套接字地址。 TCP通过三次握手为两端应用程序建立连接或结束连接。 2.TCP的特别服务 TCP提供了UDP不提供的一些服务。 流数据服务(Stream Data Service) TCP被认为是一种流传输层服务(Stream transport layer service),即发送方TCP从发送端的应用程序中接收字符流,将它分为具有适当大小的的称为“报文段”(segments)的数据包(packets),然后发送到网络上。接收方TCP接收 “报文段”,提取出其中的数据,并进行排序(到达顺序有误时),然后把这些数据作为一个字符流传送给接收端的应用程序。在此过程中,发送方和接收方的TCP都使用了缓冲区(buffers)存放来自发送端应用程序“写入”的数据或将接收的报文段数据存放在接收缓冲区中,等待接收端的应用程序“读取”。 全双工服务 TCP提供全双工服务,即两个应用程序彼此连接后,它们都可发送和接收数据。TCP还采用一种叫做“piggybacking”(载答,借道法)的方法,使确认应答可以和数据一起发送。 可靠的服务 TCP是一种可靠的传输协议。它使用“差错控制”和确认机制等来检查数据是否安全可靠到达。 3.TCP报文段(segment) 两个使用TCP的设备之间数据传输的单位是“报文段”。报文段的格式如下: 报头 数据   源端口地址(16位) 目标端口地址(16位)  序列号(32位)(seq.)  确认号(32位)(ack)  报头长度(4位) 保留 控制编码(6位) 窗口大小(16位)(win)  检验和 紧急指针(16位)  选项(如果有的话)及填充  报文段由两部分组成:报头和数据。报头部分20(基本)~60(加上选项)字节。 源端口地址 发送本报文段的主机中应用程序的端口号。 目标端口地址 接收本报文段的主机中应用程序的端口号。 序列号 分配给本报文段数据第一个字节的编号。为了保证连接性,TCP对每个被传输的字节都须编号。序列号告则为报文段中的第一个字节的编号。 确认号 希望接收的另一方发来的字节编号。如果报文段的接收方成功地从另一方接收的字节编号为X,它就将X+1定义为确认号。确认应答和数据可以一起“载答”传送。 报头长度 以四个字节为单位,其值为5~15(报头长度为20~60字节)。 控制编码 标识 说明  URG 紧急指针字段有效  ACK 确认字段有效  PSH 请求对数据进行“推”操作(立即送应用程序,不等缓冲区满)  RST 连接复位(由于主机崩溃或其他原因出现错误连接时)  SYN 连接期间序列号同步(用于建立连接)  FIN 结束连接   【推数据】(pushing data)如果发送方应用程序要求要求将写入的数据(哪怕1个字节)应立即发出而不必等缓冲区满,可使用“push” 操作,即令PSH=1。 【紧急数据】(urgent data)URG=1时,表示所发数据为“紧急数据”,紧急数据的范围从报文段数据开始处直到紧急指针所指处。接收方的TCP收到一个URG=1的报文段时,会将其中的紧急数据提取出来,并立即传送给应用程序,而不管它在字符流中的位置如何。 窗口大小 规定对方必须保持的窗口大小(字节)——用于流量控制。 检验和 紧急指针 表示报文段含有紧急数据(当紧急指针标识URG置1时有效)。 选项 不常用(目前正式使用的有“最大报文段长度”) 4、流量控制 TCP使用两个缓冲区和一个滑动窗口(slide window)进行流量控制。窗口大小由接收方根据接收缓冲区剩余空间的大小进行动态确定,并通过ACK报文段通知发送方。 如右图所示。假设发送方TCP有一个很大的缓冲区,但接收方的TCP只有一个4k的缓冲区。开始连接时,接收方TCP宣告其接收窗口大小与缓冲区相同(4k)。于是发送方发出了第1个报文段(4k)。接收方在缓冲区装满时,向发送方发一个确认报文段(同时宣告接收窗口大小为0)。此时发送方TCP无法继续发送任何数据。随着接收方应用程序从接收方缓冲区读取数据,使缓冲区产生了1k的剩余空间,于是接收方TCP发出了一个新的确认报文段(同时宣告接收窗口大小为1k)。于是发送方可以再发送1k的报文段了。以此类推。 5、差错控制 TCP可以检测损坏了的、丢失了的、乱序了的和重复的报文段,并可对差错进行纠正。 用于错误检查的方法有:检验和、确认和超时。每个报文段都有一个检验和字段,可供接收时检查是否损坏了。如果发现损坏了,该报文段就会被接收方的TCP丢弃。TCP使用确认的方法来证实完好的报文段已经收到了。如果某个报文段在规定的时间内没有得到确认,就说明要么损坏了,要么丢失了。纠错的方法也很简单:发送方的TCP为每个报文段设置一个超时计数器。如果计数值到期了该报文段未被确认,则可判断所发的报文段损坏了或丢失了,发送方就将重发该报文段。 TCP通过检查报头中序列号来防止由于确认延误导致报文段的重复接收。如果收到的报文段之序列号与已接收过的报文段序列号相同,TCP就自动丢弃该报文段。 由于TCP采用IP进行传送,经常在接收方可能出现报文段不按顺序到达情况。接收方的TCP采用解决这个问题的方法也很简单:对一个乱序了的报文段不予以确认,除非在它之前的所有数据报均已收到。 6、拥塞(congesting)控制 流量控制可消除接收方来不及接收造成的拥塞问题,但无法解决网络本身拥塞问题(如所经过因特网路由器来不及转发众多的分组)。所以发送方TCP均使用两个窗口来控制拥塞:接收方要求的窗口和所谓“拥塞窗口”。两个窗口的最小值作为发送方的有效窗口。最简单的拥塞窗口采用所谓“慢速启动”(slow start)算法获得,即建立连接时,发送方将拥塞窗口大小设置为最大报文段长度。如果传送成功(发送的报文能得到确认),则将窗口大小加倍,过了某个临界值,然后每传输成功一次,增加一个最大报文段长度,直到数据传输超时或达到接收方要求的窗口大小为止。 4.6应用层 P146和P159 向用户提供一组常用的网络服务应用协议,特别是Internet的应用信息服务。《2001年度网络程序员级和网络设计师级试题分析与解答》中介绍: Internet上的十大信息服务分别为:E-mail(电子邮件服务)、FTP(文件传输服务)、WWW(万维网服务)、BBS(电子公告牌服务)、DNS(域名解析服务)、NEWS(新闻组服务)、Telnet(远程登录服务)、Gopher(信息浏览服务)、Archic(文件查找服务)、WAIS(广域信息服务)。 其中Gopher、Archic、WAIS等由于协议自身的缺陷(不支持多媒体、不支持图文信息等),应用规模逐渐缩减。 E-mail是一种利用电子手段进行信息转移、存储,实现非实时人与人之间的通信系统。目前电子邮件采用的服务器软件主要是Unix下的Sendmail,Windows下的Exchange Server等,邮件主要分为纯文本和HTML格式两种,同时邮件中允许添加附件。该服务所使用的应用层协议为,客户端软件向服务器发送邮件遵循协议SMTP、UUTP等,客户端软件从邮件服务器获取软件遵循POP3、Imap等协议。 FTP是利用网络将一台计算机硬盘上的文件传送到另外一台计算机的硬盘上,该服务使用应用层的文件传输协议FTP(File Transfer Protocol),一个特殊的拥有控制连接与数据连接两种连接的特殊协议。FTP服务的前身只能传递简单文本的TFTP服务。 Telnet是在应用层通信协议Telnet的支持下,使自己的计算机暂时成为远程计算机终端。其应用的原理就是通过Telnet协议所构造的网络虚拟终端提供了专门的键定义,屏蔽不同计算机系统的差异,从而实现异系统之间的模拟终端互联。 WWW主要是以超文本标注语言(HTML,Hyper Text Markup Language)和超文本传输协议(HTTP)为基础,提供面向Internet服务、具有一致用户界面的信息浏览系统,其客户端软件称为浏览器(browser)。浏览器不仅可以访问WWW服务,同样可以访问FTP、Gopher、Telnet等服务,而且加入数据库应用后,形成新一代的Browser/Server网络应用模式。该模式由数据层(后台数据库)、应用层(Web服务器及中间件)和表示层(浏览器)三层构成,可以解决传统的两层Client/Server模式难于维护等缺点。 BBS(Bulletin Board System)主要作用是提供一个张贴消息、发布公告、讨论的场所,同时提供交互式聊天,主要用于新闻和娱乐。 NEWS同BBS较为相似,但主要通过信件的方式进行消息张贴和发布,与BBS相比服务的负载小。 DNS主要用于Internet上的IP地址与域名之间的正向和逆向解析。 需要说明的是,应用层协议不限于因特网的应用信息服务(如网络管理中经常用到的网络管理协议SNMP),而且上述十大服务也不限于Internet。 4.7 寻址方案 不同协议层使用自己的寻址方案供工作在本层的网络设备或应用软件使用: ·由软件使用的寻址方案 ·应用层地址:主机名(如Internet的域名) ·传输层地址:端口号(包括目标和源端口号) 如ftp目标端口号为21(TCP协议) tftp为69(UDP协议) telnet为23(TCP),smtp为25(TCP)等。如果一台计算机需与另一台计算机建立telnet会话,它将设置目标端口地址为23,并随即选取一个比1023大的源端口地址。低于1023的端口地址被保留为公认的目标端口地址。 ·由硬件使用的寻址方案 ·网际层地址:IP地址 (路由器及具有路由功能的三层交换机) ·网络接口层地址:MAC地址 (中继器、网桥及普通交换机) IP地址与物理地址的映射:通过地址解析协议ARP IP地址和主机名的映射:通过域名系统(DNS, Domain Name System) 常用地址检测命令: ① ipconfig 以命令行形式输出IP地址、子网掩码和默认网关设置值。 Windows IP Configuration 0 Ethernet adapter : IP Address. . . . . . . . . : 172.16.128.48 Subnet Mask . . . . . . . . : 255.255.255.0 Default Gateway . . . . . . : 172.16.128.1 ipconfig /all 可显示更多信息 Windows IP Configuration Host Name . . . . . . . . . : CYL DNS Servers . . . . . . . . : Node Type . . . . . . . . . : Broadcast NetBIOS Scope ID. . . . . . : IP Routing Enabled. . . . . : No WINS Proxy Enabled. . . . . : No NetBIOS Resolution Uses DNS : No 0 Ethernet adapter : Description . . . . . . . . : PCI Bus Master Adapter Physical Address. . . . . . : 00-D0-F8-00-D4-2A DHCP Enabled. . . . . . . . : No IP Address. . . . . . . . . : 172.16.128.48 Subnet Mask . . . . . . . . : 255.255.255.0 Default Gateway . . . . . . : 172.16.128.1 Primary WINS Server . . . . : Secondary WINS Server . . . : Lease Obtained. . . . . . . : Lease Expires . . . . . . . : ②winipcfg 以对话框形式输出以上信息及MAC地址等。  4.8 IP地址 P147 4.8.1 IP协议第四版(IPV4) 在TCP/IP网络中,每台计算机除了本身固有的被称为MAC地址的硬件地址,还有一个所谓的逻辑地址(IP地址),该地址通常由管理员设置(静态IP地址),亦可由所使用的网络协议(如DHCP,动态主机配置协议)自动设置(动态IP地址)。该地址在该网络中必须是独一无二的。在Internet中,IP地址由一个专门的组织来分发,该组织被称为InterNIC。 为什么不只用具有唯一性的MAC地址来进行通信?一、并非所有主机都有网卡(如拨号上网);二、同一网络中的MAC地址可能是很随机的,不便于管理;三、网卡故障更换或升级MAC地址将变化,网络可能需要重新设置。 IP地址负责将信息包送到正确的网络(或子网),MAC地址用来在本地传送信息包。事实上,当信息包通过互连网络传输时,每次通过路由器,源和目的MAC就发生变化,然后IP地址保持不变。 要唯一确定IP网络上一台计算机需要两条信息: ·网络的地址——所在网络地址(网络ID) 在哪个网络上? ·所在网络上计算机的地址——主机地址(主机ID) 该网络的哪台主机? 两台互联的设备不能使用同一个IP地址,但一个设备可以使用几个IP地址。 【IP地址】P147 是一个32位的数,分4组,每组8位(w.x.y.z,w,x,y,z取值范围:0~255),这种格式的地址亦称为“点分十进制”地址。IP地址的实际作用是对各种物理地址的统一。 IP地址=网络ID(NetID)+主机ID(HostID) IP地址被划分成若干类: 类型标识 网络ID(NetID) 主机ID(HostID)   A类 w为网络ID(以0开头),其余为主机ID 0     网络ID范围:1.0.0.0~126.255.255.255 共126个 理论上网络ID为01111111(127)的也是A类地址,但该地址用于测试(回送地址) 每个A类网络可设置16777216万个主机ID。 B类 w.x为网络ID(以10开头),其余为主机ID 10     网络ID范围: 128.0.0.0~191.255.255.255 共16384个 每个B类网络可设置65534个主机ID C类 w.x..z为网络ID(以10开头),其余为主机ID 110     网络ID范围: 192.0.0.0~223.255.255.255 共2097152个 每个C类网络可设置254个主机ID D类 被保留用于“多播地址”(multicasting address),即用于one-to-many通信。 w.x..z为网络ID(以10开头),其余为主机ID 1110     网络ID范围: 224.0.0.0~239.255.255.255 E类 被保留供将来使用 w.x..z为网络ID(以10开头),其余为主机ID 1111     网络ID范围: 240.0.0.0~255.255.255.255 A、B、C类为“单播地址”(unicast address),即用于one-to-one通信。其中有些地址为特殊地址: NetID和HostID全为0时(即0.0.0.0),表示“This host on this network”。某个主机启动(bootstrap)时如果不知道自己的IP地址(如无盘工作站),可用此地址作为源地址,发送一个IP数据报给远程引导服务器以获取自己的IP地址。注意该地址只能作源地址,而且是一个与网络无关的A类地址。 NetID全为0而HostID不全为0时,表示本网络上的某个主机,通常用于从本机向同一网络中的另一台主机发送信息。(用Ping命令试过,似乎不能用) HostID全为0的IP地址指称网络本身,不分配给单台主机; HostID全为1的为广播地址(由路由器使用)。 127.x.y.z为回送地址。如通常用IP地址127.0.0.1表示本地主机本身。使用该地址为目的地址的数据包永远不会离开本机,而总是返回给本机的某个IP软件,通常用于测试本机使用的IP软件是否能正常接收和处理数据包。 此外,InterNIC还把几个IP地址范围专门划分了出来,供任何组织网络内部使用。这些IP地址范围在Internet上永远找不到: A类子网: 10.0.0.0~10.255.255.255 B类子网: 172.16.0.0~172.31.255.255 C类子网: 192.168.0.0~192.168.255.255 其他注意的问题: IP地址的设置是在主机上进行的,但IP地址的实质是给每个网络连接一个确定的人为分配的逻辑地址,而不是给某一个主机。在TCP/IP网络中,对于主机,每个主机如果只有一块网卡,则分配一个IP地址,如果有多块,每块外接的网卡都应该有自己的IP地址。对于路由器,每个连接的端口应该分配一个IP地址。对于使用三层协议的交换机,每个连接的端口也必须分配一个IP地址。 【主机】在因特网中,主机指所有连接到网络中的设备,包括计算机、打印机、网络互联设备(如中继器、路由器等)。 4.8.2 IP协议第六版(IPV6) 目前的IPV4使用32位地址,理论上可容纳232个不同地址(约42亿个)。但由于IPV4采用“网络号+主机”的双层结构,其地址是按“网络”来分配的,因此有相当一部分地址没有使用。随着因特网的飞速发展,IPV4地址资源已变得日益紧张,特别表现在B类地址上,因为B类地址(16000个可用网络,每个网络65000个IP地址)大小适中,适合分配给组织机构,而A类地址太大,C类地址又太小。1991年即有人预计IPV4地址可能会用完,甚至有人预计1994年会用尽。而之所以未出现这样情况,是因为采用内部保留IP地址和代理服务技术。但这是以增加复杂性和成本为代价,并没有从根本上解决地址短缺问题。此外,IPV4是一个非连接的协议,缺少对其目标是尽力传送每个分组报文,难以有效支持QoS。为此,人们特地开发了资源预留协议(RSVP, Resource Reservation Protocol)用于在路由器上分配资源,使IPV4能提供QoS保证。 而IPV6是下一代的IP协议,采用128位地址,一般采用“冒号十六进制”表示,如: 52E6:94C4:0:1234:FFAA:5566:88EC:3489 IPV6理论上可容纳2128个不同地址,平均起来地球上每平方米可容纳6.6×1023台主机。如此巨大的IP地址数,不仅消除了IP地址对因特网规模的限制,而且可以使地址包含更多的路由信息,简化了路由选择算法,提高了传输效率,减少了路由处理时间,提高了网络速度。IPV6在保留了IPV4非连接的特点的同时,引入了流的概念,更好地综合了QoS和RSVP。此外,IPV4网络中,网络的安全性是通过另外设置防火墙和加密来实现的,而IPV6网络中,可直接采用一系列加密算法和身份认证办法,即通过两个专用的扩展报头来实现,一个是AH(Authentication Header,认证报头),一个是ESP(Encrypted Security Payload, 加密安全有效载荷)。AH用于确认IP信息包的可靠性和完整性,以防止非法修改和信息包电子欺骗。ESP用于提供数据加密,确保用户数据的安全。 这一版的唯一改变的只是网络层的协议:IPV4变成了IPV6,ICMPv4变成了ICMPv6,IGMP和ARP也合并到IGMPv6中,而RARP则被删除了。 4.9 子网掩码 P148 4.9.1 子网划分的意义 由于因特网上的IP地址数量有限,特别是A类地址已基本用完、B类地址也所剩无几了,假定某个大型组织好不容易获得了一个B类地址,从而可以对65534台主机进行IP编址,但是这些主机只能归属于同一个网络。这在许多情况下是不合适的。因为一个大型网络往往需要分成由路由器/设备连接的较小的物理网络(子网),其原因在于: ·减少每个子网上的网络通信量(同一子网主机间的广播和通信被路由器隔开,只在子网中进行),只有不同子网的主机相互通信时,才在路由器的管理控制下进行跨子网转发 ·便于网络管理(分成几个便于控制的部份,并可由单独的管理员管理本地用户,或在单位内部创建隔离的子网,以阻止非法获取敏感信息) ·提高IP地址的利用率(可使若干物理网络共用单个IP网络地址) ·解决物理网络本身的限制问题(如网络分布超过以太网段最大长度) 4.9.2 子网掩码的作用 未使用子网掩码时,IP地址由网络地址和主机地址两部分组成。对每台计算机,其地址的网络部份必须与那个网络上其他计算机的网络地址相匹配,然而主机部分对那个网络号必须是唯一的。网络地址有A、B、C三类(A类:1~126,都已分配了;B类:128~191;C类:192~223)。如果为A类,则IP地址的四个字节中,第一个字节为网络地址;为B类,则前两个字节为网络地址;为C类,前三个字节为网络地址。 A类 网络.主机.主机.主机 B类 网络.网络.主机.主机 C类 网络.网络.网络.主机 子网掩码是一个32位的数字,其作用是告诉TCP/IP主机,IP地址的哪些位对应于网络地址,哪些位对应于主机地址。TCP/IP协议使用子网掩码判断目标主机地址是位于本地子网还是远程子网。子网中的所有主机必须配置相同的子网掩码。 使用子网掩码时,IP地址解释如下: IP地址=网络地址.子网地址.主机地址 网络ID 主机ID      网络ID 子网ID 主机ID   子网掩码与地址进行逻辑与(AND)。如果IP地址和子网掩码都是1,结果为1,否则为0。 无论何时主机试图和其他主机通信时,IP都检查源IP地址和目标地址,并把它们跟发送主机的子网掩码比较(与运算)。运算结果相同,两台主机为同一子网,源主机就用ARP确定目标主机的硬件地址;运算结果不相同,两台主机不在同一子网,源主机就用ARP确定默认网关的硬件地址,并将数据报转发给默认网关。 【例1】172.25.16.51和172.25.25.101两主机,子网掩码均为255.255.0.0--同一子网 【例2】172.25.16.51和172.31.25.101两主机,子网掩码均为255.255.0.0--不同子网 【例3】172.25.16.51和172.25.25.101两主机,子网掩码均为255.255.255.0--不同子网 172-10101100 25-11001 16-10000 24-11000 51-110011 101-1100101 31-11111 没有划分子网的TCP/IP使用默认子网掩码: A类 255.0.0.0 B类255.255.0.0 C类 255.255.255.0。 4.9.3 子网掩码的计算 子网掩码取值均为0或者255时,称为“标准子网掩码”。有时,需要使用非标准子网掩码以便对网络进行进一步细分(将主机部分取出若干位作子网ID)。通常用于: ·减少IP地址的浪费 ·分配的IP地址不够用时 【例】设某网络中分配到一个IP地址为192.168.50.0,如用标准子网掩码255.255.255.0,则为一个具有254台主机的单一子网(192.168.50.0为网络地址, 192.168.50.255为广播地址)。若子网掩码为192.168.50.128,则可得到两个子网,每个子网最多126台主机: 网络 子网掩码 主机地址范围 广播地址  192.168.50.0 192.168.50.128 192.168.50.0 ~192.168.50.126 192.168.50.127  192.168.50.128 192.168.50.128 192.168.50.129~192.168.50.254 192.168.50.255  192-11000000 168-10101000 50-110010 128-10000000 子网掩码的计算取决于所需子网的数目和IP地址的类别。计算时要注意,同NetID一样,均为0或均为1的SubnetID不分配给任何主机,而HostID均为1的地址被保留为供路由器等使用的“广播地址”,HostID均为0的地址则代表该子网本身。 【A类地址子网掩码的计算】 假设某个组织有一个A类地址255.0.0.0,现需要分为1000个子网。理论上,需要至少分为1002个子网(子网ID为全0和全1时分别用于表示网络本身和广播地址)。由于29<1002<210,所以可知至少需要分配10个二进制位用于子网设置。即子网掩码应为 NetID SubnetID HostID 11111111 11111111 11 000000 00000000   即 255. 255. 192. 0 地址范围(阴影部分表示全为0或全为1的特殊地址): HostID均为0 HostID均为1 SubnetID均为0 255. 0. 0. 0 255. 0. 0. 1 …… 255. 0. 63. 254 255. 0. 63. 255  第1子网 255. 0. 64. 0 255. 0. 64. 1 …… 255. 0. 127. 254 255. 0. 127. 255  第2子网 255. 0. 128. 0 255. 0. 128. 1 …… 255. 0. 191. 254 255. 0. 191. 255   ……    ……  第1022子网 255. 255. 128. 0 255. 255. 128. 1  255. 255. 191. 254 255. 255. 191. 255   255. 255. 192. 0 255. 255. 192. 1 …… 255. 255. 255. 254 255. 255. 255. 255   SubnetID均为1 【B类地址子网掩码的计算】 假设某个组织有一个B类地址255.255.0.0,现需要分为12个子网。理论上,需要至少分为14个子网(子网ID为全0和全1时分别用于表示网络本身和广播地址)。由于23<1002<24,所以可知至少需要分配4个二进制位用于子网设置。即子网掩码应为 NetID SubnetID HostID 11111111 11111111 1111 0000 00000000   即 255. 255. 240. 0 每个子网有4096个地址,可以接入4094台主机(另处一个作为网络地址,一个作为广播地址)。 地址范围(阴影部分表示全为0或全为1的特殊地址): HostID均为0 HostID均为1 SubnetID均为0 255. 255. 0. 0 255. 255. 0. 1 …… 255. 255. 15. 254 255. 255. 15. 255  第1子网 255. 255. 16. 0 255. 255. 16. 1 …… 255. 255. 31. 254 255.255. 31. 255  第2子网 255. 255. 32. 0 255. 255. 32. 1 …… 255. 255. 47. 254 255. 255. 47. 255   ……    ……  第14子网 255. 255. 224. 0 255. 255. 224. 1  255. 255. 239. 254 255. 255. 239. 255   255. 255. 240. 0 255. 255. 240. 1 …… 255. 255. 255. 254 255. 255. 255. 255   SubnetID均为1 【C类地址子网掩码的计算】 假设某个组织有一个C类地址255.255.255.0,现需要分为5个子网。理论上,需要至少分为7个子网(子网ID为全0和全1时分别用于表示网络本身和广播地址)。由于22<1002<23,所以可知至少需要分配3个二进制位用于子网设置。即子网掩码应为 NetID SubnetID HostID 11111111 11111111 11111111 111 00000   即 255. 255. 255. 224 每个子网有32个地址,可以接入30台主机(另处一个作为网络地址,一个作为广播地址)。 地址范围(阴影部分表示全为0或全为1的特殊地址): HostID均为0 HostID均为1 SubnetID均为0 255. 255. 255. 0 255. 255. 255. 1 …… 255. 255. 255. 30 255. 255. 255. 31  第1子网 255. 255. 255. 32 255. 255. 255. 33 …… 255. 255. 255. 62 255. 255. 255. 63  第2子网 255. 255. 255. 0 255. 255. 255. 65 …… 255. 255. 255. 94 255. 255. 255. 95   ……    ……  第6子网 255. 255. 255. 192 255. 255. 255. 193  255. 255. 255. 222 255. 255. 255. 223   255. 255. 255. 224 255. 255. 255. 225 …… 255. 255. 255. 254 255. 255. 255. 255   SubnetID均为1 常用子网掩码如下: 255 11111111 (标准) 254 11111110 128子网 252 11111100 64子网 248 11111000 32子网 240 11110000 16子网 224 11100000 8子网 192 11000000 4子网 128 10000000 2子网 0 00000000 (标准) 第五章 作业一 1、判定下列IP地址类型(A、B或C类) 131.109.55.1 78.35.6.90 220.103.9.56 240.9.12.2 19.5.91.245 129.9.235.52 125.78.6.2 2、判定下列IP地址中哪些是无效的,并说明其无效的原因。 131.255.255.18 127.21.19.109 220.103.256.56 240.9.12.12 192.5.91.25 129.5.91.255 129.9.255.254 10.255.255.254 3、什么是TCP/IP协议?IP层协议包含哪些协议? 4、简述TCP协议与UDP协议的异同。各举二例说明常见网络实用软件中哪些使用TCP协议,哪些使用UDP协议。 5、TCP/IP协议中的端口(port)和套接口(socket)在网络传输中起何作用。 6、将下列网络常用英文术语译成中文: arp submask socket port subnet mask Domain Name System 7、IPV6与IPV4相比,有何优越? 8、试分析聊天软件OICQ开发者为什么采用人们认为是不可靠传输的UDP协议作为OICQ的基本通信协议。如果改用能确保可行传输的TCP,会有什么好处,会有什么不利? 9、如果你要设计一个攻击TCP/IP网站的网络“炸弹”,目的是通过持续不断地向该网站发送密集的短信息使该网站服务器瘫痪,你会在TCP和UDP两个协议中选取哪一个作为该炸弹使用的协议?为什么? 10、说明主机名(域名)、IP地址、端口号、MAC地址与TCP/IP各协议层的关系。IP地址和物理地址、IP地址和主机名之间通过什么相互映射? 11、某主机在一个C级网络上的IP地址是198.123.46.237,如果需要将该网络划分为四个子网,子网掩码应取什么?假定子网地址空间均相邻。 作业二(上机实验,书面报告结果) 1、用ipconfig检查并记录本机的IP地址、子网掩码和默认网关,说明默认网关的作用。 2、用winipcfg查出本机的MAC地址,说明MAC地址和IP地址在网络传输中作用有何不同。 3、用ping 命令检查并记录与默认网关的连接状态,说明显示结果各部份的意义。 与本章有关的主要知识点及思考题 1、OSI模型分为几层?简述各层主要功能。 2、TCP/IP模型分为几层?简述各层主要功能。 3、为什么说IP是一种无连接的、不可靠的网络通信协议? (What’s a unreliable connectonless protocol?) 4、为什么说TCP是一种面向连接的、可靠的网络通信协议? (What’s a connection-oriented,reliable protocol?) 5、Ethernet frame format及各字段含义。 6、IP datagram format 及各字段含义。 7、TCP segment format及各字段含义。 8、User datagram(UDP)及各字段含义。 9、host-to-host communication 与 process-to-process communication的区别是什么? 10、TCP/IP模型各层中的数据包形式有何不同?各数据包中哪些字段用来寻址?哪些字段用来控制差错?哪些字段用于流量控制? 11、既然IP协议是无连接的不可靠的传输协议,TCP是面向连接的可靠的传输协议,而Internet的多数网络通信中必须同时使用TCP和IP协议来进行数据传送,它们之间是否存在矛盾?为什么? 12、IPv4与IPv6的主要区别。 13、IP层还有哪些主要协议?简述其主要功能。 14、TCP协议是如何实现差错控制(差错检测和差错纠正)? Error type: corrupted segments,lost segments,out-of-order segments,and duplicated segments Error detection:checksum,acknoledgment,time-out Error correction:time-out counter for each segment and retransmit 15、TCP协议是如何实现流量控制? two buffers:sending & receiving buffers two windows:sliding window and congestion window 16、What’s a process? What’s a port number? What’s a socket address? 17、局域网访问控制方法及协议名称。 18、Ethernet的特点及电缆标识。 19、四种数据交换技术名称、特点及其应用。 参考书目 1、《TCP/IP MCSE(微软认证系统工程师)学习指南》[美]Greg P. Bulette著 廖铮译 清华大学出版社 1999年10月 2、《网络核心技术内幕——综合IP网络设计解决方案》[美]Khaliid Raza等著,希望图书创作室译 北京希望电子出版社 2000年5月 3、《计算机网络》冯博琴 吕军 主编 陈文革 程向前 编 高等教育出版社 1999年6月 4、《计算机网络——习题与解析》鲁士文 编著 清华大学出版社 2001年6月 5、《现代计算机网络技术与应用——设计·开发·管理·维护》夏云 主编 科学出版社1999年7月 6、《TCP/IP与网络互联技术》 裘实 阳光 晓文 等编著 国防工业出版社 1998年5月 7、《宽带IP网络技术及其应用实例》万博通公司技术部 编 海洋出版社 2000年5月 8、《TCP/IP 协议族》(影印版)[美]Behrouz A. Forouzan & Sophia Chung .Fegan 清华大学出版社 2000年12月 9、《计算机网络(第3版)》[美]Andrew S.Tanenbaum著 熊桂喜 王小虎等译 清华大学出版社 1998年7月 10、《高性能通信网络》[美]Jean Walrand, Pravin Varaiya著 (英文版 第2版)机械工业出版社 2000年3月 11、《数据通信与计算机网络》高传善 钱松荣 毛迪林 编著 高考教育出版社 2000年7月第一版 12、《2001年度网络程序员级和网络设计师级试题分析与解答》信息产业部计算机软件专业技术资格和水平考试办公室 组编 清华大学出版社 2002年5月第一版