- Почему компьютеры имеют 65 535 портов TCP?
- Откуда этот номер?
- Что это представляет?
3 ответа
- « Почему у компьютеров 65535 портов TCP?"
Компьютеры не имеют портов. Понятие "порты", на которые вы ссылаетесь, строго связано с протоколами TCP и UDP сетевого стека TCP/IP. С чисто технической точки зрения как TCP, так и UDP структурированы таким образом, чтобы передавать несколько видов информации (порт источника, порт назначения, порядковый номер, данные и т.д.). Поскольку оба "Исходный порт" и "Порт назначения" структурированы (в пакете TCP и UDP) с 16-битным "полем", вот ограничения: исходные порты и порты назначения могут принимать все значения, которые могут быть представлены 16 биты (иначе: от 0 до 65535);
- " Откуда этот номер?"
См. Выше: исходные порты и порты назначения могут принимать значения в диапазоне от 0 до 65535, потому что они оба представлены 16-битным значением внутри соответствующих пакетов.
- « Что это на самом деле представляет?"
Короче говоря, и "порт источника", и "порт назначения" играют очень важную роль, поскольку они позволяют одному "хосту" (одному "клиенту" или одному "серверу") "предлагать" различные услуги по отношению к сетевым клиентам, несмотря на наличие одного IP-адреса. Другими словами, без "портов" было бы гораздо сложнее иметь один "сервер", предлагающий веб-сервер (на TCP-порт 80 для простого HTTP; на TCP-порт 443 для HTTPS), почтовый сервер (на TCP-порт 25 для входящего SMTP, на TCP-порт 110 для доступа по протоколу POP3, на TCP-порт 143 для доступа к IMAP), сервер БД (на TCP/ порт 3306 для MySQL)) и т.д.
Читатели-пуристы могут не согласиться со мной по поводу указанного упрощения и ... они будут правы: на самом деле IP-адреса и PORTS играют очень важную роль, которая для полного понимания требует правильного понимания Концепция « инкапсуляции » (наверняка, самая важная концепция среди представленных в этом самом ответе). К сожалению, это обычно требует много раз, чтобы быть должным образом "освоенным" и ... вот почему, мое выше упрощение :-)
TCP, UDP и, возможно, другие IP-сервисы используют порты для осторожного взаимодействия между процессами клиента и сервера между хостами, использующими IP-сеть.
Более подробную информацию можно найти в этой статье вики.
С нисходящей точки зрения порты представляют собой разные разговоры между двумя хостами. Например, несколько DNS-запросов одновременно отправляются хостом на его назначенный сервер, каждый из которых использует свой порт-источник для порта 53 назначения. Когда сервер выбирает ответы и обслуживает запросы, он будет отправлять определенные ответы обратно на тот же порт, где он будет получен отдельным процессом, ожидающим ответа.
С точки зрения снизу вверх порты являются способом резервирования линии IP-связи отдельных процессов операционной системой хоста. Хотя может быть несколько процессов, отправляющих запросы на один и тот же порт удаленных хостов, каждый процесс будет использовать свой порт-источник для своих запросов. Это гарантирует, что ответы будут получены соответствующим процессом.
Для перенесенных протоколов в заголовках пакетов зарезервировано 32 бита: 16 бит для порта источника и 16 бит для порта назначения. Для TCP и UDP это первые 32 бита, следующие непосредственно за заголовком IP; они начинаются с 192-го бита. 16-битное число имеет значения от 0 до 65535.
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-битное число, отсюда и их верхний предел. Я не уверен, что это все еще так. Надеюсь, это поможет!