当前所在位置:FreeBSD使用大全>>
FreeBSD连载(33):DOD参考模型(2)
 
作者:王波
 

路由

  有了IP地址,计算机就能确定在它在网络上的位置。当一台计算机要和另外计算机通信时,它首先必须知道对方的 IP地址,如果该IP的网络地址和它相同,两台计算机就处在同一个子网上,能通过网络访问层进行通信。直接通过IP地址请求获得对方的MAC地址,以通过网络访问层进行通信,这需要通过另一个协议──ARP协议,从IP地址获得对方的 MAC地址。

  如果两台计算机不在同一个网络内,就需要一些特殊的计算机──路由器的帮助,才能将IP数据包发送到对方计算机上。当两台计算机不在同一个网络内时,计算机将查看自己的路由表,找出通往对方的合适路由器的IP地址,将IP数据包发送给这台路由器,由各级路由器负责将IP包发送到目的地。因此一台计算机要想和子网外的计算机通信,至少要知道一台路由器,由这台路由器负责将数据发送到子网外,通常称这台路由器为缺省网关(default Gateway)。

  那么,路由器就必须了解到通往其他子网的通路,这些路径可以通过route命令由管理员手工加进去,也可以通过路由器之间相互交换数据,使路由器学习到更多的路由信息。路由器之间交换路由数据的协议主要有RIP、OSPF、B GP等协议。FreeBSD也能很好的支持这些路由交换功能,因此FreeBSD也是用做软件路由器的最佳选择。


DNS与名字解析

  通常IP地址不易记忆,实际使用中是通过使用主机名来标记一台计算机,而主机名可以自动转换为IP地址,再进行实际的连接。主机名与IP地址的对应关系可以配置在主机名配置文件/etc/hosts中,但在网络上更普遍的是通过DNS协议,将对应关系保存在网络上多台名字服务器(DNS server)中,这样就能通过名字服务器来维护自己组织机构的名字解析数据。

  由于网络上不同的计算机属于不同的网络和组织机构,因此计算机的名字可以分为区分组织的域名(Domain Name)和在组织内区分计算机的主机名,形成一种多级的结构。例如一台计算机的名字为wb.example.com .cn,其中wb为主机名,example.com.cn为域名,其中example代表工作的单位,com是类别代码,代表这个单位是公司机构,cn是国别代码,代表这个机构位于中国。


主机-主机层

  这一层负责维护不同计算机上的两个进程的通信,它的主要作用就是将应用程序与网络的复杂性相隔离,应用层只需发出请求,而不必顾及任务是如何完成的。这一层包括两个协议:传输控制协议TCP和数据报协议UDP。

  TCP协议是一种面向连接、有分组顺序控制和差错控制的安全准确的协议,因此必须在网络上传送额外的维护信息,网络开销大,但也是最常用的网络协议。TCP协议在不同机器之间建立了虚拟连接,它使用一个16位的端口地址(po rt number)来区分不同连接。应用程序必须使用一个或几个端口地址用来提供网络服务,因此对于常用的网络服务,其使用的端口地址就是固定的。FreeBSD下在/etc/services就定义了一些常用的端口地址。

  UDP协议不建立连接,因此也不保证数据正确完整,相对来讲网络开销小,然而对于不可靠的网络连接,数据完整性无法保证。UDP也使用端口地址发送和接受属于不同应用程序的数据。


应用层

  应用层就是为了让应用程序在不同的计算机上运行并相互通信而实现的多种协议,每种协议都对应一类应用程序。并且随着Internet上的应用程序的不断增加,应用协议的种类也越来越多。在/etc/services文件中定义的每一行就对应一个固定端口,就可能对应于一种应用程序类型。除此之外还有很多非标准应用程序,当然一个系统中并不会同时运行所有种类的应用程序。

  大部分TCP/IP应用程序是属于客户机/服务器类型的,这种类型的应用程序包含两个部分,其中服务器程序通常运行在服务器系统的后台,称为守护程序(daemon)。守护进程运行在后台,随时接受客户连接以提供服务;客户软件就是应用程序的用户接口,用户通过它使用服务器上的资源。

  由于希望在需要的时候服务器能立即提供服务,这样就需要启动大量并不常用的守护进程运行在系统中,就浪费了系统资源。因此Unix使用一个超级守护程序inetd来监控这些不常用到的服务请求。只有在inetd接到客户程序的连接请求后,才启动相应的应用服务程序进行处理,这样系统中就不必运行过多的守护进程了,从而节约系统资源。inet d的配置文件为/etc/inetd.conf,管理员必须配置这个文件,以便指定系统提供那种服务。

#
# Internet server configuration database
#
# @(#)inetd.conf 5.4 (Berkeley) 6/30/90
#
ftp stream tcp nowait root  /usr/libexec/ftpd ftpd -l
telnet stream tcp nowait root  /usr/libexec/telnetd telnetd
shell stream tcp nowait root  /usr/libexec/rshd rshd
login stream tcp nowait root  /usr/libexec/rlogind rlogind
finger stream tcp nowait nobody /usr/libexec/fingerd fingerd -s
#exec stream tcp nowait root  /usr/libexec/rexecd rexecd
#uucpd stream tcp nowait root  /usr/libexec/uucpd uucpd
#nntp stream tcp nowait usenet /usr/libexec/nntpd nntpd
comsat dgram udp wait  root  /usr/libexec/comsat comsat
ntalk dgram udp wait  root  /usr/libexec/ntalkd ntalkd
#tftp dgram udp wait  nobody /usr/libexec/tftpd tftpd /tftpboot
 
 

  inetd.conf中的第一列为使用的端口地址,通常在/etc/services中进行定义,第二列和第三列为连接种类,stream为tcp连接,dgram为udp,第四列可以为非daemon方式启动的进程配置为n owait,为以daemon方式启动的进程设置为wait。然后为执行程序的用户,要执行的程序位置和要执行的程序命令及其参数。

未完,待续。。。
 
来源:http://freebsd.online.ha.cn/

声明:本站的文章和软件是本人从网上收集整理的(除本人的作品之外),所有版权属于作者,
如有侵犯您的权益,请指出,本站将立即改正,谢谢.

Copyright 2000 www.newok.com