Как клиент узнает, какой транспортный протокол использовать? - PullRequest
0 голосов
/ 16 февраля 2020

Предположим, что я запускаю сервер на одном из компьютеров в моей частной сети (192.168.10.10:9900).

Теперь, когда клиентский компьютер (ОС) делает запрос от какого-либо другого компьютера в той же сети, какой протокол использовать / какой протокол следует серверу? [TCP или UDP]

РЕДАКТИРОВАТЬ: Как упоминалось в ответах, я в основном искал протокол по умолчанию, который будет использоваться клиентом при отсутствии какой-либо информации о транспортном протоколе.

Ответы [ 4 ]

3 голосов
/ 16 февраля 2020

Протоколы TCP / UDP работают на уровне транспортного уровня (МОДЕЛЬ TCP / IP), и его основное отличие состоит в том, что в TCP есть метод, обеспечивающий получение сообщений, в то время как UDP легче, поскольку его преимущество заключается в ускорении доставки информации. , Использование того или иного протокола всегда определяется приложением, которое будет его использовать.

Так что ссылка, которую вы поместили на частный сервер с ip: port 192.168.10.10:9900, очень Если быть более точным, можно сказать, что у нас есть веб-сервер Apache, работающий на ip: порт 192.168.10.10:9900 (при установке сервера порт по умолчанию равен 80, но его можно изменить в конфигурации).

Теперь веб-серверы (apache, IIS и т. Д. c.) Работают по протоколу TCP, потому что, когда клиент (компьютер, мобильный телефон и т. Д. c.) Просматривает страницу через браузер. (Chrome, Firefox, и т. Д. c.), Идеальной вещью является то, что весь сайт, а не просто некоторые кусочки. Вот почему серверы этого типа выбрали и используют этот протокол в первую очередь, так как они ищут, что в итоге получается, что пользователь получает полную страницу независимо от того, были ли пожертвованы еще несколько миллисекунд в проверках, связанных с использованием TP C.

Теперь перейдем на сторону клиента. Пользователь при посещении веб-страницы из любого браузера (Chrome, Firefox и т. Д. c.) Будет использовать TCP, поскольку этот протокол уже настроен в браузере для отправки сообщений с запросами и последующего получения сообщений с такими же form Информация о сайте.

Теперь это поведение будет повторяться для любого клиент / серверного приложения. Например, чтобы изменить тип приложения на стороне UDP, мы можем наблюдать за работой служб DHCP, которые используются для получения IP-адреса при подключении любого устройства к сети Wi-Fi. В этом случае эта служба стремится быть максимально быстрой (а не самой надежной), поскольку вы хотите, чтобы устройство как можно быстрее подключалось к сети, поэтому используйте протокол UDP, а в этом случае любое оборудование при подключении к Сеть WIFI будет отправлять ваши сообщения по этому протоколу.

Наконец, если вы хотите быстро узнать о типе протокола TCP / UDP, используемого конкретным приложением c, вы можете выполнить поиск по Приложение Wireshark , которое позволяет сканировать сообщения, которые покидают устройство, или отображать протокол, используемый на разных уровнях приложения.

1 голос
/ 16 февраля 2020

Нет причин, по которым какой-либо клиент мог бы сделать запрос на ваш сервер, так почему бы его не волновать, какой протокол он использует? Клиенты не просто случайно подключаются к вещам, чтобы посмотреть, есть ли там сервер. Так что это не имеет никакого значения для любого клиента.

0 голосов
/ 18 февраля 2020

Ответы здесь указывают на некоторый протокол по умолчанию. Дело не в том, что всякий раз, когда вы запускаете приложение, скажем, HTTP-сервер, внутренний сервер имеет код для открытия сокета (который может быть TCP или UDP), поскольку HTTP:80 является протоколом TCP, а code создает сокет TCP. Точно так же для других сетевых приложений зависит от их требований, какой протокол транспортного уровня использовать (TCP Or UDP). Так же DNS-клиент создаст UDP-сокет для подключения к DNS-серверу, поскольку DNS:53 в основном по UDP. Как TCP, так и UDP имеют разные варианты использования, преимущества и недостатки. В зависимости от случаев использования / преимуществ / недостатков UDP / TCP принимается решение о внедрении сервера с использованием любого из них.

0 голосов
/ 16 февраля 2020

Обычно клиентский компьютер по умолчанию использует протокол TCP. Если вы запустите сервер в режиме протокола UDP, то при использовании curl -XGET 192.168.10.10:9900/test-page он вернет вам ошибку curl: (7) Failed to connect to 192.168.10.10 port 9900: Connection refused. Вы можете попробовать, используйте nc -lvp 9900 -u, он даст вам этот результат.

...