Вот наглядное объяснение; извините, это не комикс, но это должно проиллюстрировать:
шаг 1: запустите функцию
:
шаг 2: функция запускает две копии самой себя, используя канал для параллельного запуска обеих (фоновый оператор здесь, похоже, не имеет большого значения, как описано в ответе на Как работает форк-бомба ?)
(:|:)
(здесь я использую скобки только для ясности)
шаг 3: повторите процесс для каждого :
((:|:)|(:|:))
и так далее
(((:|:)|(:|:))|((:|:)|(:|:)))
и так далее, заменяя каждый :
на (:|:)
на каждом шаге
((((:|:)|(:|:))|( (:|:)|(:|:)))|(((:|:)|(:|:))|((:|:)|(:|:))))
(((((:|:)|(:|:))|((:|:)|(:|:)))|(((:|:)|(:|:))|((: |:)|(:|:))))|((((:|:)|(:|:))|((:|:)|(:|:)))|(((:|: )|(:|:))|((:|:)|(:|:)))))
(((((((:|:)|(:|:))|((:|:)|(:|:)))|(((:|:)|(:|:))|(( :|:)|(:|:))))|((((:|:)|(:|:))|((:|:)|(:|:)))|(((:| :)|(:|:))|((:|:)|(:|:)))))|(((((:|:)|(:|:))|((:|:) |(:|:)))|(((:|:)|(:|:))|((:|:)|(:|:))))|((((:|:)|( :|:))|((:|:)|(:|:)))|(((:|:)|(:|:))|((:|:)|(:|:))) )))
и т. д., пока в системе не закончатся ресурсы (к этому времени она действительно перестанет отвечать на запросы).
Это интерфейс точки -— -, переименованный из tunN
в OpenVPN, который может иметь только 2 IP-адреса. Адрес слева — это локальный IP-адрес, равный адресу на других не -точках -— точках -интерфейсах; правый - IP-адрес однорангового узла.
Из-за внутренней реализации сети в режиме настройки OpenVPN этот одноранговый адрес не может быть отправлен (8 )по эхо-запросу, а вместо этого используется в качестве маршрутизатора.
Например, если вы запускаете PPP на FreeBSD (, реализованной с тем же tun(4)
интерфейсом ), адрес пира будет другим хостом канала PPP.