网上有什么?
互联网的概念
在现实世界中,计算机网络通常由许多不同类型的网络互连。如果几个计算机网络只是物理上的连接,但不能互相通信,那么这个“互联”就没有实际意义。所以,我们通常所说的“互联”,已经暗示了这些互联的计算机是可以通信的,也就是从功能和逻辑的角度来看,这些计算机网络已经形成了一个大型的计算机网络,或者叫做互联网络,也可以简称为internet。
请注意,这里的字母I是小写的,所以互联网指的是由多个计算机网络互联而成的计算机网络。有大写字母的Internet是指世界上最大的、开放的计算机网络,由许多网络连接而成。它采用TCP/IP协议族,前身是美国的ARPANET。
为了相互通信,互联网络会遇到许多需要解决的问题,如:不同的寻址方案;不同的最大分组长度;不同的网络接入机制;不同的超时控制;不同的错误恢复方法;不同的状态报告方法;不同的路由技术;不同用户的访问控制;不同的服务(面向连接的服务和无连接的服务);不同的管理和控制方法;等一下。
一些中间设备(或中间系统)用于将网络相互连接,在ISO术语中称为中继系统。根据中继系统的级别,可以有以下五种中继系统:
(1)物理层中继系统,即中继器。
(2)数据链路层中继系统,即桥接器或网桥。
(3)网络层中继系统,即路由器。
(4)网桥和路由器的混合路由器。网桥设备是一种产品,兼具网桥和路由器的功能。事实上,严格的网桥或严格的路由器产品并不多见。然而,这个术语并不常用。
(5)网络层以上的中继系统称为网关。网关也叫网关、网关或联网机。用网关连接两个不兼容的系统需要高级别的协议转换。
当中继系统是中继器或网桥时,一般不叫网间互联,因为只是扩展了一个网络,它还是一个网络。由于网关的复杂性,目前很少使用。所以我们一般讨论互联网的时候,总是指的是有路由器的互联网络。路由器实际上是一台专用计算机,用于在互联网中路由。由于历史原因,很多关于TCP/IP的文献都把网络层使用的路由器称为网关。请注意这一点。
为什么用网关互联网络很复杂?可以想象有n个网络要互连。每两个网络之间需要一个协议转换器。N个网络* * *需要N(N-1)个协议转换器。(考虑到每两个网络通过一个网关)。因此,需要设计大量的协议转换器。
互联网采用标准化的方法。图6.1(a)显示有许多计算机网络通过一些路由器相互连接。由于所有参与互联的计算机网络都使用同一个互联网协议IP,因此互联的计算机网络可以看作如图6.1(b)所示的虚拟网络,即通常所说的Internet或IP网络。当互联网上的许多主机通信时,就像在一个网络上通信一样,它们看不到互联网络的细节。这比使用更高级别的网关要方便得多。
当然,在互联网中使用互联网协议IP的方法并不是唯一的。例如,当多个X.25分组交换网络互连时,只需要使互连的网络接口符合ITU-T X.75建议。目前世界各国使用的X.25公共数据网的互联都采用这种方式。然而,目前全球使用IP协议的网民数量远远超过使用X.75的网民数量
从下一节开始,我们将讨论互联网的核心协议,即互联网协议IP。
2.IP地址及其表示
互联网的互联网协议IP
互联网协议IP是TCP/IP系统中最重要的两个协议之一[Steve 94] [Come 95]。有三种协议与IP协议一起使用:
● ARP(地址解析协议);
●反向地址解析协议(rarp);
●互联网控制信息协议(ICMP)。
图6.2显示了这三个协议与互联网协议ip之间的关系。在这一层,ARP和RARP被画在最下面,因为IP经常使用这两种协议。ICMP绘制在这一层的顶部,因为它使用IP协议。后面会介绍这三个协议。因为许多可以通过互联网协议IP互连的计算机网络可以通信,所以TCP/IP系统中的网络层通常被称为互联网层。
对了,我们有时会听到一种不准确的说法:“我们使用TCP/IP协议进行网络互联”。作者提醒读者,TCP是与互联网协议IP一起使用的传输协议。TCP相当于OSI的传输层协议,而不是网络层协议。所以TCP和网络互联没有直接关系。
1 IP地址及其转换
在TCP/IP系统中,IP地址是最重要的概念,所以一定要搞清楚。
(1)IP地址及其表示法
我们把整个互联网看成一个单一的抽象的网络。所谓IP地址,就是给每一台连接互联网的主机分配一个唯一的32位地址。IP地址的结构使得我们很容易在互联网上寻址,即先根据IP地址中的网络号net-id找到网络,再根据主机号host-id找到主机。所以IP地址不仅仅是一台计算机的编号,而是指出连接到某个网络的计算机。IP地址现在由互联网信息中心INTERNIC分配。
为了方便管理IP地址,同时考虑到网络的差异性很大,有的网络主机很多,有的网络主机很少。因此,互联网的IP地址分为五类,即A类到E类(图6.3)。常用的A类、B类和C类地址都由两个字段组成,即:
●网络号字段的net-id。A类、B类和C类地址的网络号字段长度分别为1、2和3字节。网络号字段前面有1 ~ 3位类别位,它们的值分别指定为0、10和110。
●主机号字段主机id。A类、B类和C类地址的主机号字段长度分别为3、2和1字节。
D类地址是组播地址,主要保留给互联网架构板(IAB)。e类地址保留供将来使用。目前广泛使用的IP地址只有三种:A到c。
A类IP地址的网络号不多。现在可以申请的IP地址只有两个:B类和c类,某公司向IAB申请IP地址时,实际上只得到一个网络号net-id。特定的主机号host-id由公司自己分配,只要在公司的管辖范围内没有重复的主机号。
我们经常用等价的十进制数字来表示32位Ip地址中的每8位,并在这些数字之间添加一个点。这是点分十进制记数法。例如,有以下IP地址:
10000000 00001011 00000011 00011111
这是一个B类IP地址。如果记为127.5438+01.3 . 36438+0,显然方便很多。
使用IP地址时,还应该知道图6.4中给出的特殊地址,一般不使用。
这样,我们就可以得到如图6.5所示的IP地址的使用范围。
IP地址具有以下重要特征:
(1)IP地址是非分层地址结构。也就是说,与电话号码的结构不同,IP地址不能反映主机位置的任何地理信息。
(2)当一台主机同时连接到两个网络时(主机用作路由器就是这种情况),该主机必须同时拥有两个对应的IP地址,并且其网络号net-id是不同的。这种主机称为多主机。
(3)根据Internet,由中继器或网桥连接的几个局域网仍然是一个网络,所以它们都有相同的网络号net-id。
(4)在IP地址中,所有分配给网络号net-id的网络(无论是第五章讨论的局域网还是第六章讨论的广域网)都是平等的。
(5)Ip地址有时可以用来表示网络的地址。此时,只需将IP地址的主机号字段设置为全零即可。比如10.0.0,175.89.0.0,201.123.56.0都是指单个网络的地址。
图6.6显示了一个由路由器(标有字符R)和网桥(标有字符B)连接的互联网,它是由两个网络互连而成的。图中的小圆圈表示需要不同的IP地址。如果一台计算机想要与不同网络号的计算机通信,它必须通过路由器。路由器通常有两个或多个IP地址,因为它们连接到两个或多个网络。有两台路由器通过点对点链路相连。因为该点对点链路不是网络,所以路由器在连接该链路的端口上没有其它IP地址。
图6.6哪里需要IP地址
3.IP地址和物理地址
动画IP地址和物理地址的区别
(2).IP地址和物理地址
学习IP地址时,区分主机的IP地址和物理地址的区别是非常重要的。上面的动画强调了这两个地址的区别。假设主机通过局域网互连。可以看出,IP地址位于IP数据报的头部,而硬件地址位于MAC帧的头部。IP地址用于网络层及以上,而硬件地址用于链路层及以下。
为了强调上述概念,我们使用图6.7来显示数据包在传输过程中使用的不同地址。图中有三个网络:两个以太网通过FDDI网络互连。以太网上的主机HA与另一个以太网上的主机HB通信。这两台主机的IP地址分别为IP1和IP6,而硬件地址分别为HA1和HA6。通信的过程是找到路由器R1,然后是路由器R2,最后是主机HB。
●在IP层的抽象互联网上,我们只看到IP数据报。在IP数据报的报头中,写明了源地址为IP1,目的地址为IP6。路由器经过的IP不会出现在IP数据报的报头中。
●虽然活动站的IP地址在IP数据报的报头中,但是路由器只根据目的站的IP进行路由。
●在特定物理网络的链路层,我们只看到MAC帧(X.25网络链路层的HDLC帧)。IP数据报封装在MAC帧中。当MAC帧在不同的网络上传输时,MAC帧的报头是不同的。在传输开始时,MAC帧的头被写为从硬件地址HA1发送到硬件地址HA2,在FDDI网络中,从HA3发送到HA4,最后在第二个以太网中,MAC帧被填充为从HA5到HA6。MAC帧报头的这种变化在上层IP层也是不可见的。
●路由器R1和R2各有两个IP地址和两个硬件地址。这是因为它们同时连接到两个网络。
●虽然互联网络的硬件地址体系不同,但是IP层的抽象互联网屏蔽了下层的这些复杂细节,使我们能够用一个统一抽象的IP地址进行通信。
细心的读者会发现,还有两个重要问题没有解决。
(1)我如何知道主机或路由器的硬件地址?
(2)2)IP数据报如何找到下一个路由器?
这两个问题后面会讨论。
4.子网划分和地址转换
4.1.子网划分
(3)子网划分
现在看来,当初的IP地址设计确实不合理。例如,A类到C类IP地址可用的网络号超过2110000个,这些网络上可用的主机号总数超过37.2亿个。
乍一看,好像IP地址足够全世界用了(就像70年代初IP地址的设计者们想的那样)。其实并不是。第一,设计者没有预料到微型计算机会普及得如此之快,导致各种局域网和网络的主机数量急剧增加。第二,IP地址使用起来非常浪费。比如某公司申请了一个B类地址。但是单位只有10000台主机。因此,B类地址中剩余的55,000个主机号被浪费了。因为其他单位的主机不能用这些号。
因此,我们目前正在研究如何扩展IP地址(见后面的章节)。
从1985开始,为了使IP地址的使用更加灵活,在Ip地址中增加了一个“子网号字段”。
我们知道,公司分配的IP地址是IP地址的网络号net-id,后面的主机号host-id是公司分配的。该设备中的所有主机都使用相同的网络号。当一个单元中有很多主机,并且它们分布在很大的地理区域内时,往往需要使用一些网桥(不是路由器,因为路由器连接的主机网络号不同)来互连这些主机。桥梁有许多缺点。比如容易造成广播风暴,网络故障时不容易隔离管理。为了使本单元的主机易于管理,可以将本单元的主机划分为若干个子网,将IP地址中主机号字段的前几位作为“子网号字段”,其余仍为主电话号字段。这样,本单元的子网可以通过路由器互联,便于管理。需要注意的是,子网的划分纯粹是本单元内部的事情,这样的划分在本单元之外是看不见的。从外面看,这个单元仍然只有一个网络号。只有外部的包进入本单位的范围,本单位的路由器才会根据子网号进行路由,最终找到目的主机。如果单位按照主机的地理位置划分子网,管理起来会方便很多。另外请注意,这里所说的子网与上一篇文章中提到的通信子网或资源子网无关。
图6.8说明了划分子网时使用的子网掩码的含义。图6.8(a)给出了一个B类IP地址的例子。图6.8(b)显示本地控制部分增加了一个子网号字段,子网号字段的长度由我公司根据情况决定。TCP/IP系统规定子网号字段的长度由32位子网掩码表示。具体来说,子网掩码由一系列“1”和一系列“0”组成。“1”对应于网络号和子网号字段,而“0”对应于主机号字段。对于图6.8(c)所示的例子,第一个子网可以使用的IP地址从130.50.4.1开始,第二个子网可以使用的IP地址从30.50.8.1开始,以此类推。IP地址通常以点分十进制表示法书写,但子网掩码通常以十六进制表示法书写,尤其是当子网边界不完全在字节位置时。
图6.8子网掩码的含义
如果您知道主机的IP地址和子网掩码,您可以知道IP数据报被发送到:
●子网上的主机,或
●该网络中另一个子网上的主机,或
●另一个网络上的主机。
简而言之,根据IP地址可以判断是a类、b类还是c类地址。子网掩码表示子网号subnet-id和主机号host-id之间的分界线。
划分额外的子网号字段是有代价的。例如,在图7-7的例子中,B类IP地址可以容纳65,534个主机号。但将子网号字段划分为6bit长度后,最多可以有62个子网(不包括所有1和全零的子网号)。每个子网都有一个10位的主机号,也就是说,每个子网最多可以有1022个主机号。所以主机号总数是62x1022=63364。比没有划分子网时要小。
如果一个公司没有划分子网,那么它的子网掩码就是默认值,子网掩码中“1”的长度就是网络号的长度。因此,对于A、B和C类IP地址,相应的子网掩码默认值分别为255.0.0.0(0xFF000000)、255.255.0.0(0xFFFF0000)和255.255.255.0(0xFFFFFF00)。
当使用子网掩码时,子网号subnet-id和主机号host-id有时不容易从IP地址中看到。例如,子网掩码是OxFFFFFFEO,IP地址是140.252.20.68。很明显,这个IP地址是B类地址,所以网络号net-id是140.252。从子网掩码可以得出结论,它的二进制表示法是:
11111111 11111111 11111111 11100000
可以看到子网号* * *有11位,而主机号有5位。上述IP地址的最后两个字节(20.68)的二进制表示法是:
00010100 01000100
前11位是子网号,后5位是主机号。所以十进制记法的子网号是subnet-id=162,主机号是host-id=4。
使用子网掩码相当于使用三级寻址。当每台路由器收到数据包时,它首先检查数据包IP地址中的网络号。如果网络号不是本地网络,从路由表中找到下一个站地址并转发它。如果网络号是这个网络,那么检查IP地址中的子网号。如果子网不是子网,则以同样的方式转发数据包。如果子网是本地子网,我们可以根据主机号找出数据包应该从哪个端口传递到主机。
例如,数据包报头中的目的地址是130.50.15.6。当这个数据包到达一个路由器时,路由器首先将地址掩码(假设是255.255.252.0,即前面22个1,后面10个0)和目的地址130.50.15.6逐位“与”,得出这是一个B类地址,因此网络号是130.50。路由器检查该网络号,看它是否与自己在同一个网络上。现在假设它们在同一个网络上。路由器再次检查子网号。上面和的后两个字节,12.0,是子网号和主机号,用二进制代码表示:00001100000000。因为前6位是子网号,后10位是主电话号码。可以看出,这个数据包的目的地址中的子网号是3。如果路由器的子网号是3,根据最后一个主机号10bit从路由表中找出发送主机的端口。如果路由器的子网号不是3,则根据从路由表中找到转发到目的子网的端口。
4.2.地址转换
4.地址转换
上面提到的IP地址不能直接用于通信。这是因为:
●IP地址只是主机在网络层的地址。如果在网络层传输的数据报被传送到目的主机,它必须被传送到链路层,并在被发送到网络之前被转换成MAC帧。MAC帧使用源主机和目的主机的硬件地址。因此,需要在主机的IP地址和硬件地址之间进行转换。
●用户不愿意用难记的主机号,而愿意用好记的主机名。因此,也有必要在主机名和IP地址之间进行转换。
TCP/IP系统中有两种转换机制。
对于较小的网络,可以使用TCP/IP系统提供的名为hosts的文件将主机名转换为IP地址。文件主机上有许多主机名到IP地址的映射供调用主机使用。
对于一个较大的网络来说,在网络中的几个地方都有域名系统DNS(域名系统)的域名服务器,在不同的层次上有很多主机名到IP地址转换的映射表。源主机中的名称解析软件Resolver会自动找到DNS的域名服务器来完成这一转换。域名系统DNS属于应用层软件,后面章节会详细讨论。
在图6.9中,名为host-a的主机想要与名为host-b的主机通信,其IP地址是通过DNS从目的主机名host-b开始的209.0.0.6。
IP地址到物理地址的转换由地址解析协议ARP完成。图7-8还显示了48bit的目的主机的物理地址08002B00EEOA是通过ARP从IP地址209.0.0.6获得的(现在假设这台主机连接到一个局域网,如果网络是广域网,则转换主机在广域网上的物理地址)。
因为IP地址是32位,局域网的物理地址是48位,所以两者之间不存在简单的转换关系。此外,在网络上,可能会经常添加新的计算机或删除一些计算机。更改计算机的网卡也会更改其物理地址。可以看出,在计算机中应该存储有一个从IP地址到物理地址的转换表,并且可以频繁地动态更新。ARP(地址解析协议)很好地解决了这些问题。
每台主机都应该有一个ARP缓存,其中包含一个从IP地址到物理地址的映射表。这些是主机当前知道的一些地址。当主机A要向局域网上的主机B发送IP数据报时,它首先检查其ARP缓存中是否有主机B的IP地址。如果有,我们可以找出它对应的物理地址,然后把这个物理地址写入MAC帧,再通过局域网发送到这个物理地址。
也有可能是找不到主机B的IP地址。这可能是因为主机B刚刚加入网络,或者主机A刚刚打开电源,其缓存仍然为空。这种情况下,主机A会自动运行ARP,按照以下步骤找出主机B的物理地址。
(1) ARP进程在局域网上广播发送一个ARP请求包,IP地址为主机B;
(2)运行在局域网内所有主机上的ARP进程接收到这个ARP请求包;
③主机B在ARP请求包中看到自己的IP地址,向主机A发送一个写有自己物理地址的ARP响应包;
④主机A收到主机B的ARP响应包后,将主机B的IP地址到物理地址的映射写入其ARP缓存中。
很多情况下,当主机A向主机B发送数据报时,很可能主机B很快也会向主机A发送数据报,所以主机B也可能向主机A发送ARP请求包..为了减少网络上的流量,主机A在发送其ARP请求包时,将从其IP地址到物理地址的映射写入ARP请求包。当主机B收到来自主机A的ARP请求数据包时,主机B会将主机A的地址映射写入主机B自己的ARP缓存。这样更便于以后主机B向主机A发送数据报。
进行地址转换时,有时会使用反向地址解析协议RARP。RARP使只知道其物理地址的主机能够知道其IP地址。该主机通常是无盘工作站。一般这种无盘工作站只要运行其ROM中的文件传输代码,就可以通过下载的方式从局域网上的其他主机获得所需的操作系统和TCP/IP通讯软件,但这些软件中并没有IP地址。无盘工作站应该在ROM中运行RARP以获取其IP地址。
RARP的工作流程大致如下:
为了使RARP正常工作,至少有一台主机应该充当局域网上的RARP服务器。无盘工作站首先向局域网发送一个RARP请求包(格式类似于ARP请求包),在这个包中给出自己的物理地址。
RARP服务器有一个预先制作的从无盘工作站的物理地址到IP地址的映射表。接收到RARP请求包后,RARP服务器会从这个映射表中找出无盘工作站的IP地址。然后写RARP响应包,发回无盘工作站。无盘工作站使用这种方法获得自己的IP地址。
(完)
第65438页+0第2页第3页第4页第5页