Как порты работают с IPv6?

146

В обычном формате IPv4 с четырьмя точками адрес и порт отделяется двоеточием, как в этом примере веб-сервера на интерфейсе обратной связи:

127.0.0.1:80

но с нотацией IPv6 сам адрес может содержать двоеточия. Например, это краткая форма адреса обратной связи:

::1

Как порты (или их функциональный эквивалент) выражаются в текстовом представлении IPv6-адреса / конечной точки порта?

Питер Вон
источник

Ответы:

35

Протоколы, используемые в IPv6, такие же, как протоколы в IPv4. Единственное, что изменилось между двумя версиями, - это схема адресации, DHCP [DHCPv6] и ICMP [ICMPv6]. Таким образом, все, что связано с TCP / UDP, включая диапазон портов (0-65535), остается неизменным.

Изменить: порт 0 - это зарезервированный порт в TCP, но он существует. См. RFC793

Эндрю Мур
источник
6

Они такие же, правда? Теперь я теряю уверенность в себе, но я действительно думал, что IPv6 - это просто изменение адресации. TCP и UDP по-прежнему адресуются, как и в IPv4.

Оли
источник
3
Это не просто смена адреса. Предполагается, что он принесет некоторые интересные функции (например, глобальную многоадресную рассылку). Но да, он прозрачен для верхних слоев.
Tarnay Kálmán
4
Это «просто» смена адреса. Вы говорите об адресации :) Но причина, по которой это беспокоит / сбивает с толку людей, состоит в том, что при проектировании сети «адресация» рассматривается как адреса, а «услуги» - как номера портов. Но вы ничего не можете сделать в TCP или UDP без обоих, поэтому большинство людей пытаются заставить работать адресацию на уровне сокетов и не могут понять, почему люди продолжают придумывать или изменять разделитель: пробелы, затем точки, затем двоеточия, затем знаки фунта? Итак, да, я вижу, что IPv6 беспокоит людей.
benc
6

Я почти уверен, что порты участвуют только в tcp и udp. Так что это точно так же, даже если вы используете новый IP-протокол.

сврист
источник
1
DCCP и SCTP также имеют порты, но порты в SCTP немного отличаются из-за дополнительного идентификатора ассоциации.
Джеймс Вудятт
6

Википедия указывает что синтаксис IPv6-адреса включает двоеточия и имеет сокращенную форму, предотвращающую синтаксический анализ фиксированной длины, и поэтому вам необходимо разделить часть адреса с помощью []. Это полностью позволяет избежать лишних ошибок синтаксического анализа.

(Взято из редактирования, которое Питер Вон внес в исходный вопрос.)

Ajedi32
источник
5

Я бы сказал, что лучшая ссылка - это Формат для буквальных адресов IPv6 в URL-адресах, где определено использование [].

Кроме того, если это для программирования и кода, в частности для Java, я бы посоветовал здесь прочитать определение класса для Inet6Address java / net / URL, где подробно описано использование адреса Inet4 в коннотации Inet6 и другие случаи. В моем случае IPv4-сопоставленный адрес формы :: ffff: wxyz, поскольку IPv6-адрес используется для представления IPv4-адреса, также решил мою проблему. Это позволяет собственной программе использовать одну и ту же структуру данных адреса, а также один и тот же сокет при взаимодействии с узлами IPv4 и IPv6. Так обстоит дело с настройкой по умолчанию облачных ящиков Linux на Amazon.

жрист
источник