-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.xml
311 lines (231 loc) · 19.2 KB
/
index.xml
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
308
309
310
311
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>Documentação</title>
<link>http://mullerfs.github.io/</link>
<description>Recent content on Documentação</description>
<generator>Hugo -- gohugo.io</generator>
<language>pt-br</language>
<lastBuildDate>Sat, 10 Oct 2015 12:11:02 -0300</lastBuildDate>
<atom:link href="http://mullerfs.github.io/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>Sinalização SIP O COMEÇO DA SAGA</title>
<link>http://mullerfs.github.io/blog/2015/10/10/sinaliza%C3%A7%C3%A3o-sip---o--come%C3%A7o-da-saga/</link>
<pubDate>Sat, 10 Oct 2015 12:11:02 -0300</pubDate>
<guid>http://mullerfs.github.io/blog/2015/10/10/sinaliza%C3%A7%C3%A3o-sip---o--come%C3%A7o-da-saga/</guid>
<description><p>Session Initiation Protocol (SIP) é um protocolo de sinalização de redes criado para estabelecer, modificar e terminar sessões de multimídia em uma rede IP.</p>
<blockquote>
<p>Em outras palavras: Um protocolo feito para fazer chamadas de voz e vídeo através da internet</p>
</blockquote>
<p>Um ditado popular diz que andorinha sozinha não faz verão e esse é o caso do SIP. Por si só ele não provê serviços, ou controla fluxos de mídia e nem sequer é capaz de fazer negociações de codecs, para uma solução completa de comunicação geralmente é utilizado em conjunto com outros protocolos como os abaixo:</p>
<ul>
<li><strong>SIP:</strong> Controle de chamada.</li>
<li><strong>SDP:</strong> Encapsulado dentro do SIP, serve principalment para fazer as negociações de codecs.</li>
<li><strong>RTP:</strong> Usado para transportar fluxos de mídia</li>
</ul>
<blockquote>
<p><em>Vamos fazer um pequeno exercício mental e totalmente estranho : ), assuma as seguintes condições:</em></p>
<ol>
<li>Você é brasileiro e fala fluentemente Inglês e Espanhol</li>
<li>Você precisa conversar com o João que fala Alemão, Inglês e Chinês</li>
<li>Você não conhece o João</li>
<li>Você sabe onde o João mora</li>
</ol>
<p>Agora continuando a aventura nesse universo paralelo:</p>
<ul>
<li>Você vai até a casa do João e bate na porta dele e diz <em><strong>oi</strong></em> em português, em inglês e espanhol.</li>
<li>João, tranquilamente apesar da sua esquisitice, responde <em><strong>oi</strong></em> em alemão, inglês e chinês.</li>
<li>Você percebe que João disse <strong>oi</strong> em inglês e então começa uma conversa com João.</li>
</ul>
<p>Nesse exercicio, ir até a casa do João representa uma das funções da sinalização <strong>SIP</strong> que curiosamente possui o nome INVITE. <em>(não vamos entrar no mérito de você ter se auto-convidado para a casa do João)</em></p>
<p>Dizer oi em três linguas diferentes para tentar descobrir qual lingua o João fala, ele responder com outras linguas e por fim você decidir que inglês é a linguagem comum entre vocês é uma <code>negociação de codec</code> e é a tarefa do protocolo <strong><em>SDP</em></strong></p>
<p>O Ar foi o meio que você usou para passar o som da sua voz para se comunicar com o João, esse é o papel do protocolo <strong>RTP</strong> e a sua voz saindo de sua boca e entrando nos ouvidos do João é o que chamamos de <code>fluxo de mídia</code>.</p>
<pre><code>PS: Não venham reclamar que eu poderia utilizar inúmeros exemplos mais fáceis.
</code></pre>
</blockquote>
<p>Nos próximos posts eu irei abordar os seguintes assuntos:</p>
<ul>
<li>Elementos que compõem o SIP (usuário, server, proxy)</li>
<li>Exemplo de uma chamada SIP</li>
<li>Funções definidas pelo SIP (invite, option, cancel, bye)</li>
<li>Códigos de resposta</li>
<li>Cabeçalho do SIP</li>
<li>Transferência, roteamentos e todos os outros conceitos básicos que você precisa saber</li>
<li>Codecs</li>
<li>PSTN</li>
</ul>
<p>Não esperem isso para amanhã e nem que virá em um único post. No mais, envie sugestões de assuntos <del>que provavelmente eu não saberei</del> que terei o prazer de pesquisar para vocês.</p>
</description>
</item>
<item>
<title>Linux - Sistema de Arquivos</title>
<link>http://mullerfs.github.io/blog/2015/09/29/linux---sistema-de-arquivos/</link>
<pubDate>Tue, 29 Sep 2015 12:09:12 -0300</pubDate>
<guid>http://mullerfs.github.io/blog/2015/09/29/linux---sistema-de-arquivos/</guid>
<description>
<h1 id="conceitos-básicos:4e6bca090a67a8a79bb4183db98bf2ad">CONCEITOS BÁSICOS</h1>
<p>Um sistema de arquivo é como se fosse o sistema de CEP de uma cidade. Ele mapeia
o endereço onde um determinado bloco de informação se encontra no Disco, então o Sistema operacional
utilizada desse mapeamento para encontrar/armazenar os dados</p>
<p>Há vários tipos de Filesystem. Alguns para lidar com arquivos pequenos, outros
com arquivos grandes, outros para lidarem com partições gigantescas,
outros para deletar rapidamente do disco um arquivo, outros para comprimirem melhor as informações.</p>
<p>Exemplos de filesystem são: ReiserFS, XFS, EXT3, EXT4, NTFS&hellip;</p>
<p>Cada distribuição linux, dependendo da sua filosofia, utilizará um tipo diferente. Geralmente EXT3, EXT4</p>
<h1 id="navegação-pelo-sistema-de-arquivo:4e6bca090a67a8a79bb4183db98bf2ad">NAVEGAÇÃO PELO SISTEMA DE ARQUIVO</h1>
<p>Quando você entra em um sistema linux pelo terminal, a primeira coisa que verá
é uma linha de comando parecida com a abaixo:</p>
<pre><code class="language-bash">user@machine ~$
</code></pre>
<p>Por padrão, ao entrar em um terminal você começará pela pasta do usuário <strong>~</strong>
que nada mais é que uma abreviatura para o diretório <strong>/home/usuario/</strong>.</p>
<blockquote>
<p><em>Observação: Em alguns casos muito específicos, o diretório de trabalho inicial
poderá não ser o do usuário.</em></p>
</blockquote>
<p>Você pode descobrir o diretório que se encontra atravês do comando <code>pwd</code>:</p>
<pre><code class="language-bash">user@machine ~$ pwd
/home/user
</code></pre>
<p>Você pode descobrir os arquivos dentro do diretório através do comando list <code>ls</code></p>
<pre><code class="language-bash">user@machine ~$ ls
file1.txt file2.txt tmpdir
</code></pre>
<p>O comando <code>ls</code> aceita vários argumentos, um dos mais utilizados é o <code>-l</code> que provê as permissões,
donos dos arquivos, tamanho e data</p>
<pre><code class="language-bash">user@machine ~$ ls -l
-rw-r--r-- 1 user user 2444 Mar 29 2012 file1.txt
-rw-r--r-- 1 user user 32423 Jun 03 2011 file2.txt
drwxr-xr-x 15 user user 4096 Apr 22 2012 tmpdir
</code></pre>
<p>Você não precisa se limitar a listar apenas os arquivos e diretórios da pasta atual.
O ls aceita como argumento um endereço do sistema de arquivo</p>
<pre><code class="language-bash">user@machine ~$ ls -l /
dr-xr-xr-x 2 root root 4096 Apr 26 2012 bin
dr-xr-xr-x 6 root root 1024 Sep 18 14:09 boot
drwxr-xr-x 19 root root 8660 Jan 8 16:57 dev
drwxr-xr-x 112 root root 12288 Feb 8 06:56 etc
drwxr-xr-x 67 root root 4096 Feb 7 19:43 home
dr-xr-xr-x 13 root root 4096 Mar 6 2012 lib
drwx------ 2 root root 16384 Sep 18 2011 lost+found
drwxr-xr-x 5 root root 4096 Nov 19 18:53 mnt
drwxr-xr-x 4 root root 4096 Sep 4 15:15 opt
dr-xr-xr-x 1011 root root 0 Sep 23 2011 proc
dr-xr-x--- 10 root root 4096 Jan 23 23:14 root
dr-xr-xr-x 2 root root 12288 Oct 16 22:23 sbin
drwxr-xr-x 13 root root 0 Sep 23 2011 sys
drwxrwxrwt 65 root root 16384 Feb 11 04:37 tmp
drwxr-xr-x 16 root root 4096 Feb 8 2012 usr
drwxr-xr-x 27 root root 4096 Nov 4 03:47 var
</code></pre>
<p>O sistema de direório do Linux segue um padrão de árvore, onde cada nível é delimitado pelo caracter <code>/</code>.</p>
<blockquote>
<p>A pasta raiz do sistema (root directory) não possui um nome em especifico, sendo informada apenas pelo caracter <code>/</code>.</p>
</blockquote>
<p>Para mudar o diretório atual, utiliza o comando <code>cd</code>:</p>
<pre><code class="language-bash">user@machine ~$ cd /tmp
user@machine ~$ pwd
/tmp
</code></pre>
<p>Para encontrar um arquivo na sua estrutura de diretórios utiliza-se o comando <code>find</code>:</p>
<pre><code class="language-bash">user@machine ~$ find /home/user -type f -name file3.txt
/home/user/tmpdir/file3.txt
</code></pre>
<h1 id="nomenclatura-de-discos-no-linux:4e6bca090a67a8a79bb4183db98bf2ad">NOMENCLATURA DE DISCOS NO LINUX</h1>
<p>Discos no linux são geralmente nomeados como <code>/dev/sda</code>, <code>/dev/sdb</code>, etc.. onde a última letra (&ldquo;a&rdquo;, &ldquo;b&rdquo;, &ldquo;c&rdquo;..) representa a particição física do sistema sendo <strong><em>a</em></strong> o primeiro disco, <strong><em>b</em></strong> o segundo e assim por diante</p>
<p>Cada partição física pode ser dividia em partições lógicas. Veja o comando list abaixo:</p>
<pre><code class="language-bash">-bash-4.1$ ls -la /dev/sd*
brw-rw---- 1 root disk 8, 0 Jul 6 16:51 /dev/sda
brw-rw---- 1 root disk 8, 1 Sep 18 2011 /dev/sda1
brw-rw---- 1 root disk 8, 2 Sep 18 2011 /dev/sda2
brw-rw---- 1 root disk 8, 3 Sep 18 2011 /dev/sda3
</code></pre>
<p>Os arquivos com números no final são uma representação de uma unidade lógica numa partição física.
Por exemplo: O bloco <code>/dev/sda1</code> representa a primeira partição lógica (1) do primeiro disco físico (a)</p>
<blockquote>
<p>Dependendo das necessidades da sua aplicação, ou do seu sistema operacional, a quantidade de partições lógicas podem variar.</p>
</blockquote>
<p>Cada partição lógica possui um sistema de arquivo (xfs, ext3) e representa uma espaço alocado no disco rígido bem definido, com endereço inicial e final.</p>
<h1 id="montando-sistemas-de-arquivos:4e6bca090a67a8a79bb4183db98bf2ad">MONTANDO SISTEMAS DE ARQUIVOS</h1>
<p>Montar um sistema de arquivo é o ato de colocar a raiz de uma partição dentro de um diretório do Sistema Operacional. O comando <code>mount</code> é o utilizado para montar partições no linux.</p>
<pre><code class="language-bash">root@machine # mount -t ext4 /dev/sdb1 /mnt
</code></pre>
<blockquote>
<p>O argumento <code>-t</code> é utilizado para especificar o tipo de sistema de arquivo da partição e nos S.Os atuais está ficando cada vez menos necessário sua utilização. O próprio mount identifica o tipo de partição automaticamente.</p>
</blockquote>
<p>O comando mount acima diz que será montado a primeira partição lógica <strong><em>1</em></strong> do segundo disco físico <strong><em>b</em></strong> dentro do diretório <strong><em>/mnt</em></strong> do sistema operacional.</p>
<h2 id="opções-de-montagem-do-filesystem:4e6bca090a67a8a79bb4183db98bf2ad">OPÇÕES DE MONTAGEM DO FILESYSTEM</h2>
<ul>
<li><strong>async:</strong> Diz ao SO que as operações do sistema serão assicronas.\
Na pratica, uma das consequências disso significa que o comando de cópia <code>cp</code> sairá normalmente antes mesmo dos arquivos terem sido realocados na partição totalmente, o sistema <strong>persistirá</strong> essas informações em algum momento após a operação. Devido a incerteza de quando o sistema persitirá as informações no disco, utiliza-se o comando <code>sync</code> para forçar a escrita no disco das infromações</li>
<li><strong>noatime:</strong> Diz ao sistema há não modificar a hora de acesso (atime) para cada operação em um arquivo.</li>
<li><strong>ro:</strong> Diz ao sistema para montar o sistema em somente leitura.\
As vezes o Sistema operacional detecta que um <strong>block device</strong> está começando a falhar e automaticamente o remonta em modo somente leitura para protegê-lo.\
Geralmente essa situação traz vários problemas para o sistema que está funcionando, mas é uma medida para permitir que o máximo de informações sejam copiadas para outro lugar antes da partição falhar totalmente.
Caso isso ocorra, pode ser verificado através do comando <code>dmesg</code> por linhas parecidas com a abaixo:</li>
</ul>
<pre><code class="language-bash">root@machine # dmesg
[26729.124569] Write(10): 2a 00 03 96 5a b0 00 00 08 00
[26729.124576] end_request: I/O error, dev sda, sector 60185264
[26729.125298] Buffer I/O error on device sda2, logical block 4593494
[26729.125986] lost page write due to I/O error on sda2
</code></pre>
<p>Essa mensagem indica fortemente que o disco <code>/dev/sda</code> está morrendo.</p>
<ul>
<li><strong>rw:</strong> Diz ao sistema para montar o arquivo em modo de leitura-escrita</li>
<li><strong>remount:</strong> Diz ao sistema para remontar uma partição de arquivo</li>
</ul>
<pre><code class="language-bash">root@machine ~# mount | grep boot
/dev/sda1 on /boot type ext3 (ro)
root@machine ~# mount -o remount,rw /boot
root@machine ~# mount | grep boot
/dev/sda1 on /boot type ext3 (rw)
</code></pre>
<ul>
<li><strong>noexec:</strong> Diz ao sistema para ignorar o bit de execução dos arquivos de uma partição. A partição montada com esse atributo nunca poderá contar arquivos executáveis</li>
<li><strong>nosuid:</strong> Diz ao sistema para ignorar os bits referentes à identificação de usuário. Geralmente recomendado para CD-ROMs, USB e discos da rede</li>
</ul>
<h1 id="elementos-em-um-filesystem:4e6bca090a67a8a79bb4183db98bf2ad">ELEMENTOS EM UM FILESYSTEM</h1>
<h2 id="inodes:4e6bca090a67a8a79bb4183db98bf2ad">INODES</h2>
<p>Um Sistema de Arquivo é baseado em uma estrutura de dados chamados <strong>INODES</strong> e não nos arquivos propriamente ditos.</p>
<p>INODES são na verdade <strong>METADADOS - <em>(dados que descrevem dados)</em></strong> e representam uma identificação para o arquivo dentro da partição lógica. Essas estruturas são responsáveis por conter informações básicas sobre seus arquivos e pastas.</p>
<p>Os atributos dos inodes são:</p>
<ul>
<li>Tamanho do arquivo em bytes</li>
<li>O device id.</li>
<li>User ID e dono do arquivo.</li>
<li>Group ID do arquivo.</li>
<li>Os modos de permissões.</li>
<li>Atributos adicionais de sistema e usuário. Ex: Append only, ACL</li>
<li>Timestamps de acesso (atime), modificação (mtime) e criação (ctime).</li>
<li>Contagem de Hardlinks apontando para o mesmo inode.</li>
<li>Ponteiros para o conteúdo do arquivo que ele representa.</li>
</ul>
<p>Ao ler qualquer arquivo ou diretório, o Kernel trata de ler primeiramente o INODE do arquivo, para depois chegar ao dito cujo. Ao ler essa estrutura, são checadas as permissões e em caso de negada, é retornada a famosa mensagem de “Permission denied”, caso contrário, o procedimento segue normalmente.</p>
<blockquote>
<p>Curiosidade: Ao ler uma partição que diz haver 16GB, porém acusa apenas 14,8GB. A diferença são os espaços consumidos para os inodes.</p>
</blockquote>
<h2 id="devices:4e6bca090a67a8a79bb4183db98bf2ad">DEVICES</h2>
<p>Um dispositivo (device) são arquivos especiais localizados em <code>/dev</code> e representam interfaces para elementos de hardware/lógicos do sistema.</p>
<p>Por exemplo, cada impressora, cada partição física, cada porta usb, cada placa de vídeo, de rede, etc&hellip; possuem arquivos que os represetam por um device dentro da pasta <code>/dev/</code></p>
<p>Os dispositivos podem ser baseados em <code>Caracter</code> e em <code>Blocos</code>:</p>
<ul>
<li><strong>Caracter:</strong> Permitem acesso direto e sem buffer ao dispositivo. Não necessariamente permitem Leitura e Escrita. Também são conhecidos por <strong><em>Raw Devices</em></strong></li>
<li><strong>Blocos:</strong> Permitem acesso bufferizado ao dispositivo de modo que o hardware em si não fica vísivel para acesso direto.</li>
</ul>
<h2 id="pseudo-devices:4e6bca090a67a8a79bb4183db98bf2ad">PSEUDO-DEVICES</h2>
<p>Representam dispositivos que não possuem um correspondente físico do sistema. Estes são utilizados como <em><strong>dispositivos funcionais</strong></em>. Os pseudo-devices (baseados em caracter) mais utilizados são:</p>
<ul>
<li><strong>/dev/null</strong> – produz nenhum output, descarta qualquer input</li>
<li><strong>/dev/zero</strong> – aceita e descarta qualquer input. Produz um stream continuo of NULL bytes.</li>
<li><strong>/dev/full</strong> – produz um fluxo continuo de NUL (valores zerados) bytes quando lido, retorna disco cheio quando usado para escrita</li>
<li><strong>/dev/random</strong> e <strong>/dev/urandom</strong> – produz um fluxo de tamanho variável de números pseudo-aleatórios.</li>
</ul>
<h1 id="fontes:4e6bca090a67a8a79bb4183db98bf2ad">Fontes</h1>
<ul>
<li><a href="http://www.opsschool.org">http://www.opsschool.org</a></li>
</ul>
</description>
</item>
</channel>
</rss>