Как ICMP не может использовать порт, а TCP / IP? - PullRequest
0 голосов
/ 28 октября 2019

Для протокола, такого как ICMP, ему не нужен порт. Почему же тогда различным приложениям TCP и UDP нужен назначенный порт? Что может быть недостатком в том, чтобы иметь только один порт, а затем что-то вроде имени приложения для маршрутизации в правильное место - например, вместо «3306» он будет переходить на один порт и иметь тег application="mysql"?

1 Ответ

1 голос
/ 28 октября 2019

Порт - это адрес для некоторых протоколов транспортного уровня, в частности, TCP и UDP используют номера портов. И TCP, и UDP используют один и тот же диапазон номеров портов (от 0 до 65535), поскольку каждый из них использует 16-разрядное целое число без знака для номера порта, но они не одинаковых портов;TCP-порт 12345 не совпадает с портом UDP-порта 12345. Другие транспортные протоколы используют другую адресацию или вообще не используют адресацию.

Например, вот как RFC 793, Протокол управления передачей определяет порт:

Чтобы позволить многим процессам на одном хосте одновременно использовать средства связи TCP, TCP предоставляет набор адресов или портоввнутри каждого хоста.

ICMP не является транспортным протоколом, он является неотъемлемой частью IP. Вот как RFC 792, Протокол управления интернет-сообщениями утверждает это:

ICMP, использует базовую поддержку IP, как если бы это был протокол более высокого уровняоднако ICMP фактически является неотъемлемой частью IP и должен быть реализован каждым модулем IP.

Он возвращается к сетевым уровням и тому, как каждый уровень выбирает, куда отправлять полезную нагрузку уровнядейтаграммы. Например, заголовок ethernet имеет поле Ether Type, которое указывает ethernet, куда отправлять полезную нагрузку кадра ethernet. Различные протоколы будут регистрироваться в модуле Ethernet. IPv4 использует Ether Type 0x800, а IPv6 использует Ether Type 0x86DD. Вот список зарегистрированных типов Ether .

IPv4 имеет поле протокола (IPv6 использует поле Next Header для того же самого), которое указывает ему, куда отправлять полезные данные пакета. ICMP - это протокол № 1, UDP - это протокол № 17, а TCP - это протокол № 6. Протокол регистрируется в IP-модуле, чтобы сообщить ему, куда отправлять полезные данные пакета. Вот список зарегистрированных номеров протоколов .

Таким же образом, некоторые транспортные протоколы позволяют приложениям регистрироваться с помощью транспортного протокола, чтобы транспортный протокол знал, куда отправить полезную нагрузкутранспортная датаграмма. Например, HTTP-сервер по умолчанию регистрируется в TCP для своего порта 80, но это можно изменить.

...