-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.html
307 lines (291 loc) · 14.5 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
<!DOCTYPE HTML>
<!--
Synchronous by TEMPLATED
templated.co @templatedco
Released for free under the Creative Commons Attribution 3.0 license (templated.co/license)
-->
<html>
<head>
<title>CoAP</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta name="description" content="" />
<meta name="keywords" content="" />
<link href='http://fonts.googleapis.com/css?family=Lato:300,400,700,900' rel='stylesheet' type='text/css'>
<!--[if lte IE 8]><script src="js/html5shiv.js"></script><![endif]-->
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script src="js/skel.min.js"></script>
<script src="js/skel-panels.min.js"></script>
<script src="js/init.js"></script>
<script type="text/javascript">
function gerarLinkEmail(nome, usuario, dominio, assunto) {
document.write("<a href=\"mailto");
document.write(":" + usuario + "@");
document.write(dominio + "?subject=" + assunto + "\">" + nome + ' - ' + usuario + "@" + dominio + "<\/a>");
}
</script>
<noscript>
<link rel="stylesheet" href="css/skel-noscript.css" />
<link rel="stylesheet" href="css/style.css" />
</noscript>
<!--[if lte IE 8]><link rel="stylesheet" href="css/ie/v8.css" /><![endif]-->
<!--[if lte IE 9]><link rel="stylesheet" href="css/ie/v9.css" /><![endif]-->
</head>
<body>
<div id="wrapper">
<!-- Header -->
<div id="header">
<div class="container">
<!-- Logo -->
<div id="logo">
<h1><a href="#">Constrained Application Protocol</a></h1>
<span><a href="#">(CoAP)</a></span>
</div>
<!-- Nav -->
<nav id="nav">
<ul>
<li class="active"><a href="index.html">Fundamentação Teórica</a></li>
<li><a href="funcionamento.html">Funcionamento do CoAP</a></li>
<li><a href="aplicacoes.html">Aplicações</a></li>
<li><a href="conclusao.html">Conclusão</a></li>
<br>
<li><a href="perguntas.html">Perguntas</a></li>
<li><a href="referencias.html">Referências bibliográficas</a></li>
</ul>
</nav>
</div>
</div>
<!-- /Header -->
<div id="page">
<div class="container">
<div class="row">
<div class="3u">
<section id="sidebard2">
<header>
<h2>1) Fundamentação Teórica</h2>
</header>
<ul class="style1">
<li class="first"><span class="fa fa-check"></span><a href="#1.1">1.1 Uso de protocolos na Internet</a></li>
<li><span class="fa fa-check"></span><a href="#1.2">1.2 Internet das Coisas</a></li>
<li><span class="fa fa-check"></span><a href="#1.3">1.3 O que é o CoAP?</a></li>
<li><span class="fa fa-check"></span><a href="#1.4">1.4 Principais características</a></li>
</ul>
</section>
</div>
<div class="9u skel-cell-important">
<section id="content">
<header>
<h2><a name="1.1">1.1 Uso de protocolos na Internet</a></h2>
</header>
<p>
A Internet, criada no auge da Guerra Fria, em 1969, é a maior rede de dados do mundo. Por
consistir em diversas redes de variados portes interconectadas, é um sistema complexo e
que depende de padronização para que possa existir comunicação entre os seus usuários.
Visto isso, foram criados os protocolos de rede. Um protocolo pode ser definido como uma
descrição formal de um conjunto de convenções que regem a maneira e o fluxo de
comunicação entre os dispositivos em uma rede. Eles funcionam como um “idioma universal”
entre computadores, inclusive de fabricantes e/ou sistemas operacionais diferentes.
</p>
<p>
A Internet foi desenvolvida fundamentada no modelo de referência TCP/IP, que é
estruturado em 4 camadas: física, rede, transporte e aplicação. Em cada camada, existem
protocolos específicos para o tipo de operação. No entanto, existem inúmeros protocolos
de rede com empregabilidades distintas, os quais devem ser utilizados em conformidade
com as características da rede em uso e com as demandas da tarefa a ser executada.
</p>
<header>
<h2><a name=1.2>1.2 Internet das Coisas</a></h2>
</header>
<p>
Segundo o IETF (<italic>Internet Engineering Task Force</italic>), a Internet das Coisas pode ser
conceituada como uma rede de objetos físicos incorporados a sensores, circuitos
eletrônicos e <italic>softwares</italic> com conectividade para viabilizar a troca de dados para
monitoração, controle ou mesmo com outros dispositivos conectados.
</p>
<p>
Os sistemas IoT (<italic>Internet of Things</italic>), comumente, possuem limitações
de recursos de comunicação e computação. Como alternativa a tal, a conexão desses
sistemas à Internet proporciona autonomia ao conjunto, de modo a obter um fluxo
de informações mais linear, ou seja, sem que haja
intermediação de usuários humanos. Entretanto, para que isso ocorra, é necessário o uso
de protocolos específicos e adaptados para redes com poucos recursos.
</p>
<header>
<h2><a name="1.3">1.3 O que é o CoAP?</a></h2>
</header>
<p>
Embora o HTTP (<italic>Hypertext Transfer Protocol</italic>) seja amplamente usado, ele não possui as
características ideais para os sistemas IoT, dado que seus pacotes podem ocupar milhares
de <italic>bytes</italic>. A IoT é composta de redes restritas, como a 6LoWPAN (<italic>IPv6 over Low-Power
Wireless Personal Area Networks</italic>) e nós restritos, executados em microcontroladores de 8
<italic>bits</italic> com pequenas quantidades de memória ROM (<italic>Read Only Memory</italic>)
e RAM (<italic>Random Access Memory</italic>).
</p>
<p>
O CoAP, “<italic>Constrained Application Protocol</italic>”, ou, em uma tradução aproximada, “Protocolo
de Aplicação Restrita”, foi desenvolvido pelo grupo de trabalho CoRE (<italic>Constrained
Restful Environments</italic>) do IETF. Ele é bom em ambientes com recursos limitados:
dispositivos com energia limitada, enlaces com baixa largura de banda, redes
congestionadas ou com perdas. Em redes congestionadas, CoAP/UDP pode funcionar, porém o
MQTT/TCP, alternativa ao CoAP, pode não ser nem capaz de administrar um <italic>handshake</italic> completo.
CoAP pode ser usado onde <italic>broadcast</italic> e <italic>multicast</italic> são necessários.
</p>
<p>
CoAP é adequado na construção de algo no qual um dispositivo é implantado em modo
"<italic>report only</italic>". Uma vez implantado, o dispositivo apenas reporta dados de volta para o
servidor. O CoAP é adequado para redes de comunicações domésticas, posto que ferramentas
informativas, equipamentos de controle e de comunicação em redes de Casas Inteligentes
precisam ser leves e ter baixo custo.
</p>
<p>
Quando implantado em redes <italic>third-party</italic> (coletora de dados de terceiros) onde não temos
controle sob <italic>firewalls</italic> e portas bloqueadas, CoAP pode não ser adequado. Nesse caso,
HTTP/REST é uma boa opção. Como nós sensores são servidores CoAP, isso pode ser problema
com NAT (<italic>Network Address Table</italic>). LWM2M (<italic>Lightweight Machine to Machine</italic>),
que é baseado em CoAP, supera isso ao requerer que clientes enviem primeiro um pacote de prova de
forma que o roteador possa fazer a associação. Apesar de CoAP não requerer IPv6, é mais
fácil de ser implantado em redes IP.
</p>
<header>
<h2><a name="1.4">1.4 Principais características</a></h2>
</header>
<p>
Como IoT usa a Internet, CoAP foi inspirado no HTTP. Similarmente ao HTTP, CoAP é um
protocolo de transferência de documento baseado no método <italic>request-response</italic>
(requisição-resposta), um cliente pede um recurso para a URI (<italic>Uniform Resource Identifier</italic>)
e o servidor responde. Além disso, princípios de RESTful (capacidade de determinado sistema
aplicar os princípios de REST - <italic>Representational State Transfer</italic>) são seguidos
e GET, POST, PUT, DELETE são utilizados.
</p>
<p>
CoAP difere de HTTP porque usa UDP (<italic>User Datagram Protocol</italic>) para o transporte no lugar
de TCP (<italic>Transmission Control Protocol</italic>), visto que o <italic> handshaking</italic>
de UDP é mais leve e fácil de ser implementado em microcontroladores. Sua comunicação é feita usando
datagramas sem conexão. O cabeçalho do CoAP é de apenas 4 <italic>bytes</italic>, além de também poder
usar características do <italic>broadcast</italic> e <italic>multicast</italic> do UDP.
Devido ao uso de datagramas e SMS, outros protocolos baseados em pacotes também podem ser empregados.
CoAP usa um <italic>subset</italic> de tipos do MIME (<italic>Multi-Purpose Internet Mail Extensions</italic>)
e códigos de resposta do HTTP.
</p>
<p>
CoAP usa o <italic>Datagram Transport Layer Security</italic> (DTLS) para segurança. O protocolo DTLS de
segurança de CoAP é denominado CoAPs. DTLS é baseado em PSK (<italic>Pre-Shared Key</italic>), RPK
(<italic>Raw Public Key</italic>) e certificado de segurança. Esses são os três principais elementos quando
consideramos segurança, integridade, autenticação e confidencialidade.
</p>
<p>
Como não é utilizado o protocolo TCP, o CoAP cuida dos ACKs das mensagens, tentativas de
controle de congestionamento e detecção dupla.
</p>
<figure>
<img src="images/ArquiteturaCoAP.png" alt="Arquitetura CoAP"/>
<figcaption><span>Figura 1:</span> Arquitetura do Protocolo da Camada de Aplicação CoAP.</figcaption>
</figure>
</section>
<div style="text-align: center">
<a href="#" class="button">Topo</a>
<a href="funcionamento.html" class="button" style="float: right">Próximo >></a>
</div>
</div>
</div>
</div>
</div>
<!-- Footer -->
<div id="footer">
<div class="container">
<div class="row">
<div class="3u">
<section id="box1">
<header>
<h2>Links úteis</h2>
</header>
<ul class="style3">
<li class="first">
<p class="linkButton"><a href="http://www.poli.ufrj.br/" target="_blank">Escola
Politécnica da UFRJ</a></p>
</li>
<li>
<p class="linkButton"><a href="https://www.gta.ufrj.br/" target="_blank">Grupo de
Teleinformática e Automação da UFRJ</a></p>
</li>
<li>
<p class="linkButton"><a href="https://www.del.ufrj.br/"
target="_blank">Departamento de Engenharia Eletrônica e de Computação da
UFRJ</a></p>
</li>
</ul>
</section>
</div>
<div class="6u">
<section id="box2">
<header>
<h2>Autores</h2>
<ul class="style1">
<li class="first">
<script type="text/javascript">
gerarLinkEmail('ARYANE BARROS MACIEL DA SILVA', 'ary.maciel', 'poli.ufrj.br', 'Feedback sobre o site do CoAP...');
</script>
</li>
<li>
<script type="text/javascript">
gerarLinkEmail('FELIPE FADUL DE CARVALHO', 'felipe.fadul', 'poli.ufrj.br', 'Feedback sobre o site do CoAP...');
</script>
</li>
<li>
<script type="text/javascript">
gerarLinkEmail('MARIANA DABUL NAZARIO', 'mariana.dabul', 'poli.ufrj.br', 'Feedback sobre o site do CoAP...');
</script>
</li>
<noscript>
<em>Endereço de email protegido por JavaScript. Por favor, ative o JavaScript
para visualizar o email.</em>
</noscript>
</ul>
</header>
<div style="text-align: justify">
<p>Este trabalho foi desenvolvido por alunos de graduação do curso de Engenharia
Eletrônica e de Computação da Universidade Federal do Rio de Janeiro para a
disciplina Redes de Computadores I durante o período de 2019.1. Compreende um estudo
sobre o protocolo CoAP, apresentando suas principais características,
funcionamento e aplicações.</p>
</div>
</section>
</div>
<div class="3u">
<section id="box3">
<header>
<h2>Contato</h2>
</header>
<div style="text-align: justify">
<p>
Fique à vontade para comentar sobre o trabalho enviando-nos um e-mail ou acessando-o no
<a href="https://github.com/felipefadul/CoAP" target="_blank">GitHub</a>.
</p>
</div>
</section>
</div>
<div style="text-align: justify">
"Este trabalho foi totalmente produzido pelos autores que declaram não terem violado os direitos
autorais de terceiros, sejam eles pessoas físicas ou jurídicas. Havendo textos, tabelas e
figuras transcritos de obras de terceiros com direitos autorais protegidos ou de domínio público
tal como ideias e conceitos de terceiros, mesmo que sejam encontrados na Internet, os mesmos
estão com os devidos créditos aos autores originais e estão incluídas apenas com o intuito de
deixar o trabalho autocontido. O(s) autor(es) tem(êm) ciência dos Artigos 297 a 299 do Código
Penal Brasileiro e também que o uso do artifício de copiar/colar texto de outras fontes e outras
formas de plágio é um ato ilícito, condenável e passível de punição severa. No contexto da
Universidade a punição não precisa se restringir à reprovação na disciplina e pode gerar um
processo disciplinar que pode levar o(s) aluno(s) à suspensão;"
</div>
</div>
</div>
</div>
<!-- Copyright -->
<div id="copyright">
<div class="container">
Design by <a href="http://templated.co" target="_blank">TEMPLATED</a> - Images: <a
href="http://unsplash.com" target="_blank">Unsplash</a> (<a href="https://unsplash.com/license"
target="_blank">CC0</a>)
</div>
</div>
</div>
</body>
</html>