拨号网络局域网上的FreeBSD要和Internet(或其他广域网)连接,就需要使用广域网界面。对于一般用户,采用普通电话线进行拨号的方式,是比较常见的做法。这就需要首先使用计算机的串口连接到modem(调制解调器)上,再通过modem连接到Internet上。
串口和modem
因此如果采用拨号方式连接一台计算机到远端,则必须配置好计算机的串口和modem。
个人计算机一般有两个串口,在DOS下称为COM1、COM2,FreeBSD使用Unix的习惯从0开始排列数字,相应的串口硬件为sio0、sio1。启动时系统将自动检测这些硬件,检测结果显示在屏幕上,可以在登录后使用dmesg来查看这些启动信息,判断硬件是否真的被检测到了。如果串口被检测到,就能使用连接到相应串口上的外置modem进行连接。
如果使用内置modem卡,卡上将包括一个串口设备,根据这个卡的设置,这个串口设备可以为sio2或sio3,因此必须保证内核支持第三、第四个串口设备sio2和sio3。但与DOS不同的是,modem卡使用的IRQ不能与已有串口共享硬件资源。由于DOS是单任务操作系统,不可能同时使用两个串口,共享IRQ是可以的,因此COM1与COM3共享IRQ 4,COM2与COM4共享IRQ 3。但是对于多用户操作系统FreeBSD来讲,同时会有多个进程访问设备,每个设备必须单独占有IRQ,因此必须在内核中将modem卡的IRQ设为另外的空闲值。
要更改卡上的跳线或在DOS下运行设置程序更改卡上的设置,以使硬件上设置与内核配置相一致。通常PNP的modem卡能正确设置硬件资源,也可以通过UserConfig重新设置。
当FreeBSD的内核检测到串口设备之后,就能够通过相应的设备文件来访问这些串口了。对应第一个串口sio0的设备文件为/dev/ttyd0和/dev/cuaa0,对应第二个串口sio2的设备文件为/dev/ttyd1和/dev/cuaa1,依次类推。
FreeBSD对一个串口提供了两个设备文件,事实上它们对应同样的硬件,只是属性略有不同。cuaa0主要用来拨出,ttyd0主要用于拨入和直接连接。设置这两个设备文件的原因是计算机与modem相互通信的数据有两类,一种为计算机通过串口发送给modem的控制指令,常用的为Hayes的AT指令,这些数据是发送给modem的,而另一种数据是计算机通过modem发送到电话网上的传输数据,这些数据只需要让modem进行调制解调即可。而对于应用程序来讲,要想非常简单的来区分这两种数据,就可以使用两个初始状态不同的设备文件。
当外部拨入内部时,电话连接已经设置好了,数据传输是在计算机与电话网之间,modem只进行调制解调,此时就使用ttyd0。而当向外拨号时,modem还没有建立连接,计算机应该向modem发送指令,控制modem执行拨号等操作,此时就使用设备文件cuaa0。一旦连接建立之后,系统将重置设备文件的属性,使得cuaa0同样也是将数据发送向电话网上。
因此ttyd0和cuaa0这两个设备文件,只是初始状态不同,而并没有本质的差别。事实上大多数拨号软件会重置设备文件的状态,使用哪个设备都可以正确完成拨号过程。然而习惯的做法仍然是使用cuaa0用于拨出,ttyd0作为拨入,这样能避免某些软件不能正确重置设备文件的状态的问题。
未完,待续。。。