Хоча це питання вже було позначено як відповідь, я хотів би вирішити деякі додаткові запитання, задані в ОП.
Це порти фізичні об'єкти?
Жодні порти не є фізичними об'єктами.
Номер порту - це 16-бітне ціле число, яке не підписується, що означає, що діапазон портів, доступних для використання, становить від 1 до 65535 (номер порту 0 зарезервований і не може бути використаний). Процес пов'язує вхідні та вихідні канали через Інтернет-розетки, тип дескриптора файлів, з транспортним протоколом, номером порту та IP-адресою. Цей процес відомий як прив'язка і дозволяє надсилати та приймати дані через мережу.
Вони щось вбудовані в частину мого комп'ютера? Вони навіть щось фізичне? Або записано в коді? Де цей код? Операційна система? Що справді є портом?
Забезпечення мережевого програмного забезпечення операційної системи має завдання передавати вихідні дані з усіх портів додатків у мережу та пересилати вхідні мережеві пакети до процесу шляхом узгодження ІР-адреси та номера порту пакета.
Лише один процес може прив'язуватися до певної IP-адреси та комбінації портів, використовуючи той самий транспортний протокол. Поширені збої в застосуванні, які іноді називаються конфліктами портів, трапляються, коли кілька програм намагаються прив’язати до одних і тих же номерів портів на одній IP-адресі за допомогою одного і того ж протоколу.
Наведений вище пункт є ключовим для розуміння того, чому порти / протоколи використовуються в мережі. Якби у нас не було способу вказати протокол, який передає дані за узгодженим номером порту апона - ви не зможете робити більше ніж одну справу за один раз (перевірити електронну пошту та користуватися Інтернетом), оскільки на вашому комп’ютері був би не можна відрізняти дані для свого клієнта електронної пошти та даних для веб-сайту, який ви переглядаєте.
Скільки портів?
Номери портів присвоюються різними способами на основі трьох діапазонів:
Добре відомі / системні порти (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 - це найбільше Ви можете використовувати цю мову для написання протоколу. Здається, мова програмування "C" є найбільш часто використовуваною для написання протоколів. Це пов’язано з тим, що багато перших мережевих протоколів були розроблені в UNIX у 1970-х роках, а C, як виявляється, є мовою, на якій написано сам UNIX.
Як отримати конкретний порт для запуску певного протоколу?
Це дуже відрізняється від ОС. Наприклад, щоб змінити номер порту Протокол віддаленого робочого столу, що працює в Windows, потрібно відредагувати реєстр. У Linux багато мережевих служб можна налаштувати безпосередньо з .conf-файлу для певної мережевої послуги.
Як визначити чи винайти новий протокол?
Дивіться https://journal.paul.querna.org/articles/2012/02/22/designing-network-protocols/ для публікації в блозі того, хто нещодавно розробив новий протокол мереж та які саме дії він повинен робити по дорозі.