Я изучал программирование сокетов, и у меня возникли определенные вопросы. Это некоторые сомнения начального уровня
Обязательно ли использовать известный порт для конкретного приложения. Например, если я использую ssl, могу ли я спроектировать сервер для прослушивания на 1000, а не на 443.
Для http мы подключаемся к порту 80 с другого произвольного порта. Почему нет связи порта 80 с портом 80.
как сервер реагирует на соединения, поступающие к нему с разных портов на его порт 80.
сколько подключений возможно к конкретному
1 - Речь идет как раз о «стандартах». По умолчанию ваш браузер достигает порта 443, если вы укажете https, и 80, если, например, http. Вы можете делать все, что захотите для вашего конкретного использования, но вам нужно будет указать свой собственный порт следующим образом: some.place.to.go: 1000. Вы можете использовать «зарезервированные и хорошо известные» порты (0-1023) для соответствующие службы, но если вам нужен / вы хотите использовать другой, решать вам ... помните, у вас их более 65k :)
2- потому что порты <1024 зарезервированы и не могут быть использованы для инициации соединения
3- мы говорим о TCP-соединениях ... На конкретной машине номер порта в сочетании с IP-адресом машины называется сокетом. Комбинация IP и порта на клиенте и сервере известна как четыре кортежа. Эти четыре кортежа однозначно идентифицируют соединение. Таким образом, сервер может разговаривать со многими клиентами, потому что каждый клиент создал уникальное соединение с сервером, чтобы поговорить с ним.
Пример: клиент (cli) подключается к серверу (srv) с порта клиента (5432) на порт сервера (80) cli: 5432 -> srv: 80
Сервер ответит клиенту на том же клиентском порту: srv: 80 -> cli: 5432 И так далее ...
Итак, для 2) вопроса: - представьте, что на стороне клиента запущен http-сервер, «локальный» порт 80 уже используется. - представьте, что за маршрутизатором находится несколько клиентов (только с 1 IP ...), как многие клиенты могут использовать один и тот же исходный порт?
Если соединение было выполнено через порт 80, а не через произвольный порт, ни одна из этих ситуаций не будет работать. вот почему нам нужно использовать произвольный порт для инициирования запроса!
4- от IP до мира, максимум 65535 (потому что вы можете привязать только 65k сокетов ... поскольку у вас только 65k портов)
Если вы хотите углубиться в это, я рекомендую вам прочитать это:
http://en.wikipedia.org/wiki/Internet_protocol_suite (и связанные статьи ...)