OSI Model Layer 3 : Network Layer คืออะไร? เกี่ยวข้องอะไรกับระบบ Computer Network? เรามาเรียนรู้ไปด้วยกันครับ

Ake_.Net JPK
14 min readMar 8, 2024

--

เพื่อความเข้าใจในบทความนี้มากขึ้น สามารถอ่านบทความของผมในเรื่องของ Layer 2 และ Layer 4 ได้ในบทความต่อไปนี้ครับ

1. OSI Model Layer 2 : Ethernet Protocol คือมาตรฐานของอะไรในระบบ Computer Network มีที่มาที่ไปอย่างไร มีข้อมูลอะไรอยู่ในนั้นบ้าง เรามาเรียนรู้กันไปด้วยครับ

2. OSI Model Layer 4 — TCP : มาเรียนรู้เกี่ยวกับการโจมตีด้วย SYN Flood ใน TCP Protocol กันครับ

3. OSI Model Layer 4 — UDP : UDP Protocol คือมาตรฐานของอะไรในระบบ Computer Network เรามาเรียนรู้ไปด้วยกันครับ

ในสายงาน Computer Network เราต้องการที่จะ…

— กำหนดหลักการและโครงสร้างที่ชัดเจนสำหรับการสื่อสารในเครือข่ายคอมพิวเตอร์

— ให้ผู้ผลิตซอฟต์แวร์และอุปกรณ์เครือข่ายสามารถพัฒนาและปรับปรุงได้อย่างมีประสิทธิภาพ โดยการสร้างโมเดลที่รวมทุกด้านของการสื่อสารเข้าด้วยกัน

— ช่วยให้ผู้ทำงานในด้านเครือข่ายคอมพิวเตอร์ สามารถเข้าใจการทำงานของระบบเครือข่ายคอมพิวเตอร์ได้อย่างเชี่ยวชาญและทำให้ช่วยวิเคราะห์และแก้ปัญหาที่อาจเกิดขึ้นในระบบเครือข่ายคอมพิวเตอร์ได้ดีขึ้น

ดังนั้นจึงมีสิ่งที่เรียกว่า “OSI Model” ได้ถือกำเนิดขึ้นมาบนโลกใบนี้

OSI Model นี้ ได้ถูกออกแบบโดยองค์กรชื่อ “International Organization for Standardization” (ISO) เป็นองค์กรที่มีมาตรฐานสากลที่เกี่ยวข้องกับการผลิตและการบริการที่มีคุณภาพเพื่อให้เป็นตามหลักการข้อกำหนด

OSI Model (Open Systems Interconnection Model) เป็นโมเดลที่ใช้ในการอธิบายเกี่ยวกับวิธีการทำงานของเครือข่ายคอมพิวเตอร์และการสื่อสารข้อมูลระหว่างอุปกรณ์ต่างๆ ในเครือข่ายนั้นๆ โดยประกอบด้วยชั้นหรือเลเยอร์ (Layer) ทั้งหมด 7 ชั้น ซึ่งแต่ละชั้นจะรับผิดชอบหน้าที่และฟังก์ชันที่แตกต่างกันไปเพื่อให้การสื่อสารระหว่างอุปกรณ์ที่ต่างกันสามารถทำงานได้อย่างมีประสิทธิภาพและเป็นระบบและเป็นที่ยอมรับทั่วไปในวงการเครือข่ายคอมพิวเตอร์ในปัจจุบัน

รูปแสดงชั้นของการสื่อสาร OSI Model 7Layer เทียบกับ TCP/IP Model cr.รูปจาก https://www.imperva.com/learn/wp-content/uploads/sites/13/2020/02/OSI-vs.-TCPIP-models.jpg

จะมีประโยคภาษาอังกฤษประโยคนึงที่ใช้เพื่อช่วยให้จำชื่อของแต่ละ Layer ของ OSI Layer Model ได้ คือประโยคนี้ครับ ก็จำไว้ขำๆได้ครับ ไม่ต้องจริงจังอะไรครับ พอดีผมอ่านเจอมาเลยเอามาเล่าสู่กันฟังครับ

Please = Physical = Layer 1 , Do = Data = Layer 2 , Not = Network = Layer 3 , Tell = Transport = Layer 4 , Secret = Session = Layer 5 , Password = Presentation = Layer 6 , Anyone = Application = Layer 7

อีกแบบหนึ่งก็มีครับ ตามรูปด้านล่างครับ

cr.รูปจาก https://www.routeralley.com/completed/ccna_studyguide.pdf
cr.รูปจาก https://sectigostore.com/blog/wp-content/uploads/2020/11/osi-model-data-encapsulation-decapsulation2.png

การส่งข้อมูลจาก ผู้ส่ง(ต้นทาง) ไปยัง ผู้รับ(ปลายทาง)
เมื่ออ้างอิงตาม OSI Model 7 Layers จะเห็นว่าข้อมูล (Data Stream) จะเริ่มจาก Layer 7 ก่อน

และข้อมูลจะถูกส่งต่อไปยัง Lower Layer โดยทำการ Data Encapsulation (ห่อหุ้มข้อมูล) เมื่อถึง Layer 4 จะเริ่มใส่ข้อมูลส่วนหัวเข้าไป ซึ่งเราเรียกว่า Header

ถ้าใส่ข้อมูลส่วนหัวใน Layer 4 เราก็จะเรียกว่า L4 Header (Segment Header) ตามรูปด้านบน และทำการ Encapsulation แต่ละ Layer ลงมา

จนถึง Layer 2 ที่เรียกว่าชิ้นส่วนของข้อมูลนี้ว่า Frame และถูกส่งเป็น Bits Stream ออกไปผ่านทางสื่อสัญญาณที่ทำงานในระดับ Layer 1 (Physical Layer)

จากนั้นเมื่อถึงฝั่งผู้รับ ก็จะทำการแกะข้อมูล De-capsulation เพื่ออ่านข้อมูล Header ของแต่ละ Layer ตั้งแต่ Layer 2 -> 3 -> 4 เพื่อได้ข้อมูลให้ Application ที่ใช้งานอยู่บน Host ปลายทางได้นำข้อมูล (Data) ไปประมวลต่อไป

หลักการรับส่งข้อมูลในระบบเครือข่ายคอมพิวเตอร์คร่าวๆ เมื่อเทียบกับ OSI Model ก็มีประมาณนี้ครับ

ย้อนอดีตไปเมื่อ…

ปี คศ.1974
ได้มีการคิดค้น Protocol ที่เรียกว่า TCP/IP โดยถ้าเทียบ OSI Model จะอยู่ที่ Layer 3 (Network Layer) ถูกคิดค้นพัฒนาโดย

รูป คุณ Vint Cerf cr.รูปจาก https://www.invent.org/sites/default/files/styles/inductee_media/public/inductees/2022-06/2387_edited%20for%20web.jpg?h=13e38c63

คุณ Vint Cerf (อ่านประวัติของคุณ Vint Cerf ได้ที่ -> https://www.invent.org/inductees/vinton-g-cerf )

รูป คุณ Robert Kahn cr.รูปจาก https://www.invent.org/sites/default/files/styles/inductee_media/public/inductees/2022-06/Kahn_Robert%20E_Saved%20for%20web%20.jpg?h=f1a12738

และคุณ Robert Kahn (อ่านประวัติของคุณ Robert Kahn ได้ที่ -> https://www.invent.org/inductees/robert-e-kahn ) ในช่วงปี 1974 เพื่อใช้ในทางการทหารของประเทศสหรัฐอเมริกา (U.S. Department of Defense) เป็นส่วนหนึ่งของงานวิจัยในโครงการ ARPANET เพื่อใช้ในระบบเครือข่ายคอมพิวเตอร์

ปี คศ.1981
ได้มีการพัฒนาและได้ออกเป็นมาตรฐานข้อกำหนดให้กับ Internet Protocol โดยหน่วยงาน IETF (IETF : Internet Engineering Task Force เป็นหน่วยงานที่พัฒนามาตรฐานโปรโตคอลสำหรับการทำงานในระบบเครือข่ายคอมพิวเตอร์ เพื่อส่งเสริมการใช้งานอินเตอร์เน็ตอย่างมีประสิทธิภาพ) ตามเอกสาร RFC 791

รูปแสดง แต่ละ Field ของ Internet Datagram Header ในเอกสาร RFC 791 cr.รูปจาก https://datatracker.ietf.org/doc/html/rfc791

ซึ่งข้อกำหนดของ IPv4 Header ก็อยู่ในเอกสาร RFC 791 นี้ครับในเอกสารนี้จะเรียก IPv4 Header ว่า “Internet Datagram Header”

ปี คศ.1989
ได้มีการพัฒนาและได้ออกเป็นมาตรฐานข้อกำหนดเพิ่มเติม โดยหน่วยงาน IETF ตามเอกสาร RFC 1122 และได้เกิดเป็นอีก Model ที่ใช้ในวงการเครือข่ายคอมพิวเตอร์ โดยเราเรียก Model นี้ว่า

TCP/IP Model
หรือเรียกอีกชื่อว่า Internet Protocol Suite
ได้แบ่งชั้น (Layer) ของการสื่อสารไว้ 4 Layer ดังนี้

4. Application Layer
3. Transport Layer
2. Internet Layer
1. Link Layer

รูปแสดง รายละเอียด TCP/IP Model Layer 2 : Internet Layer cr.รูปจาก https://datatracker.ietf.org/doc/html/rfc1122

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

OSI Model : Layer 3 = Network Layer หรือ
TCP/IP Model : Layer 2
= Internet Layer ครับ

รูปแสดง ชื่อเรียกประเภทของการสื่อสารในแต่ละชั้นของการสื่อสาร (OSI Model 7Layer)cr. รูปจาก https://www.cpe.ku.ac.th/~plw/dccn/presentation/ch23.pdf

ในระดับชั้นสื่อสาร
Internet Layer (TCP/IP model : Layer 2) ,
Network Layer (OSI model : Layer 3)
เป็นการระบุฟังก์ชั่นหน้าที่ ของการทำงานในการส่งข้อมูลต่างๆในระบบเครือข่ายคอมพิวเตอร์ โดยปัจจุบันนี้เราจะใช้ Protocol ที่เรียกว่า IP (Internet Protocol) เป็นหลัก เพื่อทำการส่ง Data จาก Host ต้นทาง ไปยัง Host ปลายทาง เราเรียกการสื่อสารลักษณะนี้ว่า “Host-to-Host”

cr.รูปจาก https://www.youtube.com/watch?v=3Y70y6dM7Cs

การติดต่อแบบ Host-to-Host เป็นการติดต่อสื่อสาร ระหว่างอุปกรณ์ 2 ตัว ซึ่งอุปกรณ์ดังกล่าวนี้ จะอยู่ใน Network เดียวกัน หรือต่าง Network กันก็ได้ครับ (สำหรับเรื่อง Network หรือ Network ID ผมจะมาพูดถึงในบทความต่อไปในเรื่องของ IP address ครับ)

โดยตัวกลางที่จะทำให้ Host-to-Host นี้ติดต่อถึงกันได้ ซึ่งในปัจจุบันนี้เรียกใช้ Protocol ตัวกลางที่เรียกว่า IP (Internet Protocol)

รูป แสดงให้เห็นภาพรวมของ Protocol ที่ทำงานใน Layer ที่ต่ำกว่า และ สูงกว่า Network Layer (OSI Model L.3) นั้นใช้ IP=Internet Protocol cr.รูปจาก https://ars.els-cdn.com/content/image/3-s2.0-B978012373580550048X-f14-08-9780123735805.gif และ https://www.w3.org/People/Frystyk/thesis/tcp.gif

IP (Internet Protocol)
— เป็นการเชื่อมต่อแบบไม่การันตีข้อมูลใดๆทั้งสิ้น (Best Effort) เช่น ข้อมูลจะไม่เรียงลำดับ , ข้อมูลซ้ำ หรือข้อมูลเสียหาย โดยในเรื่องของการตรวจสอบความถูกต้องของข้อมูลนั้นจะเป็นหน้าที่ของ Layer ที่สูงกว่าต่อไป
— Data ถูกส่งผ่านสื่อสัญญาณใดๆก็ได้(Media Independent) ไม่ว่าจะเป็น ทองแดง (Copper) , Fiber optic หรือ Wireless (คลื่นวิทยุต่างๆ)
— ไม่ร้องขอการตั้งค่าเส้นทางไว้ก่อน , Router ทุกๆตัวไม่ต้องรักษาสถานะการเชื่อมต่อแบบ End-to-End เราเรียกการเชื่อมต่อลักษณะนี้ว่า Connectionless

รูปแสดง ชื่อเรียก หน่วยของแต่ละชั้นของการสื่อสาร cr.รูปจาก https://network-plus.yaser-rahmati.ir/chapter-2-the-osi-reference-model/the-osi-model

PDU : Protocol Data Unit
คือส่วนเล็กๆของข้อมูล หรือ หน่วยของข้อมูล ซึ่งแต่ละ Layer เราก็จะมีชื่อที่ใช้เรียกหน่วยของข้อมูลนั้น เช่น ใน Network Layer เราจะเรียกหน่วยของข้อมูลนี้ว่า “Packet”

Network Layer Functions : ฟังก์ชั่นการทำงานของชั้นการสื่อสาร Network

https://www.cs.umd.edu/~shankar/417-F01/
  • ทำการขนส่ง Packet จากผู้ส่ง ไปยัง ผู้รับ ได้โดยทุกๆ Host และทุกๆ Router จะสามารถทำงานใน Network Layer ได้

3 ฟังก์ชั่นการทำงานที่สำคัญใน Network Layer

รูปแสดง หน้าที่หลักของชั้นการสื่อสาร Network , Layer 3 cr.รูปจาก https://network-plus.yaser-rahmati.ir/chapter-2-the-osi-reference-model/24layer-3-the-network-layer
  • 1. Path determination :
    กำหนดเส้นทางเพื่อใช้ส่ง Packets จากต้นทางไปยังปลายทาง
    — Routing protocols : รูปแบบ ข้อตกลงต่างๆ กระบวนการเลือกเส้นทาง ของการส่งผ่าน,ส่งต่อ IP Packet ระหว่างต้นทาง ไปยัง ปลายทาง
    — ในแต่ละอุปกรณ์ในเครือข่ายคอมพิวเตอร์จากต้นทาง ไปยัง ปลายทาง ต้องมีการระบุที่อยู่
    — Internet Addresses : IP address V.4 & V.6
    — Assignment of addresses : กำหนดที่อยู่ในอุปกรณ์ที่ใช้งานในระบบเครือข่ายคอมพิวเตอร์
    — Address resolution : ทำการแปลความหมายของ Addresses นั้นๆ และ Addresses อื่นๆ
  • 2. Switching :
    ย้าย(Move) Packets ที่เข้ามายัง(Input) Router เพื่อไปออกจาก(Output) Router เพื่อไปยังเส้นทางที่เชื่อมต่อไว้ด้วยเงื่อนไขที่ระบุไว้อย่างเหมาะสม
    — ดำเนินการเลือกเส้นทาง ระบุเส้นทางของ IP Packet ที่ต้องการไปยังปลายทางนั้นๆที่เชื่อมต่ออยู่
  • 3. Call Setup & No Call Setup :
  • ++ Call Setup
    ในบางเครือข่ายจำเป็นต้องมีการตั้งค่าให้กับ Router เพื่อระบุเส้นทางไว้ล่วงหน้าก่อนที่จะทำการส่งข้อมูล (Connection Oriented) คล้ายกับระบบโทรศัพท์ — แต่ละ Packet จะถูกระบุ VC ไปด้วย (ไม่ใช่ Host ID ของปลายทาง) สิ่งนี้เรียกว่าการทำ Virtual Circuit (VC) โดย Router ทุกๆตัวจากต้นทาง ถึงปลายทาง จะทำหน้าที่รักษาสถานะการเชื่อมต่อไว้เพื่อทำการส่งต่อ Packet กระบวนการนี้ถูกใช้ใน Frame-relay , X.25 , ATM ซึ่งปัจจุบันไม่ได้ใช้แล้วในระบบเครือข่าย Internet
    — Link , Bandwidth , การใช้งานทรัพยากรของ Router ต่างๆจะถูกจัดสรรไว้ให้ VC ล่วงหน้าไว้แล้ว
  • ++ No Call Setup :
รูปแสดง Packet ที่มีปลายทางเดียวกัน อาจถูกส่งไปคนละเส้นทางที่แตกต่างกัน https://www.cs.umd.edu/~shankar/417-F01/
  • ระบบเครือข่ายคอมพิวเตอร์ในปัจจุบัน เราใช้ IP (Internet Protocol) การสื่อสารกันนั้นไม่ร้องขอการตั้งค่าเส้นทางไว้ก่อน , Router ทุกๆตัวไม่ต้องรักษาสถานะการเชื่อมต่อแบบ End-to-End เราเรียกการเชื่อมต่อลักษณะนี้ว่า Connectionless
    — Packet จะถูกระบุ Destination ด้วย Host ID (จำคำว่า Host ID ไว้นะครับ คำนี้จะถูกใช้อีกครั้งในเรื่องของ IP address แต่ในบทความนี้ จะยังไม่พูดถึง เดี๋ยวจะมาพูดถึงในบทความต่อไปครับ)
    Packet ที่มีปลายทางเดียวกัน อาจถูกส่งไปคนละเส้นทางที่แตกต่างกันได้ตามรูปด้านบน

4 กระบวนการหลัก ที่ถูกใช้ใน Network Layer / Internet Layer

— 1. Addressing End Devices คือ การระบุที่อยู่ให้กับอุปกรณ์ต้นทางและปลายทาง
— 2. Encapsulation คือ เมื่อรับข้อมูลจาก Layer 4 มาแล้วให้ทำการใส่ข้อมูลที่จำเป็นที่ใช้สำหรับ Network Layer ใส่ไว้ในสิ่งที่เรียกว่า Header จากนั้นทำการห่อหุ้มข้อมูลนั้นให้เป็นสิ่งที่เรียกว่า Packet / Datagram จากนั้นส่งไปยัง Layer 2 ต่อไป
— 3. Routing คือ กระบวนการในเลือกเส้นทางที่ดีที่สุดจาก Routing protocol ที่ใช้งานอยู่ เพื่อที่จะได้ส่ง Packet นั้นไปถึงปลายทางได้อย่างรวดเร็วมีประสิทธิภาพและถึงปลายทางอย่างถูกต้อง
— 4. De-encapsulation คือ เมื่อรับข้อมูลจาก Layer 2 มาแล้วให้ทำการแกะข้อมูลจาก Packet / Datagram เพื่อนำข้อมูลในส่วนของ Header มาประมวลผล จากนั้นทำการส่งข้อมูล (Data) ที่อยู่ถัดจาก Header ไปยัง Layer 4 เพื่อให้ประมวลผลต่อไป

cr.รูปจาก https://www.youtube.com/watch?v=3Y70y6dM7Cs

อย่างที่ได้กล่าวไปบ้างแล้วตอนต้น
ในการส่งข้อมูลจากต้นทางไปยังปลายทาง เราจะใช้ Protocol ที่เป็นตัวกลางคือ “Internet Protocol” ซึ่งเราจะใช้ Logical Address (ที่อยู่เสมือน) โดยเราใช้สิ่งที่เรียกว่า “IP Address” ในการระบุที่อยู่ให้กับ Host ต้นทางและ Host ปลายทาง ซึ่งคำว่า Network ID และ Host ID ที่ได้พูดถึงตอนต้น ก็คือส่วนประกอบที่อยู่ใน IP Address ครับ เอาคร่าวๆคือ IP Address version 4 = Network ID + Host ID (แต่ในบทความนี้ จะยังไม่พูดถึงเรื่อง IP Address นะครับ เดี๋ยวจะมาพูดถึงในบทความต่อไปครับ )

แล้วส่วนข้อมูลที่เป็น IP address ที่ว่านี้มันอยู่ตรงไหนหละ?
คำตอบคือ อยู่ในส่วนที่เรียกว่า “Header” ครับ

Layer 3 Header / IP Header / Internet Datagram Header

cr.รูปจาก https://ipcisco.com/wp-content/uploads/osi-model-headers.jpg

จากที่บอกไว้ตอนต้นครับ ในแต่ละ Layer จะมีสั่งที่เรียกว่า Header ซึ่ง Network Layer 3 จะมีส่วนของข้อมูล(PDU)ที่เราเรียกว่า “Packet” หรืออาจเจอบางตำราจะเรียกว่า “Datagram” ให้ความเดียวกัน

รูป แสดงขนาดของข้อมูลใน IPv4 Packet cr.รูปจาก https://www.youtube.com/watch?v=IozUoCVbLeI

ก็คือการหมายถึง ส่วนที่เป็น Header+Data ครับ โดย Header จะมีขนาดที่ 20–60Bytes และ Data (Payload) จะมีขนาดได้ตั้งแต่ 0–1480 Bytes (ขนาดของ Packet สามารถมีขนาดสูงสุดได้ที่ 65,536 Bytes)

ซึ่ง Header + Payload(DATA) = Packet ในขนาดปกติจะต้องมีขนาดไม่เกิน 1500 Bytes เพราะเมื่อส่งต่อให้กับ Layer 2 แล้วในมาตรฐาน Ethernet โดยปกติจะรองรับ IP Packet ที่ส่งมาในครั้งนั้นๆ ขนาดไม่เกิน 1500 Bytes ครับ

รูปแสดง การส่ง Packet ที่มีขนาดเกิน 1500Bytes ใน Layer 3 ถ้าการส่งไปยังอีกฝั่ง แล้วข้อมูลมีขนาดเกินค่า MTU 1500Bytes โดย Default เมื่อ Router ได้รับ Packet ดังกล่าวมา ก็ต้องทำ IP Fragmentation ก่อนส่ง Packet ออกไป

แต่ถ้า Header + Payload(DATA) = Packet แล้วมีขนาดมากกว่า 1500 Bytes ซึ่งก็คือเกินค่า MTU default (Maximum Transfer Unit default = 1500 Bytes ซึ่งค่า MTU สามารถปรับตั้งค่าให้กับอุปกรณ์ให้รองรับค่าสูงกว่า 1500 Bytes ได้ครับ เราก็จะเรียกว่าเป็น Jumbo frame แต่ก็ต้องขึ้นอยู่กับ Bandwidth ของ Interface ที่อุปกรณ์ใช้อยู่ด้วยครับ ซึ่งสำหรับในมาตรฐาน Ethernet จะรองรับการตั้งค่าให้กับ Jumbo frame ขนาดสูงสุดที่ไม่เกิน 9000 Bytes ครับ)

รูป แสดงข้อมูลโดยคร่าวใน IP Header เพื่อใช้สำหรับระบุความต่อเนื่องของ IP Packet เพื่อใช้ทำการ Fragmentation และ Reassembly cr.รูปจาก https://www.cs.umd.edu/~shankar/417-F01/

ถ้า IP Packet มีขนาดมากว่า 1500 Bytes แล้วนั้น ก่อนส่ง Packet ออกไปยังปลายทาง จะต้องมีการทำ Fragmentation ก่อน ก็คือ หั่น Packet ออกเป็นชิ้นๆ ให้มีขนาดน้อยกว่าหรือเท่ากับค่า MTU ของอุปกรณ์ตัวกลางนั้นๆครับ และ Host ปลายทาง จะใช้ข้อมูลที่อยู่ใน IP Header เพื่อทำการ Reassembled คือการประกอบ Packet กลับคืนและประมวลผลต่อไป

อย่างที่ได้กล่าวไปตอนต้น
ปัจจุบัน Protocol ที่เราใช้ในระบบเครือข่ายคอมพิวเตอร์ใน Network Layer 3 นี้ เรานิยมใช ้Protocol ที่เรียกว่า Internet protocol (IP) ดังนั้น Header ของ Layer 3 นี้เราจึงเรียกได้อีกชื่อนึงว่า “IP Header” ครับ

Internet Protocol (IP) ปัจจุบันนี้เราใช้กันอยู่ 2 Version ครับ คือ
Internet Protocol Version 4 (IPv4) และ
Internet Protocol Version 6 (IPv6)

เรามาดูกันครับว่า ใน IP Header มีข้อมูลอะไรอยู่ในนั้นบ้างครับ อย่างที่บอกไป IP มี 2 Version ครับ ซึ่งตอนนี้ Version 4 ยังใช้กันอย่างแพร่หลาย และยังไม่มีทีท่าว่าจะยกเลิกหรือหมดความนิยมไปนะครับ

สำหรับบทความนี้ ผมจะมาพูดถึง IP version 4 เป็นหลักก่อนนะครับ

รูป แสดงข้อมูลแต่ละ Field ของ IP Header version 4 cr.รูปจาก https://media.geeksforgeeks.org/wp-content/uploads/20230512140024/Screenshot-(359).png

ขนาดของข้อมูล IPv4 Header มีขนาดขั้นต่ำที่ 20 Bytes ครับ ซึ่งรูปแบบที่เขียนเพื่อให้ทำความเข้าใจได้ง่าย จะถูกแบ่งออกเป็นทีละ 4 Bytes = 32 bits (1 Byte = 8 Bit) ครับ ตามรูปด้านบน

ดังนั้นใน Header นี้ก็จะมี Field ที่ใช้ระบุ Logical Address ให้กับ Host ซึ่งใน Version 4 นี้จะมีขนาด 32 bits เราเรียก Logical address ใน IP version 4 นี้ว่า “IPv4 address” ครับ ก็จะมีไว้สำหรับระบุที่อยู่ให้กับ Host ต้นทาง (Source IP address) และ Host ปลายทาง (Destination IP address)

เรามาดูหน้าที่ของแต่ละ Field ใน IPv4 Header กันครับว่าแต่ละ Field ใช้เก็บข้อมูลอะไรบ้างครับ

รูป แสดงข้อมูลแต่ละ Field ของ IP Header version 4 cr.รูปจาก https://pressbooks.howardcc.edu/app/uploads/sites/4/2020/02/IPheader.png

ตำแหน่ง Bit 0–3 (เริ่มต้น Byte offset = 0)
Field : Version
ข้อมูลใน field version มีขนาด 4 bits เป็น Field ที่ใช้สำหรับบอก Version ของ IP เช่น ถ้าใช้ IPv4 ค่าใน Field version นี้จะมีค่าเป็น 0100 = 4 ในเลขฐาน10 ครับ

ตำแหน่ง Bit 4–7
Field : HLEN , Header Length , IHL (Internet Header Length)

รูปแสดง ค่า HLEN = 0101 cr.รูปจาก https://www.youtube.com/watch?v=3Y70y6dM7Cs

— ข้อมูลมีขนาด 4 bits ใช้เก็บค่าขนาดของ IP Header กล่าวคือ IPv4 Header จะแบ่งข้อมูลออกเป็นทีละ 32 Bits หรือ 4 Bytes แล้วนั้น ถ้าค่า HLEN = 0101 = 5 ก็หมายความว่า Header นี้มีขนาด = 5 x 4 Bytes = 20 Bytes ซึ่งก็คือ ข้อมูลของ Header จะจบที่ Field : Destination IP ซึ่งก็คือ Field : Option ไม่ได้ใส่ข้อมูลใดๆมา ข้อมูลที่ถัดจาก 20 Bytes แรก ก็จะเป็น Data แล้วครับ

รูปแสดง ค่า HLEN = 1111 cr.รูปจาก https://www.youtube.com/watch?v=3Y70y6dM7Cs

— แต่ถ้า Field : Option มีข้อมูลเพิ่มเติม ค่าของ HLEN ก็จะมีค่าได้สูงสุดที่ 1111 = 15 ก็คือ 15 x 4 Bytes = 60 Bytes ก็คือ IPv4 Header จะมีขนาดสูงสุดได้ที่ 60 Bytes นั่นเองครับ

ตำแหน่ง Bit 8–15 (เริ่มต้น Byte offset = 1)
Field : Types of Services (TOS) , Differentiated Services field (DS)

— ข้อมูลมีขนาด 8 Bits ใช้กำหนดค่า Priority ให้แต่ละ Packet ถูกใช้เกี่ยวกับการทำ QOS (Quality of Service) เพื่อจัดลำดับความสำคัญของ Packet เช่น Packet นี้เป็นข้อมูลเกี่ยว Voice ,VDO Streaming ก็ให้ความสำคัญก่อน ส่วนอื่นๆ เช่น Packet ที่เป็น File transfer หรือ Web Data ก็ให้สำคัญรองลงมาเป็นต้น

ตำแหน่ง Bit 16–31 (เริ่มต้น Byte offset = 2)
Field : Total Length , Datagram Length

— ข้อมูลมีขนาด 16 Bits ใช้เพื่อบอกว่า Packet นี้มีขนาดกี่ Bytes น้อยสุดคือเริ่มต้นที่ 20 Bytes และมากสุดที่ 65,536 Bytes (เกิดจาก 2¹⁶= 65,536 คือมี Bit ที่เป็น 1 ได้ทั้งหมด 16 Bits)

ตำแหน่ง Bit 32–63 (เริ่มต้น Byte offset = 4)
Field : Identification + Flags + Fragment Offet

รูปแสดงการทำ Fragmentation cr.รูปจาก https://www.cs.umd.edu/~shankar/417-F01/

— ทั้ง 3 Field นี้จะใช้จัดเก็บค่าต่างๆที่ไว้กำหนดค่าเกี่ยวกับการนำ Packet , IP Datagram มาทำการ Fragmentation ก็คือ การหั่น IP Datagram ออกเป็นชิ้นๆ เมื่อมี Data จาก Layer 4 เข้ามา + Layer 3 Header แล้วมีค่าเกิน 1500 Bytes (MTU default)

https://www.youtube.com/watch?v=-KRmts0J0Hk

ยกตัวอย่างจากรูปด้านบน เมื่อมี ขนาดของ Datagram , Packet = 4000 Bytes (ค่าที่ระบุไว้ใน Field : Length,Total Length) เป็น Data 3980 Bytes + L3 Header 20 Bytes

ข้อมูลจะถูกหั่นทีละ Data 1480 Bytes และ + L3 Header 20Bytes = 1500 Bytes เป็น Datagram,Packet ใหม่ ออกเป็น 3 Packet

Packet ที่ 1 : Length = 1500 Bytes (Data = 1480 Bytes + L3 Header = 20Bytes)
Packet ที่ 2 : Length = 1500 Bytes (Data = 1480 Bytes + L3 Header = 20Bytes)
Packet ที่ 3 : Length = 1040 Bytes (Data = 1020 Bytes + L3 Header = 20Bytes)
เมื่อประกอบกลับคืน Data จะเท่ากับ 3980 Bytes เหมือนเดิม

จากนั้นจะถูกระบุข้อมูลใน Field : ID (Indentification มีขนาด 16 Bits) ที่เป็นค่าเดียวกันเพราะเป็นข้อมูลเดียวกัน ยกตัวอย่าง ทั้ง 3 Packet ที่ถูกทำ Fragmentation จะมีค่า ID : X ในทุกๆ Packet ที่ถูกทำ Fragment จากรูปด้านบน

รูปแสดงค่าใน Field : Flags เมื่อไม่มีการทำ Fragmentation cr.รูปจาก https://www.youtube.com/watch?v=3Y70y6dM7Cs

เมื่อทำการหั่น,แบ่ง (Fragmentation) เมื่อได้ Packet 1 มาแล้ว แล้วจะต้องมี Packet 2 มาด้วย ต้องระบุค่าใน Field : Flags ด้วย โดย Flags มีขนาด 3 Bits ,
— Bit แรกทางซ้ายสุด ค่า default = 0 สงวนไว้ยังไม่ได้ใช้งาน
— Bit ที่ 2 หรือ Bit D,DF (Don’t Fragment) bit นี้ ถ้ามีค่า 0 หมายถึง Packet นี้มีการทำ Fragment แต่ถ้าไม่มีการทำ Fragment จะมีค่าเท่ากับ 1
— Bit ที่ 3 หรือ Bit M,MF (More Fragments) bit นี้ ถ้ามีค่า 1 เป็นการบอกว่า Packet นี้ถูกทำ Fragment มาแล้ว แต่ถ้า Bit นี้เท่ากับ 0 หมายความว่า ไม่มี การทำ Fragment มา หรือ หมายถึงอีกอย่างคือ เป็น Packet สุดท้ายแล้ว ที่ถูกทำ Fragment มา ก็ต้องดู Bit D,DF ประกอบไปด้วยครับ

ดังนั้นถ้า (Flags : 0 | DF | MF)
Field : Flags = 0 1 0 = ไม่มีการทำ Fragment
Field : Flags = 0 0 1 = Packet นี้ถูกทำ Fragment มา และมี Fragment ต่อไปด้วย
Field : Flags = 0 0 0 = Packet นี้ถูกทำ Fragment มา และไม่มี Fragment ต่อไปแล้ว Packet เป็น Fragment สุดท้ายแล้ว

และเมื่อหั่นข้อมูล Packet แล้วก็ต้องระบุค่าใน Field : Fragment Offset (มีขนาด 13 Bits) ด้วย เพื่อที่จะได้ระบุตำแหน่งของข้อมูลได้ถูกต้อง เพื่อใช้สำหรับประกอบ (Reassembly) Packet 1,2,3 กลับคืนได้

การระบุค่าใน Field : Offset
ระบบจะนำค่าตำแหน่งเริ่มต้น ของข้อมูลชุดแรก ซึ่งข้อมูลแรก คือตำแหน่งที่ Byte ที่ 0 ถึง Bytes ที่ 1479 (ก็คือขนาดข้อมูลจะเท่ากับ 1480 Bytes นั่นเอง) ดังนั้น ตำแหน่งจะเริ่มต้นที่ Bytes ที่ 0 ก็นำ 0 มาหารด้วย 8 จะได้ 0/8=0 ดังนั้น Packet 1 จะมีค่า Offset = 0 คือเริ่มต้นตำแหน่ง Bit ที่ 0 และ Packet 1 นี้ ข้อมูลใน Field : Flags จะเท่ากับ 0 0 1 คือ Packet นี้ถูกทำ Fragment มา และมี Fragment ต่อไปด้วย

จากนั้น Packet 2 ก็จะเริ่มต้นที่ตำแหน่ง Byte ที่ 1480 ถึง 2959 (ก็คือขนาดข้อมูลชุดที่ 2 นี้ก็จะเท่ากับ 1480 Bytes เช่นกัน) ก็ทำวิธีเดียวกัน คือเอา 1480/8 = 185 ดังนั้น Packet 2 จะมีค่า Offset = 185 คือเริ่มต้นที่ตำแหน่ง Bit ที่ 185 และ Packet 2 นี้ ข้อมูลใน Field : Flags จะเท่ากับ 0 0 1 คือ Packet นี้ถูกทำ Fragment มา และมี Fragment ต่อไปด้วย

จากนั้น Packet 3 ก็จะเริ่มต้นที่ตำแหน่ง Byte ที่ 2960 ถึง 3979 (ก็คือขนาดข้อมูลชุดที่ 3 นี้ก็จะเท่ากับ 1020 Bytes ซึ่งจะครบที่ Data = 3980 Bytes ) ก็เช่นเดิม เราก็นำ 2960/8 = 370 ดังนั้น Packet 3 จะมีค่า Offset = 270 คือเริ่มต้นที่ตำแหน่ง Bit ที่ 270 ครับ และ Packet 3 นี้ ข้อมูลใน Field : Flags จะเท่ากับ 0 0 0 คือ Packet นี้ถูกทำ Fragment มา และไม่มี Fragment ต่อไปแล้ว Packet เป็น Fragment สุดท้ายแล้ว

รูปแสดงการทำ Reassembly ให้กับ Packet cr.รูปจาก https://www.cs.umd.edu/~shankar/417-F01/

เมื่อถึง Host ปลายทาง ข้อมูลก็จะถูกประกอบ (Reassembled) กลับเป็น Packet เดียวและนำไปประมวลผลต่อไปครับ

ตำแหน่ง Bit 64–71 (เริ่มต้น Byte offset = 8)
Field : TTL (Time to Live)
— ข้อมูลใน Field : TTL มีขนาด 8 Bits มีค่าได้ตั้งแต่ 0–255 (เกิดจาก 2⁸=256) ไว้ใช้กำหนดอายุให้กับ Packet , IP Datagram ค่านี้จะถูกจาก Host ต้นทางที่จะทำการส่ง Packet ออกไป ซึ่งแต่ละ OS (ระบบปฏิบัติการ) จะมีค่าเริ่มต้นที่แตกต่างกันออกไป ส่วนนึงของค่า Default แต่ละ OS มีดังนี้
— Linux kernel 2.4 (circa 2001): 255 for TCP, UDP and ICMP
— Linux kernel 4.10 (2015): 64 for TCP, UDP and ICMP
— Windows XP (2001): 128 for TCP, UDP and ICMP
— Windows 10 (2015): 128 for TCP, UDP and ICMP
— Windows Server 2008: 128 for TCP, UDP and ICMP
— Windows Server 2019 (2018): 128 for TCP, UDP and ICMP
— MacOS (2001): 64 for TCP, UDP and ICMP

เรามาดูกันครับว่า TTL มันเอาไปใช้ในด้านใด

รูปแสดง Network Diagram กระบวนของ Router เมื่อกระทำกับค่า TTL

ยกตัวอย่าง จากรูป Network Diagram
Host: Akenet IP: 192.168.1.xxx ต้องการติดต่อกับ Host IP: 1.1.1.1 ผ่าน Internet Protocol (Host-to-Host) เมื่อมี Packet ออกจาก Host : Akenet

Host : Akenet จะแปะค่าลงไปใน Field : TTL = 128 (ตามค่า TTL Default ของ Windows OS)

เมื่อ Packet เดินทางมาถึง Router Gateway , จะอ่านค่า Destination ของ Packet ว่า Host : Akenet ต้องการติดต่อ IP 1.1.1.1 ซึ่ง IP address ดังกล่าวอยู่คนละ Network ID (เรื่อง Network ID,Host ID จะอธิบายในบทความต่อไปครับ) จากนั้น Router จะทำการส่ง Packet ออกทาง Output ตามข้อมูลที่มีใน Routing Table (เรื่อง Routing protocol จะอธิบายในบทความต่อไปครับ)

เมื่อ Router กำลังจะทำการส่ง Packet , Router จะนำค่า TTL ที่ได้รับเข้ามาประมวลผล โดยนำ TTL ลบ 1 แล้วระบุค่าใหม่ลงไปใน Field : TTL ของ Packet จากนั้นก็จะทำการส่งจาก Output ของตนเองไปยัง Router / Host ที่เชื่อมต่ออยู่กับ Output Interface นั้นๆครับ

จากรูปจะเห็นว่า Packet เดินทางจาก Host : Akenet ต้นผ่าน Router ทั้งหมด 6 ตัว ทำให้ TTL = 128 ของ Host ต้นทาง ถูกลบไปทั้งหมด 6 จะได้ TTL = 128–6 = 122

ดังนั้น Host ปลายทาง IP : 1.1.1.1 จะได้รับ Packet ที่มีค่า TTL = 122 ครับ

แล้ว TTL มีประโยชน์อะไร?

รูปแสดง Network Diagram เมื่อ Router ทำงานผิดพลาด ทำให้เกิด Layer 3 Loop

เมื่อผู้ดูแลระบบ ทำการคอนฟิก Routing protocol ใน Router ผิดพลาด หรือ Router ทำงานผิดพลาดด้วยสาเหตุใดก็แล้วแต่จนทำให้เกิดเหตุการณ์ Layer 3 Loop

Layer 3 Loop คือ Packet ไม่สามารถไปถึงปลายทางที่ต้องการได้ จากรูปด้านบน Packet จะเริ่มส่งไปยัง Router ตัวเดิมซ้ำๆวนไปมา

รูปแสดง Network Diagram เมื่อ Router ได้รับ Packet ที่มีค่า TTL = 0

แต่จากกระบวนการของ Router ที่กระทำกับค่า TTL ใน Packet คือเอา TTL-1 ก่อนที่จะส่งออก Output interface เมื่อ Packet ถูกส่งซ้ำไป สุดท้ายแล้วค่า TTL ก็จะเท่ากับ 0 ครับ

เมื่อ Router ได้รับ Packet ที่มีค่า TLL=0 ก็จะทำการ Drop,Discard Packet นั้นไปครับ ไม่ส่ง Packet ออก Output interface แล้วครับ ทำให้ไม่เกิดการใช้ Traffic ที่ไม่จำเป็นครับเพราะว่า Packet ไปไม่ถึงปลายทางที่ต้องการครับ

เพราะถ้าไม่มีการป้องกัน Layer 3 Loop ด้วย TTL ก็จะทำให้มีโอกาสที่ Packet จะส่งต่อลักษณะ Loop แบบนี้ มีเต็มทั่วระบบเครือข่ายคอมพิวเตอร์ ทำให้ประสิทธิภาพลดลงได้ครับ และถ้ามีมากจน Router และอุปกรณ์ Network อื่นๆทำงานไม่ไหวก็จะเกิดปัญหากับระบบเครือข่ายคอมพิวเตอร์ได้ครับ

ค่า TTL ในกรณีเมื่อ Host ทำการใช้โปรแกรม Ping และ Traceroute
จะเป็นการใช้งาน ICMP ค่า TLL ที่เราเห็นที่เครื่องที่ใช้คำสั่ง Ping จะเป็นค่า TTL จาก Packet ของ Host ปลายทาง ที่ตอบ echo Reply (ตามเงื่อนไขของ ICMP) ต่างๆกลับมาหาเครื่องที่ใช้คำสั่ง Ping ครับ ไม่ใช่ค่า TTL ที่ถูกสร้างจาก Host ต้นทางที่ใช้คำสั่ง Ping แต่เป็น TTL จาก Host ปลายทางครับ

รูปแสดง การใช้คำสั่ง Ping , Traceroute เพื่อดูค่า TTL จาก ICMP Protocol

จากรูปตัวอย่างด้านบน Host ต้นทางได้ทำการใช้คำสั่ง ping 1.1.1.1 จากนั้น Host ปลายทาง IP: 1.1.1.1 ได้ตอบ Reply กลับมา ด้วย TTL เริ่มต้นของต้นเองคือ 255 แล้ว Host ต้นทางเราได้รับ TTL จาก Gateway คือ TTL=250

รูป แสดงถึงลักษณะของคำว่า Hop cr.รูปจาก www.bharatagritech.com

ความหมายก็คือ Packet ที่ติดต่อไปยัง 1.1.1.1 กระโดดไปทั้งหมด 5 Hops เมื่อใช้คำสั่ง traceroute 1.1.1.1 จะเห็นว่า Packet ที่ออกจาก Gateway IP: 192.168.1.1 กระโดดข้าม Router ระหว่างทางไปทั้งหมด 5 Hops จึงได้ TTL = 255–5 = 250

รูปแสดง การใช้คำสั่ง Ping , Traceroute เพื่อดูค่า TTL จาก ICMP Protocol ในกรณี Hop=0

แต่เมื่อเราใช้ Host ต้นทางใช้คำสั่ง Ping ไปยัง Router Gateway IP: 192.168.1.1 จากรูปจะเห็นว่า Host เราต่อตรงๆกับ Router Gateway IP: 192.168.1.1 เมื่อ Gateway ได้รับ ICMP packet ก็ต้อง Reply กลับมาด้วย TTL=64 และเมื่อใช้คำสั่ง Traceroute จะเห็นว่า ICMP Packet ยังไม่ได้กระโดดข้าม Router ใดๆเลย ค่า Hop จึงเท่ากับ 0 ดังนั้น ค่า TTL ที่เห็นจากคำสั่ง Ping ก็เท่ากับ 64–0=64 นั่นเอง ซึ่งเป็นค่า Default ของ Router Gateway ที่ส่งมาให้ Host ต้นทางครับ

ตำแหน่ง Bit 72–79
Field : Protocol , Upper Layer Protocol
— ข้อมูลมีขนาด 8 Bits ใช้สำหรับระบุค่าตัวเลขของ Protocol นั้นๆ เพื่อใช้บอก Layer ที่อยู่สูงต่อไปว่าข้อมูล Data,Payload ที่ขนมาใน Layer 3 นี้จะใช้ Protocol อะไรต่อไป

รูปแสดง ตัวอย่าง ของ Application พื้นฐาน และพอร์ทมาตรฐานของ App นั้นๆ เราจะเรียกมันว่า Well-Known Port ถูกกำหนดไว้โดยองค์กร IANA มีตั้งแต่พอร์ท 0–1023 จะเอาไว้ใช้สำหรับฝั่ง Server ส่วนฝั่ง Clients จะเริ่มตั้งแต่พอร์ท 1024–49151 ส่วนพอร์ท 49152–65535 นั้นเป็น Private port ที่นำไปใช้ได้ตามต้องการตามแต่ละ Application หรือระบบนั้นๆที่เราต้องการได้เลย ส่วน Protocol number นั้นเอาไว้ระบุให้ Layer3 รู้ว่า Data ที่ถูกขนส่งมานี้ใช้ Protocol ในการขนส่ง number 6 คือ TCP , number 17 คือ UDP , number 1 คือ ICMP

เช่น Layer 4 จะใช้ TCP นะ ก็จะใส่ค่าใน Field : Protocol = 0000 0110 = 6 หรือ ถ้าจะใช้ UDP ก็จะใส่ค่าใน Field : Protocol = 0001 0001 = 17 ครับ หรือถ้าจะใช้ ICMP ก็จะใส่ค่าใน Field : Protocol = 0000 0001 = 1 เป็นต้นครับ

ตำแหน่ง Bit 80–95
Field : Header Checksum
— ข้อมูลมีขนาด 16 Bits เป็นข้อมูลที่ Router จะนำไปใช้เพื่อตรวจสอบว่า Packet ที่ได้รับมานั้นถูกต้องหรือไม่ มีข้อมูลอื่นแทรกเข้ามาจากข้อมูลเดิมจากต้นทางหรือไม่ โดยจะใช้ค่าใน Header Checksum มาทำการตรวจสอบ

ถ้าตรวจสอบแล้วค่าออกมาบ่งบอกว่ามี Error ก็จะทำการ Drop,Discard Packet นั้นทิ้งไป ไม่นำไปประมวลต่อไปครับ ส่วนเรื่องความครบถ้วนของข้อมูลนั้น เป็นหน้าที่ของ Upper Layer ต่อไปครับ เพราะ IP Protocol เป็น Connectionless อย่างที่ได้บอกไปตอนต้น

ตำแหน่ง Bit 96–127 (เริ่มต้น Byte offset = 12)
Field : Source Address , Source IPv4 address
— ข้อมูลมีขนาด 32 Bits ใช้สำหรับเก็บ Logical Address ต้นทาง ซึ่งก็คือ Source IP address เพื่อระบุที่อยู่ให้กับ Host ต้นทางครับ

ตำแหน่ง Bit 128–159 (เริ่มต้น Byte offset = 16)
Field : Destination Address , Destination IPv4 address
— ข้อมูลมีขนาด 32 Bits ใช้สำหรับเก็บ Logical Address ปลายทาง ซึ่งก็คือ Destination IP address เพื่อระบุที่อยู่ให้กับ Host ปลายทางที่ต้องการจะติดต่อสื่อสารครับ

สำหรับเรื่อง IPv4 Address คร่าวๆก็คือเป็นตัวเลขขนาด 32 Bits ครับ โดยการเขียนจะแบ่งเป็น 4 octet ครับ เช่น 192.168.1.1 = 11000000.10101000.00000001 .00000001 (แต่เมื่ออุปกรณ์ Network อ่านค่ามันก็อ่าน 32 Bits เรียงๆกันไปเลยครับไม่มี .(จุด)มาคั่น) ใน Internet Protocol (IP) จะใช้ Logical Address นี้เพื่อระบุที่อยู่ให้กับ Host นั้นๆครับ คร่าวๆประมาณนี้ครับ ไว้จะมาเล่ามาอธิบายอย่างละเอียดในบทความต่อๆไปครับ

รายละเอียดของแต่ละ Field ใน IPv4 Header ก็มีประมาณนี้ครับ ขนาด Default Header ก็คือ 20 Bytes ครับ จบที่ทั้งหมดตั้งแต่ Bit 0-159 รวม 160 Bits = 160/8 = 20 Bytes ครับ

สรุปภาพรวมขั้นตอนการทำงานของ OSI Model Layer 3 Network

cr. รูปจาก https://cyberhoot.com/wp-content/uploads/2022/01/nb-06-simple-steps-to-sd-access-wp-cte-en_1-1024x589.png

ลักษณะการเชื่อมต่ออุปกรณ์ Computer Network ในองค์กร หรือหน่วยงานใดๆ ในลักษณะที่เป็น Best Practice คือ เป็นสิ่งที่ผู้คนส่วนมากนิยมใช้งานและได้ประสิทธิภาพสูงสุดครับ ก็จะเป็นตามรูปด้านบนครับ

โดยการทำงานของ Network Layer 3 ก็จะอยู่ในส่วนของ Router หรือพวกอุปกรณ์ MultiLayer Switch ครับ อุปกรณ์ Endpoints ปลายทาง,ต้นทาง ต่างๆ ก็จะเชื่อมต่อกับ Access Switch ครับ

โดย Core Router ก็จะเป็นอุปกรณ์ขอบหรือ Edge ของระบบ Network ของเรา เพื่อจะเริ่มเชื่อมต่อกับผู้ให้บริการเจ้าอื่นๆหรือเชื่อมต่อไปยังสาขาอื่นๆครับ

ส่วนระบบ Network ภายในสถานที่นั้นๆจะมี Distribution Router หรือพวก Multi Layer Switch เพื่อเชื่อมต่อกับ Access Switch ครับ

รูป แสดง Forwarding Processes cr.รูปจาก https://thebitbucket.co.uk/wp-content/uploads/2015/01/IP-Forwarding-Process-Switching-e1429378880666.jpg

Forwarding Processes
อุปกรณ์ที่รองรับการทำงาน Layer 3 Network จะสามารถอ่านข้อมูลได้ตั้งแต่ Layer 1 , 2 และ 3 ครับ

จากรูป เมื่อ Router R1 แกะข้อมูล (De-capsulation) ออกจาก Layer 2 ก็จะทำการเริ่มอ่านข้อมูล Header ของ Layer 3 ครับ

โดย R1 จะทำการอ่านค่าต่างๆ จนถึงค่าใน Field : Checksum เมื่อไม่พบ Error ก็ทำการ อ่านค่า Destination IP address และอ่านค่า TTL ว่ามากกว่า 1 หรือไม่

ถ้ามากกว่า 1 ก็จะนำค่า Destionation IP มาคำนวณแล้วเทียบค่า Network ID , Prefix ว่าตรงกับค่า Prefix ใน Routing Table ของตนเองหรือไม่

ถ้าตรงกันก็จะทำการส่ง Packet ออก Output interface ไปยัง R2 ต่อไปครับ ก่อนส่งก็ต้องทำการ Encapsulation (ห่อหุ้มข้อมูล) ออกมาเป็น Ethernet Frame ที่ทำงานใน OSI Model Datalink Layer 2 และ ส่งออก Media ที่ทำงานใน OSI Model Physical Layer 1 ต่อไปครับ

เรามาดูข้อมูลแต่ละ Field ของ IPv4 Header กับของจริงกันครับ ว่ามีข้อมูลอะไรบ้าง เหมือนกับทฤษฎีหรือป่าว?

รูป แสดง Network Diagram เพื่อใช้อธิบายเกี่ยวกับการทำ Packet Capture

โดยเราจะใช้โปรแกรม WireShark Packet Capture เพื่อทำการอ่านข้อมูลใน Packet กันครับ

รูป แสดงข้อมูล จากโปรแกรม WireShark

เมื่อใช้โปรแกรม WireShark เราก็จะอ่านข้อมูลใน Packet ได้ ตามรูปด้านบน จะเห็นว่า
Layer 3 ใช้ Internet Protocol version 4 ,
มีขนาด Header = 20 Bytes คือตามค่า Default ไม่มีระบุ Option ใดๆเพิ่มเติม ,
ค่า DS = 0 ไม่มีการทำ QoS ,
ค่า Total Length = 40 Bytes ก็คือ เป็น Header 20 Bytes อีก 20 Bytes คือข้อมูลที่ถูกส่งมาจาก Layer 4 ครับ ,
ค่า Flags = 010 คือ DF=1 ไม่มีการทำ Fragment เพราะ Total Length ยังไม่เกิน 1500 Bytes ครับ
ค่า TTL = 128 เพราะต้นทางออกจาก Windows OS ครับ ,
ค่า Protocol = 6 คือบอกให้ Layer 4 รู้ว่าข้อมูลที่ขนมาจะต้องใช้ TCP ,
และ Source , Destination IP address เพื่อระบุที่อยู่ให้กับ Host ต้นทาง และ Host ปลายทางที่ต้องการติดต่อหาครับ

สำหรับบทความนี้ขอจบไว้เท่านี้ครับ เดี๋ยวบทความต่อไป ผมจะมาขยายความในเรื่องของ Routing Protocol และ IPv4 , IPv6 Address ต่อไปครับ

References :

https://home.ubalt.edu/abento/650/nettransport/
https://datatracker.ietf.org/doc/html/rfc791
https://datatracker.ietf.org/doc/html/rfc112
https://www.cs.umd.edu/~shankar/417-F01/
https://www.cs.umd.edu/~shankar/417-F01/Slides/chapter4a-aus/sld001.htm
https://network-plus.yaser-rahmati.ir/chapter-2-the-osi-reference-model/the-osi-model
https://network-plus.yaser-rahmati.ir/chapter-2-the-osi-reference-model/24layer-3-the-network-layer
https://sectigostore.com/blog/how-osi-model-network-communication-layers-work/
https://www.sharetechnote.com/html/IP_Network_OSI7Layer.html
https://www.newsoftwares.net/blog/guide-to-understanding-which-osi-layer-encrypts-data/
https://www.javatpoint.com/osi-model
https://www.geeksforgeeks.org/introduction-and-ipv4-datagram-header/https://www.youtube.com/watch?v=n46b50zvN94
https://www.youtube.com/watch?v=3Y70y6dM7Cs
https://www.youtube.com/watch?v=ZbvhJiTtiSI
https://www.youtube.com/watch?v=fmLO-dtIAX0
https://www.youtube.com/watch?v=-KRmts0J0Hk
https://en.wikipedia.org/wiki/Internet_Protocol#:~:text=IP%20was%20the%20connectionless%20datagram,Transmission%20Control%20Protocol%20(TCP).
https://en.wikipedia.org/wiki/Differentiated_services
https://www.techtarget.com/searchnetworking/definition/time-to-live#:~:text=The%20meaning%20of%20TTL%2C%20or,a%20packet%20should%20be%20discarded.
https://www.cloudflare.com/learning/cdn/glossary/time-to-live-ttl/
https://packetpushers.net/blog/ip-time-to-live-and-hop-limit-basics/
https://www.routeralley.com/completed/ccna_studyguide.pdf

--

--

Ake_.Net JPK

ชอบเขียนบทความเกี่ยวกับระบบ Computer Network เพื่อทบทวนความรู้ความเข้าใจให้กับตนเองเป็นหลัก และให้ผู้ที่สนใจสามารถเข้ามาอ่านได้ครับ ขอขอบคุณที่ติดตามครับ