ยูนิกซ์กับเน็ตเวอร์ก
ปัจจุบันระบบยูนิกซ์ชักเริ่มแพร่หลายมีคนใช้กันมาก เพราะมีข้อดีหลายประการ เช่น เป็นระบบที่มีคนบัญญัติศัพท์แสนจะเท่ห์ว่า "หลายผู้ใช้หลายภาระ" ซึ่งมาจากคำว่า Multiuser Multitasking มีสภาวะ (Environment) ที่ดีในการพัฒนาโปรแกรม ทำให้โปรแกรมที่พัฒนาแล้วโอนย้ายข้ามเครื่องได้โดยง่าย โดยเฉพาะมีขีดความสามารถทางด้านการสื่อสารที่ดีมาก เหมาะกับสังคมสารสนเทศแบบไฮเทค

ความฝันของผู้ใช้

หน้าที่ของข่ายสื่อสารโดยทั่วไปจะสนับสนุนจุดประสงค์หลัก 2 ประการด้วยกันคือ
1. การใช้ข้อมูลร่วมกัน (Information Sharing) ผู้ใช้ทุกคนเมื่อใช้คอมพิวเตอร์ ซึ่งต่อกันเป็นเน็ตเวอร์กแล้วควรจะเข้าถึงข้อมูลได้ทุกอย่างที่ต้องการ ไม่ว่าข้อมูลนั้นจะอยู่ที่ไหน แถมเจ้าเครือข่ายนี้ต้องสนับสนุนการประสานงานระหว่างผู้ใช้
2. การใช้ทรัพยากรร่วมกัน ชาวบ้านเขามีเครื่องพิมพ์เลเซอร์ชั้นยอด ผมอยากจะใช้บ้าง แต่ไม่มีปัญญาซื้อระบบเน็ตเวอร์กต้องช่วยให้ผมส่งงานพิมพ์ไปใช้ได้ง่าย มีดิสค์ตัวโต มีเทปแบคอัพอยู่ที่ไหนในคอมพิวเตอร์นี้ต้องใช้ได้หมด

ความเป็นมาของยูนิกซ์กับข่าวสื่อสาร

ระบบยูนิกซ์เป็นระบบที่มีมาตั้งแต่ต้นทศวรรษที่ 1970 โดยเริ่มจากงานวิจัยเล็ก ๆ ของเคน ทอมป์สัน เดนนิส ริตชี่ และไบรอัน เคอร์นิเกน ที่ห้องปฏิบัติการวิจัยเบลล์ แต่ความคิดในการสื่อสารข้อมูลด้วยระบบยูนิกซ์ เริ่มจากโปรแกรม UUCP *UNIX to UNIX Copy) ซึ่งพัฒนาขึ้นในปี ค.ศ. 1976 และปล่อยออกมานอก AT&T ในปี ค.ศ. 1978 พร้อมกับยูนิกซ์ เวอร์ชัน 7 UUCP ให้บริการด้านอีเมล์และรับส่งไฟล์ ในปัจจุบันก็ยังเป็นรูปแบบที่แพร่หลายที่สุดรูปแบบหนึ่งของการสื่อสารภายในยูนิกซ์
ในปี ค.ศ. 1978 อีริค ชมิด ได้พัฒนาซอฟต์แวร์สื่อสารข้อมูลขึ้นชื่อ "Berknet" ซึ่งใช้กันอย่างแพร่หลายที่มหาวิทยาลัยแคลิฟอร์เนียที่เบิกร์เล่ย์เริ่มจากยูนิกซ์ที่เบิร์กพัฒนาขึ้นคือ BSD 2.0 ระบบนี้ใช้สาย RS-232C เชื่อมกันที่ความเร็ว 9600 บิต/วินาที ก็พัฒนาขีดความสามารถของยูนิกซ์ในแง่ของการสื่อสารขึ้นมาเช่นกัน แต่เก็บไว้ใช้ข้างในไม่ค่อยปล่อยออกมา ระบบที่พัฒนาขึ้นสามารถส่งไฟล์ได้ ทำรีโมตล็อคอินและพิมพ์ข้อมูลต่างเครื่องได้ รวมทั้งให้บริการอีเมล์ด้วย
ในช่วงกลางทศวรรษที่ 1980 มีคนพัฒนาโปรแกรมที่ใช้กับ UNIX System V โดยสนับสนุนการทำงานกับ TCP/IP ซึ่งส่วนใหญ่แล้วบริษัทเหล่านี้ก็คือคนที่พัฒนาฮาร์ดแวร์สื่อสารนั่นเอง
บริษัท เอทีแอนด์ที เริ่มกลับมามีบทบาทในเรื่องของข่ายคอมพิวเตอร์ในยูนิกซ์อีกครั้งเมื่อนายเดนนิส เริ่มกลับมามีบทบาทในเรื่องของข่ายคอมพิวเตอร์ในยูนิกซ์อีกครั้งเมื่อนายเดนนิส ริตชี่ เสนอความคิดเรื่อง I/O เทคนิคเรียกว่า สตรีม (Stream I/O) ซึ่งเป็นแนวคิดใหม่ในยูนิกซ์ใน UNIX System V.3 ได้บรรทุกเทคโนโลยีนี้เข้าไปอย่างเต็มที่ รวมทั้ง TLI (Transport Layer Inter - face) ซึ่งติดต่อกับส่วนสื่อสารในยูนิกซ์ในลักษณะของไลรารี ภาษาซีก็เริ่มปรากฏในยูนิกซ์รุ่นนี้ด้วย ทำให้มีการพัฒนาวอฟต์แวร์ต่าง ๆ ที่ใช้ความสามารถของข่ายคอมพิวเตอร์ขึ้นมาก

เทคโนโลยี ข่ายสื่อสารสำหรับยูนิกซ์

ถ้าเรามองดูคอมพิวเตอร์ที่ใช้ระบบยูนิกซ์ทั่วไปแล้ว ในสายตาผมจะแบ่งตามการใช้งานออกเป็น 2 พวก พวกหนึ่งคือ พวกใช้ส่วนตัวได้แก่ เวอร์กสเตชันทางวิศวกรรม ซึ่งเทคโนโลยีสมัยใหม่ทางด้านเน็ตเวอร์กเรียกได้ว่าเติบโตมาจากระบบพวกนี้ อีกพวกหนึ่งคือตัวระบบยูนิกซ์ที่ใช้งานกับผู้ใช้จำนวนมาก ๆ เพื่อทำงานทางด้านธุรกิจ เช่น พวกระบบฐานข้อมูล เป็นต้น ในการเชื่อมต่อในหน่วยงานเดียวกันที่นิยมใช้กันมากที่สุดคือใช้อีเธอร์เน็ตแลดังรูปที่ 1


รูปที่ 1 แลของยูนิกซ์เวอร์กสเตชัน

การเชื่อมต่อกันด้วยแลจะให้ความเร็วถึง 10 เมกะบิต/วินาที เคเบิลที่ใช้จะมีหลัก ๆ 2 ชนิด คือ 10BASE5 ซึ่งบางทีจะเรียกว่า Thick Ethernet (อย่างหนา) ใช้สาย COAX แบบ RG-9 ความต้านทาน 50 โอห์ม ส่วนอีกแบบคือสายแลแบบอีเธอร์เน็ตปกติที่เราจะเห็นใช้กับระบบของพีซีเป็นสาย 50 โอห์ม RG-58 แบบนี้จะเรียกว่า 10BASE2 หรือ Thin Ethernet (อย่างบาง) บางทีเขาก็เรียก Cheaper net (แลแบบปอน ๆ ว่างั้นเถอะ) ในการต่อกับ Thick Ethernet นั้นต้องมีส่วนเชื่อมโยงกับสายแลน เรียกว่า ทรานซีฟเวอร์ (Tranceiver) และมีสายเดินจากตัวรานซีฟเวอร์เข้ามายังการ์ดแลนเรียกว่า AUI เคเบิลหรือ Drop เคเบิล แต่ในบางครั้งถ้าการ์ดแลมีรานซีฟเวอร์อยู่ภายใน (สำหรับ Thin Ethernet) ก็อาจต่อได้เลย เราสรุปเป็นสรุปได้ดังรูปที่ 2
ระบบยูนิกซ์เป็นระบบที่เน้นแนวคิดของระบบเปิด (Open System) ทั้งทางฮาร์ดแวร์และซอฟต์แวร์ ระบบปิดของบริษัทใดบริษัทหนึ่ง เช่น SNA และ IBM หรือ Decnet ของ DEC ไม่ค่อยเป็นที่สนใจของชาวยูนิกซ์นัก แนวคิดของระบบเปิดคือ มีมาตรฐานกลางในระดับนานาชาติที่ออกโดยองค์กรทางมาตรฐาน เช่น CCITT หรือ ISO ผู้ขายก็ผลิตไปตามมาตรฐาน ผู้ใช้ซื้อมาเชื่อมแล้วใช้ได้ทันที ของใครดีกว่าดูที่ประสิทธิภาพครับ ลักษณะนี้จะเป็นตลาดของผู้ใช้ ซึ่งผู้ใช้จะได้เปรียบมากในการเลือกซื้อของดีที่สุดมาใช้ ซึ่งในปัจจุบันแนวโน้มมุ่งไปทางระบบเปิดมากขึ้นทุกที
ระบบยูนิกซ์ในปัจจุบัน ส่วนใหญ่จะสนับสนุนโปโตคอแบบ TCP/IP ซึ่งคิดขึ้นโดย DOD (Department of Defense) หรือกระทรวงกลาโหมสหรัฐ และใช้งานกันอย่างมากในอเมริกา โปโตคอนี้ทำให้เกิด Internetworking คือส่งข้อมูลระหว่างเครื่องที่ต่อผ่านข่ายคอมพิวเตอร์ชนิดไหนบ้าง และทำให้เกิดการติดต่อระหว่างโปเซส (Interprocess Communication หรือ IPC) ที่อยู่ต่างเครื่องกัน


รูปที่ 2 การต่อเครื่องยูนิกซ์เข้ากับแล

สำหรับในระยะทางไกลนั้น ระบบยูนิกซ์ของบริษัทต่าง ๆ มักจะสนับสนุนการเชื่อมโยงผ่านโมเด็มแบบ Point to Point โดยใช้โปโตคอเรียกว่า SLIP (Serial Link Internet Protocol) หรือผ่าน X.25 WAN ซึ่ง X.25 นี้เริ่มมีให้บริการใช้ได้แล้วในเมืองคือระบบ Thaipak ของการสื่อสาร

ฮาร์ดแวร์ต่อกันแล้ว ถึงคราวซอฟต์แวร์บ้าง

พอจับฮาร์ดแวร์คุยกันได้ (LAN, WAN, Serial) ถึงคราวซอฟต์แวร์บ้าง การที่คอมพิวเตอร์จะคุยกันรู้เรื่องก็ต้องเจรจาภาษาเดียวกัน ภาษาหรือข้อตกลงในการเจรจาพาทีระหว่างคอมพิวเตอร์ผ่านข่ายสื่อสารเราเรียกว่า โปโตคอล ซึ่งแม่แบบของโปโตคอในระบบเปิดที่สำคัญมี 2 พวก คือ OSI และ TCP/IP
ผู้พัฒนาโปรแกรมจะพัฒนาโปรแกรมโดยใช้ส่วนเชื่อมต่อกับโปรแกรมประยุกต์ (Application Program Interface หรือ API) ซึ่งมีในระบบที่ดังมากก็คือ Socket Interface ที่มีมากับยูนิกซ์ 4.2 BSD ขึ้นไป อีกแบบคือใช้ Remote Procedure Call หรือ RPC ซึ่งมีแนวคิดดังรูปที่ 3
ในแนวคิดของ RPC คอมพิวเตอร์แต่ละเครื่องในระบบจะมีส่วนของโปรแกรมซึ่งทำงานอยู่ โปรแกรมประยุกต์ที่เราเขียนขึ้นจะเรียกใช้โปรแกรมที่อยู่ต่างเครื่องได้เสมือนกับว่าเป็นซับรูทีในโปรแกรมของเรา โดยระบบจะช่วยให้เราสร้าง Stub ซึ่งแปลงจากการเรียกฟังก์ชันธรรมดาเป็นโปโตคอคุยผ่านเครือข่ายคอมพิวเตอร์ไป โปรแกรมที่อยู่อีกเครื่องก็ทำงานกุ๊กกิ๊กสักพักก็ส่งคำตอบกลับมา ซึ่ง Stub จะแปลงกลับเป็นค่าที่คืนจากการเรียกฟังก์ชัน คนพัฒนาโปรแกรมก็ไม่ต้องรู้เรื่องเน็ตเวอร์กเลย แค่รู้ว่ามีอะไรให้เรียกใช้บ้างก็พอ


รูปที่ 3 แนวคิดของ RPC

ไคล์เอนต์-เซอร์ฟเวอร์ และเหล่าปีศาจ

ถ้าพูดถึงแนวโน้มของการวางระบบขนาดใหญ่ แนวคิดจะเริ่มเปลี่ยนแปลงจากระบบแบบรวมศูนย์ (Centralize) เป็นระบบแบบกระจาย (Distributed) โดยกระจายงานประมวลผลไปตามคอมพิวเตอร์ต่าง ๆ ที่ต่อกันผ่านข่ายข้อมูลคอมพิวเตอร์
ในการพัฒนาซอฟต์แวร์ตามแนวนี้เขาจะใช้โมเดที่เรียกว่าไคล์เอนต์เซอร์ฟเวอร์ คือแบ่งโปรแกรมเป็น 2 ส่วน ดังรูปที่ 4


รูปที่ 4 แนวคิดแบบไคล์เอนต์เซอร์ฟเวอร์

เซอร์ฟเวอร์เป็นคนถือทรัพยากรของระบบไว้ เช่น ฐานข้อมูล, ไฟล์, เครื่องพิมพ์ ส่วนไคล์เอนต์เป็นโปรแกรมที่นำเอาทรัพยากรมาใช้ ไคล์เอนต์จะขอใช้ทรัพยากรต่าง ๆ ผ่านข่ายคอมพิวเตอร์โดยเซอร์ฟเวอร์จะตอบกลับมา โดยส่งสิ่งที่ต้องการมาให้ ตัวอย่างของแนวคิดนี้ได้แก่ SQL เซอร์ฟเวอร์บนแลของพีซี เป็นต้น
ในยูนิกซ์ได้สนับสนุนแนวคิดนี้อยู่แล้วโดยธรรมชาติ ในยูนิกซ์จะมีโปเซปีศาจ (Daemon process) ทำงานอยู่ตลอดเวลาเพื่อรอรับการติดต่อผ่านข่ายคอมพิวเตอร์จากภายนอก เมื่อโปรแกรมบนเครื่องอื่นติดต่อเข้ามาก็จะให้บริการบางอย่าง ตัวอย่างของปีศาจเหล่านี้ได้แก่
ftpd - ให้บริการเกี่ยวกับการส่งรับไฟล์
nfsd - ให้บริการเกี่ยวกับการใช้รีโมตดิสค์
rlogind - ให้บริการทำรีโมตล็อคอิน
telretd - ทำรีโมตล็อคอินมาตรฐานของ DOD
อื่น ๆ อีกมากมายครับ พูดไม่หมดแน่ โปเซส daemon เหล่านี้จะรอให้บริการโดยจองสิ่งที่เรียกว่า well known port ซึ่งเป็นตัวเลขที่กำหนดไว้ ใครจะใช้บริการก็ติดต่อมาโดยอ้างแอดเดรสเครื่องแล้วบอกตัว well know port ให้ระบบก็จะเกิดการเชื่อมต่อกับเซอร์ฟเวอร์ได้ ตัวอย่างของ well know port แสดงไว้ในรูปที่ 5

Decimal Keyword UNIX Keyword Description
0
1
5
7
9
11
13
15
17
19
20
21
23
25
37
42
43
53
77
79
93
95
101
102
103
104
111
113
117
119
129
139
160-223
-
TCPMUX
RJE
ECHO
DISCARD
USERS
DAYTIME
-
QUOTE
CHARGEN
FTP-DATA
FTP
TELNET
SMTP
TIME
NAMESERVER
NICNAME
DOMAIN
-
FINGER
DCP
SUPDUP
HOSTNAME
ISO-TSAP
X400
X400-SND
SUNRPC
AUTH
UUCP-PATH
NNTP
PWDGEN
NETBIOS-SSN
Reserved
-
-
echo
discard
systat
daytime
netstat
qotd
chargen
ftp-data
ftp
telnet
smtp
time
name
whois
nameserver
rje
finger
-
supdup
hostnames
iso-tsap
x400
x400-snd
sunrpc
auth
uucp-path
nntp
-
-
-
-
Reserved
TCP Multiplexer
Remote Job Entry
Echo
Discard
Active Users
Daytime
Network status program
Quote of the Day
Character Generator
File Transfer Protocol (data)
File Transfer Protocol
Terminal Connection
simple Mail Transport Protocol
Time
Host Name Server
Who is
Domain name Server
any private RJE service
Finger
Device Control Protocol
SUPDUP Protocol
NIC Host Name Server
ISO-TSAP
X.400 Mail Service
X.400 Mail Sending
Sun Remote Procedure Call
Authentication Service
UUCP Path Service
USENET News Transfer Protocol
Password Generator Protocol
NETBIOS Session Service
รูปที่ 5 แสดงบริการที่มี และ Well known port number

ในขณะนี้มีระบบติดต่อกับผู้ใช้ที่โด่งดังขึ้นมาคือเอกซ์วินโดว์ โดยที่ระบบนี้เน้นในเรื่องของ Distributed มาก บนเครื่องเวอร์กสเตชั่นจะทำตัวเป็นเอกซ์เซอร์ฟเวอร์ซึ่งคุมทรัพยากร ได้แก่ เมาส์ คีย์บอร์ด และวินโดว์ โปรแกรมของเรา เช่น CAD ที่ต้องการแสดงผลปรากฏบนจอภาพของเรา

แล้วผู้ใช้เล่นอะไรได้บ้าง

ในแง่ของคนใช้เครื่องแล้วเรามีอะไรให้เล่นบ้าง
การทำรีโมตล็อคอินบนระบบยูนิกซ์มียูทิลิตี้อยู่ 2 ตัวคือ rlogin ซึ่งเขียนโดยเบิร์กเล่ย์ เรานั่งอยู่หน้าคอมพิวเตอร์เครื่องใดก็ตามสามารถทำการล็อคอินไปใช้เครื่องอื่นที่ต่อผ่านข่ายสื่อสารได้หมด แต่ rlogin ใช้ได้กับยูนิกซ์ด้วยกันเท่านั้น
ในเรื่องนี้มีโปรแกรมอีกโปรแกรมคือ telnet ซึ่งเป็นโปรแกรมที่ทำงานในลักษณะของเวอร์ชวลเทอร์มินัลตามมาตรฐานของ DOD ใช้เทเน็ตแล้ว นอกจากจะใช้กับยูนิกซ์ด้วยกันได้ยังใช้กับคอมพิวเตอร์อื่นที่ต่อร่วมข่ายสื่อสารเดียวกันด้วย ในระบบของเวอร์กสเตชันที่เป็นแบบมัลติวินโดว์ยิ่งสนุกมากครับ เปิด 3 วินโดว์ใช้พร้อมกัน 3 เครื่องเลย
การทำไฟล์รานสเฟอร์มีโปรแกรมช่วยคือ rcp ของเบิร์กเล่ย์ ซึ่งจะก๊อปปี้ไฟล์ข้ามระบบมาให้คล้ายกับทำคำสั่ง cp ในยูนิกซ์ แต่การส่งรับไฟล์จะไม่ซับซ้อนมาก ถ้าต้องการโปรแกรมเก่ง ๆ ต้องใช้โปรแกรม ftp โดยที่เราต้องมียูสเซอร์ที่อีกเครื่องด้วย ใน ftp เราสามารถสั่งเปลี่ยนไดเรทอรี ดูไดเรทอรีที่เครื่องอื่น ส่งรับไฟล์ที่ดีกว่านั้นคือ ทำการติดต่อกับระบบที่ไม่ใช่ยูนิกซ์ได้ด้วย เพราะทำงานตามมาตรฐานของ DOD เช่นเดียวกับเทเน็ต ในเรื่องของไฟล์มีผลิตภัณฑ์อีกตัวซึ่งถือเป็นมาตรฐานกลาย ๆ คือ NFS (Network File System) ซึ่งถือกำเนิดมาจากบริษัทซันไมโครซิสเต็มส์และแพร่หลายมากในโลกของ UNIX NFS ทำให้เครื่องยูนิกซ์ที่อยู่บนแลมองเห็นดิสค์ของอีกฝ่ายถึงกันหมด เหมือนกับเป็นดิสค์ในระบบของตัวเอง โดยแต่ละเครื่องจะมี NFS ไคล์เอนต์และเซอร์ฟเวอร์ทำงานอยู่ ยิ่งไปกว่านั้นในปัจจุบันยังมี NFS สำหรับพีซี เช่น PC-NFS ของบริษัทซันไมโครซิสเต็มส์ ทำให้พีซีของเราสามารถมองเห็นไดเรทอรีบนเครื่องยูนิกซ์เป็นไดรฟ์ตัวหนึ่งในพีซี และยังสนับสนุนการใช้งานรีโมตพรินเตอร์อีกด้วย
สุดท้ายก็คือ บริการไปรษณีย์อิเล็กทรอนิกส์ ซึ่งใช้โดยโปรแกรม mail ในยูนิกซ์นั้น ระบบเมล์จัดว่าเป็นสิ่งหนึ่งที่มีการใช้งานมากที่สุด และมีเครือข่ายที่ไพศาลไปทั่วโลก มาตรฐานของอีเมล์ที่ใช้จะเป็น SMTP (Simple Mail Transfer Protocol) และ UUCP เป็นหลัก โดยตัวระบบเมล์จะแบ่งเป็นส่วนที่ติดต่อกับผู้ใช้ และส่วนที่ส่งเมล์ของไปยังเน็ตเวอร์กคือโปรแกรม sendmail โปรแกรมนี้เองจะไปดูรูปแบบของที่อยู่ผู้รับเพื่อตัดสินใจในการส่งว่าไปไหน และใช้วิธีใดอีกครั้ง แต่ในแง่ผู้ใช้รู้แค่ที่อยู่ปลายทางก็พอแล้ว

ก้าวต่อไปของยูนิกซ์กับการสื่อสาร

ในแง่ของมาตรฐานแล้ว ยูนิกซ์ก็คงเน้นความเป็นระบบเปิดต่อไป แต่มีแนวโน้มที่จะเปลี่ยนจาก TCP/IP เป็น OSI แต่ก็นานมาก (อาจจะศตวรรษหน้า) ตอนนี้พัฒนาการทางด้านเทคโนโลยีทำให้การวางข่ายคอมพิวเตอร์มีราคาถูกลงมาก ดังนั้นในแง่ผู้ใช้คงจะได้ใช้โปรแกรมประยุกต์ที่มีลักษณะทำงานแบบกระจายมากขึ้น และการทำงานเป็นกลุ่มโดยมีข่ายข้อมูลคอมพิวเตอร์เป็นตัวเชื่อมโยงในลักษณะเครือข่ายของบริษัท (Corporate Network) คงจะเข้ามามีบทบาทในธุรกิจมากขึ้น ด้วยเทคโนโลยีของระบบเปิดจะทำให้ผู้ใช้เลือกเอาผลิตภัณฑ์ต่าง ๆ มาเชื่อมโยงเข้าด้วยกันได้ง่ายกว่าเดิม ระบบข่ายข้อมูลของพีซีและยูนิกซ์จะเข้ามาร่วมทำงานด้วยกันเพื่อเพิ่มความสะดวก และประสิทธิภาพให้กับผู้ใช้อย่างเต็มที่