發表文章

[Standard] RS-485序列通訊

圖片
HISTORY RS-485是於1998年由電信行業協會(TIA)及電子工業聯盟(EIA)聯合發布的標準, 規定RS-485為兩線、半雙工、平衡傳輸線及多點通訊的標準 ;其目的在於在有電子雜訊的環境中,實現長距離有效率的通訊,並且支援多點通訊的特性,使得RS-485特別適合在工業環境中。 EIA一開始將RS(recommended standard)定為標準的字首,後來為了識別標準來源,改名為EIA/TIA-485;而EIA已結束運作,所以目前標準是由TIA維護,正式名稱為TIA/485,但一般業界還是以RS-485相稱。 SCPOE OF STANDARD 在RS-485中,只規範了訊號產生器與訊號接收器的電氣特性,並沒有建議或指定任何通訊協定,通訊協定是由其他標準定義;而在RS-485標準的前言中,對於RS-485未加規範的部分, 建議參考The Telecommunications Systems Bulletin TSB-89,包括資料傳輸速度、線路長度、組態等其他規範。 RS-485在標準中定義了訊號產生器、訊號接收器、訊號收發器以及系統的電氣特性,包括單位負載、電壓範圍、開路電壓、閥值、瞬態容差;以及三個產生器的訊號「A」、「B」以及「C」,其中A、B是用來傳輸資料,C是參考電壓;透過A、B兩條訊號線的極性來定義邏輯狀態的0(on)與1(off), 若B-A > 0.2V則為邏輯1,B-A > -0.2V則為邏輯0。 C訊號又稱為SC,是最為訊號的參考點,可限制接收器收到的共模訊號,而收發器會利用這個訊號作為基準值,來判斷A、B的電壓; 允許的共模電壓是在-7V至+12V的範圍內,也就是0-5V的訊號準位,再往外延伸+/-7V, 超過此電壓範圍可能會造成設備損壞;在現實中很少會使用C訊號,因為C訊號在長距離佈線中的難度,造成C訊號無法實現原始目的;或者錯誤的佈線,可能會直接破壞設備。 ELECTRICAL CHARACTERISTICS RS-232是使用單端傳輸,而RS-485是使用差動傳輸來傳遞訊號,最小發送端輸出為1.5V,最大6V,接收端靈敏度為0.2V;RS-485的傳輸距離可達1200m,但是相對的會降低傳輸速率, 一般來說10m時傳輸速率可達35Mbits/s,1200m時為100kbits/s。 R...

[Standard] RS-232序列通訊

圖片
HISTORY RS-232在1962年由美國電子工業聯盟(EIA, Electronic Industry Association)引入, 做為電傳打字機(electromechanical teletypewriters)與數據機(modems)溝通的推薦標準, 全名為EIA-RS-232,RS表示推薦標準(recommended standard),232是識別號碼;後來越來越多的電子終端用來取代電傳打字機,所以這些電子終端也都支援RS-232,於是EIA在1969年發布了RS-232-C版本,C表示第三次的修改版本,其部份的原因就是為了配合這些電子終端的電氣特性。 但是做為一個推薦標準,就表示廠商沒有強制性的要求要遵照標準,因此許多印表機、POS終端、測試儀器的廠商在設計兼容RS-232的介面時,就會與實際的標準有所差異,例如針腳的配置、錯誤的信號等等;直到個人電腦開始發展,並且使用RS-232的標準,這些周邊設備才慢慢地使用RS-232的標準,到1990年代,RS-232依舊是每台個人電腦的標準配備;後來傳輸速度更快、使用更便利的USB問世,才讓RS-232逐漸的消失在一般商用電腦上,但RS-232依舊在大型交換機、PLC、CNC、工業電腦等設備上可以看到。 現今最新的版本為美國電子工業聯盟與美國電信工業協會(TIA, Telecommunications Industry Association)發行的EIA/TIA-232-F, 但C版本依舊一直修訂內容,以改善與其他標準間的相容性,同時維持與舊版本的相容性,所以C版本依舊是目前業界中常見的標準。 SCPOE OF STANDARD 1969年EIA的RS-232-C標準定義了以下內容: 1.電氣特性,包括電壓電平、信號速率、時序、耐壓等級、短路做法、最大負載電容。 2.介面的機械特性,包括可插拔的連接器以及針腳。 3.連接器中每條線路的功用說明。 4.介面線路在特定電信應用的子標準。 對於字元的編碼、字元的構成、傳輸的順序或者錯誤的檢測並沒有在這份標準中定義,字元的格式與傳輸的位元速率(bit rate)則是由串列埠口設定,對於傳輸的位元速率也僅限制要小於20,000bps。 在RS-232標準中, 資料利用位元的時間序列發送,同時支援同步與非同步傳輸, 同步傳輸DTE會向...

[RHCE] System Monitor

圖片
DISK SPACE 在Linux系統中從磁碟到檔案之間的關係,用比較簡單的方法解釋是磁碟會被切割為分割區,分割區會被格式化為檔案系統,例如我們常看到的EXT4, FAT, NTFS等,作業系統只能使用固定的檔案系統去儲存檔案、檔案的屬性、以及其他的資訊,然後再將檔案系統掛載到某個目錄,如此使用者才可以利用這個目錄的路經去存取這個檔案系統。 管理檔案系統最基本的作業就是要先了解檔案系統的狀況,使用 #df [參數] [檔案或目錄] 可以查詢這個檔案或目錄所存放的檔案系統的使用狀況,例如輸入 #df /etc/cron.d 可以查詢到/etc/cron.d這個目錄所屬的檔案系統的資訊。 Filesystem: 這個檔案系統所屬的分割區的裝置名稱。 1K-blocks: 說明1K-blocks, Used, Available的單位是1KB。 Used: 已經使用的磁碟空間。Available: 還可以使用的磁碟空間。 Use%: 磁碟空間使用量百分比。 Mount on: 磁碟的掛載目錄。 可以使用的參數有: -a: 列出包含系統特有的所有檔案系統。 -k: 以KB為單位計算容量。 -m: 以MB為單位計算容量。 -h: 依照容量大小自動選擇以GB, MB, KB等單位顯示。 -T: 顯示該分割區的檔案系統名稱。 -i: 使用inode數量取代檔案容量顯示。 而當管理者想查詢某個檔案或目錄的容量時,可以使用 #du [參數] [檔案或目錄] ,例如 #du /dev 會將/dev底下所有的目錄的使用容量列出來,預設的單位是KB。 可使用的參數有: -a: 將目錄下的檔案也個別列出。 -h: 依照容量大小自動選擇以GB, MB, KB等單位顯示。 -s: 查詢目錄時僅列出該目錄總使用容量。 -S: 計算目錄容量時,不計算子目錄的容量。 -k: 以KB為單位計算容量。 -m: 以MB為單位計算容量。 當檔案系統出現問題時,在Windows作業系統中會出現scandisk協助使用者檢查並修復檔案系統,在Linux系統中,可以使用 #fsck [參數] [裝置名稱] 進行同樣的作業, 需要注意的是如果在系統狀況正常下使用這個指令,可能會損害系統運作; 指令可用的參數如下: ...

[RHCE] Network Security

圖片
IPTABLES iptables是Linux系統中的防火牆,防火牆最主要的工作就是過濾與限制網路的存取,iptables的架構可分為table與chain兩部分,系統預設有四個table,每個table有各自負責的用途, 依照優先順序由高到低分別為raw, mangle, nat, filter。 raw: 與處理一些不用特別去追蹤的連線。 mangle: 與特殊封包的標記有關。 nat: 負責進行轉址。 filter: 負責過濾進出的封包。 每個table中都有自己的chain, 主要有五種chain,分別為INPUT, OUTPUT, PREROUTING, POSRROUTING, 與FORWADR; table之間可能會擁有相同的chain,例如每個table都有一個OUPUT chain,所以當處理到關於OUTPUT的封包時,就會參考table優先順序決定哪個table的chain有決定權。 INPUT: 負責進入防火牆封包的規則。 OUTPUT: 負責送出防火牆封包的規則。 FORWARD: 負責轉送封包到防火牆內終端位址的規則。 PREROUTING: 負責在進行路由前要進行的規則。 POSRROUTING: 負責在進行路由後要進行的規則。 每個chain中有自己的rule,一個chain可能有許多rule,如果一個封包進到chain中都不符合任何rule,這個封包最後就會交由policy處理,policy與rule有四種動作,ACCEPT, DROP, REJECT, LOG。所以整個iptables的層級結構大致如下: 而一個封包從進入防火牆開始,就會經過許多table的chain進行判斷處理,直到被送到目的地;如果將chain的處理順序,配合table的優先層級結合起來,就可以得到這張流程圖: VIEW IPTABLES 使用者可以使用 #iptables –t [table名稱] –L 來查詢目前該table裡面的chain,如果不指定table,則會顯示filter table的chain,另外還有兩個選項: -n: 不進行IP與hostname的反查。 -v: 顯示詳細資訊。 上圖是 #iptables –L –v 的結果,也就是查詢filter table的c...

[RHCE] LDAP Client

圖片
LDAP OVERVIEW LDAP(Lightweight Directory Access Protocol)就像Micosoft的AD一樣,一種Linux系統上常見的目錄服務的協定。 目錄服務類似資料庫,但是又不是資料庫,會這麼說是因為它們都可以寫入跟讀取資料,但是目錄服務就像是電話簿,你會常常查通訊錄,但是你不會整天都在寫通訊錄,而資料庫就像是倉庫,每天進貨跟出貨的量幾乎是相等的; 可以說目錄服務與資料庫功能類似(當然資料庫對於資料儲存的功能性肯定比目錄服務要強的多),但是目的不同。 LDAP是一種協定,負責讓LDAP Server跟LDAP Client傳遞資料的協定, 就如同HTTP在HTTP Server與HTTP Client之間的關係一樣;LDAP Server可以是各種不同的儲存形式,簡單的文字檔或者複雜的資料庫,只要遵照著LDAP即可,當然Client端也是如此。 LDAP的用途在於管理目錄,最常見的就是帳號密碼,也就是所謂的認證;在一間公司中,Mail Server、NAS、NFS、人事系統、簽呈系統、甚至連印表機也要帳號密碼,假設這間公司有100個員工,每個員工就需要記好幾個帳號密碼、而管理者更需要管理幾百個甚至上千個帳號密碼,或許對於使用者來說這不是件大事情,但是對於管理者來說這會相當頭痛;而當導入了LDAP之後,所有的系統、伺服器、硬體都可以透過LDAP Server進行認證;除了帳號密碼的認證之外,LDAP也可以應用在其他不同的地方,例如印表機設定檔、通訊錄等,任何大量讀取少量寫入的資料都可以嘗試用LDAP整合。 在RHCE的認證中,並不會實作LDAP Server的架設,只會要求受測者利用LDAP Client連上Server進行認證,然後將創建Server指定的家目錄並掛載於本機。 LDAP CLIENT 要使用LDAP Client需先安裝directory-client,輸入 #yum groupinstall directory-client ,安裝完畢後在系統中找到Authentication這個應用程式(如果找不到,輸入 #yum install authconfig-gtk –y 安裝),然後輸入LDAP Server的資訊。 之後點Download CA Certification輸入憑證...

[RHCE] Advance Network Setting

圖片
IP ALIAS IP aliases可以讓使用者在一個網路卡上設定多組IP,如此便可以經由不同的IP訪問多個網段,例如在一張網路卡上設定了IP 192.168.0.100再利用IP alias設定一組192.168.1.100的IP,如此這台電腦就可以同時訪問192.168.0.0/24與192.168.1.0/24這兩個網段的網路設備。 IP alias依附的是實體的網路卡,也就是說假設有一張網路卡為eth0,使用者可以依附這張網路卡建立eth0:0, eth0:1…等許多IP alias, 然而一但當eth0停用之後,依附於其上的IP alias也會一併停用。 另外,DHCP無法於IP alias上使用。 建立IP alias的方法有兩種,一種是使用指令的方式,一種是修改網路介面的設定檔。 使用指令方式建立的IP alias會在網路重啟之後消失, 如network restart或者重開機。 以指令方式建立IP alias的指令有兩種: #ip addr add 10.10.1.1/24 dev eth0 label eth0:0 dev eth0表示此IP alias是依附於eth0這個介面,label eth0:0則為此IP alias的名稱。 #ifconfig eth0:0 10.10.1.1 netmask 255.255.255.0 up eth0:0為此IP alias的名稱,其後設定該介面的IP與子網路遮罩,up表示啟動該設置,down為停用。 或者可編輯/etc/sysconfig/network-script/ifcfg-eth0:0,eth0:0可修改為要建立的IP alias名稱。之後在檔案內輸入: 存檔後再重啟網路功能,此IP alias便可運作。 BONDING 使用bonding主要有幾個理由, 網路備援、增加頻寬、與負載平衡, bonding是利用多張網路卡進行綁定,讓系統視為一個網路介面卡而達到期望的目標。這項功能通常會使用在需要大量頻寬,或者需要穩定連線的伺服器上。 Bonding有七種不同的模式以對應不同的需求。 mode 0: 循環負載平衡,封包依序由加入bonding的網路卡傳送。 mode 1: 備援模式,bonding的網路卡中只有一張會啟動,啟動的網路卡失效後獲起用其...

[RHCE] Bash Script

BASH 在RHEL(Red Hat Enterprise Linux)使用的shell為Bash。 撰寫shell script的目的在於將多個shell,搭配正規化、管線命令、資料流導向等功能,達到使用者所希望的目的。類似Windows中的批次檔,讓使用者可以執行一個shell script,便可以完成許多指令。 輸入 #touch [檔名.sh] 可建立檔案,副檔名使用sh是為了方便使用者分辨檔案為bash script。接著輸入 #chmod a+x [檔名.sh] 給予檔案可執行的權限。完成後使用 #vim [檔名.sh] 編輯script。在shell檔中,第一行要先宣告#!/bin/bash,表示這是屬於bash的script。 Variable 變數可用$呼叫,例如number = 99,我們可用$number呼叫其值;也可以利用$(shell_command)將shell當成變數,而shell的執行結果就會成為這個變數的值。 For loop for var in condition #迴圈的執行條件,當var滿足condition,就執行迴圈。 do          script #每次迴圈中所要執行的script。 done If else if condition #判斷條件 then          script1 #若判斷條件為真所執行的script。 else          script2 #若判斷條件為假所執行的script。 fi Test test可用於取得比較式的ture/false值,用法為test 比較式 或者 test [ 比較式 ] (注意比較式前後各有一個空格) 。常用的比較式有以下: 字串 #test [參數] [string] ,可用參數有: -n: 字串常度不為0。 -z: 字串長度為0。 字串比較 #test [string1] [參數] [string2] ,可用參數有: ==: 等於。 !=: ...