Чому всього 65 535 портів, і чи будемо ми колись більше? [зачинено]


20

Я розумію оригінальну аргументацію щодо наявності 65535 портів на IP-адресу: це найбільше число, яке може бути представлене 16-бітним або 2-байтовим числом, і не можна було думати, що комп’ютери ніколи не зможуть запасти більше ніж це для чогось тривіального, як порти, чи щось подібне. Насправді, для портів може знадобитися більше 1 біта, оскільки кожен порт може бути відкритим, заблокованим, "скраденим" чи іншим, але люди чомусь завжди кажуть, що порти працюють з 16-бітним номером. Якщо у мене є якась частина цього неправильного, будь-ласка, скажіть мені.

Однак у світі, де більшість комп'ютерів є 32-розрядними і мають більш ніж достатньо пам’яті / місця для запасу ще декількох портів, чому ми все ще маємо стільки портів? Ми переходимо до HTML5, HTTP2.0, IPv6 та інших, безумовно, різних версій, то чому б не те ж саме з портами? Багато з них дозволяють набагато більше 16 біт; насправді IPv6 дозволяє 16 байт ! Я розумію, що багато з них проходять роки чи навіть десятиліття, але чому вся балаканина над цими оновленнями, і навіть не писк про більше портів (про що я, аматор, чув)?

Єдині 2 причини, за якими я бачу збереження 65535 портів, дозволяють великому бізнесу зберігати свої старі застарілі системи, що навряд чи є вагомою причиною, і зростання вбудованих систем, багато з яких крихітні, з мізерними обсягами простору, пам'яті тощо. , скоро з'явиться в Інтернеті, багато хто є частиною Інтернету речей. З цими вбудованими системами, можливо, ми могли б дати їм менше портів, і коли великий настільний комп'ютер намагається підключитися до одного, це може бути обережно, оскільки дитяча вбудована система може використовувати лише ~ 65 000 портів.

З іншого боку, я можу припустити кілька вагомих причин, щоб мати більше портів, більшість з яких пов'язана з NAT та іншими системами, коли більше 1 приватної IP-адреси має зв'язок з рештою Інтернету, використовуючи ту саму публічну IP-адресу, як підйом VM на одному комп’ютері, всі використовують однакову IP-адресу. Технічно кожна IP-адреса VM має 65535 портів, але насправді всі вони використовують порти хосту. У таких випадках, ці системи могли б швидко закінчитись з портів. Інший конкретний випадок - NAT-клас, у якому одна загальнодоступна IP-адреса перекладається на кілька приватних IP-адрес, і принаймні одна з цих приватних адрес перетворюється на інший набір ще більше приватних адрес. Знову ж таки, кожна приватна IP-адреса технічно має власний набір 65535 портів, але це ілюзія, як коли дані виходять у загальнодоступний Інтернет, вони використовують порти загальнодоступних IP-адрес. Я не впевнений, що нам обов'язково потрібен NAT, але сам по собі нам знадобиться щось подібне, щоб зберегти адреси навіть при величезній кількості, яку нам надасть IPv6. Коли у нас є такі випадки, чи можемо ми навіть дозволити собі не мати більше 65535 портів?

Отже, чому ми все ще маємо лише 65 555 портів, і чи є плани, щоб дозволити більше?

PS Я знаю, що технічно є 65 536 портів на IP-адресу, але порт 0 зазвичай не використовується ні для чого.


Я думаю, вам потрібно задати IANA ці питання, щоб вони контролювали ресурси. Я думаю, вам також потрібно прочитати посібник з TCP / IP, оскільки деякі ваші розуміння здаються недоліками.
user9517 підтримує GoFundMonica

1
Так, я зрозумів. Я намагався сказати стільки, скільки зрозумів, але, як бачите, я не все розумію.
трис

7
Що не стосується цього питання? Просто цікаво.
трис

1
Я також відмовився задавати питання на цих сайтах. Здається, що в наші дні все поза темою ...
Nuno

IPv6 робить обмеження суперечностей портів, пропонуючи комп’ютеру а / 64 адрес для використання.
Дж. Моні

Відповіді:


28

Порт є частиною використовуваного протоколу рівня 4 - здебільшого TCP або UDP ; це не пов’язано з адресацією пам’яті на власних комп’ютерах, тому не слід плутати 32-або 64-бітну пам'ять сучасних операційних систем.

Заголовки цих протоколів шару 4 мають спеціально визначені структури , для яких точно 16 біт використовуються для вихідних та призначених портів. Без зміни сумісності протоколів рівня 4, від яких залежить весь Інтернет, кількість портів неможливо змінити. Навіть новіший SCTP має 16-бітове обмеження для портів.

Майте на увазі, що ці протоколи ідентифікують трафік не лише на порту прийому, але і на IP-адресі, що приймає, і на порту відправлення та на IP; ви обмежені 65535 прослуховуванням портів TCP (але їх у вас не так багато), і ви обмежені 65535 підключеннями до певної послуги в певній віддаленій системі (на практиці нижче, див. ефемерні порти ), тому це рідкість натрапити на ліміт у цих протоколах, якщо у вас немає системи, яка створює безліч підключень до певної віддаленої системи.


3
Це завжди зводиться до зворотної сумісності, чи не так? Чому ми можемо перейти на IPv6, що дозволяє набагато більше IP-адрес, це смішно, але ми не можемо мати ще пару портів? Це моє головне роздратування.
трис

2
@trysis Правильний перехід від IPv4 до IPv6 - це гарне порівняння з тим, що потрібно перейти до версії TCP та версії UDP з більшою кількістю бітів у заголовку порту. І якщо ви цього не помітили, це навіть повільний і болісний процес навіть отримати всесвітнє розгортання IPv6 туди, де він зараз знаходиться (з використанням 1-2% світового трафіку). Для IPv4 виникла переконлива потреба рухатися - вирішувати виснаження. З іншого боку, у цих протоколах не вистачає портового простору - це не є загальною проблемою, тому немає необхідності робити масові зміни, необхідні для його здійснення.
Шейн Мадден

О, це має більше сенсу. Спасибі. Можливо, коли-небудь ми відчуємо потребу, але я вважаю, що ти маєш рацію в тій потребі, якої зараз немає.
трис

Я би сподівався, що якщо ми коли-небудь переживемо всю цю проблему, ми можемо придумати щось краще, ніж адресація портів, заснованих на цілі числа. Щось на зразок портів на базі UUID було б дивним. Або фактичні простори імен будуть ще більш описовими та усувають потенціал конфліктів між додатками. Уявіть, як встановити порт вперед для простору імен "com.windows.local.yourdomain.server001" або щось подібне.
njbair

тож якщо два ПК разом мають 65 555 з'єднань або подібні до купелі ПК за межами NAT, жоден з інших ПК не зможе отримати доступ до мережі. Я прав?
Денис
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.