IP เป็นโปรโตคอลในระดับเน็ตเวิร์คเลเยอร์ ทำหน้าที่จัดการเกี่ยวกับแอดเดรสและข้อมูลการควบคุมการส่งข้อมูลบางอย่างที่ใช้ในการหาเส้นทางของแพคเกจ ซึ่งกลไกในการหาเส้นทางของ IP จะมีความสามารถในการหาเส้นทางที่ดีที่สุด และสามารถเปลี่ยนแปลงเส้นทางได้ในระหว่างการส่งข้อมูล และมีระบบการแยกและการประกอบ datagram เพื่อรองรับการส่งข้อมูลในระดับ data link ที่มีขนาด MTU (Maximum Transmission Unit) ที่แตกต่างกัน ทำให้สามารถนำ IP ไปใช้ในโปรโตคอลอื่นได้หลากหลาย เช่น Ethernet, Token Ring หรือ Apple Talk
การเชื่อมต่อของ IP เพื่อทำการส่งข้อมูล จะเป็นแบบ connectionless หรือเกิดเส้นทางการเชื่อมต่อในทุกๆครั้งของการส่งข้อมูล 1 datagram โดยจะไม่ทราบถึงข้อมูล datagram ที่ส่งก่อนหน้าหรือส่งตามมาแต่การส่งข้อมูลใน 1 datagram อาจจะเกิดการส่งได้หลายครั้งในกรณีที่มีการแบ่งข้อมูลออกเป็นส่วนย่อยๆ (fragmentation) และถูกนำไปรวมเป็น datagram เดิมเมื่อถึงปลายทาง
Version
(4 bit) |
Header length
(4 bit) |
Type of service
(8 bit) |
Total length in bytes
(16 bit) |
Identification (16 bit) |
Flag
(3 bit) |
Fragment offset
(13 bit) |
Time to live (TTL)
(8 bit) |
Protocol (8 bit) |
Header checksum (16 bit) |
Source IP address
(32 bit) |
Destination IP address
(32 bit) |
Option |
Data |
เฮดเดอร์ของ IP โดยปกติจะมีขนาด 20 ไบต์ ยกเว้นในกรณีที่มีการเพิ่ม option บางอย่าง ฟิลด์ของเฮดเดอร์ IP จะมีความหมายดังนี้
- version หมายเลขเวอร์ชันของโปรโตคอล ที่ใช้งานในปัจจุบันคือ เวอร์ชัน 4 (IPv4) และเวอร์ชัน 6 (IPv6)
- header length ความยาวของเฮดเดอร์โดยทั่วไปถ้าไม่มีส่วน option จะมีค่าเป็น 5 (5*32 bit)
- type of service (TOS) ถูกออกแบบมาเพื่อใช้ในการเก็บค่าของ Minimize delay, Maximize Throughput, Maximize reliability, Maximize Monetary cost เพื่อเป็นข้อมูลสำหรับเราท์เตอร์ในการตัดสินใจเลือกการเราท์ข้อมูลแต่ละ datagram แต่ในปัจจุบันไม่ได้มีการนำไปใช้งานแล้ว
- length ความยาวทั้งหมดเป็นจำนวนไบต์ของ datagram ซึ่งด้วยขนาด 16 บิตของฟิลด์ จะหมายถึงความยาวสูงสุดของ datagram คือ 65535 ไบต์ (64 K) แต่ในการส่งข้อมูลจริง ข้อมูลจะถูกแยกเป็นส่วนๆ ตามขนาดของ MTU ที่กำหนดในลิงค์เลเยอร์ และนำมารวมกันอีกครั้งเมื่อส่งถึงปลายทาง แอพพลิเคชันส่วนใหญ่จะมีขนาดของ datagram ไม่เกิด 512 ไบต์
- identification เป็นหมายเลขของ datagram ในกรณีที่มีการแยก datagram เมื่อข้อมูลส่งถึงปลายทางจะนำข้อมูลที่มี identification เดียวกันมารวมกัน
- flag ในกรณีที่มีการแยก datagram
- fragment offset ใช้ในการกำหนดตำแหน่งของข้อมูลใน datagram ที่มีการแยกส่วน เพื่อให้สามารถนำกลับมาเรียงต่อกันได้อย่างถูกต้อง
- Time To Live(TTL) กำหนดจำนวนครั้งที่มากที่สุดที่ datagram จะถูกส่งระหว่าง hop (การส่งผ่านข้อมูลระหว่างเน็ตเวิร์ค) เพื่อป้องกันไม่ให้เกิดการส่งข้อมูลโดยไม่สิ้นสุด โดยเมื่อข้อมูลถูกส่งไป 1 hop จะทำการลดค่า TTL ลง 1 เมื่อค่าของ TTL เป็น 0 และข้อมูลยังไม่ถึงปลายทาง ข้อมูลนั้นจะถูกยกเลิก และเราเตอร์สุดท้ายจะส่งข้อมูล ICMP แจ้งกลับมายังต้นทางว่าเกิด time out ในระหว่างการส่งข้อมูล
- protocol ระบุโปรโตคอลที่ส่งใน datagram เช่น TCP, UDP หรือ ICMP
- header checksum ใช้ในการตรวจสอบความถูกต้องของข้อมูลในเฮดเดอร์
- source IP address คือ หมายเลข IP ของผู้ส่งข้อมูล
- destination IP address คือ หมายเลข IP ของผู้รับข้อมูล