FreeBSD网络配置与使用
60年代末,美国国防部(DOD)对建立分组交换的广域网很感兴趣,其基本想法是通过连接多个地域的分散网络,那么局部地区的网络故障不影响其他部分网络的正常运行。主要是由于当时正处于冷战的形势下,他们要求建立能够在部分地区被袭击的情况下,仍正常运行的军事网络。研究机构ARPA开始了这个称为ARPAnet的网络项目的研究,由于这个项目要求在不同的计算机之间进行通信,而不同的计算机上会运行不同的操作系统,因此就存在不同系统之间如何按照同样的规则进行交流的问题。因此最重要的问题就是开发所有的系统都遵守的标准协议,让它来实现应用程序对应用程序的通信,并独立于具体的计算机平台。因此,他们开发了独立于特定计算机系统的标准协议,以实现各种计算机之间的通信。
由于存在多种应用程序,因此协议也并非一个,而是一组协议。而TCP协议和IP协议就是他们开发的这些协议中最重要的两个,因此通常就以TCP/IP来称呼整个协议族,称为TCP/IP协议,这正是当前流行的Internet 使用的协议标准。
TCP/IP的成功与BSD Unix分不开的,由于TCP/IP是平易做图立的,而当时大学的研究机构主要使用BSD Unix,因而加州大学伯克利分校最先在BSD Unix中实现了TCP/IP。于是这一技术很快推广到使用BSD Unix的大学中,TCP/IP得到迅速推广,越来越多的网络使用这个协议,越来越多的网络也通过这个协议进行了互联,逐渐形成了今天的Internet。
DOD参考模型
参考模型是关于计算机之间如何进行通信的一种形象化表示方式,它将进行通信所需要的每一步骤按照层次的概念组织起来。如果一个步骤处理的事情是负责物理线路的具体传输,就认为属于模型中的低层,反过来,如果一个步骤是与具体的应用程序打交道,就认为属于模型中的高层,在高层和低层之间按照逻辑关系,还有一些中间层次。
将通信过程划分为不同层次的原因是因为通信过程是一个复杂的过程,对于用户来讲,能使用WWW浏览信息,能发送电子邮件就能满足需要,他们只关心这些应用程序,而不关心具体的通信过程;另外一些软件驻留在后台处理通信过程中必要的任务,如建立连接,发送数据等,而不关心数据是如何发送出去的;还有一些硬件专门用来负载信号的传递;这样不同的软硬件有着层次分明的调用关系,自然就形成了层次的概念,而参考模型正是对这些层次进行区分和定义。
在参考模型中,数据的物理传送是由应用程序──属于模型的最高层,向低层传送,直至具体传输数据的传输协议层,由这个层将数据通过物理介质──如电缆、光缆、微波等传送到目的计算机。当数据到达目的计算机时,它沿模型向上传递,最终到达目的计算机中的应用程序。这个过程就是传送数据的物理过程。
可以使用一个简单例子来解释这个通信过程。例如朋友之间互相传递信函是另一种较容易理解的通信过程,这个过程中有寄信者、收信者、邮递员、邮车等等。由寄信者将信交给邮递员,邮递员处理信件之后将信通过邮车发到对方的城市,对方城市的邮递员再将信交给收信者。这样就可以将这个过程按层次划分,寄信者和收信者可以看作一个层次,他们使用邮政服务,可以看成应用层;所有层次的邮政员工是一个层次,进行具体的处理通信工作,可以称为通信层;而邮车可以看成另一个层次,处理具体发送邮件工作,称为传输层;这只是一个简单例子,具体网络通信过程则要复杂的多。
从上图可以看出,虽然物理数据的传送是先从上到下,再从下到上回到另一台计算机的应用程序中,如果不考虑低层是如何进行具体处理的,就可以将通信看成在每一层与另一个计算机中的相应层之间进行的。这样在每层与另一台计算机相应层之间就存在逻辑上的连接通信和传递数据的能力。如果还使用前面的寄信的例子来说明的话,就是寄信者只考虑收信者,收信者也只考虑寄信者,而不管邮递员是如何处理信件的,在逻辑上就是朋友之间的通信关系。
这样用逻辑通信的方式将数据传送归结到各层中的协议上,每一个协议只定义了完成通信的一个任务,成功的完成整个通信过程要求多个协议协同进行,这些协议将分属参考模型的不同层次,而且每个协议只与对方相应的协议通信,而不需考虑整个通信过程,这样复杂的通信过程就得到了简化,从而能更容易实现。
按照对网络的不同理解,可以有不同的参考模型,将通信分为不同的层次结构,其中影响最大的就是国际标准化组织开发的OSI标准七层模型和TCP/IP中使用DOD四层模型。
DOD模型的四层分别为:
- 应用层(Application)
- 主机到主机层(Host to Host)
- 网络互连层(Internet)
- 网络访问层(Network Access)
- 网络访问层
TCP/IP并没有定义任何网络访问层的协议,这个层的协议大部分是由其他通信组织定义的,这反而使TCP/IP 能适合几乎全部硬件平台。网络访问层和硬件相关,负责基本的通信,这一层最常见硬件的是以太网和使用普通电话线的拨号连接。对于以太网,这一层定义了介质访问控制地址(MAC地址),用于标识不同的计算机。有了网络访问层,计算机之间就有了物理连接,计算机之间就为相互交换数据提供了条件。
在FreeBSD下,网络硬件是以网络界面(Inte易做图ce)的形式存在的,如果计算机的网卡被正确探测到的话,则就有一个相应的网络界面。例如第一个3C905网卡的网络界面是xl0,第一个Ne2000兼容网卡网络界面是ed0,使用内核级PPP驱动的ppp网络界面为ppp0等。这些网络界面都对应于内核中的硬件驱动程序,只有在硬件被检测到之后,这些网络界面才能被正常使用。除此之外,还有一个本地环路网络界面lo0,这使得即使没有任何网络界面的硬件存在,也能使用FreeBSD运行网络程序为本机提供网络服务。
- 网际层(Internet层)
Internet层负责确定一台计算机能在网络上的位置,并找出通向它的路径,然后才能够相互交换数据。这种路径选择功能既复杂又重要,因此实现这个功能的IP协议是整个TCP/IP协议组中的最基本协议。
- IP地址
IP协议给每个计算机都分配了一个唯一的IP地址,这个地址是一个分为四部分的32位长的数,每个部分为8位,使用点将其分开,例如192.168.1.64,这样IP地址就表示的比较清晰;每个IP地址被划分为两个部分,一个为网络地址(Network Address),用于表示计算机所在的子网络,一个为节点地址(Node Addr ess),用于标识计算机在子网络中的位置;网络地址和节点地址通过网络掩码(netmask)进行区分,对应网络掩码二进制位为一的IP地址部分为网络部分,其他的为节点部分。
例如网络掩码255.255.255.0(16进制形式为0xffffff00)将192.168.1.64 的网络部分分为192.168.1和64两部分,因此其网络地址为192.168.1.0,节点部分为0.0.0.6 4。这个IP地址在FreeBSD下可以写作192.168.1.64/255.255.255.0或者192.16 8.1.64/24,后面一种形式和前一个是等价的,表示子网掩码的二进制位中前面为1的位共有24位,即255.2 55.255.0。
同一个网络中的网络地址应该相同,但节点地址应该不同,因而子网掩码可以决定这个网络中可以拥有的TCP/I P主机的数量,即节点地址的范围减2,其中节点地址二进制位全为0的地址为网络地址,表示这个网络本身,而节点地址二进制位全为0的地址为广播地址,用于在网络中发送广播包。
在IP协议中,为了便于管理,为不同种类的IP地址定义了缺省的网络掩码,而定义的具备不同网络掩码的IP地址就组成不同的网络类别。
A类网络:1.0.0.0到127.0.0.0,缺省网络掩码为255.0.0.0,每个网络可以容纳16, 777,214台计算机;
B类网络:128.0.0.0到191.0.0.0,缺省网络掩码为255.255.0.0,每个网络可以容纳65,534台计算机;
C类网络:192.0.0.0到223.0.0.0,缺省网络掩码为255.255.255.0,每个网络只能容纳254台计算机;
其他的IP地址属于D、E、F类地址,被IP协议保留用在了mutlicast等其他方面。
这样划分的目的是为了让IP地址可以同时满足要求不同IP地址数量的大型网络和小型网络的需要。然而随着In ternet的发展,IP地址开始变得紧张起来,当前已经提出了IPv6标准,以扩展IP地址的范围,解决地址紧张的问题。当前绝大多数网络还没有支持IPv6,因此完全转向IPv6还是一个漫长的过程,这也是FreeBSD不将比较成熟的FreeBSD IPv6计划──KAME,包括入FreeBSD发行版本的原因之一。当前主要使用另一种IP 地址转换技术(NAT, Network Address Translete)来解决IP地址紧张的问题。
- 路由
有了IP地址,计算机就能确定在它在网络上的位置。当一台计算机要和另外计算机通信时,它首先必须知道对方的 IP地址,如果该IP的网络地址和它相同,两台计算机就处在同一个子网上,能通过网络访问层进行通信。直接通过IP地址请求获得对方的MAC地址,以通过网络访问层进行通信,这需要通过另一个协议──ARP协议,从IP地址获得对方的 MAC地址。
如果两台计算机不在同一个网络内,就需要一些特殊的计算机──路由器的帮助,才能将IP数据包发送到对方计算机上。当两台计算机不在同一个网络内时,计算机将查看自己的路由表,找出通往对方的合适路由器的IP地址,将IP数据包发送给这台路由器,由各级路由器负责将IP包发送到目的地。因此一台计算机要想和子网外的计算机通信,至少要知道一台路由器,