Почему компьютеры имеют 65 535 портов TCP?

Почему компьютеры имеют 65 535 портов TCP?
  • Почему компьютеры имеют 65 535 портов TCP?
  • Откуда взялось это число?
  • Что это собой представляет?

решение1

  1. "Почему компьютеры имеют 65535 портов TCP?"

Компьютеры делаютнетесть порты. Понятие «порты», о котором вы говорите, строго связано сТКПиУДПпротоколыСетевой стек TCP/IP. С чисто технической точки зрения, как TCP, так и UDP структурированы таким образом, чтобы переносить несколько видов информации (исходный порт, порт назначения, порядковый номер, данные и т. д.). Поскольку и «исходный порт», и «порт назначения» структурированы (в пакете TCP и UDP) с 16-битным «полем», вот ограничения: исходные порты и порты назначения могут принимать все значения, которые могут быть представлены 16 битами (т. е. от 0 до 65535);

  1. "Откуда взялось это число?"

См. выше: исходные порты и порты назначения могут принимать значения в диапазоне от 0 до 65535, поскольку они оба представлены 16-битным значением внутри соответствующих пакетов.

  1. "Что же это на самом деле собой представляет?"

Короче говоря, как «исходный порт», так и «порт назначения» играют очень важную роль, поскольку они позволяют одному «хосту» (одному «клиенту» или одному «серверу») «предлагать» различныеуслугипо отношению к сетевым клиентам, несмотря на наличие одного IP-адреса. Другими словами, без «портов» было бы гораздо сложнее иметь один «сервер», предлагающий веб-сервер (на TCP-порту 80 для обычного HTTP; на TCP-порту 443 для HTTPS), почтовый сервер (на TCP-порту 25 для входящего SMTP; на TCP-порту 110 для доступа POP3; на TCP-порту 143 для доступа IMAP), сервер БД (на TCP/порту 3306 для MySQL)) и т. д.

Читатели-«пуристы» могут не согласиться со мной по поводу вышеуказанного упрощения и... они будутверно: на самом деле IP-адреса и ПОРТЫ играют очень важную роль, для полного понимания которой требуется правильное понимание "инкапсуляция" концепция (безусловно, самая важная концепция среди представленных в этом самом ответе). К сожалению, для этого обычно требуетсямногораз, чтобы быть должным образом «освоенным» и... вот почему мое вышеизложенное чрезмерное упрощение :-)

решение2

TCP, UDP и, возможно, другие IP-службы используют порты для скрытой связи между клиентскими и серверными процессами среди хостов, использующих IP-сеть.

Более подробную информацию можно найтив этой вики-статье.

С точки зрения сверху вниз порты представляют собой отдельные разговоры между двумя хостами. Например, хост одновременно отправляет несколько DNS-запросов своему назначенному серверу, каждый из которых использует другой исходный порт для порта назначения 53. По мере того, как сервер получает ответы и обслуживает запросы, он будет отправлять определенные ответы обратно на тот же порт, где они будут получены отдельным процессом, ожидающим ответа.

С точки зрения снизу вверх порты — это способ резервирования линии IP-коммуникации отдельных процессов операционной системой хоста. Хотя может быть несколько процессов, делающих запросы на один и тот же порт удаленного хоста, каждый процесс будет использовать другой исходный порт для своих запросов. Это гарантирует, что ответы будут получены соответствующим процессом.

Для портированных протоколов в заголовках пакетов зарезервировано 32 бита: 16 бит для исходного порта и 16 бит для порта назначения. Для TCP и UDP это первые 32 бита, следующие сразу за заголовком IP; они начинаются со 192-го бита. 16-битное число имеет значения от 0 до 65535.

решение3

65 536 — очень распространенное число в вычислительной технике, поскольку оно равно 2 в степени 16 (2^16). 2^8 равно 256, а 65 536 — это квадрат 256.

Другими словами, 16-битное двоичное число может представлять 65 536 различных целых чисел. Так что, вероятно, отсюда и взялся ваш диапазон 65 535.

Но подождите, вы думаете, я, должно быть, ошибся на одну цифру, потому что 65 535 — это 65 536 минус 1! Ну, нет, если вы начнете считать с нуля! Например, 8-битное изображение кодирует 256 значений, но обычно они начинаются с 0 и доходят до 255. Вот почему вы часто видите числа вроде 255 или 65 535 в вычислениях.

Я предполагаю, что порты TCP изначально хранились как 16-битное число, отсюда и их верхний предел. Я не уверен, что это все еще так. Надеюсь, это поможет!

Связанный контент