TCP/IP Protocol

TCP/IP มีจุดประสงค์ของการสื่อสารตามมาตรฐาน สามประการคือ

  • เพื่อใช้ติดต่อสื่อสารระหว่างระบบที่มีความแตกต่างกัน
  • ความสามารถในการแก้ไขปัญหาที่เกิดขึ้นในระบบเครือข่าย เช่นในกรณีที่ผู้ส่งและผู้รับยังคงมีการติดต่อกันอยู่ แต่โหนดกลางทีใช้เป็นผู้ช่วยรับ-ส่งเกิดเสียหายใช้การไม่ได้ หรือสายสื่อสารบางช่วงถูกตัดขาด กฎการสื่อสารนี้จะต้องสามารถจัดหาทางเลือกอื่นเพื่อทำให้การสื่อสารดำเนินต่อไปได้โดยอัตโนมัติ
  • มีความคล่องตัวต่อการสื่อสารข้อมูลได้หลายชนิดทั้งแบบที่ไม่มีความเร่งด่วน เช่น การจัดส่งแฟ้มข้อมูล และแบบที่ต้องการรับประกันความเร่งด่วนของข้อมูล เช่น การสื่อสารแบบ real-time และทั้งการสื่อสารแบบเสียง (Voice) และข้อมูล (data)

Encapsulation/Demultiplexing
การส่งข้อมูลผ่านในแต่ละเลเยอร์ แต่ละเลเยอร์จะทำการประกอบข้อมูลที่ได้รับมา กับข้อมูลส่วนควบคุมซึ่งถูกนำมาไว้ในส่วนหัวของข้อมูลเรียกว่า Header ภายใน Header จะบรรจุข้อมูลที่สำคัญของโปรโตคอลที่ทำการ Encapsulate เมื่อผู้รับได้รับข้อมูล ก็จะเกิดกระบวนการทำงานย้อนกลับคือ โปรโตคอลเดียวกัน ทางฝั่งผู้รับก็จะได้รับข้อมูลส่วนที่เป็น Header ก่อนและนำไปประมวลและทราบว่าข้อมูลที่ตามมามีลักษณะอย่างไร ซึ่งกระบวนการย้อนกลับนี้เรียกว่า Demultiplexing

รูปที่1 ขั้นตอนการ Encapsulation และ Demultiplexing
ข้อมูลที่ผ่านการ Encapsulate ในแต่ละเลเยอร์มีชื่อเรียกแตกต่างกัน ดังนี้

  • ข้อมูลที่มาจาก User หรือก็คือข้อมูลที่ User เป็นผู้ป้อนให้กับ Application เรียกว่า User Data
  • เมื่อแอพพลิเคชั่นได้รับข้อมูลจาก user ก็จะนำมาประกอบกับส่วนหัวของแอพพลิเคชั่น เรียกว่า Application Data และส่งต่อไปยังโปรโตคอล TCP
  • เมื่อโปรโตคอล TCP ได้รับ Application Data ก็จะนำมารวมกับ Header ของ โปรโตคอล TCP เรียกว่า TCP Segment และส่งต่อไปยังโปรโตคอล IP
  • เมื่อโปรโตคอล IP ได้รับ TCP Segment ก็จะนำมารวมกับ Header ของ โปรโตคอล IP เรียกว่า IP Datagram และส่งต่อไปยังเลเยอร์ Host-to-Network Layer
  • ในระดับ Host-to-Network จะนำ IP Datagram มาเพิ่มส่วน Error Correction และ flag เรียกว่า Ethernet Frame ก่อนจะแปลงข้อมูลเป็นสัญญาณไฟฟ้า ส่งผ่านสายสัญญาณที่เชื่อมโยงอยู่ต่อไป

ในแต่ละเลเยอร์ของโครงสร้าง TCP/IP สามารถอธิบายได้ดังนี้

รูปที่2 โครงสร้าง TCP/IP
1. ชั้นโฮสต์-เครือข่าย (Host-to-Network Layer)
โพรโตคอลสำหรับการควบคุมการสื่อสารในชั้นนี้เป็นสิ่งที่ไม่มีการกำหนดรายละเอียดอย่างเป็นทางการ หน้าที่หลักคือการรับข้อมูลจากชั้นสื่อสาร IP มาแล้วส่งไปยังโหนดที่ระบุไว้ในเส้นทางเดินข้อมูลทางด้านผู้รับก็จะทำงานในทางกลับกัน คือรับข้อมูลจากสายสื่อสารแล้วนำส่งให้กับโปรแกรมในชั้นสื่อสาร
2. ชั้นสื่อสารอินเทอร์เน็ต (The Internet Layer)
ใช้ประเภทของระบบการสื่อสารที่เรียกว่า ระบบเครือข่ายแบบสลับช่องสื่อสารระดับแพ็กเก็ต (packet-switching network) ซึ่งเป็นการติดต่อแบบไม่ต่อเนื่อง (Connectionless) หลักการทำงานคือการปล่อยให้ข้อมูลขนาดเล็กที่เรียกว่า แพ็กเก็ต (Packet) สามารถไหลจากโหนดผู้ส่งไปตามโหนดต่างๆ ในระบบจนถึงจุดหมายปลายทางได้โดยอิสระ หากว่ามีการส่งแพ็กเก็ตออกมาเป็นชุดโดยมีจุดหมายปลายทางเดียวกันในระหว่างการเดินทางในเครือข่าย แพ็กเก็ตแต่ละตัวในชุดนี้ก็จะเป็นอิสระแก่กันและกัน ดังนั้น แพ็กเก็ตที่ส่งไปถึงปลายทางอาจจะไม่เป็นไปตามลำดับก็ได้
a. IP (Internet Protocol)
IP เป็นโปรโตคอลในระดับเน็ตเวิร์คเลเยอร์ ทำหน้าที่จัดการเกี่ยวกับแอดเดรสและข้อมูล และควบคุมการส่งข้อมูลบางอย่างที่ใช้ในการหาเส้นทางของแพ็กเก็ต ซึ่งกลไกในการหาเส้นทางของ IP จะมีความสามารถในการหาเส้นทางที่ดีที่สุด และสามารถเปลี่ยนแปลงเส้นทางได้ในระหว่างการส่งข้อมูล และมีระบบการแยกและประกอบดาต้าแกรม (datagram) เพื่อรองรับการส่งข้อมูลระดับ data link ที่มีขนาด MTU (Maximum Transmission Unit) ทีแตกต่างกัน ทำให้สามารถนำ IP ไปใช้บนโปรโตคอลอื่นได้หลากหลาย เช่น Ethernet ,Token Ring หรือ Apple Talk
การเชื่อมต่อของ IP เพื่อทำการส่งข้อมูล จะเป็นแบบ connectionless หรือเกิดเส้นทางการเชื่อมต่อในทุกๆครั้งของการส่งข้อมูล 1 ดาต้าแกรม โดยจะไม่ทราบถึงข้อมูลดาต้าแกรมที่ส่งก่อนหน้าหรือส่งตามมา แต่การส่งข้อมูลใน 1 ดาต้าแกรม อาจจะเกิดการส่งได้หลายครั้งในกรณีที่มีการแบ่งข้อมูลออกเป็นส่วนย่อยๆ (fragmentation) และถูกนำไปรวมเป็นดาต้าแกรมเดิมเมื่อถึงปลายทาง


รูปที่ 3 IP Header
 เฮดเดอร์ของ IP โดยปกติจะมีขนาด 20 bytes ยกเว้นในกรณีที่มีการเพิ่ม option บางอย่าง ฟิลด์ของเฮดเดอร์ IP จะมีความหมายดังนี้

  • Version : หมายเลขเวอร์ชันของโปรโตคอล ที่ใช้งานในปัจจุบันคือ เวอร์ชัน 4 (IPv4) และเวอร์ชัน 6 (IPv6)
  • Header Length : ความยาวของเฮดเดอร์ โดยทั่วไปถ้าไม่มีส่วน option จะมีค่าเป็น 5 (5*32 bit)
  • Type of Service (TOS) : ใช้เป็นข้อมูลสำหรับเราเตอร์ในการตัดสินใจเลือกการเราต์ข้อมูลในแต่ละดาต้าแกรม แต่ในปัจจุบันไม่ได้มีการนำไปใช้งานแล้ว
  • Length : ความยาวทั้งหมดเป็นจำนวนไบต์ของดาต้าแกรม ซึ่งด้วยขนาด 16 บิตของฟิลด์ จะหมายถึงความยาวสูงสุดของดาต้าแกรม คือ 65535 byte (64k) แต่ในการส่งข้อมูลจริง ข้อมูลจะถูกแยกเป็นส่วนๆตามขนาดของ MTU ที่กำหนดในลิงค์เลเยอร์ และนำมารวมกันอีกครั้งเมื่อส่งถึงปลายทาง แอพพลิเคชั่นส่วนใหญ่จะมีขนาดของดาต้าแกรมไม่เกิน 512 byte
  • Identification : เป็นหมายเลขของดาต้าแกรมในกรณีที่มีการแยกดาต้าแกรมเมื่อข้อมูลส่งถึงปลายทางจะนำข้อมูลที่มี identification เดียวกันมารวมกัน
  • Flag : ใช้ในกรณีที่มีการแยกดาต้าแกรม
  • Fragment offset : ใช้ในการกำหนดตำแหน่งข้อมูลในดาต้าแกรมที่มีการแยกส่วน เพื่อให้สามารถนำกลับมาเรียงต่อกันได้อย่างถูกต้อง
  • Time to live (TTL) : กำหนดจำนวนครั้งที่มากที่สุดที่ดาต้าแกรมจะถูกส่งระหว่าง hop (การส่งผ่านข้อมูลระหว่างเน็ตเวิร์ค) เพื่อป้องกันไม่ให้เกิดการส่งข้อมูลโดยไม่สิ้นสุด โดยเมื่อข้อมูลถูกส่งไป 1 hop จะทำการลดค่า TTL ลง 1 เมื่อค่าของ TTL เป็น 0 และข้อมูลยังไม่ถึงปลายทาง ข้อมูลนั้นจะถูกยกเลิก และเราเตอร์สุดท้ายจะส่งข้อมูล ICMP แจ้งกลับมายังต้นทางว่าเกิด time out ในระหว่างการส่งข้อมูล
  • Protocol : ระบุโปรโตคอลที่ส่งในดาต้าแกรม เช่น TCP ,UDP หรือ ICMP
  • Header checksum : ใช้ในการตรวจสอบความถูกต้องของข้อมูลในเฮดเดอร์
  • Source IP address : หมายเลข IP ของผู้ส่งข้อมูล
  • Destination IP address : หมายเลข IP ของผู้รับข้อมูล
  • Data : ข้อมูลจากโปรโตคอลระดับบน

b. ICMP (Internet Control Message Protocol)
ICMP เป็นโปรโตคอลที่ใช้ในการตรวจสอบและรายงานสถานภาพของดาต้าแกรม (Datagram) ในกรณีที่เกิดปัญหากับดาต้าแกรม เช่น เราเตอร์ไม่สามารถส่งดาต้าแกรมไปถึงปลายทางได้ ICMP จะถูกส่งออกไปยังโฮสต้นทางเพื่อรายงานข้อผิดพลาด ที่เกิดขึ้น อย่างไรก็ดี ไม่มีอะไรรับประกันได้ว่า ICMP Message ที่ส่งไปจะถึงผู้รับจริงหรือไม่ หากมีการส่งดาต้าแกรมออกไปแล้วไม่มี ICMP Message ฟ้อง Error กลับมา ก็แปลความหมายได้สองกรณีคือ ข้อมูลถูกส่งไปถึงปลายทางอย่างเรียบร้อย หรืออาจจะมีปัญหา ในการสื่อสารทั้งการส่งดาต้าแกรม และ ICMP Message ที่ส่งกลับมาก็มีปัญหาระว่างทางก็ได้ ICMP จึงเป็นโปรโตคอลที่ไม่มีความน่าเชื่อถือ (unreliable) ซึ่งจะเป็นหน้าที่ของ โปรโตคอลในระดับสูงกว่า Network Layer ในการจัดการให้การสื่อสารนั้นๆ มีความน่าเชื่อถือ
ในส่วนของ ICMP Message จะประกอบด้วย Type ขนาด 8 บิต Checksum ขนาด 16 บิต และส่วนของ Content ซึ่งจะมีขนาดแตกต่างกันไปตาม Type และ Code ดังรูป


รูปที่ 4 ICMP Header
3. ชั้นสื่อสารนำส่งข้อมูล (Transport Layer)
แบ่งเป็นโพรโตคอล 2 ชนิดตามลักษณะ ลักษณะแรกเรียกว่า Transmission Control Protocol (TCP) เป็นแบบที่มีการกำหนดช่วงการสื่อสารตลอดระยะเวลาการสื่อสาร (connection-oriented) ซึ่งจะยอมให้มีการส่งข้อมูลเป็นแบบ Byte stream ที่ไว้ใจได้โดยไม่มีข้อผิดพลาด ข้อมูลที่มีปริมาณมากจะถูกแบ่งออกเป็นส่วนเล็กๆ เรียกว่า message ซึ่งจะถูกส่งไปยังผู้รับผ่านทางชั้นสื่อสารของอินเทอร์เน็ต ทางฝ่ายผู้รับจะนำ message มาเรียงต่อกันตามลำดับเป็นข้อมูลตัวเดิม TCP ยังมีความสามารถในการควบคุมการไหลของข้อมูลเพื่อป้องกันไม่ให้ผู้ส่ง ส่งข้อมูลเร็วเกินกว่าที่ผู้รับจะทำงานได้ทันอีกด้วย
โปรโตคอลการนำส่งข้อมูลแบบที่สองเรียกว่า UDP (User Datagram Protocol) เป็นการติดต่อแบบไม่ต่อเนื่อง (connectionless) มีการตรวจสอบความถูกต้องของข้อมูลแต่จะไม่มีการแจ้งกลับไปยังผู้ส่ง จึงถือได้ว่าไม่มีการตรวจสอบความถูกต้องของข้อมูล อย่างไรก็ตาม วิธีการนี้มีข้อดีในด้านความรวดเร็วในการส่งข้อมูล จึงนิยมใช้ในระบบผู้ให้และผู้ใช้บริการ (client/server system) ซึ่งมีการสื่อสารแบบ ถาม/ตอบ (request/reply) นอกจากนั้นยังใช้ในการส่งข้อมูลประเภทภาพเคลื่อนไหวหรือการส่งเสียง (voice) ทางอินเทอร์เน็ต
a. UDP : (User Datagram Protocol)
เป็นโปรโตคอลที่อยู่ใน Transport Layer เมื่อเทียบกับโมเดล OSI โดยการส่งข้อมูลของ UDP นั้นจะเป็นการส่งครั้งละ 1 ชุดข้อมูล เรียกว่า UDP datagram ซึ่งจะไม่มีความสัมพันธ์กันระหว่างดาต้าแกรมและจะไม่มีกลไกการตรวจสอบความสำเร็จในการรับส่งข้อมูล
กลไกการตรวจสอบโดย checksum ของ UDP นั้นเพื่อเป็นการป้องกันข้อมูลที่อาจจะถูกแก้ไข หรือมีความผิดพลาดระหว่างการส่ง และหากเกิดเหตุการณ์ดังกล่าว ปลายทางจะได้รู้ว่ามีข้อผิดพลาดเกิดขึ้น แต่มันจะเป็นการตรวจสอบเพียงฝ่ายเดียวเท่านั้น โดยในข้อกำหนดของ UDP หากพบว่า Checksum Error ก็ให้ผู้รับปลายทางทำการทิ้งข้อมูลนั้น แต่จะไม่มีการแจ้งกลับไปยังผู้ส่งแต่อย่างใด การรับส่งข้อมูลแต่ละครั้งหากเกิดข้อผิดพลาดในระดับ IP เช่น ส่งไม่ถึง, หมดเวลา ผู้ส่งจะได้รับ Error Message จากระดับ IP เป็น ICMP Error Message แต่เมื่อข้อมูลส่งถึงปลายทางถูกต้อง แต่เกิดข้อผิดพลาดในส่วนของ UDP เอง จะไม่มีการยืนยัน หรือแจ้งให้ผู้ส่งทราบแต่อย่างใด


รูปที่ 5 UDP Header
มีรายละเอียด ดังนี้

  • Source Port Number : หมายเลขพอร์ตต้นทางที่ส่งดาต้าแกรมนี้
  • Destination Port Number : หมายเลขพอร์ตปลายทางที่จะเป็นผู้รับดาต้าแกรม
  • UDP Length : ความยาวของดาต้าแกรม ทั้งส่วน Header และ data นั่นหมายความว่า ค่าที่น้อยที่สุดในฟิลด์นี้คือ 8 ซึ่งเป็นขนาดของ Header
  • Checksum : เป็นตัวตรวจสอบความถูกต้องของ UDP datagram และจะนำข้อมูลบางส่วนใน IP Header มาคำนวณด้วย

b. TCP : (Transmission Control Protocol)
อยู่ใน Transport Layer เช่นเดียวกับ UDP ทำหน้าที่จัดการและควบคุมการรับส่งข้อมูล ซึ่งมีความสามารถและรายละเอียดมากกว่า UDP โดยดาต้าแกรมของ TCP จะมีความสัมพันธ์ต่อเนื่องกัน และมีกลไกควบคุมการรับส่งข้อมูลให้มีความถูกต้อง (reliable) และมีการสื่อสารอย่างเป็นกระบวนการ (connection-oriented)

รูปที่ 6 TCP Header
มีรายละเอียด ดังนี้

  • Source Port Number : หมายเลขพอร์ตต้นทางที่ส่งดาต้าแกรมนี้
  • Destination Port Number : หมายเลขพอร์ตปลายทางที่จะเป็นผู้รับดาต้าแกรม
  • Sequence Number : ฟิลด์ที่ระบุหมายเลขลำดับอ้างอิงในการสื่อสารข้อมูลแต่ละครั้ง เพื่อใช้ในการแยกแยะว่าเป็นข้อมูลของชุดใด และนำมาจัดลำดับได้ถูกต้อง
  • Acknowledgment Number : ทำหน้าที่เช่นเดียวกับ Sequence Number แต่จะใช้ในการตอบรับ
  • Header Length : โดยปกติความยาวของเฮดเดอร์ TCP จะมีความยาว 20 ไบต์ แต่อาจจะมากกว่านั้น ถ้ามีข้อมูลในฟิลด์ option แต่ต้องไม่เกิน 60 ไบต์
  • Flag : เป็นข้อมูลระดับบิตที่อยู่ในเฮดเดอร์ TCP โดยใช้เป็นตัวบอกคุณสมบัติของแพ็กเก็ต TCP ขณะนั้นๆ และใช้เป็นตัวควบคุมจังหวะการรับส่งข้อมูลด้วย ซึ่ง Flag มีอยู่ทั้งหมด 6 บิต แบ่งได้ดังนี้


Flag ในเฮดเดอร์ของ TCP มีความสำคัญในการกำหนดการทำงานของ TCP segment เนื่องจากข้อมูลในเฮดเดอร์ของ TCP จะมีข้อมูลครบถ้วนทั้งการรับและการส่งข้อมูล ซึ่งในการสทำงานแต่ละอย่างจะมีการใช้งานฟิลด์ไม่เหมือนกัน flag จะเป็นตัวกำหนดว่าให้ใช้งานฟิลด์ไหน เช่น ฟิลด์ Acknowledgment number จะไม่ถูกใช้ในขั้นตอนการเริ่มต้นการเชื่อมต่อ แต่จะมีข้อมูลในฟิลด์ ซึ่งเป็นข้อมูลที่ไม่มีความหมายใดๆ ซึ่งถ้าไม่มี flag เป็นตัวกำหนดก้ออาจจะมีการนำข้อมูลมาใช้ และก่อให้เกิดความผิดพลาดได้


i. การสื่อสารของ TCP


เมื่อเซกเมนต์ CONNECT (SYN = “1” และ ACK = “0”) เดินทางมาถึง Entity TCP ที่โฮสต์ปลายทางจะค้นหาโพรเซสตามหมายเลขพอร์ตที่กำหนดในเขตข้อมูล Destination port ซึ่งถ้าหากไม่พบก็จะตอบปฏิเสธด้วยเซกเมนต์ที่มี RST = “1” กลับไปยังผู้ส่ง
เซกเมนต์ CONNECT ของผู้ส่งจะถูกส่งต่อไปยังโพรเซส ตามพอร์ตที่ระบุซึ่งอาจจะตอบรับหรือตอบปฏิเสธก็ได้ ถ้าโพรเซสนั้นต้องการสื่อสารด้วยก็จะส่งเซกเมนต์ตอบรับกลับไป รูปที่ 6-1 แสดงลำดับขั้นตอนการส่ง TCP เซกเมนต์ในการสร้างการเชื่อมต่อในสภาวะปกติระหว่างผู้ส่งและผู้รับ
ในกรณีที่โฮสต์สองแห่งพยายามสร้างการเชื่อมต่อระหว่างซ็อคเก็ตคู่เดียวกันจะเกิดเป็นลำดับขั้นตอนแสดงในรูปที่ 6-2 ผลสุดท้ายจะมีการเชื่อมต่อเกิดขึ้นเพียงหนึ่งช่องทางเท่านั้นเนื่องจากการเชื่อมต่อในแต่ละช่องทางจะถูกกำหนดขึ้นโดยใช้หมายเลขซ็อคเก็ตผู้ส่งและผู้รับ ถ้าการเชื่อมต่อลำดับแรกสำเร็จก็จะถูกบันทึกไว้ในตารางการสื่อสาร เช่น (x, y) ถ้าการเชื่อมต่อลำดับที่สองสำเร็จในเวลาต่อมา ข้อมูลนี้ก็จะถูกบันทึกไว้ที่เดียวกันคือ (x, y)
ขั้นตอนในการสร้างการเชื่อมต่อและการยกเลิกสามารถเขียนอธิบายด้วยไฟไนท์สเตทแมชชีนที่มีการทำงาน 11 สถานะ ดังแสดงในตารางข้างล่าง ในแต่ละสถานะจะมีเหตุการณ์บางอย่างที่เป็นไปได้ซึ่งจะได้รับการตอบสนองด้วยการกระทำที่เหมาะสม ในทางตรงกันข้าม เหตุการณ์ที่เป็นไปไม่ได้จะกลายเป็นข้อผิดพลาดที่จะต้องรายงานให้ทราบ
การเชื่อมต่อเริ่มต้นจากสถานะ CLOSED เมื่อเรียกใช้บริการ LISTEN หรือ CONNECT ก็จะมีการเปลี่ยนสถานะไปจากเดิม และถ้าอีกฝ่ายตองการเชื่อมต่อด้วย การเชื่อมต่อก็จะเกิดขึ้นและย้ายไปอยู่ในสถานะ ESTABLISHED คือการเชื่อต่อสมบูรณ์ และเมื่อยกเลิกการติดต่อก็จะกลับไปสู่สถานะ CLOSED อย่างเดิม

ii. การเริ่มต้นการสื่อสารของ TCP โดยใช้การบันทึกเวลาแบบ Three-way handshake
Three-way Handshake เป็นวิธีการส่งแพ็กเก็ตที่สามารถช่วยแก้ปัญหาในเรื่องแพ็กเก็ตซ้ำซ้อนได้ดี แต่วิธีนี้จำเป็นจะต้องสร้างช่องสื่อสารให้ได้ก่อนที่จะเริ่มรับ-ส่งข้อมูล อย่างไรก็ตาม แพ็กเก็ตควบคุมที่ใช้ในการต่อรองค่าตัวแปรสำหรับการสื่อสารต่างๆ อาจเกิดการตกค้างอยู่ในระบบได้ ทำให้การกำหนดค่าหมายเลขลำดับมีปัญหาไปด้วย เช่นการสร้างช่องสื่อสารระหว่างโฮสต์1 และ โฮสต์2 เริ่มจาก โฮสต์1 ขอเริ่มการเชื่อต่อด้วยการส่งแพ็กเก็ต CR (Connection Request) ไปยังโฮสต์2 ซึ่งจะมีค่าตัวแปรต่างๆสำหรับการสื่อสารรวมทั้งหมายเลขลำดับและหมายเลขช่องสื่อสารไปด้วย ผู้รับคือโฮสต์2 ก็จะส่ง ACK (Acknowledge) กลับมายังโฮสต์1 แต่ถ้าแพ็กเก็ต จากผู้ส่งเกิดสูญหายระหว่างทางและสำเนาแพ็กเก็ตที่ยังตกค้างอยู่ระบบเกิดเดินทางไปถึงผู้รับในภายหลังก็จะทำให้การสร้างช่องสื่อสารใช้การไม่ได้เนื่องจากมีค่าตัวแปรต่างๆไม่ตรงกัน
การใช้ Three-way handshake เป็นการไม่บังคับให้ผู้ส่งและผู้รับข้อมูลจะต้องกำหนดค่าเริ่มต้นของหมายเลขลำดับเป็นเลขเดียวกัน ทำให้สามารถนำวิธีนี้มาใช้ร่วมกับวิธีการจัดจังหวะการทำงานให้พร้อมกัน (Synchronization) แบบต่างๆได้ แทนที่จะเป็นการใช้วิธีการบันทึกเวลา ดังรูปที่ 7-1 แสดงขั้นตอนการเริ่มต้นการทำงานจากโฮสต์ 1 ไปยังโฮสต์ 2 สมมุติให้โฮสต์ 1 เลือกหมายเลขลำดับเป็น “x” และส่งแพ็กเก็ต CONNECTION REQUEST ไปยังโฮสต์ 2 โฮสต์ 2 ตอบรับด้วยแพ็กเก็ต CONNECTION ACCEPTED ซึ่งจะยอมรับหมายเลขลำดับ “x” พร้อมกับประกาศหมายเลขลำดับ “y” ที่เป็นของตนเอง จากนั้นโฮสต์ 1 ก็จะตอบรับค่าตัวเลือกของโฮสต์ 2 ผ่านทางเขตข้อมูลสำหรับการควบคุมในแพ็กเก็ตข้อมูลแรกที่ส่งมา


สมมติว่าได้เกิดปัญหาการสูญหายของแพ็กเก็ตในขณะที่สำเนาแพ็กเก็ตที่ค้างในระบบเดินทางไปถึงผู้รับแทน รูปที่7-2 แสดงเหตุการณ์ที่แพ็กเก็ตTPDU (ตัวแรกในรูป) เป็นสำเนาแพ็กเก็ตเก่าที่พึ่งจะเดินทางไปถึงโฮสต์ 2 โดยที่โฮสต์ 1 ไม่ทราบ โฮสต์ 2 ก็จะทำงานตามปกติคือจะตอบรับด้วยการส่งแพ็กเก็ต CONNECTION ACCEPTED TPDU กลับมา ที่โฮสต์ 1 ซึ่งโฮสต์1 จะสามารถตรวจสอบได้ว่า หมายเลขลำดับโฮสต์2 ตอบกลับมานั้นเป็นหมายเลขลำดับที่ได้เลิกใช้ไปแล้ว จึงมีการส่งแพ็กเก็ต REJECTกลับมายังโฮสต์ 2 เพื่อบอกยกเลิกการทำงาน จะเห็นว่าวิธีการนี้อาศัยการสื่อสารผ่านแพ็กเก็ต 3 ตัวซึ่งเป็นที่มาของคำว่า “การจับมือร่วมสามขั้นตอน” ผลสุดท้าย ทั้งโฮสต์ 1 และโฮสต์ 2 ก็จะไม่มีการสร้างช่องสื่อสารขึ้นมาจากข้อมูลในสำเนาแพ็กเก็ตเก่าแต่อย่างใด
4. ชั้นสื่อสารการประยุกต์ (Application Layer)
มีโพรโตคอลสำหรับสร้างจอเทอร์มินัลเสมือน เรียกว่า TELNET โพรโตคอลสำหรับการจัดการแฟ้มข้อมูล เรียกว่า FTP และโพรโตคอลสำหรับการให้บริการจดหมายอิเล็กทรอนิกส์ เรียกว่า SMTP โดยโพรโตคอลสำหรับสร้างจอเทอร์มินัลเสมือนช่วยให้ผู้ใช้สามารถติดต่อกับเครื่องโฮสต์ที่อยู่ไกลออกไปโดยผ่านอินเทอร์เน็ต และสามารถทำงานได้เสมือนกับว่ากำลังนั่งทำงานอยู่ที่เครื่องโฮสต์นั้น โพรโตคอลสำหรับการจัดการแฟ้มข้อมูลช่วยในการคัดลอกแฟ้มข้อมูลมาจากเครื่องอื่นที่อยู่ในระบบเครือข่ายหรือส่งสำเนาแฟ้มข้อมูลไปยังเครื่องใดๆก็ได้ โพรโตคอลสำหรับให้บริการจดหมายอิเล็กทรอนิกส์ช่วยในการจัดส่งข้อความไปยังผู้ใช้ในระบบ หรือรับข้อความที่มีผู้ส่งเข้ามา
บทสรุป
TCP/IP นี้มีการออกแบบเป็นเวลานาน และได้ปรับปรุงไปเรื่อยๆ เพื่อให้สามารถใช้งานได้หลากหลาย และมีประสิทธิภาพมากขึ้น แต่อย่างไรก้อตามโปรโตคอลชุดนี้ก้อยังมีจุดบกพร่องอีกมาก http://www.us-cert.gov/cas/techalerts/index.html และจุดบกพร่องเหล่านี้อาจเป็นนำมาเป็นเครื่องมือใช้ในการโจมตีของเหล่าแฮกเกอร์ได้ การเรียนรู้พื้นฐานด้าน TCP/IP นี้เป็นพื้นฐานเพื่อที่จะศึกษาเรื่องข้อบกพร่องของโปรโตคอล ผลกระทบ และวิธีการป้องกันตัวเองจากการโจมตีของแฮกเกอร์ต่อไป
เอกสารอ้างอิง
[1] Andrew S. Tanenbaum. Computer Networks. หน้า32-35 , 432-434 , 463-465
[2] เรืองไกร รังสิพล. เจาะระบบ TCP/IP : จุดอ่อนของโปรโตคอลและวิธีป้องกัน . บริษัท โปรวิชั่น จำกัด. 2001

TCP/IP (Transmission Control Protocol/Internet Protocol)

TCP/IP (Transmission Control Protocol/Internet Protocol) เป็นระบบโปรโตคอล การสื่อสารพื้นฐานของระบบอินเตอร์เน็ต มันสามารถใช้เป็น โปรโตคอลในการสื่อสารภายใน เครือข่ายส่วนบุคคล เรียกว่า intranet และ extranet เมื่อมีการติดต่อโดยตรงกับ internet เครื่องคอมพิวเตอร์จะได้รับการคัดลอกโปรแกรม TCP/IP เช่นเดียวกับคอมพิวเตอร์อื่น ๆ เพื่อทำให้ส่งข้อความขอรับสารสนเทศ

TCP/IP เป็นโปรแกรม 2 เลเยอร์ TCP (Transmission Control Protocol) เป็นเลเยอร์ที่สูงกว่า ทำหน้าที่จัดการแยกข้อความหรือไฟล์แลปรกอบให้เหมือนเดิม IP (Internet Protocol) เป็นเลเยอร์ที่ต่ำกว่า ทำหน้าที่จัดการส่วนของที่อยู่ของแต่ละชุดข้อมูล เพื่อทำให้มีปลายทางที่ถูกต้อง เครื่องคอมพิวเตอร์ที่ทำหน้าที่เป็น Gateway บนเครือข่ายจะตรวจที่อยู่นี้เพื่อหาจุดหมายในการส่งข้อความ ชุดข้อมูลอาจจะใช้เส้นทางไปยังปลายทางต่างกัน แต่ทั้งหมดจะได้รับการประกอบใหม่ที่ปลายทาง

TCP/IP ใช้ในแบบ client/server ในการสื่อสาร (ระหว่างคอมพิวเตอร์) ซึ่งผู้ใช้คอมพิวเตอร์ (client) เป็นผู้ขอและการบริการได้รับจากคอมพิวเตอร์เครื่องแม่ข่ายในระบบเครือข่าย การสื่อสารของ TCP/IP เป็นแบบจุดต่อจุด (point -to- point) หมายความว่าการสื่อสารแต่ละครั้งเกิดจากจุดหนึ่ง (เครื่อง host เครื่องหนึ่ง) ไปยังจุดอื่นหรือเครื่อง host เครื่องอื่นในเครือข่าย TCP/IP และโปรแกรมประยุกต์ระดับสูงอื่น ที่ใช้ TCP/IP สามารถเรียกว่า "Stateless" เพราะการขอแต่ละ client ได้รับการพิจารณาเป็นการขอใหม่โดยไม่สัมพันธ์กับการขอเดิม (แต่แตกต่างจากการสนทนาทางโทรศัพท์) การที่เป็นพาร์ทของเครือข่ายอิสระแบบ "Stateless" ดังนั้นทุกคนสามารถใช้พาร์ทได้อย่างต่อเนื่อง (หมายเหตุ เลเยอร์ของ TCP จะไม่ "Stateless" ถ้ายังทำการส่งข้อความใดข้อความหนึ่ง จะทำการส่งจนกระทั่งชุดข้อมูลนั้นได้รับครบชุด)

ผู้ใช้อินเตอร์เน็ต จำนวนมากคุ้นเคยกับการประยุกต์เลเยอร์ระดับสูง โดยใช้ TCP/IP เพื่อเข้าสู่ระบบอินเตอร์เน็ท ทั้งนี้รวมถึง World Wide Web's Hypertext Transfer Protocol (HTTP), File Transfer Protocol (FTP) ซึ่งในการเข้าสู่เครื่องคอมพิวเตอร์ในระยะไกล และ Simple Mail Transfer Protocol (SMTP) Protocol เหล่านี้ จะเป็นชุดเดียวกับ TCP/IP ในลักษณะ "Suite" เครื่องคอมพิวเตอร์ส่วนบุคคล มักจะเข้าสู่อินเตอร์เน็ต ผ่าน Serial Line Internet Protocol (SLIP) หรือ Point-To-Point Protocol (PPP) โปรโตคอล แบบนี้จะควบคุมชุดข้อมูลของ IP ดังนั้น จึงสามารถใช้ส่งผ่านการติดต่อด้วยสายโทรศัพท์ ผ่านโมเด็ม Protocol ที่สัมพันธ์กับ TCP/IP ได้แก่ User Datagram Protocol (UDP) สำหรับใช้แทน TCP/IP ในกรณีพิเศษ ส่วนโปรโตคอลอื่นที่ใช้โดยเครื่อง host ของเครือข่ายสำหรับการแลกเปลี่ยนสารสนเทศกับ router ได้แก่ Internet Control Message Protocol (ICMP) Interior Gateway Protocol (IGP) Exterior Gateway Protocol (EGP) และ Border Gateway Protocol (BGP)

บทสรุป

โปรโตคอล TCP/IP หรือ Transmission Control Protocol/Internet Protocol เป็นระเบียบวิธีการ สื่อสารระหว่างคอมพิวเตอร์ ที่ใช้กันมาแต่เดิมในระบบปฏิบัติการ Unix ซึ่งมีการใช้งานอย่าง กว้างขวางมาก จนถือเป็นมาตรฐานได้ จุดกำเนิดของโปรโตคอล TCP/IP นี้เริ่มขึ้นในราว พ.ศ. 2512 ที่กระทรวงกลาโหมของสหรัฐ เมื่อพบปัญหาในการเชื่อมโยงเครือข่ายคอมพิวเตอร์ในหน่วยงานต่างๆ ของตน ซึ่งจะต้องมีการส่งข้อมูลระหว่างกัน และไปยังหน่วยงานภายนอกอื่นๆ เช่น มหาวิทยาลัย ห้องทดลองต่างๆ (ส่วนใหญ่มีเครื่องที่ใช้ระบบ Unix อยู่เป็นจำนวนมาก) เนื่องจากแต่ละแห่งก็จะมีระบบคอมพิวเตอร์ของตนเองที่แตกต่างกันไป การต่อเชื่อมกันก็เป็นไปในลักษณะต่างคนต่างทำไม เหมือนกัน ดังนั้นข่าวสารข้อมูลทั้งหลาย จึงถ่ายเทไปมาได้อย่างยากลำบากมาก กระทรวงกลาโหมสหรัฐได้ จัดตั้งหน่วยงาน Advanced Research Projects Agencies (ARPA) ขึ้นมา เพื่อหาทางแก้ไขปัญหาที่เกิดขึ้นนี้ ผลลัพธ์ที่หน่วยงาน ARPA ได้จัดทำขึ้นคือ การกำหนดมาตรฐานในการสื่อสารข้อมูลและได้จัดตั้งเครือข่าย ARPANET ขึ้นโดยใช้โปรโตคอล TCP/IP ต่อมาก็กลายมาเป็นมาตรฐานจริงจัง ในราวปี พ.ศ. 2525 ความสัมพันธ์ระหว่าง TCP/IP กับระบบปฏิบัติการ Unix เกิดขึ้น เนื่องจากมหาวิทยาลัยแคลิฟอร์เนีย ที่เบอร์คเลย ์ ได้พัฒนาระบบปฏิบัติการ Unix ซึ่งมีการผนวกเข้ากับโปรโตคอล TCP/IP สำหรับใช้ในการสื่อสารระหว่างระบบออกมา และเผยแพร่ต่อไปยังหน่วยงานต่างๆ ทำให้การสื่อสารกันของเครื่องที่ใช้ระบบปฏิบัติการ Unix มักจะต้อง ใช้โปรโตคอล TCP/IP เสมอ และมีบทบาทเป็นสิ่งที่คู่กันต่อมาถึงปัจจุบัน

ในปัจจุบันนี้ ไม่ว่าคอมพิวเตอร์ส่วนบุคคลของผู้ใช้จะเป็นแบบใดก็ตาม เช่น พีซีหรือแมคอินทอช ก็สามารถใช้งานโปรโตคอล TCP/IP เพื่อต่อเชื่อมเข้าส ู่อินเตอร์เน็ตได้ วิธีการก็คือเพียงแต่ติดตั้งใช้งานซอฟต์แวร์โปรโตคอล TCP/IP เท่านั้น ส่วนวิธีการและโปรแกรมที่ติดตั้ง จะแตกต่างกันขึ้นกับระบบที่ใช้ ซึ่งจะกล่าวต่อไป หมายเลข IP (IP Address) การสื่อสารกันในระบบเครือข่าย อินเตอร์เน็ตที่มีโปรโตคอล TCP/IP เป็นมาตรฐานนี้ เครื่องอมพิวเตอร์ทุกเครื่องที่เชื่อมต่ออยู่ จะต้องมีหมายเลขประจำตัวเอาไว้อ้างอิงให้เครื่องคอมพิวเตอร์อื่นๆ ได้ทราบเหมือนกับคนทุกคนต้องมีชื่อให้คนอื่นเรียก หมายเลขอ้างอิงดังกล่าวเราเรียกว่า IP Address หรือหมายเลข IP หรือบางทีก็เรียกว่า "แอดเดรส IP" (IP ในที่นี้ก็คือ Internet Protocol ตัวเดียวกับใน TCP/IP นั่นเอง) ซึ่งถูกจัดเป็นตัวเลขชุดหนึ่งขนาด 32 บิต ใน 1 ชุดนี้จะมีตัวเลขถูกแบ่งออกเป็น 4 ส่วน ส่วนละ 8 บิตเท่าๆ กัน เวลาเขียนก็แปลงให้เป็นเลขฐานสิบ ก่อนเพื่อความง่ายแล้วเขียนโดยคั่นแต่ละส่วนด้วยจุด ดังนั้นในตัวเลขแต่ละส่วนนี้จึงมีค่าได้ตั้งแต่ 0 จนถึง 28 -1 = 255 เท่านั้น เช่น 192.10.1.101 เป็นต้น ตัวเลข IP Address ชุดนี้จะเป็นสิ่งที่สำคัญคล้ายเบอร์โทรศัพท์ที่เรามีใช้อยู่และไม่ซ้ำกัน เพราะสามารถกำหนดเป็นตัวเลขได้รวมทั้งสิ้นกว่า 4 พันล้านเลขหมาย แต่การกำหนดให้คอมพิวเตอร์มีเลขหมาย IP Address นี้ไม่ได้เริ่มต้นจากหมายเลข 1 และนับขึ้นไปเรื่อยๆ หากแต่จะมีการจัด แบ่งออกเป็น 2 ส่วน คือ

      • ส่วนแรกเป็นหมายเลขของเครือข่าย (Network Number)
      • ส่วนที่สองเรียกว่าหมายเลขของคอมพิวเตอร์ที่อยู่ในเครือข่ายนั้น (Host Number) เพราะในเครือข่ายใดๆ อาจจะมีเครื่องคอมพิวเตอร์เชื่อมต่ออยู่ได้มากมาย ในเครือข่ายที่อยู่คนละระบบอาจมีหมายเลข Host ซ้ำกันก็ได้ แต่เมื่อรวมกับหมายเลข Network แล้ว จะได้เป็น IP Address ที่ไม่ซ้ำกันเลย

ในการจัดตั้งหรือกำหนดหมายเลข IP Address นี้ก็มีวิธีการกำหนดที่ชัดเจน และมีกฎเกณฑ์ที่รัดกุม ผู้ใช้ที่อยากจัดตั้งโฮสต์คอมพิวเตอร์ เพื่อเชื่อมต่อเข้าอินเตอร์เน็ต และให้บริการต่างๆ สามารถขอหมายเลข IP Address ได้ที่หน่วยงาน Internet Network Information Center (InterNIC) ขององค์กร Network Solution Incorporated (NSI) ที่รัฐเวอร์จิเนีย สหรัฐอเมริกา แต่ถ้าผู้ใช้สมัครเข้าเป็นสมาชิกขอ ใช้บริการอินเตอร์เน็ตจากบริษัทผู้ให้บริการ (Internet Service Provider) เรียกย่อๆ ว่าหน่วยงาน ISPรายใดก็แล้วแต่ ก็ไม่ต้องติดต่อขอ IP Address เนื่องจากหน่วยงาน ISP เหล่านั้นจะกำหนดหมายเลข IP ให้ใช้ หรือส่งค่า IP ชั่วคราวให้ใช้งาน ทั้งนี้ขึ้นอยู่กับแบบการขอใช้บริการที่จะกล่าวต่อไป
โครงสร้างของแอดเดรสที่ใช้ใน classต่างๆของเครือข่าย ซึ่งทั้งหมด ยาว 32 บิต IP Address นี้มีการจัดแบ่งออกเป็นทั้งหมด 5 ระดับ (Class) แต่ที่ใช้งานในทั่วไปจะมีเพียง 3 ระดับคือ Class A, Class B, Class C ซึ่งก็แบ่งตามขนาดความใหญ่ ของเครือข่ายนั่นเอง ถ้าเครือข่ายใดมีจำนวนเครื่องคอมพิวเตอร เชื่อมต่ออยู่มาก ก็จะมีหมายเลขอยู่ใน Class A ถ้ามีจำนวนเครื่องต่ออยู่ลดหลั่นกันลงมาก็จะอยู่ใน Class B และ Class C ตามลำดับ หมายเลข IP ของ Class A มีตัวแรกเป็น 0 และหมายเลขของเครือข่าย (Network Number) ขนาด 7 บิต และ มีหมายเลขของเครื่องคอมพิวเตอร์ (Host Number) ขนาด 24 บิต ทำให้ในหนึ่งเครือข่ายของ Class A สามารถมีคอมพิวเตอร ์เชื่อมต่ออยู่ในเครือข่ายได้ถึง 224= 16 ล้านเครื่อง เหมาะสำหรับองค์กร หรือบริษัทยักษ์ใหญ่ แต่ใน Class A นี้ จะมีหมายเลข เครือข่ายได้ 128 ตัวเท่านั้นทั่วโลก ซึ่งหมายความว่าจะมีเครือข่ายยักษ์ใหญ่แบบนี้ได้เพียง 128 เครือข่ายเท่านั้น สำหรับ Class B จะมีหมายเลขเครือข่ายแบบ 14 บิต และหมายเลขเครื่องคอมพิวเตอร์แบบ 16 บิต (ส่วนอีก 2 บิตที่เหลือบังคับว่าต้องขึ้นต้นด้วย 102) ดังนั้นจึงสามารถมีจำนวนเครือข่ายที่อยู่ใน Class B ได้มากกว่า Class A คือมีได้ถึง 214 = กว่า 16,000 เครือข่าย และก็สามารถมีเครื่องคอมพิวเตอร์เชื่อมต่อกันในเครือข่าย Class B แต่ละเครือข่ายได้ถึง 216 หรือมากกว่า 65,000 เครื่อง สุดท้ายคือ Class C ซึ่งมีหมายเลขเครื่องคอมพิวเตอร์แบบ 8 บิตและมีหมายเลขเครือข่ายแบบ 21 บิต ส่วนสามบิตแรกบังคับว่าต้องเป็น 1102 ดังนั้นใน แต่ละเครือข่าย Class C จะมีจำนวนเครื่องต่อเชื่อมได้เพียงไม่เกิน 254 เครื่องในแต่ละเครือข่าย (28 = 256 แต่หมายเลข 0 และ 255 จะไม่ถูกใช้งาน จึงเหลือเพียง 254) ดังนั้นวิธีการสังเกตได้ง่ายๆ ว่าเราเชื่อมต่ออยู่ที่เครือข่าย Class ใดก็สามารถดูได้จาก IP Address ในส่วนหน้า (ส่วน Network Address) โดย
Class A จะมี Network address ตั้งแต่ 0 ถึง 127 (บิตแรกเป็น 0 เสมอ)
Class B จะมี Network address ตั้งแต่ 128 ถึง 191 (เพราะขึ้นต้นด้วย 102 เท่านั้น)
Class C จะมี Network address ตั้งแต่ 192 ถึง 223 (เพราะขึ้นต้นด้วย 1102 เท่านั้น)

เช่น ถ้าเครื่องคอมพิวเตอร์ในอินเตอร์เน็ตมีหมายเลข IP ดังนี้ 181.11.82.22 ตัวเลข

181.11 แสดงว่าเป็นเครือข่ายใน Class B ซึ่งหมายเลขเครือข่ายเต็มๆ จะใช้ 2 ส่วนแรกคือ 181.11 และมีหมายเลขคอมพิวเตอร์คือ 82.22 หรือถ้ามี IP Address เป็น 192.131.10.101 ทำให้ทราบว่าเครื่องคอมพิวเตอร์นั้นเชื่อมต่ออยู่ใน Class C มีหมายเลขเครือข่ายคือ 3 ส่วนแรก ได้แก่ 192.131.10 และหมายเลขประจำ เครื่องคือ 101 เป็นต้น

  • Domain Name System (DNS)

เราทราบแล้วว่าการติดต่อกันในอินเตอร์เน็ตซึ่งใช้โปรโตคอล TCP/IP คุยกัน โดยจะต้องมีหมายเลข IP ในการอ้างอิงเสมอ แต่หมายเลข IP นี้ถึงแม้จะจัดแบ่งเป็นส่วนๆ แล้วก็ยังมีอุปสรรคในการที่ต้องจดจำ ถ้าเครื่องที่อยู่ในเครือข่ายมีจำนวนมากขึ้น การจดจำหมายเลข IP ดูจะเป็นเรื่องยาก และอาจสับสนจำผิดได้ แนวทางแก้ปัญหาคือการตั้งชื่อหรือตัวอักษรขึ้นมาแทนที่หมายเลข IP น่าจะสะดวกในการจดจำมากกว่า เช่น หมายเลข IP คือ 203.78.105.4 แทนที่ด้วยชื่อ thaigoodview.com ผู้ใช้บริการสามารถ จดจำชื่อ thaigoodview.com ได้แม่นยำกว่า นอกจากนี้ในกรณีเครื่องเสีย หรือต้องการเปลี่ยนแปลงเครื่อง คอมพิวเตอร์ที่ให้บริการ จากเครื่องที่มีหมายเลข IP 203.78.105.4 เป็น 203.78.104.9 ผู้ดูแลระบบจะจัดการ แก้ไขฐานข้อมูลให้เครื่องใหม่มีชื่อแทนที่เครื่อง เดิมได้ทันที โดยไม่ต้องโยกย้ายฮาร์ดแวร์แต่อย่างใด ส่วนในมุมมองของผู้ใช้ ก็ไม่ต้องแก้ไขอะไรทั้งสิ้น ยังคงสามารถใช้งานได้เหมือนเดิม

สำหรับเครือข่ายอินเตอร์เน็ต ได้มีการพัฒนากลไกการแทนที่ชื่อเครื่องคอมพิวเตอร์ที่ให้บริการกับหมายเลข IP หรือ name-to-IP Address ขึ้นมาใช้งานและเรียกกลไกนี้ว่า Domain Name System (DNS) โดยมีการจัดเก็บฐานข้อมูลชื่อและหมายเลข IP เป็นลำดับชั้น (hierachical structure) อยู่ในเครื่องคอมพิวเตอร์ทำหน้าที่พิเศษที่เรียกว่า Domain Name Server หรือ Name Server โครงสร้างของฐานข้อมูล Domain Name นี้ ในระดับบนสุดจะมีความหมายบอกถึง ประเภทขององค์กร หรือชื่อประเทศที่เครือข่ายตั้งอยู่ ชื่อ Domain ในชั้นบนสุดเหล่านี้จะใช้ตัวอักษรเล็กหรือใหญ่ก็ได้ แต่นิยมใช้อักษรตัวเล็ก โดยมีการกำหนดมาจากหน่วยงานที่เรียกว่า InterNIC (Internet Network Information Center) จากระดับบนสุดก็จะมีระดับล่างๆ ลงมาซึ่งใช้แทนความหมายต่างๆ แล้วแต่ผู้จัดตั้งจะ กำหนดขึ้น เช่น ตั้งตามชื่อคณะ หรือภาควิชาในมหาวิทยาลัย ตั้งตามชื่อฝ่ายหรือแผนกในบริษัท เป็นต้น แต่ละระดับจะถูกแบ่งคั่นด้วยเครื่องหมายจุดเสมอ การดูระดับจากบนลงล่างให้ดูจากด้านขวามาซ้าย เช่นชื่อ Domain คือ support.skynet.com จะได้ว่า com จะเป็นชื่อ Domain ในระดับบนสุด ถัดจากจุดตั้งต้น หรือรากของโครงสร้าง (root) ระดับที่สองคือชื่อ skynet และระดับล่างสุดคือ support หมายความว่า ชื่อ Domain นี้ แทนที่หน่วยงาน support ของบริษัทชื่อ skynet และเป็นบริษัทเอกชน ดังแสดงโครงสร้างลำดับชั้นของ Domian Name ที่ชื่อ Support.skynet.com
ในการกำหนดหรือตั้งชื่อแทนหมายเลข IP นี้จะต้องลงทะเบียนและขอใช้ที่หน่วยงาน InterNIC เสียก่อน ถ้าได้รับอนุญาตและลงทะเบียนเรียบร้อยแล้ว จะมีการจัดเก็บเพิ่มฐานข้อมูล name-to-IP address เพื่อให้ผู้ใช้บริการอินเตอร์เน็ตสามารถ อ้างอิงเข้ามาใช้บริการได้ เหมือนกับการขอจดทะเบียนตั้งชื่อบริษัท ที่ต้องมีผู้รับผิดชอบในการเก็บข้อมูลเป็นนายทะเบียนและคอยตรวจ ดูว่าชื่อนั้นจะซ้ำกับคนอื่นหรือไม่ ถ้าไม่มีปัญหาก็อนุญาตให้ใช้ได้ ชื่อ Domain Name นี้จะมีความยาวทั้งหมดไม่เกิน 255 ตัวอักษร แต่ไม่มีข้อจำกัดในเรื่องระดับชั้น ดังนั้นในชื่อหนึ่งๆ อาจมีหลายระดับได้ตามต้องการ และข้อสังเกตที่สำคัญก็คือชื่อ และจุดเหล่านี้ไม่เกี่ยวกับจุดใน ตัวเลขที่เป็น IP Address แต่อย่างใด ขบวนการหรือกลไกในการแปลงชื่อ Domain กลับเป็นหมายเลข IP หรือ Name Mapping นี้อยู่ที่การ จัดการฐานข้อมูล Domain Name แบบกระจาย โดยจะเริ่มจากเมื่อมีโปรแกรมอ้างถึงชื่อโดเมนบนเครื่องหนึ่ง ก็จะมีการสอบถามไปที่ฐานข้อมูล ในเครื่องที่ทำหน้าที่เป็น Name สำหรับเครือข่ายอินเตอร์เน็ต ได้มีการพัฒนากลไกการแทนที่ชื่อเครื่องคอมพิวเตอร์ที่ให้บริการกับหมายเลข IP หรือ name-to-IP Address ขึ้นมาใช้งานและเรียกกลไกนี้ว่า Domain Name System (DNS) โดยมีการจัดเก็บฐานข้อมูลชื่อและหมายเลข IP เป็นลำดับชั้น (hierachical structure) อยู่ในเครื่องคอมพิวเตอร์ทำหน้าที่พิเศษที่เรียกว่า Domain Name Server หรือ Name Server โครงสร้างของฐานข้อมูล Domain Name นี้ ในระดับบนสุดจะมีความหมายบอกถึง ประเภทขององค์กร หรือชื่อประเทศที่เครือข่ายตั้งอยู่ ชื่อ Domain ในชั้นบนสุดเหล่านี้จะใช้ตัวอักษรเล็กหรือใหญ่ก็ได้ แต่นิยมใช้อักษรตัวเล็ก โดยมีการกำหนดมาจากหน่วยงานที่เรียกว่า InterNIC (Internet Network Information Center) จากระดับบนสุดก็จะมีระดับล่างๆ ลงมาซึ่งใช้แทนความหมายต่างๆ แล้วแต่ผู้จัดตั้งจะ กำหนดขึ้น เช่น ตั้งตามชื่อคณะ หรือภาควิชาในมหาวิทยาลัย ตั้งตามชื่อฝ่ายหรือแผนกในบริษัท เป็นต้น แต่ละระดับจะถูกแบ่งคั่นด้วยเครื่องหมายจุดเสมอ การดูระดับจากบนลงล่างให้ดูจากด้านขวามาซ้าย เช่นชื่อ Domain คือ support.skynet.com จะได้ว่า com จะเป็นชื่อ Domain ในระดับบนสุด ถัดจากจุดตั้งต้น หรือรากของโครงสร้าง (root) ระดับที่สองคือชื่อ skynet และระดับล่างสุดคือ support หมายความว่า ชื่อ Domain นี้ แทนที่หน่วยงาน support ของบริษัทชื่อ skynet และเป็นบริษัทเอกชน ดังแสดงโครงสร้างลำดับชั้นของ Domian Name ที่ชื่อ Support.skynet.com
ในการกำหนดหรือตั้งชื่อแทนหมายเลข IP นี้จะต้องลงทะเบียนและขอใช้ที่หน่วยงาน InterNIC เสียก่อน ถ้าได้รับอนุญาตและลงทะเบียนเรียบร้อยแล้ว จะมีการจัดเก็บเพิ่มฐานข้อมูล name-to-IP address เพื่อให้ผู้ใช้บริการอินเตอร์เน็ตสามารถ อ้างอิงเข้ามาใช้บริการได้ เหมือนกับการขอจดทะเบียนตั้งชื่อบริษัท ที่ต้องมีผู้รับผิดชอบในการเก็บข้อมูลเป็นนายทะเบียนและคอยตรวจ ดูว่าชื่อนั้นจะซ้ำกับคนอื่นหรือไม่ ถ้าไม่มีปัญหาก็อนุญาตให้ใช้ได้ ชื่อ Domain Name นี้จะมีความยาวทั้งหมดไม่เกิน 255 ตัวอักษร แต่ไม่มีข้อจำกัดในเรื่องระดับชั้น ดังนั้นในชื่อหนึ่งๆ อาจมีหลายระดับได้ตามต้องการ และข้อสังเกตที่สำคัญก็คือชื่อ และจุดเหล่านี้ไม่เกี่ยวกับจุดใน ตัวเลขที่เป็น IP Address แต่อย่างใด ขบวนการหรือกลไกในการแปลงชื่อ Domain กลับเป็นหมายเลข IP หรือ Name Mapping นี้อยู่ที่การ จัดการฐานข้อมูล Domain Name แบบกระจาย โดยจะเริ่มจากเมื่อมีโปรแกรมอ้างถึงชื่อโดเมนบนเครื่องหนึ่ง ก็จะมีการสอบถามไปที่ฐานข้อมูล ในเครื่องที่ทำหน้าที่เป็น Name Server (ซึ่งอาจเป็นเครื่องเดียวกันนั้นเองหรือคนละเครื่องก็ได้ และอาจมี Name Server ได้หลายเครื่องด้วย ขึ้นกับว่าจะตั้งไว้ให้รู้จัก Name Server เครื่องใดบ้าง) เครื่องที่เป็น Name Server ก็จะเรียกดูในฐานข้อมูลและถ้าพบชื่อที่ต้องการก็จะจัดการแปลงชื่อ Domain เป็นหมายเลข IP ที่ถูกต้องให้ ระบบ Name Server นี้จะมีติดตั้งกระจายไปในหลายเครื่องบนระบบเครือข่ายอินเตอร์เน็ต เนื่องจากอย่างน้อยหน่วยงาน ISP หนึ่งๆ ก็จะต้องจัดตั้งระบบดังกล่าวขึ้นมา เพื่อคอยดูแลจัดการฐานข้อมูล Domain Name ของเครือข่ายตนเอง ดังนั้นถ้า Name Server เครื่องหนึ่งไม่มีข้อมูลหรือไม่รู้จัก Domain Name ที่ถูกถามมาก็อาจจะไปขอข้อมูลจาก Name Server เครื่องอื่นๆ ที่ตนรู้จักจนกว่าจะพบ หรือจนกว่าจะทั่วแล้วไม่ปรากฏว่ามีเครื่องไหนรู้จักเลย กรณีนี้ก็จะตอบไปว่าไม่รู้จัก (หรือถ้ามี Name Server บางเครื่องที่รู้จักชื่อนั้นแต่ขณะนั้น เกิดขัดข้องอยู่ก็จะได้คำตอบว่าไม่มีเครื่องใดรู้จักเช่นกัน) Server (ซึ่งอาจเป็นเครื่องเดียวกันนั้นเองหรือคนละเครื่องก็ได้ และอาจมี Name Server ได้หลายเครื่องด้วย ขึ้นกับว่าจะตั้งไว้ให้รู้จัก Name Server เครื่องใดบ้าง) เครื่องที่เป็น Name Server ก็จะเรียกดูในฐานข้อมูลและถ้าพบชื่อที่ต้องการก็จะจัดการแปลงชื่อ Domain เป็นหมายเลข IP ที่ถูกต้องให้ ระบบ Name Server นี้จะมีติดตั้งกระจายไปในหลายเครื่องบนระบบเครือข่ายอินเตอร์เน็ต เนื่องจากอย่างน้อยหน่วยงาน ISP หนึ่งๆ ก็จะต้องจัดตั้งระบบดังกล่าวขึ้นมา เพื่อคอยดูแลจัดการฐานข้อมูล Domain Name ของเครือข่ายตนเอง ดังนั้นถ้า Name Server เครื่องหนึ่งไม่มีข้อมูลหรือไม่รู้จัก Domain Name ที่ถูกถามมาก็อาจจะไปขอข้อมูลจาก Name Server เครื่องอื่นๆ ที่ตนรู้จักจนกว่าจะพบ หรือจนกว่าจะทั่วแล้วไม่ปรากฏว่ามีเครื่องไหนรู้จักเลย กรณีนี้ก็จะตอบไปว่าไม่รู้จัก (หรือถ้ามี Name Server บางเครื่องที่รู้จักชื่อนั้นแต่ขณะนั้น เกิดขัดข้องอยู่ก็จะได้คำตอบว่าไม่มีเครื่องใดรู้จักเช่นกัน)

กลับหน้าหลัก