Tcp порт
Содержание:
9. Номера портов tcp и параллельные серверы
Что
случится при наличии параллельного
сервера, когда основным циклом сервера
порождается дочерний процесс для
обработки каждого нового соединения,
если дочерний процесс будет продолжать
использовать заранее известный номер
порта при длительном обслуживании
запроса? Проанализируем типичную
последовательность. Пусть сервер
запускается на узле bsdi
(main)(рис. 1.7),
который является многоинтерфейсным
(multihomed), то есть имеет несколько сетевых
интерфейсов с IP-адресами206.62.226.35
и 206.62.226.66(10.5.101.2
и 192.168.1.1), и производит пассивное
открытие, используя свой заранее
известный номер порта (в данном примере
21). Теперь он ждет запроса клиента. Эта
ситуация изображена нарис.
2.7.
Для
указания пары гнезд сервера мы используем
обозначение {*:21, *:*}. Сервер ждет запроса
на установление соединения на 21 порту
любого локального интерфейса (первая
звездочка). Удаленный IP-адрес и удаленный
порт TCP не заданы, и мы обозначаем их как
*:*. В данном случае можно сказать, что
речь идет о прослушиваемом гнезде
(listening socket).
Если
узел сети, на котором запущен сервер,
является многоинтерфейсным, сервер
может указать, что он хочет принимать
входящие соединения либо на одном
конкретном интерфейсе, либо на всех
интерфейсах.
Позже
запускается клиент на узле с IP-адресом
198.69.10.2(192.168.2.8)
и производит активное открытие соединения
с сервером, указывая IP-адрес206.62.226.35.В этом примере мы считаем, что клиенту
динамически назначен порт с номером
1500, что отражено нарис.
2.8. Под клиентом показана его пара
гнезд.
Когда
сервер принимает входящее соединение
клиента, он создает с помощью функции
forkсвою копию, давая возможность
дочернему процессу обработать запрос
клиента, как показано нарис.
2.9.
На
этом этапе мы должны провести различие
между прослушиваемым гнездом и
присоединенным гнездом на стороне
сервера
Обратите внимание на то, что
присоединенное гнездо использует тот
же локальный порт (21), что и прослушиваемое
гнездо. Кроме того, на узле с несколькими
сетевыми интерфейсами локальный IP-адрес
заполняется для присоединенного гнезда
значением 206.62.226.35,
как только соединение установлено
При
выполнении следующего шага подразумевается,
что другой клиентский процесс на узле
клиента запрашивает соединение с тем
же сервером. TCP-модуль выделяет новому
гнезду клиента динамически назначаемый
номер порта, который не используется в
данный момент, скажем, 1501. Мы приходим
к результату, показанному на рис.
2.10. На стороне сервера различаются
два соединения: пара гнезд для первого
соединения отличается от пары гнезд
для второго соединения, поскольку
TCP-модуль на стороне клиента выделил
свободный порт с номером 1501 для второго
соединения.
Из
этого примера видно, что протокол TCP не
может демультиплексировать входящие
сегменты, просматривая только номера
портов получателя. TCP-модуль должен
просмотреть оба порта пары гнезд, чтобы
определить, какому процессу следует
передать входящий сегмент. На рис.
2.10на стороне сервера представлены
три гнезда с одним и тем же номером
локального порта (21). Если сегмент
приходит с IP-адреса198.69.10.2,
порт 1500, и предназначен для с IP-адреса206.62.226.35, порт 21,
то он передается первому дочернему
процессу. Если сегмент приходит с
IP-адреса198.69.10.2,
порт 1501, и предназначен для с IP-адреса206.62.226.35, порт 21,
то он передается второму дочернему
процессу. Все другие сегменты TCP,
предназначенные для порта 21, доставляются
исходному серверу (родительскому
процессу) на его прослушиваемое гнездо.
Открытие и перенаправление TCPUDP портов
Изменено: Чт, 30 Март, 2017 at 1:52 PM
Открытие или перенаправление порта необходимо в тех случаях, когда нужно получить доступ к локальным устройства или службам находящимися за роутером в локальной сети.Возможные задачи могут выглядеть следующим образом:1. Необходимо получить доступ к WEB интерфейсу самого роутера.2. Необходимо перенаправить порт 8080 на WEB сервер расположенный на локальном ПК с IP 192.168.88.100
Все операции с открытием и перенаправлением портов производятся в Межсетевом экране
1. Открытие и перенаправление портов через Интерфейс
Открываются порты для получения доступа к различным службам на самом роутере или службам в локальной сети.Например откроем порт 80 для ПК с WEB сервером имеющим IP 192.168.88.100
Необходимо перейти в меню IP -> Firewall (NAT) и добавить правило перенаправления.
Выполним настройки правила:
Вкладка General
Chain — Цепочка или направление потока данных. (srcnat — из внутренней сети во внешнюю / dstnat — соответственно, из внешней во внутреннюю)
Dst. Address — Адрес назначения. Всегда внешний адрес роутера. (В нашем случае это публичный статический IP SIM карты)
Protocol — Протокол. WEB использует протокол TCP. (Всего протоколов достаточно много)
Dst. Port — Порт назначения. Это тот порт, на который мы хотим принимать соединение.
In. interface — Входящий интерфейс. Это тот интерфейс, на котором «слушается» указанный порт Dst. Port
или
Вкладка Action
Action — Действие. Выполняемое действие. (dst-nat — Переадресовывает данные, пришедшие из внешней сети, во внутреннюю / netmap — Отображение одного адреса на другой. Фактически, развитие dst-nat)
To Addresses — Адрес локального устройства или компьютера на который мы перенаправляем порт или порты.
To Ports — Сам целевой порт.
Нажимаем OK и видим созданное правило, все должно работать.
Порты можно назначать диапазонами, чтобы не создавать много отдельных правил.
2. Открытие и перенаправление портов через Консоль
Произведем те же самые действия, только через New Terminal(Консоль)
/ip firewall nat add chain=dstnat dst-address=172.142.55.36 protocol=tcp dst-port=8080 action=netmap to-addresses=192.168.88.100 to-ports=80
или
/ip firewall nat add chain=dstnat in-interface=lte1 protocol=tcp dst-port=8080 action=netmap to-addresses=192.168.88.100 to-ports=80
Правило создано, можно проверять. Все должно работать
Сопутствующие статьи:
Дополнительная информация:
Была ли эта статья полезной?
Да
Нет
Отправить отзыв К сожалению, мы не смогли помочь вам в разрешении проблемы. Ваш отзыв позволит нам улучшить эту статью.
Port 0 isnt a real port number, but there is a purpose for it
Jetta Productions / Getty Images
Internet & Network
-
Key Concepts
-
The Wireless Connection
-
Basics
-
Guides & Tutorials
-
Installing & Upgrading
-
Tips & Tricks
-
What Are Bitcoins?
by
Bradley Mitchell
An MIT graduate who brings years of technical experience to articles on SEO, computers, and wireless networking.
Updated August 29, 2019
65
65 people found this article helpful
Port 0 carries special significance in network programming, particularly in the Unix OS when it comes to socket programming where the port is used to request system-allocated, dynamic ports. Port 0 is a wildcard port that tells the system to find a suitable port number.
How TCP/UDP Port 0 Works in Network Programming
Configuring a new network socket connection requires that one port number be allocated on both the source and destination side. TCP or UDP messages sent by the originator (source) contain both port numbers so that the message recipient (destination) can issue response messages to the correct protocol endpoint.
IANA has preallocated designated system ports for basic internet applications like web servers (port 80), but many TCP and UDP network applications do not have their own system port and must obtain one from their device’s operating system each time they run.
To allocate its source port number, applications call TCP/IP network functions like bind() to request one. The application can supply a fixed (hard-coded) number to bind() if they prefer to request a specific number, but such a request can fail because another application running on the system may currently be using it.
Alternatively, it can provide port 0 to bind() as its connection parameter. That triggers the operating system to automatically search for and return a suitable available port in the TCP/IP dynamic port number range.
The application isn’t granted port 0 but rather some other dynamic port. The advantage of this programming convention is efficiency. Instead of each application implementing and running code to try multiple ports until they obtain a valid one, apps rely on the operating system.
Unix, Windows, and other operating systems vary in the handling of port 0, but the same general convention applies.
Port 0 and Network Security
Network traffic sent across the internet to hosts listening on port 0 might be generated from network attackers or accidentally by applications programmed incorrectly. The response messages that hosts generate in response to port 0 traffic help attackers learn the behavior and potential network vulnerabilities of those devices.
Many internet service providers (ISPs) block traffic on port 0 — both incoming and outgoing messages — to guard against these exploits.
Continue Reading