2016-05-10 4 views
6

Я хотел бы составить список диапазонов CIDR, которые представляют адреса за пределами диапазона CIDR, который я указываю.Получите противоположность диапазона CIDR

В упрощенном примере:

Если у меня IP-находится в диапазоне от 8.8.8.8 до 8.8.8.10, я смог бы выразить это с помощью CIDR диапазонов 8.8.8.8/31 и 8.8.8.10/32. Но как я могу выразить противоположность этим диапазонам в нотации CIDR?

Я новичок в CIDR, поэтому, если этот инструмент существует уже в популярном формате, пожалуйста, извините мой вопрос.

В качестве дополнительного примечания я хотел бы в конечном итоге реализовать эту фильтрацию в R, чтобы вы могли выразить свой ответ с использованием R, что было бы предпочтительнее, но меня действительно интересует, как построить алгоритм для решения такого рода проблема.

ответ

3

В принципе, если у вас есть диапазон (X, Y) IP-адресов и вы хотите представить все IP-адреса, которые не находятся в (X, Y), тогда его можно выразить как два диапазона: (0.0.0.0, X -1) и (Y + 1, 255.255.255.255).

Затем вы просто конвертируете два диапазона в CIDR. Диапазон может привести к нескольким CIDR.

В конкретном примере вам нужны диапазоны: (0.0.0.0, 8.8.8.7) и (8.8.8.11, 255.255.255.255). Я не имею ни малейшего представления о том, как сделать это в R, но здесь это удобный калькулятор здесь: http://www.ipaddressguide.com/cidr

(0.0.0.0, 8.8.8.7):

  • 0.0.0.0/5
  • 8,0. 0,0/13
  • 8.8.0.0/21
  • 8.8.8.0/29

(8.8.8.11, 255.255.255.255):

  • 8.8.8.11/32

  • 8.8.8.12/30

  • 8.8.8.16/28
  • 8.8.8.32/27
  • 8.8.8.64/26
  • 8,8. 8,128/25
  • 8.8.9.0/24
  • 8.8.10.0/23
  • 8 .8.12.0/22
  • 8.8.16.0/20
  • 8.8.32.0/19
  • 8.8.64.0/18
  • 8.8.128.0/17
  • 8.9.0.0/16
  • 8,10 .0.0/15
  • 8.12.0.0/14
  • 8.16.0.0/12
  • 8.32.0.0/11
  • 8.64.0.0/10
  • 8.128.0.0/9
  • 9.0.0.0/8
  • 10.0.0.0/7
  • 12.0.0.0/6
  • 16.0.0.0/4
  • 32.0.0.0/ 3
  • 64.0.0.0/2
  • 128.0.0.0/1