თეორია:პროტოკოლები:IPv4

WiKi MikroTik geo გვერდიდან
Jump to navigation Jump to search

IPv4 (Internet Protocol version 4) — ინტერნეტ პროტოკოლის (IP) მეოთხე ვერსია. პირველი ფართოდ გამოყენებული ვერსია. პროტოკოლი აღწერილია RFC 791–ში (1981 წლის სექტემბერი), შეცვალა RFC 760 (1980 წლის იანვარი).

მისამართის წარდგენა

IPv4 იყენებს 32 ბიტიან (ოთხ ბაიტიანი) მისამართებს, მისამართის სივრცის შეზღუდვა 4 294 967 296 (232) შესაძლო უნიკალური მისამართებით.

IPv4 მისამართების წერის ტრადიციული ფორმაა ჩაწერა ოთხი ათობითი რიცხვის სახით (0-დან 255-მდე), გამოყოფილი წერტილებით. დრობი მიუთითებს ქვექსელის ნიღაბის სიგრძეზე.

ჩაწერის ფორმა მაგალითი გარდაქმნა ათობითი ნოტაციიდან წერტილებით
ათობითი წერტილებით 192.0.2.235
თექსვმეტობითი წერტილებით 0xC0.0x00.0x02.0xEB თითოეული ოქტეტი გარდაიმნება თექვსმეტობით ფორმაში
რვაობითი წერტილებით 0300.0000.0002.0353 თითოეული ოქტეტი გარდაიმნება რვაობით ფორმაში
თექვსმეტობითი 0xC00002EB ოქტეტების კონკატენაცია თექსვმეტობითი ნოტაციიდან წერტილებით
ათობითი 3221226219 32-ბიტიანი რიცხვი ათობითი ფორმით
რვაობითი 030000001353 32-ბიტიანი რიცხვი რვაობითი ფორმით

ქვექსელის დანიშნულება

ზოგიერთი IPv4 მისამართი დარეზერვებულია სპეციალური მიზნებისათვის და არ არის განკუთვნილი გლობალური მარშრუტიზაციისთვის[1]. RFC 6890 სპეციალური დანიშნულების ქვესახეების სია.

ქვექსელი დანიშნულება მარშრუტიზაცია
0.0.0.0/8[2] «ამ» («ვისამე») ქსელის პაკეტების წყაროების მისამართები..[1][3]
0.0.0.0/32 სოკეტებში სტატუსით «listening» აღინიშნება გამომგზავნელის ნებისმიერი IP ან მიმღების ნებისმიერი ქსელი ამ ჰოსტზე. მისი საშუალებით ქსელში გაგზავნა შესაძლებელია მხოლოდ როგორც წყაროს მისამართი, თუ ჰოსტისთვის ჯერ არ აქვს მინიჭებული IP მისამართი (ჩვეულებრივ DHCP პროტოკოლით). არ შეიძლება გამოყენებულ იქნას როგორც დანიშნულების მისამართი ქსელშ.

Cisco მარშრუტიზატორებში, როდესაც შეეცდებით პაკეტის გაგზავნას 0.0.0.0 მისამართზე, იგი გაიგზავნება broadcast მისამართზე ყველაზე პატარა დაკავშირებულ ქვექსელზე(connected მარშრუტიზაციის ცხრილში).

აკრძალულია
10.0.0.0/8[4] კერძო ქსელებში გამოყენებისთვის. მხოლოდ კერძო ქსელებში
100.64.0.0/10 Shared Address Space. RFC 6598. მომსახურების მიმწოდებელ ქსელებში გამოყენებისთვის.
127.0.0.0/8[2] ქვექსელი კომუნიკაციისათვის ჰოსტის შიგნით (იხ. localhost). გამოიყენება ქსელის ქვესისტემა, მაგრამ სინამდვილეში ასეთი პაკეტები არ გადის ქსელის ბარათით. თუ პაკეტი ასეთი დანიშნულების მისამართით იქნა მიღებული ქსელიდან, ის უნდა გაუქმნდეს. აკრძალულია
169.254.0.0/16[5] არხის მისამართები. ქვექსელი გამოიყენება ოპერაციული სისტემის მიერ IP– ის ავტომატურად დანიშვნის მიზნით, თუ კონფიგურირებული მისამართების მიღება DHCP-ით, მაგრამ არცერთი სერვერი არ პასუხობს. მხოლოდ კერძო ქსელებში
172.16.0.0/12[4] გამოყენება კერძო ქსელში. მხოლოდ კერძო ქსელებში
192.0.0.0/24[6] IETF Protocol Assignments
192.0.0.0/29 Dual-Stack Lite (DS-Lite). RFC 6333. (IPv6 transition mechanisms)
192.0.0.170/32 NAT64
192.0.0.171/32 DNS64
192.0.2.0/24[7] დოკუმენტაციაში მოცემული მაგალითებისათვის. აკრძალულია
192.88.99.0/24[1] გამოიყენება უახლოეს კვანძში დაგზავნისათვის. RFC 3068
192.88.99.1/32 გამოიყენება როგორც რეტრანსლატორი ინკაფსულაციისას IPv6 IPv4-ში (6to4)[8]. სხვა სიტყვებით რომ ვთქვათ, ეს IP არ არის უნიკალური. ამის შესახებ ბევრი კომპანია საუბრობს. პაკეტი ამ მისმართზე გადავა უახლოეს ჰოსტთან ამ IP- ით, რომელიც შეფუთავს პაკეტს და გადაუგზავნის მას IPv6 მარშრუტზე.
გლობალურად ნებადართულია
192.168.0.0/16[4] კერძო ქსელებში გამოყენებისთვის. მხოლოდ კერძო ქსელებში
198.51.100.0/24[7] დოკუმენტაციაში მოცემული მაგალითებისათვის. აკრძალულია
198.18.0.0/15[9] წარმადობის ტესტირების სტენდებისათვის. მხოლოდ ტესტებისთვის
203.0.113.0/24[7] დოკუმენტაციაში მოცემული მაგალითებისათვის. აკრძალულია
224.0.0.0/4[10] გამოიყენება მულტიკასტისთვის. სრული აქტუალური სიადარეზერვირებული ბლოკების საიტზე IANA [1]. განმარტებები დარეზერვირებული მულტიკასტური ქვექსელები RFC 5771. Multicast მისამართის გამოყოფა აღწერილია RFC 5771-ში.
224.0.0.0/24

224.0.0.1 — ყველა სისტემა ქვე-ქსელში.
224.0.0.2 — ყველა მარშრუტიზატორი ქვექსელში.
224.0.0.5, 224.0.0.6 - OSPF
224.0.0.9 - RIPv2
224.0.0.10 - IGRP
224.0.0.13 - PIM
224.0.0.18 - VRRP
224.0.0.19, 224.0.0.20, 224.0.0.21 - IS-IS
224.0.0.22 - IGMP
224.0.0.102 - HSRP
224.0.0.251 - Multicast DNS
224.0.0.252 - Link-local Multicast Name Resolution
224.0.0.253 - Teredo
და სხვა

224.0.1.0 по 238.255.255.255

224.0.1.0/24 - Internetwork Control Block
224.0.2.0 — 224.0.255.255 - AD-HOC Block I
224.1.0.0/16 - დარეზერვირებულია
224.0.2.0/16 - SDP/SAP Block. RFC 2974. მულტიმედიური სესიის ანონსირების მიღებისა და გადასაცემისათვის. გამოიყენება Session Announcement Protocol.
224.3.0.0/16, 224.4.0.0/16 - AD-HOC Block II
224.5.0.0 по 224.251.255.255 - დარეზერვირებულია
224.252.0.0/14 - DIS Transient Groups
225.0.0.0 — 231.255.255.255 დარეზერვირებულია
232.0.0.0/8 — Source-Specific Multicast Block (SSM). RFC 4607. მოდელი, სადაც მონაცემები გადაეცემა მხოლოდ მკაფიოდ განსაზღვრული ჯგუფის მიმღებებს.
233.0.0.0/8 - GLOP მისამართები. ორგანიზაციებისთვის, რომლებსაც აქვთ მითითებული 16-ბიტიანი ავტონომიური სისტემა (AS), გამოიყოფა ქვექსელი /24. RFC 3180
233.252.0.0/14 — AD-HOC Block III
234.0.0.0/8 — მრავალი მისამართის ბლოკი IPv4-unicast–ის საფუძველზე. RFC 6034. მაგალითად, თუ ორგანიზაციისათვის გამოყოფილია 192.0.2.0/24, ამ ორგანიზაციის გლობალური multicast მისმართი იქნება 234.192.0.2/32.

239.0.0.0/8 კერძო მულტიკასტიკური დომენებისათვის/ორგანიზაციებისთვის (მომხმარებლის მისამართები). მათი გამოყენება დინამიურად შეიძლება პროტოკოლების საშუალებით.

239.255.255.250 — SSDP.

გლობალურად ნებადართულია მხოლოდ ქვექსელებისათვის 233.0.0.0/8 და 234.0.0.0/8.

В peer to peer ქსელებში, მაგალიტად MSK-IX-ში ნებადართულია ქვექსელებისათვის 239.0.0.0/8
ამასთან, ყველა პროვაიდერი არ უჭერს მხარს multicast–ის დაკავშირებას.

240.0.0.0/4[2] დარეზერვირებულია მომავალი გამოყენებისთვის. არსებობს მოსაზრება, რომ ეს ქვექსელი აღარ იქნება გამოყენებული, რადგან არსებობს უამრავი მოწყობილობა, რომელსაც არ შეუძლია პაკეტების გაგზავნა ამ ქსელში.
255.255.255.255/32[11] შეზღუდვა მულტიკასტ მისამართი. ყველაზე ხშირად იყენებენ დანიშნულების მისამართად DHCP სერვერების ძებნისას.
აკრძალულია
ყველა დანარჩენი გაზიარებულია რეგიონალური ინტერნეტის რეგისტრატორების მიერ. შეიძლება იყოს მიმწოდებლის მისამართების დამოუკიდებელი სივრცე. გლობალურად ნებადართულია

პაკეტის სტრუქტურა

IP პაკეტი შეიცავს 14 ველს, რომელთაგან 13 აუცილებელია. მეთოთხმეტე ველი განკუთვნილია არააუცილებელი ოფციებისათვის. ველები იყენებენ ბაიტების რიგს უფროსიდან უმცროსამდე, უფროსი ბიტები იწყება პირველი. პირველ ბიტს აქვს ნომერი 0. მაგალითად, ველი ვერსიით მოცემულია პირველი ბაიტის ოთხ უფროს ბიტში. მრავალ ოქტეტის მნიშვნელობების გადაცემისას, პირველ რიგში უფროსი ოქტეტი გადაეცემა.

IPv4 Header Format
დაშორება ოქტეტი 0 1 2 3
ოქტეტი ბიტი 7 6 5 4 3 2 1 0 15 14 13 12 11 10 9 8 23 22 21 20 19 18 17 16 31 30 29 28 27 26 25 24
0 0 ვერსია სატაურის ზომა Differentiated Services Code Point Explicit Congestion Notification პაკეტის ზომა (სრული)
4 32 იდენტიფიკატორი დროშები ფრაგმენტის შერევა
8 64 Lifetime პროტოკოლი სატაურის საკონტროლო ოდენობა
12 96 წყაროს IP-მისამართი
16 128 დანიშნულების IP-მისამართი
20 160 პარამეტრები (თუ სათაურის ზომაა > 5)
20 или 24+ 160 или 192+ მონაცემები
ვერსია 
პაკეტის პირველი ველი არის ოთხ ბიტიანი პროტოკოლის ვერსია. IPv4–სთვის, ეს არის 4.
სათაურის ზომა (Internet Header Length)
შემდეგი ოთხი ბიტი შეიცავს პაკეტის სათაურის ზომას 32-ბიტიან სიტყვაში. იმის გამო, რომ პარამეტრების რაოდენობა არ არის მუდმივი, ზომის მითითება მნიშვნელოვანია სათაურის მონაცემებისგან გამოყოფისათვის. ინიმალური მნიშვნელობაა 5 (5×32=160 ბიტი, 20 ბაიტი), მაქსიმალური — 15 (60 ბაიტი).
Differentiated Services Code Point (DSCP)
თავდაპირველად უწოდებდნენ «მომსახურების ტიპი» (Type of Service, ToS), ამჟამად განსაზღვრულია RFC 2474, როგორც «Differentiated Services». გამოიყენება მომსახურების კლასებში ტრაფიკის განცალკევებისთვის, მაგალითად traffic delays, როგორიცაა VoIP, უმაღლესი პრიორიტეტის დასაყენებლად.
გადატვირთვის მაჩვენებელი (Explicit Congestion Notification, ECN) 
გაფრთხილება ქსელის გადატვირთვის შესახებ პაკეტების დაკარგვის გარეშე. ეს არის არააუცილებელი ფუნქცია და გამოიყენება მხოლოდ იმ შემთხვევაში, თუ ორივე ჰოსტი მხარდაჭერილია ამით.
პაკეტის ზომა 
16 ბიტის სრული პაკეტის ზომა ბაიტიში, სათაურისა და მონაცემების ჩათვლით. მინიმალური ზომაა 20 ბაიტი (სათაური მონაცემების გარეშე), მაქსიმალური 65535 ბაიტი. ჰოსტები უნდა იყოს მხარდაჭერილი მონაცემების გადაცემიტ 576 ბაიტამდე, მაგრამ თანამედროვე რეალიზაციები ჩვეულებრივ მხარს უჭერს ბევრად უფრო დიდ ზომას. დიდი ზომის პაკეტები, რითაც მხარდაჭერილია საკომუნიკაციო არხი, ფრაგმენტირდება.
იდენტიფიკატორი 
იგი ძირითადად გამოიყენება პაკეტის ფრაგმენტების იდენტიფიცირებისთვის, თუ ის ფრაგმენტული იყო. არსებობს ექსპერიმენტები, მისი გამოყენება სხვა მიზნებისათვის, მაგალითად, პაკეტის trace ინფორმაციის დამატება, პაკეტის გზაზე თვალყურის დევნის გასაადვილებლად გაყალბებული წყაროს მისამართით.
დროშები
სამ ბიტიანი ველი, რომელიც შეიცავს ფრაგმენტაციის მართვის დროშებს. ბიტი, უფროსიდან ყველაზე უმცროსამდე, ნიშნავს:
  • 0: დარეზერვირებულია, უნდა იყოს 0-ის ტოლი.
  • 1: არ დაფრაგმენტირდეს
  • 2: პაკეტს კვლავ აქვს ფრაგმენტები
თუ დაყენებულია დროშა «არ დაფრაგმენტირდეს», ფრაგმენტაციის აუცილებლობის შემთხვევაში ასეთი პაკეტი წაიშლება. მისი გამოყენება შესაძლებელია ჰოსტით მონაცემების გაგზავნისათვის, რომელთაც არ აქვთ საკმარისი რესურსები ფრაგმენტული პაკეტების დასამუშავებლად.
დროშა «არის ფრაგმენტები» უნდა იყოს დაყენებული 1 პაკეტის ყველა ფრაგმენტისთვის, გარდა ბოლოსი. დაუფრაგმენტირებულთათვის ყენდება 0 — ასეთი პაკეტი ითვლება მის ბოლო ფრაგმენტად.
ფრაგმენტის შერევა 
ველი ზომით 13 ბიტი, მიუთითებს მიმდინარე ფრაგმენტის შერევას ფრაგმენტული პაკეტის გადაცემის დასაწყისიდან 8 ბაიტიანი ბლოკით. საშუალებას იძლევა (213−1)×8=65528 ბაიტი შერევა, რაც აღემატება პაკეტის მაქსიმალურ ზომას. რიგით პირველ ფრაგმენტს აქვს ნულოვანი შერევა.
(Time to Live, TTL) პაკეტის «სიცოცხლის დრო» 
განსაზღვრავს მარშრუტიზატორის მაქსიმალურ რაოდენობას პაკეტის მარშრუტის კვალდაკვალ. ამ პარამეტრის არსებობა არ არ აძლევს პაკეტს ქსელში უსასრულოდ მოძრაობის საშუალებას. თითოეულმა როუტერმა, პაკეტის დამუშავებისას, უნდა შეამციროს TTL მნიშვნელობა ერთამდე. პაკეტები, რომელთა სიცოცხლის დრო ნულის ტოლია, ნადგურდება, ხოლო გამომგზავნელს ეგზავნება შეტყობინება ICMP Time Exceeded. პაკეტების გაგზავნისას სხვადასხვა სიცოცხლის ხანგრძლივობა დაფუძნებულია მათი გზის გავლის ტრასირება (traceroute). მაქსიმალური მნიშვნელობა TTL=255. ჩვეულებრივი საწყისი მნიშვნელობა TTL=64 (დამოკიდებულია OS-ზე).
პროტოკოლი 
მიუთითებს, რომელი IP პროტოკოლის მონაცემები შეიცავ პაკეტს (მაგალითად, TCP ან ICMP). მინიჭებული პროტოკოლის ნომრები შეგიძლიათ იხილოთ IANA ვებსაიტზე.
სათაურის საკონტროლო ჯამი 
16-ბიტიანი საკონტროლო ჯამი, გამოიყენება სათაურის მთლიანობის გადასამოწმებლად. ყოველი ჰოსტი და მარშრუტიზატორი ადარებს სათაურის საკონტროლო ჯამს ამ ველის მნიშვნელობასთან და ამუშავებს პაკეტს, თუ ისინი არ ემთხვევა. P მონაცემების მთლიანობას არ ამოწმებს — იგი მოწმდება უფრო მაღალი დონის პროტოკოლით (მაგალითად, TCP ან UDP), რომლებიც ასევე იყენებენ საკონტროლო ჯამს.
რამდენადაც TTL მცირდება პაკეტის გავლის თითოეულ ეტაპზე, ჯამი ასევე უნდა გამოითვალოს თითოეულ ეტაპზე. საკონტროლო ჯამის გადათვლის მეთოდი განსაზღვრულია RFC 1071-ში.
წყარო მისამართი
32-ბიტიანი პაკეტის გამგზავნის მისამართი. შეიძლება არ ემთხვეოდეს გამგზავნის რეალურ მისამართს მისამართის ტრანსლირების გამო.
დანიშნულების მისამართი 
პაკეტის მიმღების 32-ბიტიანი მისამართი.
პარამეტრები 
დანიშნულების მისამართს შეიძლება მოჰყვეს დამატებითი ვარიანტების ველი, მაგრამ იშვიათად გამოიყენება. სათაურის ზომა ამ შემთხვევაში უნდა იყოს საკმარისი, ყველა ვარიანტის განსახორციელებლად (32-ბიტიანი სიტყვების მთელი რიცხვის დამატება). გამოყოფილი ვარიანტის ნომრები იდება IANA ვებსაიტზე.
თუ პარამეტრების სია არ წარმოადგენს სათაურის დასასრულს, ის უნდა დასრულდეს პარამეტრით 0x00. პარამეტრებს აქვს შემდეგი ფორმატი:
ველი მოცულობა ბიტებში აღწერა
კოპირება 1 დააყენეთ 1-ზე, თუ გსურთ დააკოპიროთ პარამეტრები ყველა ფრაგმენტის სათაურზე.
პარამეტრების კლასი 2 0 «მმართველი» ოფციებისათვის და 2 ოფციებისათვის «გაზომვები და გამართვა». 1 და 3 დარეზერვირებული.
პარამეტრების ნომერი 5 მიუთითებს ოფციას.
პარამეტრის ზომა 8 მიუთითებს ოფციის ზომას (ამ ველის ჩათვლით). შეიძლება არ იყოს მითითებული ოფციებისათვის არგუმენტების გარეშე.
პარამეტრების არგუმენტები ცვლადები დამატებითი მონაცემები, გამოყენებული ოფციები.
  • შენიშვნა: სათაურის ზომა 5 სიტყვაზე მეტი მიუთითებს ოფციის არსებობაზე და მათი დამუშავების აუცილებლობაზე.
  • შენიშვნა: «კოპირება», «პარამეტრების კლასი» და «პარამეტრების ნომერი» ზოგჯერ უწოდებენ ერთ რვა ბიტიან ველს «ოფციის ტიპი».

მისამართის სივრცის ამოწურვა

IPv4 მისამართების ამოწურვა უკვე 1980-იან წლებში, აშკარა გახდა, რომ მისამართების სივრცის გამოყოფა უფრო სწრაფი ტემპებით მიმდინარეობდა, ვიდრე გათვალისწინებულია IPv4 არქიტექტურაში. მან პირველ რიგში გამოიწვია კლასების ადრესაცია, მოგვიანებით უკლასო ადრესაცია, და საბოლოოდ, ახალი IPv6 პროტოკოლის შემუშავება.

2011 წლის თებერვალში IANA გამოყო 5 საბოლოო ბლოკი RIRам მისამართის. უფასო IP მისამართების ბლოკებმა დაიწყო ამოწურვა რეგიონალურ რეგისტრატორებს 2011 წლიდან.