การทำงานของระบบเครือข่ายเบื้องต้น
Basic Computer Networking

โดย สมพันธุ์ ชาญศิลป์
19 ตุลาคม 2552


จะกล่าวใน 6 หัวข้อต่อไปนี้
  1. พื้นฐานการเชื่อมต่อแลน
  2. การเชื่อมต่อภายในวงแลน
  3. การกำหนดให้เครื่องอยู่ในวงแลนเดียวกัน
  4. หมายเลขไอพีส่วนตัวและไอพีสาธารณะ
  5. หมายเลข port ของเซิร์ฟเวอร์ต่างๆ
  6. โปรแกรมที่ใช้ในการตรวจสอบการเชื่อมต่อและตรวจตาการเชื่อมต่อ



พื้นฐานการเชื่อมต่อแลน
 
basic_network/basic_nw1.png

จากรูปแสดงให้เห็นการทำงานพื้นฐานของการเชื่อม ต่อของระบบเน็ตเวิร์ก ปกติจะมีการแบ่งเครือข่ายออกเป็นวงแลน อาจหลายวงแลน เชื่อมต่อกัน เช่นในรูปแบ่งเป็น 4 วงแลน ซึ่งหนึ่งในนั้นคือการออกอินเตอร์เน็ต การเชื่อมต่อระหว่างวงแลน ต้องอาศัยการทำงานของอุปกรณ์ที่เรียกว่า Router ตัว Router จะตรวจดูว่าปลายทางอยู่ที่ใดและควรส่งต่อการร้องขอข้อมูลออกไปทางช่องทางใด ตัว Router อาจเป็นอุปกรณ์ฮาร์ดแวร์เฉพาะ หรือจะใช้เครื่อง PC ทำเป็น Router ได้ ถ้าจำนวนวงแลนมีไม่มากและไม่สลับซับซ้อน

 
การเชื่อมต่อภายในวงแลน
 
basic_network/basic_nw2.png

การเชื่อมต่อภายในวงแลนหนึ่ง ๆ ต้องอาศัยอุปกรณ์ ที่เรียกว่า Switch ซึ่งมีทั้งแบบ managed ที่สามารถเข้าไปกำหนดค่าการทำ virtual LAN ได้ และแบบ unmanaged ซึ่งไม่ต้องการการจัดการอะไรอีก แบบ managed มีราคาแพงกว่า และต้องเรียนรู้การใช้งาน ในปัจจุบันถ้าต้องซื้ออุปกรณ์นี้ใหม่ขอแนะนำให้ซื้อตัวที่มีความเร็วทุก port เป็น gigabit เพราะจะทำให้การใช้งาน eLearning ที่มีเนื้อหาที่อยู่ในรูปแบบของ Multimedia เป็นไปด้วยความรวดเร็ว

แต่ละเครื่องในวงแลน ต้องมีการกำหนด IP, sub netmask, gateway, DNS server address.
การที่คอมพิวเตอร์ที่ต่างต่อเข้าไปที่ Switch เดียวกัน ไม่ได้หมายความว่า เครื่องทุกเครื่องจะอยู่ในวงแลนเดียวกัน หรือจะต้องติดต่อกันได้ มีสิ่งหนึ่งที่ต้องทราบไว้คือ ถ้าเครื่องต้นทางและต้นปลายทางไม่อยู่ในวงแลนเดียวกัน เวลามีการติดต่อกัน ข้อมูลจะถูกส่งออกไปยัง Gateway ก่อน จากนั้นจึงเป็นหน้าที่ของ Gateway ว่าจะส่งต่อไปทางไหนจึงจะถึงปลายทาง ดังนั้นการกำหนดหมายเลขต่างให้เครื่องจึงเป็นเรื่องที่ต้องทำความเข้าใจให้ท่องแท้

 
การกำหนดให้เครื่องอยู่ในวงแลนเดียวกัน
 
การกำหนดหมายเลข IP และ Sub netmask มีความสำคัญต่อการกำหนดว่า เครื่องจะอยู่ในวงแลนเดียวกันหรือไม่ หลักการสำคัญคือ การนำเอาหมายเลข IP ตั้งแล้วเอา Sub netmask มา AND สิ่งที่ได้เราเรียกว่า Network address. ถ้าปลายทางและต้นทางอยู่บน Network address เดียวกัน ข้อมูลจะถูกส่งตรงออกไปยังเครื่องปลายทางโดยตรง แต่ถ้ามีค่าไม่เหมือนกัน ข้อมูลจะถูกส่งออกไปยัง Gateway แทน จากนั้น Gateway จึงส่งข้อมูลต่อ

ยกตัวอย่างเช่น เครื่องเรามีไอพี 172.16.0.1 และ Sub netmask 255.255.252.0 แล้วเราใช้คำสั่ง ping ไปที่เครื่องหมายเลข 172.16.3.5 ถามว่าข้อมูลจะถูกส่งตรงไปยังเครื่องปลายทางหรือส่งไปยัง gateway.
เราเริ่มด้วยการคำนวณหา Network address ของเครื่องต้นทาง

172.  16. 00000000.00000001 and ด้วย
255.255. 11111100.00000000 ได้
172.16.0.0 ซึ่งก็คือ Network  address ของเครื่องต้นทาง

จากนั้นให้หา Network address ของเครื่องปลายทาง
172.  16. 00000011.00000101 and ด้วย
255  .255. 11111100.00000000 ได้
172.16.0.0 ซึ่งก็คือ Network  address ของเครื่องปลายทาง

ดังนั้นเครื่องทั้งสองสามารถส่งข้อมูลไปมาตรงหากันได้เลย
 
หมายเลขไอพีส่วนตัวและไอพีสาธารณะ
 
ไอพีส่วนตัว คือไอพีที่แต่ละหน่วยงานสามารถนำไปใช้เป็นหมายเลขไอพีของแต่ละเครื่องเป็นแลนภายในได้ แต่เครื่องเหล่านี้จะไม่สามารถติดต่อกับ Internet ได้
นอกจากจะติดต่อผ่านทาง proxy server หรือใช้วิธี กำหนดให้แชร์ Internet ด้วยการทำ NAT

Class A
10.0.0.0 through 10.255.255.255
ปกติใช้ Subnetmask 255.0.0.0

Class B
172.16.0.0 through 172.31.255.255
ปกติใช้ Subnetmask 255.255.0.0

Class C
192.168.0.0 through 192.168.255.255
ปกติใช้ Subnetmask 255.255.255.0

ไอพีสาธารณะคือหมายเลขที่สามารถเชื่อมโยงกันได้บน Internet เป็นหมายเลขที่ต้องจดทะเบียน เสียเงินจึงจะได้มา เป็นหมายเลขไอพีอื่น ๆ ที่ไม่ใช่ไอพีส่วนตัว

 
หมายเลข port ของเซิร์ฟเวอร์ต่างๆ

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

หมายเลข Port ที่น่าสนใจมีดังนี้
 
## Web server
www        80/tcp        http            # WorldWideWeb HTTP
https        443/tcp                    # http protocol over TLS/SSL
https        443/udp
http-alt        8080/tcp         webcache    # WWW caching service
http-alt        8080/udp                    # WWW caching service

## FTP server
ftp-data    20/tcp
ftp        21/tcp
tftp        69/udp
sftp        115/tcp
ftps-data    989/tcp                # FTP over SSL (data)
ftps        990/tcp

## TFTP server
tftp        69/udp

## Mail server:MTA
smtp        25/tcp        mail

## Imap mail server
imap2        143/tcp        imap        # Interim Mail Access P 2 and 4
imap2        143/udp        imap
imap3        220/tcp                # Interactive Mail Access
imap3        220/udp                # Protocol v3
imaps        993/tcp                # IMAP over SSL
imaps        993/udp

## Pop3 mail server
pop3        110/tcp        pop-3        # POP version 3
pop3        110/udp        pop-3
pop3s        995/tcp                # POP-3 over SSL
pop3s        995/udp

## SSH server
ssh        22/tcp                # SSH Remote Login Protocol
ssh        22/udp

## Mysql server
mysql        3306/tcp
mysql        3306/udp

## For windows
netbios-ns    137/tcp                # NETBIOS Name Service
netbios-ns    137/udp
netbios-dgm    138/tcp                # NETBIOS Datagram Service
netbios-dgm    138/udp
netbios-ssn    139/tcp                # NETBIOS session service
netbios-ssn    139/udp

## DNS server
domain        53/tcp                # name-domain server
domain        53/udp

## DHCP server
bootps        67/tcp                # BOOTP server
bootps        67/udp
bootpc        68/tcp                # BOOTP client
bootpc        68/udp

## Radius for authentication
radius        1812/tcp
radius        1812/udp

## Time server
time        37/tcp        timserver
time        37/udp        timserver


ถ้าต้องการดูรายละเอียดว่าเซิร์ฟเวอร์ไหนใช้ port ใด ให้ดูข้อมูลในไฟล์ /etc/services

 
โปรแกรมที่ใช้ในการตรวจสอบการเชื่อมต่อและตรวจตาการเชื่อมต่อ

คำสัง ping ใช้สำหรับการตรวจสอบการเชื่อมต่อจากเครื่องต้นทางไปยังเครื่องปลายทาง ข้อมูลบ่งบอกความเร็วในการเดินทางของข้อมูลด้วย
เช่น
sut@main:~$ ping linux.sut.ac.th
PING linux.sut.ac.th (203.158.6.112) 56(84) bytes of data.
64 bytes from 203.158.6.112: icmp_seq=1 ttl=62 time=0.890 ms
64 bytes from 203.158.6.112: icmp_seq=2 ttl=62 time=1.10 ms
64 bytes from 203.158.6.112: icmp_seq=3 ttl=62 time=0.843 ms

ถ้าอยู่บนลินุกซ์ ต้องกด Ctrl+C เพื่อหยุด
หรืออาจป้อนไอพี ดังนี้

sut@main:~$ ping  203.158.6.112
PING 203.158.6.112 (203.158.6.112) 56(84) bytes of data.
64 bytes from 203.158.6.112: icmp_seq=1 ttl=62 time=0.931 ms
64 bytes from 203.158.6.112: icmp_seq=2 ttl=62 time=0.980 ms
64 bytes from 203.158.6.112: icmp_seq=3 ttl=62 time=0.847 ms

nmap เป็นโปรแกรมตรวจสอบการเปิด port ของเครื่อง
เช่น
sut@main:~$ nmap localhost

Starting Nmap 4.76 ( http://nmap.org ) at 2009-10-19 16:48 ICT
Warning: Hostname localhost resolves to 2 IPs. Using 127.0.0.1.
Interesting ports on localhost (127.0.0.1):
Not shown: 990 closed ports
PORT    STATE SERVICE
21/tcp  open  ftp
22/tcp  open  ssh
25/tcp  open  smtp
80/tcp  open  http
81/tcp  open  hosts2-ns
110/tcp open  pop3
143/tcp open  imap
443/tcp open  https
993/tcp open  imaps
995/tcp open  pop3s

Nmap done: 1 IP address (1 host up) scanned in 0.16 seconds

อีกตัวอย่างหนึ่ง

sut@main:~$ nmap 41.0.5.159

Starting Nmap 4.76 ( http://nmap.org ) at 2009-10-19 16:49 ICT
Interesting ports on 41.0.5.159:
Not shown: 991 closed ports
PORT    STATE SERVICE
22/tcp  open  ssh
25/tcp  open  smtp
80/tcp  open  http
81/tcp  open  hosts2-ns
110/tcp open  pop3
143/tcp open  imap
443/tcp open  https
993/tcp open  imaps
995/tcp open  pop3s

Nmap done: 1 IP address (1 host up) scanned in 3.20 seconds

หรืออาจเรียกใช้ ตัวโปรแกรมแบบ GUI
sut@main:~$ sudo nmapfe



netstat  เป็นโปรแกรมที่ใช้ดูการเปิด  port  และการเชื่อมต่อ
เช่น
 sut@main:~$ netstat -ta
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State     
tcp        0      0 *:imaps                 *:*                     LISTEN    
tcp        0      0 *:pop3s                 *:*                     LISTEN    
tcp        0      0 *:pop3                  *:*                     LISTEN    
tcp        0      0 *:imap2                 *:*                     LISTEN    
tcp        0      0 *:www                   *:*                     LISTEN    
tcp        0      0 *:ftp                   *:*                     LISTEN    
tcp        0      0 *:ssh                   *:*                     LISTEN    
tcp        0      0 *:smtp                  *:*                     LISTEN    
tcp        0      0 *:https                 *:*                     LISTEN    
tcp6       0      0 [::]:81                 [::]:*                  LISTEN    
tcp6       0      0 [::]:ssh                [::]:*                  LISTEN    
อ่านคู่มือ man netstat เพื่อดู option ต่าง ๆ


iptraf เป็นโปรแกรมที่ admin ใช้ดูการเชื่อมต่อ ต่างๆ
เช่นใช้คำสั่ง
sut@main:~$ sudo iptraf
จะได้หน้าต่าง สำหรับ การทำงานต่าง ๆ ดังรูป

basic_network/basic_nw3.png