Хотя этот вопрос уже помечен как ответивший, я хотел бы ответить на некоторые дополнительные вопросы, заданные в ОП.
Являются ли эти порты физическими объектами?
Никакие порты не являются физическими объектами.
Номер порта представляет собой 16-разрядное целое число без знака, что означает, что диапазон доступных для использования портов составляет от 1 до 65535 (номер порта 0 зарезервирован и не может использоваться). Процесс связывает свои входные или выходные каналы через интернет-сокеты, тип файлового дескриптора, с транспортным протоколом, номером порта и IP-адресом. Этот процесс называется связыванием и позволяет отправлять и получать данные по сети.
Они что-то встроены в часть моего компьютера? Они хоть что-то физическое? Или написано в коде? Где этот код? Операционная система? Что на самом деле порт?
Задачей сетевого программного обеспечения операционной системы является передача исходящих данных со всех портов приложения в сеть и пересылка прибывающих сетевых пакетов в процесс путем сопоставления IP-адреса пакета и номера порта.
Только один процесс может связываться с конкретным IP-адресом и комбинацией портов, используя один и тот же транспортный протокол. Распространенные сбои приложений, иногда называемые конфликтами портов, возникают, когда несколько программ пытаются привязать к одному и тому же номеру порта один и тот же IP-адрес, используя один и тот же протокол.
Приведенный выше абзац является ключом к пониманию того, почему порты / протоколы используются в сети. Если бы у нас не было способа указать протокол, который передает данные по согласованному номеру порта apon - вы не смогли бы делать более 1 вещи одновременно (проверьте свою электронную почту и используйте Интернет), потому что ваш компьютер будет иметь нет способа разграничить данные для вашего почтового клиента и данные для веб-сайта, который вы просматриваете.
Сколько там портов?
Номера портов назначаются различными способами на основе трех диапазонов:
Хорошо известные / системные порты (0-1023) - этот диапазон портов используется системными процессами, которые предоставляют широко используемые типы сетевых служб (HTTP / 80, HTTPS / 443, Telnet / 21, SSH / 22)
Порты зарегистрированных / пользователей (1024-49151) - диапазон номеров портов от 1024 до 49151 - это зарегистрированные порты. Они назначаются IANA для конкретной услуги по заявке запрашивающей организации. (Webmin / 10000, HTTP Proxy / 8080, протокол удаленного рабочего стола / 3389 и т.д.)
Эфемерные / динамические / частные порты (49152-65535) - диапазон 49152–65535 содержит динамические или частные порты, которые нельзя зарегистрировать в IANA. Этот диапазон используется для пользовательских или временных целей и для автоматического распределения временных портов.
Могу ли я увеличить или уменьшить количество портов?
Что касается возможности увеличения количества доступных портов, вы не можете назначить порт выше 65535 из-за математики, которая позволяет работать в сети (двоичной) - поэтому ответ на этот вопрос - нет, вы не можете увеличить общее количество доступных порты выше 65535.
Какие протоколы?
В области компьютерных наук коммуникационный протокол - это система цифровых правил обмена сообщениями внутри или между компьютерами. Когда сообщения обмениваются через компьютерную сеть, система правил называется сетевым протоколом. Протокол - это в основном согласованный набор инструкций / команд / вызовов, по которым два сетевых устройства могут обмениваться данными. Подумайте, не договорились ли мы о протоколах и веб-серверах, просто случайным образом отправили данные в веб-браузеры, с которыми браузер не знал, что делать? К счастью, у нас есть HTTP, который каждый созданный веб-браузер встроил в программное обеспечение, чтобы он мог взаимодействовать с любым веб-сервером, также говорящим на одном языке (HTTP).
Я полагаю, они какой-то код .... Можете ли вы создать свой собственный протокол? Какой язык вы используете для создания протокола?
Да, вы можете создавать свои собственные протоколы. Протоколы написаны на самых разных языках. Я не являюсь разработчиком программного обеспечения, но я уверен, что пока на любом языке, который вы используете, есть библиотеки, которые позволяют вам писать программное обеспечение, которое может взаимодействовать по TCP/IP (существуют другие наборы протоколов, но TCP/IP является широко используется), вы можете использовать этот язык для написания протокола. Язык программирования «С», кажется, наиболее часто используется для написания протоколов. Это связано с тем, что многие из первых сетевых протоколов были разработаны в UNIX в 1970-х годах, и C оказался языком, на котором написан сам UNIX.
Как вы получаете конкретный порт для запуска определенного протокола?
Это довольно сильно отличается между ОС. Например, чтобы изменить номер порта, на котором работает протокол удаленного рабочего стола в Windows, необходимо отредактировать реестр. В Linux многие сетевые службы могут быть настроены непосредственно из файла .conf для конкретной сетевой службы.
Как вы определяете или изобретаете новый протокол?
См. Https://journal.paul.querna.org/articles/2012/02/22/designing-network-protocols/ для блога, написанного кем-то, кто недавно разработал новый сетевой протокол, и какие вещи он должен был сделать по пути.