
ไม่ว่าคุณจะเป็น Developer, System Admin หรือ DevOps Engineer ความเข้าใจเรื่อง Networking เป็นพื้นฐานที่ขาดไม่ได้ ทุกแอปพลิเคชันที่เราสร้างล้วนสื่อสารผ่านเครือข่าย ตั้งแต่ API Call ไปจนถึง Database Connection บทความนี้จะพาคุณทำความเข้าใจตั้งแต่ OSI Model, TCP/IP, DNS, DHCP, Subnetting ไปจนถึง Network Tools ที่ใช้ในงานจริง พร้อมตัวอย่างคำสั่งที่ใช้ได้ทันที
Computer Networking คือการเชื่อมต่อคอมพิวเตอร์และอุปกรณ์ต่างๆ เข้าด้วยกันเพื่อแลกเปลี่ยนข้อมูล ตั้งแต่เครือข่ายเล็กๆ ภายในบ้าน (LAN) ไปจนถึงเครือข่ายระดับโลกอย่างอินเทอร์เน็ต ความเข้าใจพื้นฐาน Networking จะช่วยให้คุณแก้ปัญหาการเชื่อมต่อ ออกแบบระบบที่มีประสิทธิภาพ และรักษาความปลอดภัยของข้อมูลได้
เครือข่ายแบ่งตามขนาดได้หลายระดับ ได้แก่ PAN (Personal Area Network เช่น Bluetooth), LAN (Local Area Network เครือข่ายภายในอาคาร), MAN (Metropolitan Area Network ระดับเมือง), WAN (Wide Area Network ข้ามประเทศ) และ Internet ซึ่งเป็น Network of Networks ที่ใหญ่ที่สุดในโลก
OSI Model (Open Systems Interconnection) เป็นโมเดลอ้างอิง 7 ชั้นที่อธิบายว่าข้อมูลเดินทางจากแอปพลิเคชันหนึ่งไปยังอีกแอปพลิเคชันหนึ่งผ่านเครือข่ายอย่างไร แต่ละ Layer มีหน้าที่เฉพาะและสื่อสารกับ Layer ที่อยู่ติดกันเท่านั้น
| Layer | ชื่อ | หน้าที่ | โปรโตคอล/อุปกรณ์ |
|---|---|---|---|
| 7 | Application | บริการเครือข่ายสำหรับแอปพลิเคชัน | HTTP, HTTPS, FTP, SMTP, DNS, SSH |
| 6 | Presentation | แปลงรูปแบบข้อมูล เข้ารหัส/ถอดรหัส | SSL/TLS, JPEG, JSON, XML, ASCII |
| 5 | Session | จัดการ Session การเชื่อมต่อ | NetBIOS, RPC, PPTP |
| 4 | Transport | ส่งข้อมูลแบบ End-to-end, ควบคุม Flow | TCP, UDP — Port Number |
| 3 | Network | กำหนดเส้นทาง (Routing) ข้ามเครือข่าย | IP, ICMP, OSPF, BGP — Router |
| 2 | Data Link | ส่งข้อมูลภายในเครือข่ายเดียวกัน | Ethernet, Wi-Fi, ARP — Switch |
| 1 | Physical | สัญญาณไฟฟ้า/แสง/คลื่นวิทยุ | สาย UTP, Fiber, Wi-Fi — Hub |
TCP/IP Model เป็นโมเดลที่ใช้งานจริงบนอินเทอร์เน็ต มี 4 ชั้น ซึ่งง่ายกว่า OSI ที่เป็นโมเดลทางทฤษฎี
| TCP/IP Layer | OSI Layers ที่เทียบเท่า | ตัวอย่าง |
|---|---|---|
| Application | Application + Presentation + Session | HTTP, DNS, FTP, SMTP, SSH |
| Transport | Transport | TCP, UDP |
| Internet | Network | IP, ICMP, ARP |
| Network Access | Data Link + Physical | Ethernet, Wi-Fi |
เมื่อคุณเปิดเว็บไซต์ ข้อมูลจะถูก Encapsulation คือหุ้มด้วย Header ของแต่ละ Layer ตั้งแต่ Application (HTTP Request) → Transport (TCP Header + Port) → Internet (IP Header + IP Address) → Network Access (Ethernet Frame + MAC Address) แล้วส่งออกเป็นสัญญาณ ฝั่งรับจะทำกระบวนการกลับกันเรียกว่า Decapsulation
IPv4 คือหมายเลขที่ระบุตัวตนของอุปกรณ์บนเครือข่าย เป็นเลข 32 บิต เขียนแบบ Dotted Decimal เช่น 192.168.1.100 แบ่งเป็น 4 Octet (แต่ละ Octet = 8 บิต = 0-255)
IP Address แบ่งเป็น Public IP (ใช้บนอินเทอร์เน็ต ไม่ซ้ำกัน) และ Private IP (ใช้ภายในเครือข่ายส่วนตัว)
| ประเภท | ช่วง IP | จำนวน Address |
|---|---|---|
| Class A Private | 10.0.0.0 – 10.255.255.255 | 16,777,216 |
| Class B Private | 172.16.0.0 – 172.31.255.255 | 1,048,576 |
| Class C Private | 192.168.0.0 – 192.168.255.255 | 65,536 |
| Loopback | 127.0.0.0 – 127.255.255.255 | Localhost |
IPv6 ใช้ 128 บิต เขียนเป็นเลขฐาน 16 จำนวน 8 กลุ่ม คั่นด้วย : เช่น 2001:0db8:85a3:0000:0000:8a2e:0370:7334 รองรับ Address ได้ 2^128 ตัว (ประมาณ 3.4 x 10^38) ซึ่งเพียงพอสำหรับอนาคตอันยาวไกล IPv6 ยังมีฟีเจอร์เพิ่มเติม เช่น IPSec ในตัว, Simplified Header และ Stateless Address Autoconfiguration (SLAAC)
CIDR (Classless Inter-Domain Routing) ใช้เครื่องหมาย / ตามด้วยจำนวนบิตของ Network Portion เช่น 192.168.1.0/24 หมายถึง 24 บิตแรกเป็น Network ส่วนที่เหลือ 8 บิตเป็น Host
/24 (255.255.255.0): 256 IP, ใช้ได้จริง 254 Host (ลบ Network Address และ Broadcast)
เช่น 192.168.1.0/24 → Host: 192.168.1.1 ถึง 192.168.1.254
/25 (255.255.255.128): 128 IP, ใช้ได้ 126 Host
เช่น 192.168.1.0/25 → Host: .1 ถึง .126 | 192.168.1.128/25 → Host: .129 ถึง .254
/26 (255.255.255.192): 64 IP, ใช้ได้ 62 Host
เช่น 192.168.1.0/26 → .1 ถึง .62 | 192.168.1.64/26 → .65 ถึง .126 | 192.168.1.128/26 → .129 ถึง .190 | 192.168.1.192/26 → .193 ถึง .254
/28 (255.255.255.240): 16 IP, ใช้ได้ 14 Host
เหมาะกับ Subnet ขนาดเล็ก เช่น แบ่งให้แต่ละแผนก
# คำนวณ Subnet ด้วย Python
import ipaddress
network = ipaddress.ip_network('192.168.1.0/24')
print(f"Network: {network.network_address}")
print(f"Broadcast: {network.broadcast_address}")
print(f"Netmask: {network.netmask}")
print(f"Total hosts: {network.num_addresses}")
print(f"Usable hosts: {network.num_addresses - 2}")
# แบ่ง Subnet ย่อย
for subnet in network.subnets(prefixlen_diff=2): # แบ่งเป็น /26
print(f" {subnet} -> {subnet.num_addresses - 2} hosts")
TCP และ UDP เป็นโปรโตคอลหลักใน Transport Layer ที่มีลักษณะการทำงานแตกต่างกัน
TCP เป็นโปรโตคอลแบบ Connection-oriented ที่รับประกันว่าข้อมูลจะส่งถึงปลายทางครบถ้วนและเรียงลำดับถูกต้อง ก่อนส่งข้อมูลต้องทำ 3-Way Handshake เพื่อสร้าง Connection ก่อน
# TCP 3-Way Handshake:
#
# Client Server
# | |
# |--- SYN (seq=100) ------>| 1. Client ส่ง SYN พร้อม Sequence Number
# | |
# |<-- SYN-ACK ------------| 2. Server ตอบ SYN-ACK (seq=300, ack=101)
# | (seq=300, ack=101) |
# | |
# |--- ACK (ack=301) ------>| 3. Client ส่ง ACK ยืนยัน
# | |
# |=== Connection สร้างสำเร็จ ===|
# |--- Data Transfer ------>| เริ่มส่งข้อมูลได้
TCP มี Flow Control (ควบคุมความเร็วส่ง), Congestion Control (ลดความแออัดของเครือข่าย) และ Error Detection (ตรวจจับข้อผิดพลาด + ส่งใหม่) เหมาะกับ HTTP/HTTPS, SSH, FTP, SMTP, Database Connection
UDP เป็นโปรโตคอลแบบ Connectionless ส่งข้อมูลเลยโดยไม่ต้อง Handshake ไม่รับประกันว่าข้อมูลจะถึงหรือเรียงลำดับถูกต้อง แต่แลกมาด้วยความเร็วและ Latency ต่ำ เหมาะกับ DNS Query, Video Streaming, VoIP, Online Gaming, IoT Sensor Data
| คุณสมบัติ | TCP | UDP |
|---|---|---|
| Connection | Connection-oriented (Handshake) | Connectionless |
| ความน่าเชื่อถือ | รับประกันการส่ง, เรียงลำดับ | ไม่รับประกัน |
| Speed | ช้ากว่า (มี Overhead) | เร็วกว่า (Overhead น้อย) |
| Header Size | 20-60 bytes | 8 bytes |
| Flow Control | มี (Window Size) | ไม่มี |
| Use Cases | Web, Email, File Transfer | Streaming, DNS, Gaming |
DNS (Domain Name System) คือระบบที่แปลงชื่อโดเมนที่มนุษย์อ่านได้ (เช่น siamcafe.net) เป็น IP Address ที่คอมพิวเตอร์ใช้ (เช่น 122.155.168.7) เปรียบเสมือนสมุดโทรศัพท์ของอินเทอร์เน็ต
| Record Type | หน้าที่ | ตัวอย่าง |
|---|---|---|
| A | แมปชื่อโดเมนไปยัง IPv4 | siamcafe.net → 122.155.168.7 |
| AAAA | แมปชื่อโดเมนไปยัง IPv6 | siamcafe.net → 2001:db8::1 |
| CNAME | Alias ชี้ไปยังชื่อโดเมนอื่น | www.siamcafe.net → siamcafe.net |
| MX | ระบุ Mail Server | siamcafe.net → mail.siamcafe.net (Priority 10) |
| TXT | ข้อความทั่วไป (SPF, DKIM, verify) | v=spf1 include:_spf.google.com ~all |
| NS | ระบุ Nameserver ที่ดูแลโดเมน | ns1.hosting.com, ns2.hosting.com |
เมื่อคุณพิมพ์ siamcafe.net ในเบราว์เซอร์ กระบวนการค้นหา IP มีดังนี้:
# ค้นหา DNS Record ด้วย nslookup
nslookup siamcafe.net
nslookup -type=MX siamcafe.net
nslookup -type=NS siamcafe.net
# ใช้ dig (ข้อมูลละเอียดกว่า)
dig siamcafe.net A
dig siamcafe.net MX +short
dig siamcafe.net ANY +noall +answer
# Trace DNS Resolution path ทั้งหมด
dig siamcafe.net +trace
DHCP (Dynamic Host Configuration Protocol) เป็นโปรโตคอลที่แจก IP Address และค่า Network Configuration ให้อุปกรณ์ในเครือข่ายโดยอัตโนมัติ ทำให้ไม่ต้องตั้งค่า IP ด้วยมือทีละเครื่อง
กระบวนการขอ IP จาก DHCP Server มี 4 ขั้นตอนที่เรียกว่า DORA:
# ดูข้อมูล DHCP Lease บน Linux
cat /var/lib/dhcp/dhclient.leases
# ขอ IP ใหม่จาก DHCP
sudo dhclient -r eth0 # ปล่อย IP เดิม
sudo dhclient eth0 # ขอ IP ใหม่
# Windows
ipconfig /release
ipconfig /renew
ipconfig /all # ดูข้อมูล DHCP ทั้งหมด
HTTPS = HTTP + TLS (Transport Layer Security) ใช้การเข้ารหัสข้อมูลระหว่าง Client กับ Server ทำให้ผู้โจมตีไม่สามารถดักอ่านข้อมูลได้ กระบวนการ TLS Handshake ประกอบด้วยการแลกเปลี่ยน Certificate, ตรวจสอบตัวตน Server และสร้าง Session Key สำหรับเข้ารหัสข้อมูล
| รหัส | ความหมาย | พบเมื่อ |
|---|---|---|
| 200 | OK — สำเร็จ | Request ปกติ |
| 201 | Created — สร้างสำเร็จ | POST สร้างข้อมูลใหม่ |
| 301 | Moved Permanently | Redirect ถาวร (SEO) |
| 302 | Found (Temporary Redirect) | Redirect ชั่วคราว |
| 400 | Bad Request | Request ไม่ถูกรูปแบบ |
| 401 | Unauthorized | ไม่ได้ Login |
| 403 | Forbidden | ไม่มีสิทธิ์เข้าถึง |
| 404 | Not Found | ไม่พบ Resource |
| 429 | Too Many Requests | ถูก Rate Limit |
| 500 | Internal Server Error | Server มีปัญหา |
| 502 | Bad Gateway | Reverse Proxy ติดต่อ Backend ไม่ได้ |
| 503 | Service Unavailable | Server โหลดสูง/Maintenance |
# Request Headers ที่ควรรู้
GET /api/users HTTP/1.1
Host: api.example.com
Authorization: Bearer eyJhbGciOiJIUzI1NiJ9...
Content-Type: application/json
Accept: application/json
User-Agent: MyApp/1.0
Cache-Control: no-cache
# Response Headers ที่สำคัญ
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Cache-Control: max-age=3600
X-RateLimit-Limit: 100
X-RateLimit-Remaining: 95
Strict-Transport-Security: max-age=31536000
Content-Security-Policy: default-src 'self'
Routing คือกระบวนการตัดสินใจว่า Packet จะถูกส่งไปทางไหนเพื่อไปถึงปลายทาง Router จะดู Routing Table เพื่อเลือกเส้นทางที่ดีที่สุด
ตั้งค่าเส้นทางด้วยมือ เหมาะกับเครือข่ายเล็กที่ไม่ค่อยเปลี่ยนแปลง
# Linux: เพิ่ม Static Route
sudo ip route add 10.0.2.0/24 via 192.168.1.1 dev eth0
ip route show # ดู Routing Table
# Windows
route add 10.0.2.0 mask 255.255.255.0 192.168.1.1
route print # ดู Routing Table
ใช้ Routing Protocol ให้ Router แลกเปลี่ยนข้อมูลเส้นทางกันอัตโนมัติ ปรับตัวเมื่อเครือข่ายเปลี่ยนแปลง
NAT (Network Address Translation) แปลง Private IP เป็น Public IP เมื่อส่งข้อมูลออกอินเทอร์เน็ต ทำให้อุปกรณ์หลายเครื่องในเครือข่ายภายในใช้ Public IP เดียวกันได้ เช่น ที่บ้านมีคอมพิวเตอร์ 5 เครื่องแต่มี Public IP เดียว
Port Forwarding คือการตั้งค่าให้ Router ส่ง Traffic ที่เข้ามาทาง Port ที่กำหนดไปยังเครื่องภายในเครือข่าย เช่น ส่ง Port 80 ไปที่ Web Server ภายใน หรือ Port 22 ไปที่ SSH Server ใช้ในการเปิดให้เข้าถึงบริการภายในจากอินเทอร์เน็ต
# ดู NAT Table บน Linux (iptables)
sudo iptables -t nat -L -n -v
# Port Forward: Port 8080 ภายนอก → Port 80 ภายในที่ 192.168.1.100
sudo iptables -t nat -A PREROUTING -p tcp --dport 8080 \
-j DNAT --to-destination 192.168.1.100:80
sudo iptables -t nat -A POSTROUTING -j MASQUERADE
เครื่องมือเหล่านี้ช่วยให้คุณตรวจสอบ วิเคราะห์ และแก้ปัญหาเครือข่ายได้อย่างมีประสิทธิภาพ ทุกเครื่องมือมีอยู่ในระบบ Linux เป็นมาตรฐาน
# ทดสอบว่าเชื่อมต่อถึงปลายทางหรือไม่
ping -c 4 siamcafe.net # Linux: ส่ง 4 packets
ping -n 4 siamcafe.net # Windows
# ผลลัพธ์: round-trip time (RTT), packet loss
# ดูว่า Packet ผ่าน Router กี่ตัวก่อนถึงปลายทาง
traceroute siamcafe.net # Linux
tracert siamcafe.net # Windows
# ช่วยระบุจุดที่ Latency สูงหรือ Packet หาย
# ดู Port ที่เปิดอยู่และการเชื่อมต่อ
ss -tlnp # Linux: TCP Listening ports + Process
netstat -an | findstr LISTEN # Windows
# ดูการเชื่อมต่อทั้งหมดของ Process
ss -tp | grep nginx
# จับ Packet ที่ Port 80 บน Interface eth0
sudo tcpdump -i eth0 port 80 -n -c 20
# จับ Packet เฉพาะ IP ที่กำหนด
sudo tcpdump -i eth0 host 192.168.1.100
# บันทึกเป็นไฟล์ .pcap เพื่อวิเคราะห์ใน Wireshark
sudo tcpdump -i eth0 -w capture.pcap -c 1000
Wireshark เป็น GUI Network Analyzer ที่ทรงพลังมาก สามารถจับและวิเคราะห์ Packet ได้ละเอียดทุก Layer แสดง Protocol Hierarchy, Follow TCP Stream, Filter ข้อมูลด้วย Display Filter เช่น http.request.method == "POST" หรือ tcp.port == 443 && tls.handshake เหมาะกับการ Debug ปัญหาเครือข่ายที่ซับซ้อน
host 192.168.1.100 and port 443) จะลด Load และทำให้วิเคราะห์ง่ายขึ้น Display Filter ใช้กรองข้อมูลหลังจับแล้ว ทั้งสองใช้ Syntax คนละแบบ
nslookup หรือ digip route หรือ route printiptables -L หรือ ufw statusping -M do -s 1472 เพื่อหาค่าที่เหมาะสมss -tlnp หรือ netstat -anQ: TCP/IP กับ OSI Model ต่างกันอย่างไร?
A: OSI เป็นโมเดลทางทฤษฎี 7 ชั้นที่ใช้เป็นกรอบอ้างอิง ส่วน TCP/IP เป็นโมเดลที่ใช้งานจริงบนอินเทอร์เน็ต มี 4 ชั้น ในการทำงานจริงเราใช้ TCP/IP แต่อ้างอิง OSI ในการอธิบายและ Troubleshoot
Q: ทำไม IPv6 ยังไม่แพร่หลาย?
A: เพราะ NAT ช่วยยืดอายุ IPv4 ได้มาก และการเปลี่ยนไปใช้ IPv6 ต้องอัพเกรดอุปกรณ์และซอฟต์แวร์ทั้งระบบ ซึ่งมีต้นทุนสูง อย่างไรก็ตาม IPv6 Adoption กำลังเพิ่มขึ้นเรื่อยๆ โดยเฉพาะใน Mobile Network
Q: Port 80 กับ 443 ต่างกันอย่างไร?
A: Port 80 ใช้สำหรับ HTTP (ไม่เข้ารหัส) ส่วน Port 443 ใช้สำหรับ HTTPS (เข้ารหัสด้วย TLS) ปัจจุบันเว็บไซต์ควรใช้ HTTPS เท่านั้นเพื่อความปลอดภัย และ Google ให้คะแนน SEO กับเว็บที่ใช้ HTTPS สูงกว่า
Q: Developer ต้องรู้ Networking ลึกแค่ไหน?
A: ควรเข้าใจ DNS, HTTP/HTTPS, TCP vs UDP, IP/Port, Firewall เป็นอย่างน้อย ถ้าทำ Backend หรือ DevOps ควรรู้ Subnetting, NAT, Load Balancing, Reverse Proxy เพิ่มเติม ศึกษาเพิ่มเติมใน บทความ Docker และ Kubernetes ที่ต้องใช้ความรู้ Networking เข้มข้น
Q: จะเรียน CCNA ได้ที่ไหน?
A: ศึกษาเพิ่มเติมได้ที่ คู่มือ CCNA 200-301 ที่ SiamLanCard ซึ่งมีเนื้อหาภาษาไทยครบถ้วน