FreeBSD撥號網路(轉)

gugu99發表於2007-08-11
FreeBSD撥號網路(轉)[@more@]

  區域網上的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/tty d1和/dev/cuaa1,依次類推。

  FreeBSD對一個串列埠提供了兩個裝置檔案,事實上它們對應同樣的硬體,只是屬性略有不同。cuaa0主要用來撥出,ttyd0主要用於撥入和直接連線。設定這兩個裝置檔案的原因是計算機與modem相互通訊的資料有兩類,一種為計算機透過串列埠傳送給modem的控制指令,常用的為Hayes的AT指令,這些資料是傳送給modem的,而另一種資料是計算機透過modem傳送到電話網上的傳輸資料,這些資料只需要讓modem進行調製解調即可。而對於應用程式來講,要想非常簡單的來區分這兩種資料,就可以使用兩個初始狀態不同的裝置檔案。

  當外部撥入內部時,電話連線已經設定好了,資料傳輸是在計算機與電話網之間,modem只進行調製解調,此時就使用ttyd0。而當向外撥號時,modem還沒有建立連線,計算機應該向modem傳送指令,控制modem執行撥號等操作,此時就使用裝置檔案cuaa0。一旦連線建立之後,系統將重置裝置檔案的屬性,使得cuaa0同樣也是將資料傳送向電話網上。

  因此ttyd0和cuaa0這兩個裝置檔案,只是初始狀態不同,而並沒有本質的差別。事實上大多數撥號軟體會重置裝置檔案的狀態,使用哪個裝置都可以正確完成撥號過程。然而習慣的做法仍然是使用cuaa0用於撥出,ttyd0 作為撥入,這樣能避免某些軟體不能正確重置裝置檔案的狀態的問題。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10748419/viewspace-944741/,如需轉載,請註明出處,否則將追究法律責任。

相關文章