Подтвердить что ты не робот

HTTP против TCP/IP, отправка данных на веб-сервер

В настоящее время я работаю над проектом, где мне нужно использовать Arduino Nano (http://arduino.cc/en/Main/arduinoBoardNano) для отправки данных с датчика температуры на веб-сервер.

Сначала я думал, что это будет легко, так как там очень много отличных библиотек, чтобы помочь с POST/GET и т.д. Однако мой профессор сказал мне, что мне нужно отправить данные на сервер с использованием TCP/IP, и, насколько я понимаю, POST и GET являются HTTP-методами.

Может ли кто-нибудь объяснить мне разницу между HTTP и TCP/IP? В частности, это касается отправки данных на веб-сервер. Я ищу ответ, который не слишком технический (я довольно новичок в этом).

Наконец, если есть кто-то, у кого есть опыт, когда Arduino делает то, что я описал выше, я бы очень признателен за некоторые указатели.

Спасибо!

4b9b3361

Ответ 1

HTTP - это протокол, используемый в основном для просмотра Интернета (IE, Firefox и т.д.). Он распространяется поверх TCP, который обеспечивает надежную связь между двумя компьютерами (если пакет потерян - он повторно передается). Сам TCP проходит поверх IP-адреса, который обеспечивает унифицированную адресацию для связи между компьютерами. TCP/IP является основой для Интернета и 99% других сетей.

В основном это означает, что если вы сообщаете HTTP, вы делаете это с TCP/IP под ним (но я уверен, что это не то, что имел в виду ваш профессор).

Arduino Nano не поддерживает все эти функции, поэтому вам нужно что-то среднее между ними, которое будет транслировать передачу Nano на связь TCP/HTTP.

Некоторые из ваших вариантов:

  • Общение с Nano over Serial и перевод ПК на ваш последовательный протокол на HTTP/TCP
  • Switch Nano с другой платой Arduino, которая поддерживает расширение экрана Ethernet/Wifi (Uno/Mega) или выбор пользовательской платы, которая сама по себе содержит Ethernet
  • Использование другого Arduino (Uno/Mega) с экраном Ethernet в качестве дополнительной платы, которая взаимодействует с Nano over Serial или с помощью RF-модулей (я лично реализовал этот вариант в прошлом)
  • Еще один необычный вариант - подключить Nano к Android-смартфону с помощью аудиокабеля и использовать библиотеку soft-modem (https://code.google.com/p/arms22/issues/detail?id=2), которая содержит реализацию для Android и написать приложение для Android

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

Один из существующих веб-сервисов для предоставления графиков для визуализации данных Sensor - https://xively.com/, он основан на REST, который проходит поверх HTTP. Но это не единственный.

Ответ 2

Вкратце: TCP - это протокол транспортного уровня, а HTTP - протокол уровня приложения, который работает через TCP.

Подробнее: Чтобы понять разницу (и многие другие темы в сети), вам нужно понять идею многоуровневой сетевой модели. По сути, существуют разные протоколы, которые позволяют компьютеру разговаривать на разных расстояниях и разных уровнях абстракции.

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

Следующий слой вверх - это слой связи. Этот уровень охватывает связь с устройствами, которые совместно используют физический коммуникационный носитель. Здесь протоколы, такие как Ethernet, 802.11a/b/g/n и Token Ring, определяют, как обрабатывать несколько одновременных доступов к физическому носителю и как направлять трафик на одно устройство, а не на другое. В типичной домашней сети это то, как ваш компьютер разговаривает с вашим домашним "маршрутизатором".

Третий уровень - это сетевой уровень. В большинстве случаев в этом доминирует Internet Protocol (IP). Здесь происходит волшебство Интернета, и вы можете поговорить с компьютером на полпути по всему миру, не зная, где он находится. Маршрутизаторы обрабатывают ваш трафик из локальной сети в сеть, где живет другой компьютер, где его собственный уровень ссылок обрабатывает пакеты на нужном компьютере.

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

Итак, мы подключили ваш браузер к программному обеспечению веб-сервера на другом конце, но как сервер знает, какую страницу вы хотите? Как вы можете отправить вопрос или ответ? Это те вещи, которые обрабатываются протоколами прикладного уровня. Для веб-трафика это протокол передачи гипертекста (HTTP). Существуют тысячи протоколов прикладного уровня: SMTP, IMAP и POP3 для электронной почты; XMPP, IRC, ICQ для чата; Telnet, SSH, RDP для удаленного администрирования; и др.

Это пять уровней сетевой модели TCP/IP, но они действительно только концептуальны. Модель OSI имеет 7 уровней. В действительности, некоторые протоколы прокладывают между различными слоями или могут работать сразу с несколькими слоями. TLS/SSL, например, обеспечивает шифрование и информацию о сеансе между сетевым и транспортным уровнями. Над слоем приложения интерфейсы прикладного программирования (API) управляют взаимодействием с веб-приложениями, такими как Quora, Twitter и Facebook.

Ответ 3

@Miro ответил на вопрос хорошо, в техническом плане, но для новичков по теме сетевого взаимодействия я хотел бы дать объяснение в не-техническом разговоре:

Можно рассматривать TCP или UDP как эквивалент Почтовой службы США, тогда как HTTP является эквивалентом одного шаблона бизнес-письма. Если вы пишете неизвестному человеку, поскольку формат деловых писем является хорошим, общим способом передачи "вашего ВОЗ, КАК, ЧТО, КОГДА И ГДЕ" вашего сообщения, но это НЕ единственный формат, который разрешен USPS. То есть, если вы пишете деловому партнеру или любимому человеку, вы можете отказаться от формальностей и вместо этого перейти в более эффективный формат, например, счет фактуры или любовное письмо или поздравительную открытку, но USPS, например TCP или UDP, будет все еще там для вас, неся буквы туда и обратно.