Tema 6 - Comunicaciones Con Arduino - Aprendiendo Arduino

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 12

10/12/2020 Tema 6 – Comunicaciones con Arduino | Aprendiendo Arduino

Anuncios

INFORMAR DE ESTE ANUNCIO

Aprendiendo Arduino
Aprendiendo a manejar Arduino en profundidad

Tema 6 – Comunicaciones con Arduino


Conceptos básicos de comunicaciones. Capas OSI.
TCP/IP. Protocolo HTTP.
Librería Ethernet. Shield Ethernet y W5100.
I2C/TWI
SPI
Firmata (próximamente)
Bluetooth (próximamente)
ZigBee/XBee (próximamente)
Internet de las cosas (IoT) (próximamente)
Otras comunicaciones: zigbee, RF, … (próximamente)

Conceptos básicos de comunicaciones. Capas OSI

La telemática es una disciplina cientí ca y tecnológica, originada por la convergencia entre las tecnologías de las
telecomunicaciones y de la informática.

Algunas de las aplicaciones de la telemática podrían ser cualquiera de las siguientes:

Cualquier tipo de comunicación a través de internet (como por ejemplo el acceso a páginas web o el envío
de correos electrónicos) es posible gracias al uso de las tecnologías desarrolladas en este ámbito.
El uso de las mensajerías instantáneas está directamente relacionado con la telemática, ya que esta
materia se encarga en parte de controlar ese intercambio de mensajes entre dos entidades distintas.
Los sistemas GPS (Global Positioning System).

http://es.wikipedia.org/wiki/Telem%C3%A1tica

Un protocolo de comunicaciones es un conjunto de normas que están obligadas a cumplir todos las máquinas y
programas que intervienen en una comunicación de datos entre ordenadores, o cualquier otro dispositivo sin las
cuales la comunicación resultaría caótica y por tanto imposible.

En nuestro caso vamos a ver Arduino como el elemento para comunicar cualquier elemento físico con Internet
usando diversos protocolos estándar. Es lo que se ha venido a llamar M2M, dispositivos conectados o IoT.

https://aprendiendoarduino.wordpress.com/2014/11/18/tema-6-comunicaciones-con-arduino/ 1/12
10/12/2020 Tema 6 – Comunicaciones con Arduino | Aprendiendo Arduino

ADVERTISEMENT

REPORT THIS AD

A continuación se esbozan algunos ejemplos de protocolos de comunicaciones con la intención de aclarar el


concepto y la evolución de los mismos:

Protocolos punto a punto: Son los protocolos más antiguos y elementales utilizados para la comunicación
mediante una línea de datos entre dos únicos ordenadores. Un ejemplo es la comunicación serie que ya
hemos visto.
Comunicación entre redes. Además de los protocolos punto a punto, han de especi car la forma de
identi car al terminal concreto de la red con el que se debe establecer la comunicación en el caso de que
las máquinas que se están comunicando directamente sean servidores de una red local (LAN). Por ejemplo
asignando un número a cada uno de los terminales.
Protocolos de transmisión de paquetes. En los protocolos de transmisión de paquetes la transmisión se
apoya en la propia información contenida en los datos que transitan por las redes de comunicaciones,
mientras que en los protocolos anteriores, la responsabilidad del buen funcionamiento de las
comunicaciones recae sobre los equipos y las líneas de datos. Para ello los datos se “trocean” y organizan
en paquetes, como cartas de correo ordinario, con sus datos de origen y destino y van de equipo en equipo
como las cartas van de estafeta en estafeta, de tren correo a camión de reparto y de otra estafeta al bolso
del cartero quien nalmente la hace llegar a su destinatario.
El protocolo TCP/IP. TCP/IP son las siglas de “Transfer Control Protocol / Internet Protocol” y éste es el
conjunto de normas de transporte, estableciendo y de niendo el lenguaje para la Red Internet e
incorporado por otras redes. TCP/IP es un protocolo de transmisión de paquetes. Cuando un ordenador
quiere mandar a otro un chero de datos, lo primero que hace es partirlo en trozos pequeños (alrededor
de unos 4 Kb) y posteriormente enviar cada trozo por separado. Cada paquete de información contiene la
dirección en la Red donde ha de llegar, y también la dirección de remite, por si hay que recibir respuesta.
Los paquetes viajan por la Red de forma independiente.
Otra consecuencia de la estructura y forma de actuar de TCP/IP es que admite la eventualidad de que algún
paquete de información se pierda por el camino por algún suceso indeseado como que un ordenador
intermediario se apague o se sature cuando está pasando por él un trozo de un determinado chero en

https://aprendiendoarduino.wordpress.com/2014/11/18/tema-6-comunicaciones-con-arduino/ 2/12
10/12/2020 Tema 6 – Comunicaciones con Arduino | Aprendiendo Arduino

transmisión. Si esto ocurre, siempre queda abierta la posibilidad de volver a solicitar el paquete perdido, y
completar la información sin necesidad de volver a transferir todo el conjunto de datos.

Más información en: http://www.desarrolloweb.com/articulos/1617.php

Si bien los protocolos pueden variar mucho en propósito y so sticación, la mayoría especi ca una o más de las
siguientes propiedades:

Detección de la conexión física subyacente (con cable o inalámbrica), o la existencia de otro punto nal o
nodo.
Handshaking, es un proceso automatizado de negociación que establece de forma dinámica los
parámetros de un canal de comunicaciones establecido entre dos entidades antes de que comience la
comunicación normal por el canal. De ello se desprende la creación física del canal y precede a la
transferencia de información normal.
Negociación de varias características de la conexión.
Cómo iniciar y nalizar un mensaje.
Procedimientos en el formateo de un mensaje.
Qué hacer con mensajes corruptos o formateados incorrectamente (corrección de errores).
Cómo detectar una pérdida inesperada de la conexión, y qué hacer entonces.
Terminación de la sesión y/o conexión.
Estrategias para mejorar la seguridad (autenticación, cifrado).
Cómo se construye una red física.
Cómo los computadores o dispositivos se conectan a la red.

Los protocolos de comunicación permiten el ujo información entre equipos que manejan lenguajes distintos,
por ejemplo, dos computadores conectados en la misma red pero con protocolos diferentes no podrían
comunicarse jamás, para ello, es necesario que ambas “hablen” el mismo idioma. El protocolo TCP/IP fue creado
para las comunicaciones en Internet. Para que cualquier computador o dispositivo se conecte a Internet es
necesario que tenga instalado este protocolo de comunicación.

Más información en: http://es.wikipedia.org/wiki/Protocolo_de_comunicaciones

En el campo de las redes informáticas, los protocolos se pueden dividir en varias categorías. Una de las
clasi caciones más estudiadas es la OSI.

Según la clasi cación OSI, la comunicación de varios dispositivos se puede estudiar dividiéndola en 7 niveles, que
son expuestos desde su nivel más alto hasta el más bajo:

Nivel Nombre Categoría

Capa 7 Nivel de aplicación Aplicación

Capa 6 Nivel de presentación

Capa 5 Nivel de sesión

Capa 4 Nivel de transporte

Capa 3 Nivel de red Transporte de datos

https://aprendiendoarduino.wordpress.com/2014/11/18/tema-6-comunicaciones-con-arduino/ 3/12
10/12/2020 Tema 6 – Comunicaciones con Arduino | Aprendiendo Arduino

Capa 2 Nivel de enlace de datos

Capa 1 Nivel físico

Pinchando en cada capa hay una explicación para cada capa.

Capa física: Es la que se encarga de la topología de la red y de las conexiones globales de la computadora
hacia la red, tanto en lo que se re ere al medio físico como a la forma en la que se transmite la
información.
http://es.wikipedia.org/wiki/Capa_f%C3%ADsica
Capa de enlace de datos: Esta capa se ocupa del direccionamiento físico, del acceso al medio, de la
detección de errores, de la distribución ordenada de tramas y del control del ujo. Es uno de los aspectos
más importantes que revisar en el momento de conectar dos ordenadores, ya que está entre la capa 1 y 3
como parte esencial para la creación de sus protocolos básicos, para regular la forma de la conexión entre
computadoras así determinando el paso de tramas (trama = unidad de medida de la información en
esta capa, que no es más que la segmentación de los datos trasladándolos por medio de paquetes)
http://es.wikipedia.org/wiki/Capa_de_enlace_de_datos
Capa de red: Se encarga de identi car el enrutamiento existente entre una o más redes. Las unidades de
información se denominan paquetes, y se pueden clasi car en protocolos enrutables y protocolos de
enrutamiento. El objetivo de la capa de red es hacer que los datos lleguen desde el origen al destino, aún
cuando ambos no estén conectados directamente. Los dispositivos que facilitan tal tarea se denominan
encaminadores o enrutadores, aunque es más frecuente encontrarlo con el nombre en inglés routers.
http://es.wikipedia.org/wiki/Capa_de_red
Capa de transporte: Capa encargada de efectuar el transporte de los datos (que se encuentran dentro del
paquete) de la máquina origen a la de destino, independizándolo del tipo de red física que esté utilizando.
La PDU de la capa 4 se llama Segmento o Datagrama, dependiendo de si corresponde a TCP o UDP. Sus
protocolos son TCP y UDP; el primero orientado a conexión y el otro sin conexión. Trabajan, por lo tanto,
con puertos lógicos y junto con la capa red dan forma a los conocidos como Sockets, que se representa
como IP:Puerto (191.16.200.54:80).
http://es.wikipedia.org/wiki/Capa_de_transporte
Capa de sesión: Esta capa es la que se encarga de mantener y controlar el enlace establecido entre dos
computadores que están transmitiendo datos de cualquier índole. Por lo tanto, el servicio provisto por esta
capa es la capacidad de asegurar que, dada una sesión establecida entre dos máquinas, la misma se pueda
efectuar para las operaciones de nidas de principio a n, reanudándolas en caso de interrupción. En
muchos casos, los servicios de la capa de sesión son parcial o totalmente prescindibles.
http://es.wikipedia.org/wiki/Capa_de_sesi%C3%B3n
Capa de presentación: El objetivo es encargarse de la representación de la información, de manera que
aunque distintos equipos puedan tener diferentes representaciones internas de caracteres los datos
lleguen de manera reconocible.
http://es.wikipedia.org/wiki/Capa_de_presentaci%C3%B3n
Capa de aplicación: Ofrece a las aplicaciones la posibilidad de acceder a los servicios de las demás capas y
de ne los protocolos que utilizan las aplicaciones para intercambiar datos, como correo electrónico (Post
O ce Protocol y SMTP), gestores de bases de datos y servidor de cheros (FTP), por UDP pueden viajar
(DNS y Routing Information Protocol). Hay tantos protocolos como aplicaciones distintas y puesto que
continuamente se desarrollan nuevas aplicaciones el número de protocolos crece sin parar.
Cabe aclarar que el usuario normalmente no interactúa directamente con el nivel de aplicación. Suele
interactuar con programas que a su vez interactúan con el nivel de aplicación pero ocultando la
complejidad subyacente.
http://es.wikipedia.org/wiki/Capa_de_aplicaci%C3%B3n

https://aprendiendoarduino.wordpress.com/2014/11/18/tema-6-comunicaciones-con-arduino/ 4/12
10/12/2020 Tema 6 – Comunicaciones con Arduino | Aprendiendo Arduino

Esta imagen explica claramente lo que ocurre al pasar de capa a capa antes de mandar los bits por el medio
físico.

Más información en: http://es.wikipedia.org/wiki/Modelo_OSI

TCP/IP. Protocolo HTTP

En el caso del protocolo TCP/IP la pila OSI se simpli ca:

https://aprendiendoarduino.wordpress.com/2014/11/18/tema-6-comunicaciones-con-arduino/ 5/12
10/12/2020 Tema 6 – Comunicaciones con Arduino | Aprendiendo Arduino

Capa de Invoca programas que acceden servicios en la red. Interactuan con uno o más protocolos de transporte para

Aplicación. enviar o recibir datos, en forma de mensajes o bien en forma de ujos de bytes.

Capa de Provee comunicación extremo a extremo desde un programa de aplicación a otro. Regula el ujo de
Transporte. información. Puede proveer un transporte con able asegurándose que los datos lleguen sin errores y en la

secuencia correcta. Coordina a múltiples aplicaciones que se encuentren interactuando con la red
simultáneamente de tal manera que los datos que envíe una aplicación sean recibidos correctamente por la

aplicación remota, esto lo hace añadiendo identi cadores de cada una de las aplicaciones. Realiza además
una veri cación por suma, para asegurar que la información no sufrió alteraciones durante su transmisión.

Capa Controla la comunicación entre un equipo y otro, decide qué rutas deben seguir los paquetes de información

Internet. para alcanzar su destino. Conforma los paquetes IP que será enviados por la capa inferior. Desencapsula los
paquetes recibidos pasando a la capa superior la información dirigida a una aplicación.

Capa de Emite al medio físico los ujos de bit y recibe los que de él provienen. Consiste en los manejadores de los
Interfaz de dispositivos que se conectan al medio de transmisión.

Red.

Más información en: http://www.uca.edu.sv/investigacion/tutoriales/tcp-ip.html

https://aprendiendoarduino.wordpress.com/2014/11/18/tema-6-comunicaciones-con-arduino/ 6/12
10/12/2020 Tema 6 – Comunicaciones con Arduino | Aprendiendo Arduino

Los elementos de red (switches, routers, etc…) no llegan hasta la última capa y se podría representar así la
comunicación entre dos dispositivos.

Aunque algunos elementos de la red de comunicación pueden llegar a capas superiores a la de red e incluso
hasta la capa de aplicación como los rewalls para detectar ataques en capas superiores.

Es el caso de rewalls de estado y de aplicación. Un cortafuegos de aplicación puede ltrar protocolos de capas
superiores tales como FTP, TELNET, DNS, DHCP, HTTP, TCP, UDP y TFTP (GSS). Por ejemplo, si una organización
quiere bloquear toda la información relacionada con una palabra en concreto, puede habilitarse el ltrado de
contenido para bloquear esa palabra en particular. No obstante, los cortafuegos de aplicación resultan más
lentos que los de estado.

Direccionamiento IP

TCP/IP utiliza un identi cador denominado dirección internet o dirección IP, cuya longitud es de 32 bytes. La
dirección IP identi ca tanto a la red a la que pertenece una computadora como a ella misma dentro de dicha red.

Longitud de 32 bits.
Identi ca a las redes y a los nodos conectados a ellas.
Especi ca la conexión entre redes.
Se representan mediante cuatro octetos, escritos en formato decimal, separados por puntos.

Existen ciertas direcciones en cada clase de dirección IP que no están asignadas y que se denominan direcciones
privadas. Las direcciones privadas pueden ser utilizadas por los hosts que usan traducción de dirección de red
(NAT) para conectarse a una red pública o por los hosts que no se conectan a Internet. En una misma red no
pueden existir dos direcciones iguales, pero sí se pueden repetir en dos redes privadas que no tengan conexión
entre sí o que se conecten mediante el protocolo NAT. Las direcciones privadas son:

Clase A: 10.0.0.0 a 10.255.255.255 (8 bits red, 24 bits hosts).


Clase B: 172.16.0.0 a 172.31.255.255 (16 bits red, 16 bits hosts). 16 redes clase B contiguas, uso en
universidades y grandes compañías.
Clase C: 192.168.0.0 a 192.168.255.255 (24 bits red, 8 bits hosts). 256 redes clase contiguas, uso de
compañías medianas y pequeñas además de pequeños proveedores de internet (ISP).

Clases de direcciones IP:

Clases Número de Redes Número de Nodos Rango de Direcciones IP

A 127 16,777,215 1.0.0.0 a la 127.0.0.0

B 4095 65,535 128.0.0.0 a la 191.255.0.0

C 2,097,151 255 192.0.0.0 a la 223.255.255.0

Subredes en IP:

https://aprendiendoarduino.wordpress.com/2014/11/18/tema-6-comunicaciones-con-arduino/ 7/12
10/12/2020 Tema 6 – Comunicaciones con Arduino | Aprendiendo Arduino

Las Subredes son redes físicas distintas que comparten una misma dirección IP, es decir aquella que
identi ca a la red principal.
Deben identi carse una de otra usando una máscara de subred.
La máscara de subred es de cuatro bytes y para obtener el número de subred se realiza un operación AND
lógica entre ella y la dirección IP de algún equipo.
La máscara de subred deberá ser la misma para todos los equipos de la red IP.

El enrutamiento sirve para alcanzar redes distantes. Las direcciones IP se agrupan en clases. Ahora bien para
cada clase se pueden contar con un número determinados de subredes. Las subredes son redes físicas
independientes que comparten la misma dirección IP (es decir aquella que identi ca a la red principal). La
pregunta entonces es ¿cómo se logra que equipos que comparten el mismo identi cador de red pero se sitúan
en redes físicas diferentes podrán comunicarse usando compuertas? La solución a este problema es
determinando una máscara de dirección.

Supóngase que la dirección IP de  una equipo es 148.206.257.2. La máscara de subred es 255.255.255.0. El


equipo por tanto está en la subred 148.206.257.0

Una dirección IP dinámica es una IP asignada mediante un servidor DHCP (Dynamic Host Con guration Protocol)
al usuario. La IP que se obtiene tiene una duración máxima determinada. El servidor DHCP provee parámetros
de con guración especí cos para cada cliente que desee participar en la red IP. Entre estos parámetros se
encuentra la dirección IP del cliente, gateway y servidores DNS.

Las IP dinámicas son las que actualmente ofrecen la mayoría de operadores. El servidor del servicio DHCP puede
ser con gurado para que renueve las direcciones asignadas cada tiempo determinado.

Más información de DHCP: http://es.wikipedia.org/wiki/Dynamic_Host_Con guration_Protocol

Protocolo de Mensajes de Control de Internet ICMP (Internet Control Message Protocol)

Reporta sobre destinos inalcanzables.


Control de ujo de datagramas y congestión.
Controla los requerimiento de cambio de rutas entre compuertas.
Detecta rutas circulares o excesivamente largas.
Veri ca la existencia de trayectorias hacia alguna red y el estatus de la misma.

La función de la dirección IPv6 es exactamente la misma que la de su predecesor IPv4, pero dentro del
protocolo IPv6. Está compuesta por 128 bits y se expresa en una notación hexadecimal de 32 dígitos. IPv6
permite actualmente que cada persona en la Tierra tenga asignados varios millones de IPs, ya que puede
implementarse con 3.4×10E38 hosts direccionables. La ventaja con respecto a la dirección IPv4 es obvia en
cuanto a su capacidad de direccionamiento.

IPv6 admite 340.282.366.920.938.463.463.374.607.431.768.211.456 (340 sextillones de direcciones) —cerca de


6,7E17 (670 mil billones) de direcciones por cada milímetro cuadrado de la super cie de La Tierra.

Su representación suele ser hexadecimal y para la separación de cada par de octetos se emplea el símbolo “:”. Un
bloque abarca desde 0000 hasta FFFF. Algunas reglas de notación acerca de la representación de direcciones
IPv6 son:

https://aprendiendoarduino.wordpress.com/2014/11/18/tema-6-comunicaciones-con-arduino/ 8/12
10/12/2020 Tema 6 – Comunicaciones con Arduino | Aprendiendo Arduino

Los ceros iniciales se pueden obviar.


Ejemplo: 2001:0123:0004:00ab:0cde:3403:0001:0063 -> 2001:123:4:ab:cde:3403:1:63
Los bloques contiguos de ceros se pueden comprimir empleando “::”. Esta operación sólo se puede hacer
una vez.

Más información en: http://es.wikipedia.org/wiki/IPv6

Más información sobre el direccionamiento IP en: http://es.wikipedia.org/wiki/Direcci%C3%B3n_IP

En las redes, la dirección MAC (siglas en inglés de media access control; en español “control de acceso al medio”)
es un identi cador de 48 bits (6 bloques hexadecimales) que corresponde de forma única a una tarjeta o
dispositivo de red. Se conoce también como dirección física, y es única para cada dispositivo. Está determinada y
con gurada por el IEEE (los últimos 24 bits) y el fabricante (los primeros 24 bits) utilizando el organizationally
unique identi er. La mayoría de los protocolos que trabajan en la capa 2 del modelo OSI usan una de las tres
numeraciones manejadas por el IEEE: MAC-48, EUI-48, y EUI-64, las cuales han sido diseñadas para ser
identi cadores globalmente únicos. No todos los protocolos de comunicación usan direcciones MAC, y no todos
los protocolos requieren identi cadores globalmente únicos.

Ethernet: http://es.wikipedia.org/wiki/Ethernet

Las direcciones MAC son únicas a nivel mundial, puesto que son escritas directamente, en forma binaria, en el
hardware en su momento de fabricación.

En Arduino es importante poner la dirección MAC correcta para evitar problemas.

Más información en: http://es.wikipedia.org/wiki/Direcci%C3%B3n_MAC

En arduino con la librería ethernet solo trabajamos con la capa de aplicación, todas las otras capas ya están
implementadas por el Hardware, ya sea la ethernet shield o el módulo WiFi. Aunque si queremos realizar algunas
funciones de capas inferiores, podemos hacerlo con los comandos adecuados comunicandonos con el chip
ethernet via SPI.

Veamos los protocolos de la capa de aplicación que serán los que tengamos que implemantar en nuestro
arduino o usando la librería adecuada:

HTTP: http://es.wikipedia.org/wiki/Hypertext_Transfer_Protocol
HTTPS: http://es.wikipedia.org/wiki/Hypertext_Transfer_Protocol_Secure
SMTP: http://es.wikipedia.org/wiki/Simple_Mail_Transfer_Protocol
Telnet: http://es.wikipedia.org/wiki/Telnet

HTTP

Hypertext Transfer Protocol o HTTP (en español protocolo de transferencia de hipertexto) es el protocolo usado
en cada transacción de la World Wide Web. HTTP fue desarrollado por el World Wide Web Consortium y la
Internet Engineering Task Force, colaboración que culminó en 1999 con la publicación de una serie de RFC, el
más importante de ellos es el RFC 2616 que especi ca la versión 1.1. HTTP de ne la sintaxis y la semántica que
utilizan los elementos de software de la arquitectura web (clientes, servidores, proxies) para comunicarse. Es un
protocolo orientado a transacciones y sigue el esquema petición-respuesta entre un cliente y un servidor. Al

https://aprendiendoarduino.wordpress.com/2014/11/18/tema-6-comunicaciones-con-arduino/ 9/12
10/12/2020 Tema 6 – Comunicaciones con Arduino | Aprendiendo Arduino

cliente que efectúa la petición (un navegador web) se lo conoce como “user agent” (agente del usuario). A la
información transmitida se la llama recurso y se la identi ca mediante un localizador uniforme de recursos (URL).

HTTP es un protocolo sin estado, es decir, que no guarda ninguna información sobre conexiones anteriores. El
desarrollo de aplicaciones web necesita frecuentemente mantener estado. Para esto se usan las cookies, que es
información que un servidor puede almacenar en el sistema cliente. Esto le permite a las aplicaciones web
instituir la noción de “sesión”, y también permite rastrear usuarios ya que las cookies pueden guardarse en el
cliente por tiempo indeterminado.

Una transacción HTTP está formada por un encabezado seguido, opcionalmente, por una línea en blanco y algún
dato. El encabezado especi cará cosas como la acción requerida del servidor, o el tipo de dato retornado, o el
código de estado. El uso de campos de encabezados enviados en las transacciones HTTP le dan gran exibilidad
al protocolo. Estos campos permiten que se envíe información descriptiva en la transacción, permitiendo así la
autenticación, cifrado e identi cación de usuario. Ejemplos de encabezados: HTTP_ACCEPT y HTTP_USER_AGENT.

Versiones: http://es.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Versiones

Ejemplo de dialogo HTTP:


http://es.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Ejemplo_de_un_di.C3.A1logo_HTTP
Métodos de petición:
http://es.wikipedia.org/wiki/Hypertext_Transfer_Protocol#M.C3.A9todos_de_petici.C3.B3n
Códigos de respuesta:
http://es.wikipedia.org/wiki/Hypertext_Transfer_Protocol#C.C3.B3digos_de_respuesta

Novedades de HTTP/1.1: http://www.apacheweek.com/features/http11

Para una explicación más amplia de lo que es HTTP: http://es.wikipedia.org/wiki/Hypertext_Transfer_Protocol

Para intercambio de archivos por HTTP usamos:


http://es.wikipedia.org/wiki/Multipurpose_Internet_Mail_Extensions

Líneas de encabezado: http://trevinca.ei.uvigo.es/~txapi/espanol/proyecto/superior/memoria/node51.html

Lo más importante para comunicar arduino por HTTP con otros dispositivos, ya sean servidores, ordenadores,
otros Arduinos, etc… es conocer los métodos GET y POST del protocolo HTTP.

HTTP de ne 8 métodos que indica la acción que desea que se efectúe sobre el recurso identi cado. Lo que este
recurso representa, si los datos pre-existentes o datos que se generan de forma dinámica, depende de la
aplicación del servidor. A menudo, el recurso corresponde a un archivo o la salida de un ejecutable que residen
en el servidor.

GET: Pide una representación del recurso especi cado. Por seguridad no debería ser usado por aplicaciones que
manden datos sensbles ya que transmite información a través de la URI agregando parámetros a la URL. La
petición puede ser simple, es decir en una línea o compuesta de la manera que muestra el ejemplo.

Ejemplo:

GET /images/logo.png HTTP/1.1 obtiene un recurso llamado logo.png

https://aprendiendoarduino.wordpress.com/2014/11/18/tema-6-comunicaciones-con-arduino/ 10/12
10/12/2020 Tema 6 – Comunicaciones con Arduino | Aprendiendo Arduino

Ejemplo con parámetros:

/index.php?page=main&lang=es

POST: Envía los datos para que sean procesados por el recurso identi cado. Los datos se incluirán en el cuerpo
de la petición. Esto puede resultar en la creación de un nuevo recurso o de las actualizaciones de los recursos
existentes o ambas cosas.

HTTP request:

http://www.w3.org/Protocols/rfc2616/rfc2616-sec5.html
https://tools.ietf.org/html/rfc2616#section-9.5

Más información en: http://www.w3schools.com/tags/ref_httpmethods.asp

Métodos get y post, como se compone:

http://blog.micayael.com/2011/02/09/metodos-get-vs-post-del-http/

Un explicación muy buena de HTTP también la puedes encontrar en:


 http://www.ntu.edu.sg/home/ehchua/programming/webprogramming/HTTP_Basics.html

Veamos una trama en HTTP, jaros en el uso de cr (retorno de carro – carriage return – ASCII 13) y lf (line feed –
nueva linea – ASCII 10):

http://www1.ju.edu.jo/ecourse/abusufah/cpe532_Spr06/notes/BookOnLine/HTTP%20Request%20Message.htm

Y la versión inglesa de la wikipedia:

http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol
http://en.wikipedia.org/wiki/POST_(HTTP)

HTTP/1.1 se de nió en el estándar RFC2616,que es la más usada actualmente. En junio de 2014 RFC2616 se retiró
y HTTP/1.1 se rede nió en RFCs 7230, 7231, 7232, 7233, 7234, and 7235, HTTP/2 está en proceso de de nición.

https://tools.ietf.org/html/rfc2616 (ver página 35)


https://tools.ietf.org/html/rfc7230 (ver página 19)

Y cuando usar GET o POST?: http://www.w3.org/2001/tag/doc/whenToUseGet.html#checklist

Ya hemos visto las peticiones, pero ¿Como son las respuestas?

http://es.wikipedia.org/wiki/Hypertext_Transfer_Protocol#C.C3.B3digos_de_respuesta
http://www.w3.org/Protocols/rfc2616/rfc2616-sec6.html
http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

Para cumplir con el protocolo HTTP, arduino debe implementar estas respuestas cuando lo uso como servidor
web.
https://aprendiendoarduino.wordpress.com/2014/11/18/tema-6-comunicaciones-con-arduino/ 11/12
10/12/2020 Tema 6 – Comunicaciones con Arduino | Aprendiendo Arduino

Veamos esto grá camente:

El siguiente paso sería usar websocket  http://en.wikipedia.org/wiki/WebSocket. En futuros post se tratará la


implementación de websocket en Arduino.

Ejercicio: Ver las tramas HTTP con las funciones de depuración del navegador y también con wireshark, un web
sni er on-line y algún plugin para el navegador.

https://www.wireshark.org/

Chrome plugin Sni er: http://5ms.ru/sni er/

on-line: http://web-sni er.me/

Listado de web sni ers: http://scraping.pro/web-sni ers-review/

Esta entrada se publicó en Arduino, Avanzado y está etiquetada con Arduino, Avanzado, Redes en 18 noviembre,
2014 [https://aprendiendoarduino.wordpress.com/2014/11/18/tema-6-comunicaciones-con-arduino/] .

https://aprendiendoarduino.wordpress.com/2014/11/18/tema-6-comunicaciones-con-arduino/ 12/12

También podría gustarte