Какие порты и протоколы на самом деле?

Я слышу, как люди говорят о портах и протоколах (в отношении компьютерных сетей), и они часто предоставляют им аналогии (например: "порт очень похож на порт доставки, он отправляет и получает данные, такие как порт доставки, отправляет и получает товары из других портов") и тому подобное.

Я понимаю, что все это значит, но только на очень искусственном уровне. В принципе, я знаю, что такое порт, и я понимаю, что такое протоколы, но каковы они правда?

являются ли эти порты физическими объектами? Они встроены в часть моего компьютера? Сколько здесь портов? Можно ли увеличить или уменьшить количество портов? Они хоть что-то физическое? Или написаны кодом? Где находится этот код? Операционная система? Что такое настоящий портвейн?

Что такое протоколы? Я бы предположил, что это какой-то код.... Можете ли вы создать свой собственный протокол? Как вы получаете определенный порт для выполнения определенного протокола? Какой язык вы используете чтобы создать протокол? Как вы определяете или изобретаете новый протокол?

4
задан Bob
28.11.2022 13:38 Количество просмотров материала 3338
Распечатать страницу

3 ответа

далее к ответу Hello71s, это могло бы помочь визуализировать порт, думая о структуре адреса в пакете. Пакет представляет собой единицу данных, передаваемых по сети. TCP является примером протокола транспортного уровня, который использует порты и обычно используется по IP.

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

Source IP    Source Port       Dest IP       Dest Port       Service
10.1.1.10    23434             192.168.1.1   80              web
10.1.1.10    34343             192.168.1.1   25              incoming email

веб-службе принадлежит порт 80, а службе электронной почты - порт 25-они "прослушивают" их соответствующие порты, что позволяет трафику оказаться в нужном месте.

исходный порт является "эфемерным" - то есть он состоит в момент отправки пакета. Однако он по-прежнему служит полезной цели. Это позволяет обоим концам соединения отслеживать отдельные разговоры. Рассмотрим, отправил ли наш пользователь два одновременных веб-запроса:

Source IP    Source Port       Dest IP       Dest Port       Service
10.1.1.10    23232             192.168.1.1   80              web request 1
10.1.1.10    23234             192.168.1.1   80              web request 2

это позволяет веб-службе знать, что это отдельные запросы, но также и обратный трафик от веб-сервер - веб-страницы-отправляются обратно на соответствующие исходные порты, что позволяет браузеру знать, на какой запрос отвечает сервер.

обратите внимание, что все это относится к номерам портов, с точки зрения TCP/IP, фактические данные, перемещаемые через эти порты, могут быть любыми. Его не волнует, или есть какие-либо понимание приложений, так что если у вас трафик на 25 порт и отправить на порт 80, он бы не поумнел.

это зависит от отправки и получение приложения для обеспечения правильной структуры данных, и именно здесь вступают протоколы приложений. HTTP является примером протокола приложения, который веб-браузеры используют для связи с веб-серверами. Это хорошо определенный протокол, который гарантирует, что браузер будет отправлять запросы на любой веб-сервер, и что веб-сервер будет понимать и реагировать разумно. Но то, что он не включает в свое определение, - это то, как пакеты попадают из A В B - это ответственность предшествующие уровни-транспортный, интернет и канальный.

7
отвечен Paul 2022-11-29 21:26

Hm. Я бы подумал, что лучшим местом для начала было бы взглянуть на IP Suite, он же модель TCP/IP. (Игнорирование других уровней модели OSI для простоты.)

в принципе, это серия слоев:

прикладной уровень-HTTP, FTP, POP, SSH и т.д.

Транспортный уровень-TCP, UDP и др.

Уровень интернета-IP, ICMP и др.

Канальный уровень-Ethernet и др.

порты, по большей части, реализован на транспортном уровне (Уровень 4 - Да, нумерация правильная.)

большинство TCP и / или UDP стеков, реализованных в ОС, используют базовую систему назначения портов программам и просто вызывают события в этих программах по мере поступления пакетов по сети. Однако теоретически любая реализация может сработать; в академических кругах могут даже существовать гипотетические альтернативные стеки.

TCP был определен как имеющий в общей сложности 65535 портов, которые программа может использовать, чтобы делать все, что они хотят с (хотя многие операционные системы ограничивают использование портов под 1024, давая им специальный специальный статус). Хотя есть некоторые ограниченные списки, нет реального стандарта для определения, кто получает какой порт и какой порт запускает какую программу. Порт, таким образом, более или менее случайное число, что различные реализации программы решили согласиться общаться на. Конечно, разработчики таких программ стараются избегать портов, которые выбрали другие популярные программы уже.

при условии, что это никоим образом не требуется для запуска с использованием TCP. Некоторые протоколы работают на голом интернет-уровне, или даже на уровне голой ссылки, в основном в целях эффективности, или потому, что эти протоколы были изобретены еще до TCP или IP существовали. Конечно, при этом вы отказываетесь от простоты и обширной проверки ошибок сетевых библиотек ОС.

дополнительные сведения см. На страницах Википедии, посвященных модели OSI, TCP и IP.

3
отвечен Hello71 2022-11-29 23:43

хотя этот вопрос уже отмечен как ответ, я хотел бы ответить на некоторые дополнительные вопросы, заданные в OP.

являются ли эти порты физическими объектами?

никакие порты не являются физическими объектами.

номер порта является 16-битным целым числом без знака, что означает, что диапазон портов, доступных для использования, составляет от 1 до 65535 (номер порта 0 зарезервирован и не может использоваться). Процесс связывает свои каналы входа или выхода через Интернет-сокеты, тип файлового дескриптора, с транспортным протоколом, номером порта и IP-адресом. Этот процесс называется привязкой и позволяет отправлять и получать данные по сети.

Они что-то в моем компьютере? Они хоть что-то физическое? Или написано кодом? Где находится этот код? Операционная система? Что такое настоящий портвейн?

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

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

приведенный выше параграф является ключом к пониманию того, почему порты / протоколы используются в сети. Если бы у нас не было способа указать протокол, который передает данные по согласованному номеру порта apon - вы не смогли бы сделать больше, чем 1 вещь за раз (проверьте свою электронную почту и используйте Интернет), потому что ваш компьютер не будет иметь никакого способа различать данные для вашего почтового клиента и данные для веб-сайта, который вы просматриваете.

сколько портов там?

номера портов назначаются различными способами на основе трех диапазонов:

  1. Известные / Системные Порты (0-1023) - Этот диапазон портов используется системными процессами, которые предоставляют широко используемые типы сетевых сервисов (HTTP/80, HTTPS/443, Telnet/21, SSH/22)

  2. зарегистрированные / пользовательские порты (1024-49151) - диапазон номеров портов от 1024 до 49151-зарегистрированные порты. Они назначаются IANA для конкретной службы по заявлению запрашивающего органа. (В Webmin/10000, HTTP-прокси/8080, протокол удаленного рабочего стола/3389 и т. д.)

  3. эфемерные/динамические / частные порты (49152-65535) - диапазон 49152-65535 содержит динамические или частные порты, которые не может быть зарегистрированным в IANA. Этот диапазон используется для пользовательских или временных целей и для автоматического выделения временных портов.

могу ли я увеличить или уменьшить количество порты?

Что касается возможности увеличить количество доступных портов, вы не можете назначить порт выше 65535 из - за математики, которая позволяет сети работать (двоичный) - поэтому ответ на этот вопрос-нет, вы не можете увеличить общее количество доступных портов выше 65535.

Что такое протоколы?

в информатике коммуникационный протокол-это система цифровых правил обмена сообщениями внутри или между компьютеры. При обмене сообщениями через компьютерную сеть система правил называется сетевым протоколом. Протокол-это в основном согласованный набор инструкций/команд / вызовов, через которые могут обмениваться данными два сетевых устройства. Подумайте, если бы мы не согласовали протоколы и веб-серверы просто случайно отправили данные в веб-браузеры, которые браузер не знал, что делать? К счастью, у нас есть HTTP, и каждый созданный веб-браузер встроен в программное обеспечение, чтобы он мог связь с любым веб-сервером, который также говорит на том же языке (HTTP).

Я бы предположил, что это какой-то код.... Можете ли вы создать свой собственный протокол? На каком языке создается протокол?

Да, вы можете создавать свои собственные протоколы. Протоколы написаны на самых разных языках. Я не программист, но я уверен, что пока на каком бы языке вы используете библиотеки, которые позволяют писать программы это может взаимодействовать через TCP / IP (существуют другие наборы протоколов, но TCP / IP является наиболее широко используемым) вы можете использовать этот язык для написания протокола. Язык программирования "C", по-видимому, наиболее часто используется для написания протоколов. Это связано с тем, что многие из первых сетевых протоколов были разработаны на UNIX в 1970-х годах, а язык C является языком, на котором написан сам UNIX.

Как получить определенный порт для запуска определенного протокола?

Это отличается совсем немного между ОС. Например, чтобы изменить номер порта, на котором работает протокол удаленного рабочего стола в Windows, необходимо изменить реестр. В Linux многие сетевые службы можно настроить непосредственно из a .файл conf для конкретной сетевой службы.

Как вы определяете или изобрести новый протокол?

посмотреть https://journal.paul.querna.org/articles/2012/02/22/designing-network-protocols/ для сообщения в блоге кем-то, кто недавно разработал новый сетевой протокол и какие вещи он должен был сделать на этом пути.

2
отвечен Richie086 2022-11-30 02:00

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх