แอปพลิเคชันเครือข่าย (Network Applications) คือโปรแกรมคอมพิวเตอร์ที่มีส่วนร่วมในเครือข่ายคอมพิวเตอร์ แอปพลิเคชันเหล่านี้สื่อสารกันผ่านการเชื่อมต่อกับเครือข่าย
ตัวอย่างเช่น เมื่อคุณเข้าชม google.com เบราว์เซอร์ของคุณทำหน้าที่เป็นแอปพลิเคชันเครือข่ายที่ใช้งานอินเทอร์เน็ตเพื่อสื่อสารกับแอปพลิเคชันเครือข่ายที่ทำงานบนคอมพิวเตอร์ของ Google
โดยทั่วไป กลไกการสื่อสารนี้จะถูกซ่อนไว้จากนักพัฒนาแอปพลิเคชัน (Application Developer)
บนพื้นผิว การสื่อสารนี้อาจดูเหมือนการสื่อสารระหว่างกระบวนการ (Inter-Process Communication) ระหว่างสองแอปพลิเคชันที่ทำงานบนคอมพิวเตอร์เครื่องเดียวกัน แต่การสื่อสารผ่านเครือข่ายมีชุดความท้าทายที่แตกต่างออกไป
ตัวอย่างเช่น การสื่อสารอาจใช้เวลานานมากในมุมมองของคอมพิวเตอร์ แสงใช้เวลา 0.1337 วินาที (2 * 3.14 * 6400 / 30000) ในการเดินทางรอบโลก สมมติ CPU แบบธรรมดาทำงานที่ 1 GHz สามารถทำได้ 10^9 การดำเนินการใน 1 วินาที
สมมติว่าการสื่อสารระหว่างกระบวนการ (บนเครื่องเดียวกัน) ใช้เพียงไม่กี่การดำเนินการ ประมาณ 10^-7 - 10^-8 วินาที นั่นแปลว่า การสื่อสารกับคอมพิวเตอร์อีกฝั่งของโลกช้ากว่าประมาณ 1 ล้านเท่า!
บทความนี้จะมาดูว่าแอปพลิเคชันเครือข่ายสื่อสารกันอย่างไร โดยเฉพาะผ่านอินเทอร์เน็ต สำหรับภาพรวมระดับสูงของอินเทอร์เน็ต ดูได้จากบทความนี้
บทนำสู่เครือข่ายคอมพิวเตอร์
ความซับซ้อนเพิ่มเติมในการสื่อสารผ่านเครือข่ายคือ ความหลากหลายของระบบปลายทาง (End Systems) เช่น โทรศัพท์มือถือ แล็ปท็อป Windows Mac ความซับซ้อนนี้ได้รับการจัดการโดยการสรุปความแตกต่างและนำชุดกฎที่เหมือนกันมาใช้ เรียกว่า โปรโตคอล (Protocols)
โปรโตคอลเป็นโครงสร้างพื้นฐานของการสื่อสารระหว่างแอปพลิเคชันเครือข่าย โปรโตคอลยอดนิยมบางตัว ได้แก่ HTTP, TCP, IP, SMTP คล้ายกับภาษามนุษย์ (เช่นภาษาอังกฤษ) ที่ช่วยให้คนหลากหลายสื่อสารได้อย่างมีความหมาย โปรโตคอลก็เติมช่องว่างคล้ายกันในการสื่อสารผ่านเครือข่าย
การสื่อสารผ่านเครือข่ายเป็นเรื่องท้าทายเนื่องจากขนาดและความไม่แน่นอนที่เป็นเอกลักษณ์ของเครือข่าย
ตัวอย่างเช่น ลิงก์อาจติดขัด ทำให้แพ็กเก็ต (Packets) ถูกทิ้ง กลยุทธ์หนึ่งในการแก้ปัญหาที่ซับซ้อนคือ แบ่งปัญหาย่อย แก้ปัญหาย่อยแต่ละข้อ แล้วรวมกันเพื่อแก้ปัญหาเดิม
Protocol Stack ใช้แนวคิดนี้เพื่อแก้ปัญหาการสื่อสารผ่านเครือข่าย
ลองจินตนาการว่าคุณกำลังสร้างเว็บไซต์ขายพิซซ่า เมื่อผู้ใช้โต้ตอบกับเว็บไซต์ของคุณ Frontend จำเป็นต้องสื่อสารกับ Backend Server ไม่ดีไหมถ้าคุณสามารถโฟกัสสร้างร้านพิซซ่าออนไลน์โดยไม่ต้องกังวลว่าข้อมูลจะถูกส่งผ่านจาก Frontend ไป Backend ผ่านอินเทอร์เน็ตอย่างไร
Protocol Stack ดูแลการสื่อสารผ่านเครือข่ายให้เรา แอปพลิเคชัน (Frontend) ใช้ Application Layer เพื่อสื่อสารกับแอปพลิเคชันอื่น (Backend)
Application Layer ใช้ "บริการ" ที่ Transport Layer จัดเตรียม เพื่อส่งข้อมูลข้ามเครือข่าย Transport Layer ก็ใช้บริการจาก Network Layer เพื่อปฏิบัติตามข้อตกลงบริการ
เช่นนี้ ชั้นบนใช้บริการจากชั้นล่างเพื่อสื่อสารกับแอปพลิเคชันอื่นผ่านเครือข่าย Physical Layer ประกอบด้วยสายไฟที่ส่งสัญญาณไฟฟ้า
โดยสรุป Protocol Stack ประกอบด้วยหลายชั้น แต่ละชั้นโฟกัสแก้ปัญหาส่วนหนึ่งของปัญหาใหญ่
โปรโตคอลอธิบายวิธีแก้ปัญหาย่อย ทำให้ได้ชื่อ Protocol Stack โดยทั่วไป โปรโตคอลกำหนดกฎการสื่อสารระหว่างสองเอนทิตี้ เช่น
- ประเภทข้อความ เช่น ข้อความขอ (Request) และข้อความตอบ (Response)
- ไวยากรณ์ของประเภทข้อความต่างๆ เช่น ฟิลด์ในข้อความ
- ความหมายของฟิลด์ (Semantics) คือ ความหมายของข้อมูลในฟิลด์
- กฎในการกำหนดเมื่อไหร่และอย่างไรที่ข้อความถูกส่งและตอบกลับ
ลองเจาะลึกลงไปใน Protocol Stack เริ่มจากชั้นบนสุด
ชั้นแอปพลิเคชัน (Application Layer)
แอปพลิเคชันทางธุรกิจใช้ Application Layer เพื่อสื่อสารผ่านเครือข่าย ตัวอย่างเช่น การสั่งซื้อที่ร้านพิซซ่าออนไลน์ของคุณ ทำผ่าน Application Layer HTTP เป็นตัวเลือกหนึ่งในการส่งข้อมูลไปยัง Backend Server
Application Layer Protocols กำหนดว่าแอปพลิเคชันที่ทำงานบน End Systems ต่างๆ ส่งข้อความกันอย่างไร นอกจากกฎการสื่อสาร (โปรโตคอล) แอปพลิเคชันยังต้องมีวิธีค้นหากัน นั่นคือ การกำหนดที่อยู่ (Addressing) ที่อยู่ของแอปพลิเคชันถูกกำหนดโดย:
- IP Address: ตัวเลขระบุตัวตนที่มอบให้กับ End System
- Port Number: ตัวระบุที่ระบุกระบวนการรับฝั่งปลายทาง Port Number จำเป็นเพื่อรองรับหลายแอปพลิเคชันเครือข่ายทำงานบนโฮสต์เดียวกัน เช่น แท็บสองแท็บในเบราว์เซอร์ทำหน้าที่เป็นกระบวนการที่ต่างกัน
ที่อยู่ของแอปพลิเคชันกำหนดตัวตนบนเครือข่าย และโปรโตคอลกำหนดกฎการสื่อสาร ร่วมกันเป็น Socket Address (ประเภทโปรโตคอล, IP Address, Port Number)
Socket เป็นอินเทอร์เฟซระหว่าง Application Layer และ Transport Layer ทำหน้าที่เป็นจุดเข้าสู่เครือข่าย นั่นคือ แอปพลิเคชันส่งข้อความเข้าและรับข้อความเครือข่ายผ่าน Socket ของมัน
สรุป: แอปพลิเคชันสื่อสารกันใช้ Application Layer Protocols Application Layer พึ่งพาบริการจาก Transport Layer เพื่อส่งข้อมูลระหว่าง End Systems คู่ของ IP Address และ Port Number ระบุแอปพลิเคชัน ข้อมูลไหลจากแอปพลิเคชันเข้าสู่เครือข่ายผ่าน Socket
ลองดูตัวอย่างสองแอปพลิเคชันสื่อสารผ่านอินเทอร์เน็ตใช้ HTTP
HTTP เป็นโปรโตคอล Application Layer ยอดนิยม การสื่อสารระหว่างเบราว์เซอร์เว็บของผมกับแอปพลิเคชันเซิร์ฟเวอร์ (ilovecookies.com) เมื่อผมป้อนที่อยู่นี้ในเบราว์เซอร์ มันส่ง HTTP Request Message ไปยังแอปพลิเคชันเซิร์ฟเวอร์
สังเกตจุดสำคัญของ Request Message นี้:
- ประเภทคำขอคือ GET
- โฮสต์ที่ส่งข้อความไปคือ ilovecookies.com (Hostname คือรูปแบบอ่านง่ายของ IP Address)
- เครื่องต้นทางรับรูปแบบการตอบกลับ ภาษา เฉพาะเจาะจง
โครงสร้างนี้เป็นส่วนของ HTTP ที่กำหนดกฎการสื่อสารระหว่างสองแอปพลิเคชัน เมื่อแอปพลิเคชันฝั่งโฮสต์ได้รับข้อความนี้ มันจะตอบกลับด้วย Response Message
เราสังเกตเห็นว่า Response Message มีข้อมูลเฉพาะโปรโตคอล เช่น Status Code (200), Content Type และอื่นๆ รวมถึงข้อมูล HTML (ย่อเพื่อให้พอดี) คู่ Request-Response นี้เป็นการสื่อสารผ่านเครือข่ายระหว่างสองแอปพลิเคชันที่จัดหน้าเว็บ (ilovecookies.com) ให้แสดงบนหน้าจอของผมสำเร็จ
ชั้นขนส่ง (Transport Layer)
ต่อไป มาลงไปหนึ่งระดับใน Protocol Stack เพื่อเข้าใจว่า Transport Layer ช่วยการสื่อสารผ่านเครือข่ายอย่างไร
Transport Layer จัดหา การสื่อสารเชิงตรรกะ (Logical Communication) ระหว่างแอปพลิเคชันที่ทำงานบนโฮสต์ต่างกัน: จากมุมมองของแอปพลิเคชัน มันเหมือนว่าสองโฮสต์เชื่อมต่อโดยตรง โปรดทราบว่า การสื่อสารที่ Transport Layer จัดหานั้นเป็นเชิงตรรกะ ไม่ใช่ทางกายภาพ: ไม่มีลิงก์หรือสายไฟเชื่อมต่อ End Hosts โดยตรง
Transport Layer แปลงข้อความแอปพลิเคชันเป็นชิ้นเล็กๆ บรรจุแต่ละชิ้นใน Transport Message พร้อม Header และส่งชิ้นส่วนนั้นไปยัง Network Layer
เหตุผลในการแบ่งข้อมูลเป็นชิ้นคือ การใช้งานเครือข่ายอย่างมีประสิทธิภาพ อินเทอร์เน็ตใหญ่โตมาก จนมีหลายเส้นทางขนานส่งข้อมูลระหว่างสอง End Hosts
ตัวอย่าง มีสองเส้นทางไประหว่างนิวยอร์กและสแตมฟอร์ด อินเทอร์เน็ตเป็นรูปแบบรุนแรงของแนวคิดนี้
ลำดับสัมพัทธ์ของแพ็กเก็ตเป็นคำถามที่เป็นธรรมชาติเมื่อมีการแบ่งชิ้นและใช้เครือข่ายอย่างมีประสิทธิภาพ: ชิ้นส่วนต้องถูกประกอบกลับในลำดับเดิมที่โฮสต์ปลายทาง Transport Layer ที่โฮสต์รับมีหน้าที่เย็บชิ้นส่วนกลับในลำดับที่ถูกต้อง
Transport Layer ยังต้องการข้อมูลเพิ่มเติมที่เกี่ยวข้องกับหน้าที่ของมัน ตัวอย่างเช่น เลขลำดับสัมพัทธ์ถูกเพิ่มเข้าไปในชิ้นส่วนเพื่อเย็บข้อความแอปพลิเคชันกลับ
ตัวอย่างอีกอย่างของข้อมูลเฉพาะ Transport Layer คือ Port Number บนโฮสต์รับ Destination Port Number ช่วยส่งข้อความไปยังแอปพลิเคชันที่ถูกต้อง
อินเทอร์เน็ตจัดเตรียมโปรโตคอล Transport Layer สองตัว:
- User Datagram Protocol (UDP)
- Transmission Control Protocol (TCP)
โปรโตคอลทั้งสองแตกต่างเล็กน้อยในบริการขนส่งที่จัดให้ Application Layer
| TCP | UDP |
|---|---|
| การส่งข้อมูลเชื่อถือได้ (Reliable data transfer) | การส่งข้อมูลไม่เชื่อถือได้ (Unreliable data transfer) |
| ข้อมูลที่สูญหายหรือเสียหายจะกู้คืนโดยการส่งซ้ำ | ไม่มีกลไกกู้คืนข้อมูลที่สูญหายหรือเสียหาย |
| Latency สูงกว่า เพื่อแลกกับการสื่อสารที่เชื่อถือได้ | Latency ต่ำกว่า เพื่อแลกกับการสื่อสารที่ไม่เชื่อถือได้ |
ความต้องการบริการของแอปพลิเคชันกำหนดโปรโตคอลที่ควรเลือก ตัวอย่างเช่น ระบบชำระเงินต้องการการสื่อสารเชื่อถือได้ (TCP) ในขณะที่บริการสตรีมวิดีโออาจยอมรับการสูญเสียข้อมูลบ้างเพื่อความเร็ว (UDP)
สรุป: Transport Layer แยกข้อความแอปพลิเคชันเป็นชิ้นและบรรจุในข้อความที่มีข้อมูลเฉพาะ Transport Layer ชิ้นส่วนถูกประกอบกลับในลำดับถูกต้องบนระบบรับเพื่อสร้างข้อความใหม่และส่งไปยังแอปพลิเคชันที่เหมาะสมใช้ Port Number
ต่อตัวอย่างการสื่อสาร HTTP ระหว่างเบราว์เซอร์ของผมกับแอปพลิเคชันเซิร์ฟเวอร์
คุณสังเกตได้ว่า Decoded Bytes ด้านล่างขวา แสดง HTTP GET Request ที่เบราว์เซอร์ส่งไปยังแอปพลิเคชันเซิร์ฟเวอร์ เราเห็น HTTP Request เป็น TCP Payload Field ในแพ็กเก็ตนี้
นอกจากนี้ แพ็กเก็ตนี้เป็นอันดับแรกในลำดับสัมพัทธ์ มี Sequence Number 1 ยังมี Port Number (65012) ที่เกี่ยวกับแท็บบนเบราว์เซอร์ของผม และ Destination Port Number (80) บนแอปพลิเคชันเซิร์ฟเวอร์
แสดง TCP Packet สองอันแรกจาก HTTP Response (57 TCP Packets) ในมุมล่างขวาของทั้งสองภาพ เราเห็นข้อมูลเฉพาะ HTTP และ HTML บางส่วนของเว็บเพจ ilovecookies.com
คุณยังเห็นข้อมูลเฉพาะ Transport Layer เช่น Port Numbers และ Sequence Numbers สังเกตว่า Source และ Destination Port Numbers สลับกันเทียบกับ Request Message Packets
ชั้นเครือข่าย (Network Layer)
ต่างจาก Transport Layer Network Layer จัดหาการสื่อสารเชิงตรรกะระหว่างสอง End Hosts โปรดสังเกตความแตกต่างเล็กน้อยระหว่างบริการ Transport และ Network Layer
Network Layer รับ Transport Packet จาก Transport Layer และบรรจุใน Network Packet การบรรจุนี้ช่วยเพิ่มข้อมูลเฉพาะการทำงานของโปรโตคอล Network Layer
Network Layer จัดหาบริการ Best-Effort (ไม่รับประกันเวลา ลำดับสัมพัทธ์ การส่งมอบในที่สุด) เพื่อเคลื่อนย้ายข้อมูลระหว่างสองโฮสต์ บริการ Best-Effort นี้เป็นแรงจูงใจของ TCP เนื่องจากโปรโตคอล Network Layer ไม่เชื่อถือได้โดยปัจจุบัน TCP จึงมีตรรกะเพิ่มเติมเพื่อให้การส่งข้อมูลเชื่อถือได้
Network Layer มีหน้าที่เคลื่อนย้ายแพ็กเก็ตจากโฮสต์ส่งไปยังโฮสต์รับ นอกจาก End Hosts โปรโตคอล Network Layer ยังทำงานบน Routers (เราเตอร์) ส่วนหนึ่งของ Network Core Routers เป็นอุปกรณ์สลับแพ็กเก็ต (Packet Switching Devices) ที่มีหน้าที่ส่งต่อแพ็กเก็ต
สมมติ End Host 1 ต้องการส่งแพ็กเก็ตไป End Host 2 End Host 1 ส่งแพ็กเก็ตให้ Router Router ดูข้อมูลใน Network Packet และคิดว่า ต้องส่งต่อแพ็กเก็ตบน Link 2 ซึ่ง End Host 2 เชื่อมต่ออยู่
ทุก Router มี Forwarding Table เก็บใน RAM (สร้างแบบไดนามิก) เพื่อระบุลิงก์ส่งต่อที่ถูกต้องสำหรับแพ็กเก็ต ตัวอย่าง ตาราง Routing สำหรับการตั้งค่าข้างต้นจะเป็นแบบนี้:
| Address | Link |
|---|---|
| 192.168.1.1 | Link 1 |
| 168.134.1.1 | Link 2 |
| 172.158.1.2 | Link 3 |
Routers ใช้ข้อมูล (Destination Host Address) จาก Network Packet เพื่อดัชนี (Bitwise XOR) เข้า ตารางนี้ คุณสามารถดู Routing Table บนคอมพิวเตอร์ได้โดยรันคำสั่ง:
Mac: netstat -nrf inet
Linux: netstat -nr
Windows: Get-NetRoute -AddressFamily IPv4
สังเกต Entry เฉพาะใน Routing Table ของคุณ Default หรือ 0.0.0.0 เรียกว่า Default Gateway แพ็กเก็ตจะถูกส่งไป Default Gateway หากไม่มี Entry ใดตรงกับ Destination Address
อินเทอร์เน็ตมีอุปกรณ์แบบนี้จำนวนมาก ส่งต่อแพ็กเก็ตเพื่อให้เกิดการสื่อสารเชิงตรรกะระหว่างสอง End Hosts
เนื่องจากทุกคนใช้ Router และสายไฟขนข้อมูลร่วมกันบนอินเทอร์เน็ต Routers มีคิว (Queues) เก็บแพ็กเก็ตเข้ามา ในขณะที่แพ็กเก็ตออกถูกประมวลผล (ส่งต่อ) โดย Router ความไม่เชื่อถือเกิดในโปรโตคอล Network Layer หากคิวเต็ม ซึ่งอาจแน่นเมื่อトラフィกเพิ่มขึ้น
โปรโตคอลเครือข่ายของอินเทอร์เน็ตเรียกว่า Internet Protocol (IP) องค์ประกอบหลักของ Internet Network Layer คือ
- IP: กำหนดข้อตกลงการกำหนดที่อยู่ (IPv4, IPv6), รูปแบบแพ็กเก็ต, ข้อตกลงการจัดการแพ็กเก็ต
- Routing Protocols: กำหนดเส้นทางที่แพ็กเก็ตเดินจากต้นทางไปปลายทาง
- ICMP: สถานการณ์รายงานข้อผิดพลาดในแพ็กเก็ตและตอบสนองคำขอข้อมูล Network Layer บางอย่าง
สรุป: Network Layer จัดหาการสื่อสารเชิงตรรกะระหว่างสอง End Hosts โปรโตคอล Network Layer ทำงานบน End Hosts และอุปกรณ์ Network Core เช่น Routers Routers ส่งต่อ Network Packets ช่วยสร้างการสื่อสารเชิงตรรกะระหว่างสอง End Hosts
ต่อตัวอย่างการสื่อสารกับ ilovecookies.com
เราเห็นว่าเบราว์เซอร์ของผมสร้าง HTTP Request Message (Application Layer Protocol) และส่งลงไป Transport Layer ซึ่งใช้ TCP Protocol สำหรับการสื่อสาร End-to-End ระหว่างแอปพลิเคชันเบราว์เซอร์ของผมกับเซิร์ฟเวอร์แอปพลิเคชัน (ilovecookies.com)
เราเห็นว่า Network Packet บรรจุ TCP Packet ซึ่งบรรจุ Application Packet ข้อความสีเขียวแทนเนื้อหา Network Packet สีเหลืองแทน Transport Packet และข้อความที่เหลือเริ่มจาก GET คือ Application Packet
ฟิลด์ Network Packet เกี่ยวข้องกับการทำงานของมัน ตัวอย่าง Source Address คือ IP Address ของเครื่องผม และ Destination Address คือ Address ของเซิร์ฟเวอร์ ilovecookies.com
การบรรจุ (Encapsulation) และข้อมูลเฉพาะชั้นในแพ็กเก็ตยังเกี่ยวข้องกับแนวคิดการสื่อสารเชิงตรรกะระหว่างโฮสต์และแอปพลิเคชันที่ทำงานบนมัน
เช่น Network Packet รวม IP Addresses ของเครื่องปลายทาง ในขณะที่ Transport Packet มีแค่ Port Numbers Transport Layer พึ่งพา Network Layer ย้ายข้อมูลระหว่างเครื่องปลายทาง เมื่อข้อมูลถึงเครื่องรับ Transport Layer ทำหน้าที่ส่งแพ็กเก็ตไปแอปพลิเคชันที่ถูกต้องใช้ Port Numbers ใน Transport Packet
ชั้นลิงก์ (Link Layer)
เทียบกับชั้นที่เห็นมาจนถึงตอนนี้ Link Layer มีขอบเขตแคบกว่า: จัดหาบริการย้ายแพ็กเก็ตผ่านลิงก์แต่ละลิงก์ในเส้นทาง End-to-End
ตัวอย่าง ลิงก์คือเส้นประสีแดง (ดูภาพประกอบข้างต้น) Link Layer ทำให้เกิดการเคลื่อนย้าย Node-to-Node ของ Network Layer Packets ผ่านลิงก์เดี่ยวในเส้นทาง
Link Layer Protocol กำหนด:
- รูปแบบแพ็กเก็ตที่แลกเปลี่ยนระหว่างโหนดปลายลิงก์
- การกระทำที่โหนดเหล่านั้นทำกับแพ็กเก็ต
Network Adapter ใช้งาน Link Layer Protocols Network Adapter ประกอบด้วยฮาร์ดแวร์ทางกายภาพที่ทำให้คอมพิวเตอร์เชื่อมต่อเครือข่ายและแลกเปลี่ยนข้อมูลได้
ลองรันคำสั่งนี้เพื่อดูรายการ Network Adapters ในคอมพิวเตอร์:
Mac: networksetup -listallhardwareports
Linux: lshw -class network -short
Windows: Get-NetAdapter -Name *
ในผลลัพธ์ คุณจะสังเกตว่าแต่ละอุปกรณ์มีที่อยู่ Link Layer เรียกว่า MAC Address ROM ของ Adapter มี MAC Addresses มอบหมายตอนผลิต ถือว่าคงที่ ทุก Node (Hosts และ Routers) มีที่อยู่ Link Layer ตามเส้นทาง
ก่อนหน้านี้เราพูดถึง IP Address ซึ่งก็เป็นตัวระบุอุปกรณ์เช่นกัน สถานการณ์คล้ายการมีตัวระบุหลายตัว: ที่อยู่บ้านและเลขประจำตัวประชาชน มีหลายเหตุผลที่ Node มี MAC Address และ Network Layer Address
- โปรโตคอลในชั้นต่างๆ ควรสามารถสลับได้ เช่น IPX ไม่ใช้ Network Layer Address
- IP Addresses เก็บใน RAM และตั้งค่าใหม่ทุกครั้งที่ Adapter ย้ายหรือเปิดเครื่อง นั่นคือ ชั่วคราว
- สมมติโปรโตคอลละ MAC Addresses Adapter จะต้องส่งแพ็กเก็ตทุกตัวขึ้น Protocol Stack Network Layer จะเช็ค IP Address Match แต่สิ่งนี้อาจไม่มีประสิทธิภาพหากทำบ่อยเกินไป: Interrupts ช่วยส่งแพ็กเก็ตซึ่งมีค่าใช้จ่ายสูง
สรุป: เพื่อให้ชั้นต่างๆ เป็นบล็อกสร้างสรรค์ที่เป็นอิสระในสถาปัตยกรรมเครือข่าย หลายชั้นต้องมีระบบกำหนดที่อยู่ของตัวเอง
สรุปย้อนกลับ เราเจอที่อยู่ 3 ประเภทจนถึงตอนนี้:
- Hostnames สำหรับ Application Layer (ilovecookies.com) แปลงเป็น IP Addresses ใช้ DNS
- IP Address สำหรับ Network Layer
- MAC Address สำหรับ Link Layer
เช่นเดียวกับ Domain Name System ที่ช่วย Resolve IP Addresses จาก Hostnames Address Resolution Protocol (ARP) ช่วยกำหนด (Destination) MAC Addresses จาก IP Address
ARP สร้างตารางใน RAM ที่มี Mapping IP Address ไป MAC Address โปรโตคอลรวมข้อกำหนด (เช่นแพ็กเก็ตเฉพาะ) สำหรับสร้างตารางนี้อัตโนมัติ
Network Layer ส่งแพ็กเก็ตและ MAC Address (จาก ARP Table) ของโหนดปลายทางไป Link Layer Link Layer บรรจุแพ็กเก็ตใน Link Layer Packet และเคลื่อนย้ายตามลิงก์ไปโหนดปลายทาง
สมมติใน Setup ข้างต้น โฮสต์ 222.222.222.220 ต้องการส่งแพ็กเก็ตไปอีกโฮสต์ 222.222.222.222 Network Layer ใช้ ARP Resolve MAC Address เป็น 49-BD-D2-C7-56-A2 และส่งแพ็กเก็ตและ MAC Address ไป Link Layer Link Layer ย้ายแพ็กเก็ตผ่านลิงก์ระหว่างสองโฮสต์
ต่อไป พิจารณาสถานการณ์ซับซ้อนกว่า โฮสต์ต้องการส่งแพ็กเก็ตไปอีกโฮสต์บนเครือข่ายต่างกัน ตัวอย่าง แพ็กเก็ตจากคอมพิวเตอร์ผมไป ilovecookies.com เดินทางจากเครือข่ายบ้านไปอีกเครือข่าย
มีสองสิ่งสังเกตในภาพนี้ 第一 Router มีสอง IP Addresses เนื่องจาก Router มีส่วนร่วมในสองเครือข่ายต่างกัน จึงต้องมีสอง IP Addresses ระบุตัวตนในเครือข่ายแต่ละอัน 第二 สองเครือข่ายแยกกันเรียกว่า Subnets Subnet คือการจัดกลุ่มอุปกรณ์เครือข่ายแบบตรรกะ ทำให้การจัดการอุปกรณ์เครือข่ายง่ายขึ้น
สมมติใน Setup นี้ โฮสต์ 222.222.222.222 ต้องการส่งแพ็กเก็ตไปโฮสต์ 111.111.111.111 ซึ่งเกี่ยวข้องกับการเดินทางข้ามเครือข่าย มันจะไม่พบโฮสต์ปลายทาง (111.111.111.111) ใน Subnet ของมัน และส่งต่อแพ็กเก็ตไป Default Gateway (Router)
Network Layer ใช้ ARP Table Resolve MAC Address เป็น 88-B2-2F-54-1A-0F Router ใช้ Routing Table ส่งแพ็กเก็ตไปลิงก์เชื่อมต่อ Subnet อีกอัน อีกครั้ง ARP Table ช่วย Resolve MAC Address ของโฮสต์ปลายทาง และแพ็กเก็ตเคลื่อนย้ายตามลิงก์
สรุป: Adapter ส่วนของฮาร์ดแวร์คอมพิวเตอร์ ใช้งาน Link Layer Protocols Link Layer Protocol กำหนดระบบที่อยู่เรียกว่า MAC Addresses และ ARP ใช้ Map IP Addresses ไป MAC Addresses Link Layer บรรจุ Network Layer Packets และย้ายผ่านลิงก์
หนึ่งใน Link Layer Protocols ยอดนิยมคือ Ethernet ลองต่อตัวอย่าง (ilovecookies.com) เพื่อดู Ethernet Protocol ทำงาน
เราสังเกตได้ว่า Ethernet Packet มี Destination และ Source MAC Addresses (ละเลย) และบรรจุ IP Packet
สรุป
ลองสรุปสิ่งที่เราเห็นในบทความนี้ใช้ภาพด้านล่าง
แอปพลิเคชันคอมพิวเตอร์ที่ทำงานบนสองระบบต่างกัน (เรียกว่า Hosts) สื่อสารใช้ Protocols
Protocols เป็นกฎที่ควบคุมการสื่อสารระหว่างสองโฮสต์ Protocol Stack แก้ปัญหาย่อยหลายข้อเพื่อแก้ปัญหาการสื่อสารผ่านเครือข่าย แต่ละชั้นโฟกัสแก้ปัญหาย่อยใช้บริการที่ชั้นล่างเสนอในลำดับชั้นนามธรรม
Application Layer Protocols ทำงานระดับนามธรรมสูงสุด แอปพลิเคชันสื่อสารโดยส่งข้อความที่ปฏิบัติตามกฎของ Application Protocol (เช่น HTTP)
DNS ใช้ Map Hostname (www.ilovecookies.com) ไป IP Address ข้อความเหล่านี้ถูกผลักผ่าน Socket Interface เพื่อส่งผ่านเครือข่ายใช้ Transport Layer
Transport Layer เปิดเผยการสื่อสารเชิงตรรกะระหว่างสองแอปพลิเคชันบนโฮสต์ต่างกัน แยกข้อความแอปพลิเคชันเป็นชิ้นเล็กและบรรจุในแพ็กเก็ตพร้อมข้อมูลเพิ่มเติม (Headers)
ข้อความแอปพลิเคชันถูกสร้างจากแพ็กเก็ตเหล่านี้และผลักผ่าน Socket Interface ใช้ Port Number บนแพ็กเก็ต แพ็กเก็ตเหล่านี้ส่งผ่านเครือข่ายพึ่งพา Network Layer
ต่อมา Network Layer เข้ามาทำหน้าที่ จัดหาการสื่อสารเชิงตรรกะระหว่างสองโฮสต์ บรรจุ Transport Packet ใน Network Packet
อินเทอร์เน็ตมีอุปกรณ์สลับแพ็กเก็ต ส่งต่อ Network Packets ใช้ Routing Tables เก็บใน RAM สร้างแบบไดนามิกด้วย Routing Protocols Network Layer พึ่งพา Link Layer ย้ายแพ็กเก็ต
Link Layer รับผิดชอบย้ายแพ็กเก็ตผ่านลิงก์เดี่ยว อุปกรณ์ฮาร์ดแวร์ เรียกว่า Adapters ใช้งาน Link Layer Protocols และมีที่อยู่ถาวรเรียกว่า MAC Address MAC Address เป็นตัวระบุชั้นนี้ Address Resolution Protocol (ARP) Map IP Addresses ไป MAC Addresses
สุดท้าย Link Layer ส่งแพ็กเก็ตไป Physical Layer ซึ่งประกอบด้วยสายไฟที่ข้อมูลเดินทางผ่าน
ขอบคุณที่อ่าน! หวังว่าคุณเรียนรู้เรื่องเครือข่ายคอมพิวเตอร์ใหม่ๆ วันนี้
แหล่งข้อมูล
Computer Networking: A Top-Down Approach, 7th Edition
Computer Networking: A Top-Down Approach, 7th Edition
James F. Kurose, University of Massachusetts, Amherst Keith Ross
Pearson
Wireshark · Go Deep.
