Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.
left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Prévia do material em texto

G
RU
PO
 SER ED
U
CACIO
N
AL
R
ED
E D
E CO
M
PU
TAD
O
R
ES E PRO
G
RAM
AÇÃO
 APLICAD
A A R
ED
ES
David de Oliveira,
Sergio Ricardo Master Penedo,
Organizadora: Aline Ferreira Barbosa.
REDE DE COMPUTADORES
E FUNDAMENTOS 
DE PROGRAMAÇÃO 
APLICADA À REDES
David de Oliveira;
Sergio Ricardo Master Penedo.
Organizadora: Aline Ferreira Barbosa.
REDE DE COMPUTADORES
E PROGRAMAÇÃO
APLICADA A REDES
Rede de 
Computadores 
e Fundamentos 
de Programação 
Aplicada à Redes
© by Ser Educacional
Todos os direitos reservados. Nenhuma parte desta publicação poderá ser 
reproduzida ou transmitida de qualquer modo ou por qualquer outro meio, 
eletrônico ou mecânico, incluindo fotocópia, gravação ou qualquer outro 
tipo de sistema de armazenamento e transmissão de informação, sem prévia 
autorização, por escrito, do Grupo Ser Educacional.
Imagens e Ícones: ©Shutterstock, ©Freepik, ©Unsplash.
Diretor de EAD: Enzo Moreira.
Gerente de design instrucional: Paulo Kazuo Kato.
Coordenadora de projetos EAD: Jennifer dos Santos Sousa.
Equipe de Designers Instrucionais: Gabriela Falcão; José Carlos Mello; Lara 
Salviano; Leide Rúbia; Márcia Gouveia; Mariana Fernandes; Mônica Oliveira 
e Talita Bruto.
Equipe de Revisores: Camila Taís da Silva; Isis de Paula Oliveira; José Felipe 
Soares; Nomager Fabiolo Nunes.
Equipe de Designers gráficos: Bruna Helena Ferreira; Danielle Almeida; 
Jonas Fragoso; Lucas Amaral, Sabrina Guimarães, Sérgio Ramos e Rafael 
Carvalho.
Ilustrador: João Henrique Martins.
Oliveira , David de; Penedo, Sergio Ricardo Master;
Organizador(a): Barbosa, Aline Ferreira.
Rede de Computadores e Programação Aplicada a Redes:
Recife: Ser Educacional - 2022.
136 p.: pdf
ISBN: ---
1. redes 2. computadores 3. programação.
Grupo Ser Educacional
Rua Treze de Maio, 254 - Santo Amaro
CEP: 50100-160, Recife - PE
PABX: (81) 3413-4611
E-mail: sereducacional@sereducacional.com
Iconografia
Estes ícones irão aparecer ao longo de sua leitura:
ACESSE
Links que 
complementam o 
contéudo.
OBJETIVO
Descrição do conteúdo 
abordado.
IMPORTANTE
Informações importantes 
que merecem atenção.
OBSERVAÇÃO
Nota sobre uma 
informação.
PALAVRAS DO 
PROFESSOR/AUTOR
Nota pessoal e particular 
do autor.
PODCAST
Recomendação de 
podcasts.
REFLITA
Convite a reflexão sobre 
um determinado texto.
RESUMINDO
Um resumo sobre o que 
foi visto no conteúdo.
SAIBA MAIS
Informações extras sobre 
o conteúdo.
SINTETIZANDO
Uma síntese sobre o 
conteúdo estudado.
VOCÊ SABIA?
Informações 
complementares.
ASSISTA
Recomendação de vídeos 
e videoaulas.
ATENÇÃO
Informações importantes 
que merecem maior 
atenção.
CURIOSIDADES
Informações 
interessantes e 
relevantes.
CONTEXTUALIZANDO
Contextualização sobre o 
tema abordado.
DEFINIÇÃO
Definição sobre o tema 
abordado.
DICA
Dicas interessantes sobre 
o tema abordado.
EXEMPLIFICANDO
Exemplos e explicações 
para melhor absorção do 
tema.
EXEMPLO
Exemplos sobre o tema 
abordado.
FIQUE DE OLHO
Informações que 
merecem relevância.
SUMÁRIO
UNIDADE 1
Introdução a redes de computadores � � � � � � � � � � � � � � � � � � � � � � � � � � � 13
Redes locais, metropolitanas e geograficamente distribuídas � � � � � � �16
Redes geograficamente distribuídas � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �18
Topologias de redes de computadores � � � � � � � � � � � � � � � � � � � � � � � � � � � � �21
Topologia física � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � 22
Topologia lógica � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � 25
Princípios de transmissão da informação � � � � � � � � � � � � � � � � � � � � � � �26
Tecnologias básicas de comunicação � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � 27
Tipos de sinal � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � 28
Sinal analógico � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � 28
Sinal digital � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � 29
Modos de transmissão � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � 30
Taxa de transmissão � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � 31
Baud Rate (Taxa Baud) � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � 31
Codecs e modems � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � 32
Modelos de redes � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � 33
TCP/IP � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �33
Modelo OSI � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � 34
UNIDADE 2
Estrutura do modelo osi � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � 39
Camada física � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � 39
Transmissão por meios físicos � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � 40
Transmissão sem fio � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � 43
Camada enlace� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �45
Mecanismos de detecção e controle de erros � � � � � � � � � � � � � � � � � � � � � � 48
Tipos de erros � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � 48
Controle de erros � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � 49
Técnicas de detecção de erros � � � � � � � � � � � � � � � � � � � � � � � 50
Técnicas de correção de erros � � � � � � � � � � � � � � � � � � � � � � � � �51
Camada de redes � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � 52
Redes por circuitos virtuais � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � 55
Redes por Datagrama � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � 56
Arquitetura TCP/IP � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � 57
Endereçamento IP � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � 58
Endereços IPv4 e IPv6 � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � 59
Conceito de NAT � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �61
Camada transporte � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �62
O Protocolo TCP � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � 64
O Protocolo UDP � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � 66
Camada sessão � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �67
Camada apresentação � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �68
Camada aplicação � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �68
Serviços em rede � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � 69
Protocolos da camada de aplicação � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � 69
UNIDADE 3
Caracterização da linguagem de script � � � � � � � � � � � � � � � � � � � � � � � � � �79
O que é o shell � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � 79
Tipos de shell � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � 80
Inicialização do shell � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � 85
Noçõesbásicas sobre arquivos de inicialização do shell de todo o 
sistema � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � 88
Noções básicas sobre arquivos de inicialização do shell específicos do 
usuário � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � 90
Definição do ambiente de aplicabilidade e desenvolvimento � � � 94
Definição de algoritmo � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � 94
Por que utilizar algoritmos � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � 95
Características dos algoritmos e suas formas de representação � � � � 96
Fundamentação da lógica dentro do ambiente de programação 99
Estruturas principais para a construção de algoritmos � � � � � � � � � � � � 100
UNIDADE 4
Desenvolvimento de aplicações � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �105
Descritores de arquivos � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � 105
Operadores em descritores de arquivos � � � � � � � � � � � � � 108
Redirecionamentos � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � 111
Dutos (pipes) � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � 113
Caracteres especiais e curingas � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �114
Controle de processos � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � 117
Substituição da saída padrão � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �118
História de comandos � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � 124
Aplicação básica � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � 127
Desenvolvimento de aplicação básica para automação de tarefas 
cotidianas � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � 127
Roteiro de aplicação � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � 128
Estado da automação � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � 129
Passos do teste � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � 129
Verificação e validação � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � 131
Dados de teste � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � 131
Resultados � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � 132
Pós-operações � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � 132
Apresentação
Olá, aluno(a)!
No universo moderno da tecnologia de comunicação, deparamo-nos 
com o desafio atual da busca pela conectividade com disponibilida-
de constante e qualidade nas taxas de transmissão a custo acessí-
vel para a maioria, em uma infraestrutura dispendiosa que requer 
relativamente alta manutenção. É importante que você, enquanto 
profissional atuante nesta área, esteja constantemente atualizado, 
pois a implementação de novas tecnologias é o caminho para sua 
permanência no disputado mercado de trabalho de Tecnologia da 
Informação. Neste material, abordaremos conhecimentos sobre os 
padrões e tecnologias, princípios de instalação, configuração, ade-
quação e manutenção para cada aplicação. Abordaremos a classifi-
cação das redes quanto à abrangência, tipos, topologias, elementos 
de transmissão. Além disso, o conhecimento do Modelo OSI e suas 
camadas serão detalhados com intuito de esclarecer o funciona-
mento das redes de computadores.
De forma complementar, trataremos, também, os concei-
tos clássicos de programação e os desafios diários do profissional 
de Redes de Computadores, a fim de explorar ao máximo as ferra-
mentas de desenvolvimento de programas em suas tarefas, promo-
vendo, assim, pontos de análise e reflexão sobre as possibilidades 
quando ligadas à programação. 
Contemple esses conteúdos e ótimos estudos!
Autoria
David de Oliveira.
É especialista em redes de computadores pela ESAB, graduado em 
engenharia elétrica pela FESP, em tecnologia em automação indus-
trial pelo IF-SP e em tecnologia em processamento de dados pela 
FATEC-SP. Possui atuação e vivência como docente na área de tec-
nologia da informação por mais de 15 anos, com foco em redes, in-
fraestrutura, segurança da informação e aplicativos, e também na 
área de engenharia, com foco em automação predial, projetos Turn-
Key e desenho assistido por computador, em instituições de educa-
ção de grande porte.
Experiência como profissional em tecnologia da informação por 
mais de 20 anos, com foco em gestão de equipes de implantação e 
manutenção de parque tecnológico. Desenvolvimento e condução 
de projetos do cotidiano corporativo nas áreas de transmissão de 
dados, switching e routing, hardening e implantação, serviços de re-
des, gerenciamento e monitoramento de servidores, virtualização, 
centrais telefônicas e cabeamento estruturado.
Curriculo Lattes
Sergio Ricardo Master Penedo.
É doutor em Engenharia Elétrica pela Escola Politécnica da Univer-
sidade de São Paulo (PO- LI-USP), em 2014, área em que também 
é Mestre pela Universidade Federal de Santa Catarina (UFSC), em 
2000. Graduado pela Universidade Federal do Pará (UFPA), em 1998. 
É docente do Ensino Superior desde 2002, em cursos de Engenharia 
Elétrica, Engenharia Mecânica, Engenharia Mecatrônica, Engenha-
ria de Telecomunicações e Engenharia de Produção, tendo exercido 
também funções de coordenação dos cursos de Engenharias Elétri-
ca, Mecatrônica, Mecânica, Química, de Produção e da Computação.
Atua nas Engenharias Elétrica, de Produção e da Computação, com 
ênfase na pesquisa e orientação de trabalhos em Automação e Con-
trole, Processamento de Sinais, Imagens e Vídeo, Robótica, Inteli-
gência Artificial, Pesquisa Operacional e Inovação Tecnológica.
Curriculo Lattes
Organizadora
Aline Ferreira Barbosa.
é Doutoranda em Engenharia da Computação pela Universidade de 
Pernambuco (2019-2023), Mestre em Engenharia da Computação 
pela Universidade de Pernambuco (2019) e Graduada em Licencia-
tura em Computação pela Universidade de Pernambuco (2014). 
Atuou como Diretora Presidente na empresa TEC Jr (Tecnologia, 
Educação e Consultoria Júnior) - empresa júnior do curso de Licen-
ciatura em Computação vinculada a Universidade de Pernambuco. 
Tem artigos científicos em eventos brasileiros importantes na sua 
área de pesquisa, tais como SBGames, WIE, WEI, SQBS, WER. 
Possui experiência em lecionar diferentes disciplinas na área de 
computação, tais como: Programação, Segurança em Redes de 
Computadores, Engenharia de Requisito, Engenharia de Software e 
Gestão de Projetos de Software.
Curriculo Lattes
UN
ID
AD
E
1
Introdução a redes 
de computadores 
Objetivos
1. Compreender os conceitos fundamentais sobre redes de com-
putadores.
2. Conhecer os princípios de transmissão de informação.
3. Entender os Modelos TCP/IP e Modelo OSI.
12
Introdução
Caro(a) aluno(a), 
Neste material, abordaremos os conceitos básicos relacionados às 
redes de computadores. Inicialmente, discutiremos como as redes 
de computadores são classificadas, como redes locais, metropoli-
tanas e de longa distância. A topologia também será discutida, elas 
representam as várias formas de interconectar os componentes de 
uma rede de comunicação de dados, são elas:
barramento, anel, e estrela, além da combinação de todas 
elas, que entraremos em detalhes no decorrer desta unidade. 
Vamos também ver alguns princípios da transmissão da in-
formação, incluindo detalhes sobre o canal de comunicação que é 
necessário para transportar o sinal de um ponto para outro. O trans-
missor tem duas opções de formas de onda disponíveis para enviar 
informações pela rede: analógicae digital. 
Por fim, entraremos em detalhes sobre o modelo OSI e seu 
conjunto de sete elementos funcionais ou camadas de serviços. E 
claro, não se esqueça que nessa unidade consta assuntos importan-
tes que servirão como base para a sua jornada de aprendizagem na 
área de redes computadores. 
Bons estudos!
13
Introdução a redes de computadores
Durante as primeiras décadas da utilização dos computadores, eles 
estavam restritos a áreas corporativas, governamentais, científi-
cas e militares, criando, assim, sistemas computacionais altamente 
centralizados, o que implicava em existir uma máquina que con-
centrava todos os dados, ou seja, um dispositivo que fornecia todo 
o processamento e todas as informações necessárias. Esse disposi-
tivo era tipicamente um computador de grande porte para época, 
conhecido como Mainframe, do qual o maior fabricante da época era 
a IBM.
Figura 1: Um computador de grande porte do tipo Mainframe.
Fonte: Shutterstock.
Estas poderosas máquinas tinham um poder incrível de pro-
cessamento (para a época) e uma estrutura onde concentrava as 
informações. Os terminais eram chamados de “Terminais Burros”, 
pois não tinham processamento interno. Apesar de sua capacidade 
de processamento, o modelo centralizado acabou perdendo forças 
com a evolução dos PCs (Personal Computers ou Computadores Pes-
soais), pois o custo elevado e características de manutenção acaba-
ram tornando os PCs a solução mais adotada com o passar do tempo. 
14
Com o crescimento da variedade e oferta dos computadores pes-
soais, vem também a necessidade de integrá-los de alguma forma. 
Até certo ponto, essa necessidade de integrar ou interagir uns com 
os outros tinha que ser feita gravando os dados em discos (disquete 
ou fita) e levando até o outro computador.
 Nesse momento, vários fabricantes iniciaram o desenvol-
vimento de redes proprietárias, como a Novell e o IPX, o que difi-
cultava a vida das empresas, pois ficavam presas a um determinado 
padrão ou fabricante, o que gerou a necessidade de padronização e 
o nascimento de modelos de referência como o OSI (Open Systems 
Interconnection ou Interconexão de Sistemas Abertos). As redes 
se tornam populares e praticamente indispensáveis a partir dos 
anos 1990 com o surgimento da internet e a massificação do uso 
do protocolo TCP/IP, atual protocolo de rede utilizado na internet 
e nas redes internas das empresas (Intranet). Em termos físicos, as 
redes iniciam com os cabos coaxiais, depois evoluem para o uso do 
UTP, com as redes Ethernet 10baseT. Os cabos coaxiais foram subs-
tituídos por pares metálicos após algum tempo devido ao custo, es-
paço ocupado (eles são mais espessos), os conectores mais caros, e 
também devido ao fato de que quando o cabo tinha um problema, 
todos os computadores para trás perdiam conexão com a rede.
 Atualmente, a maioria das redes utiliza uma velocidade 
de 100Mbps ou 1Gbps em suas LANs (Local Area Network ou Redes 
Locais) utilizando cabos metálicos UTP (Unshielded Twisted Pair 
ou Pares Trançados não Blindados) e são interligadas por meio de 
equipamentos chamados switches (comutadores) ou eventualmen-
te hubs (atualmente em desuso). Também não podemos esquecer a 
evolução das redes sem fio, chamadas de wireless ou Wi-Fi (Wireless 
Fidelity ou Fidelidade Sem Fio), que nasceram com velocidades de 
11Mbps e, atualmente, tem versões em desenvolvimento que pro-
metem velocidades acima de 400Mbps.
 Em uma rede sem fio, temos um elemento chamado AP 
(Access Point ou Ponto de Acesso) que faz a distribuição do sinal de 
rede para as diversas placas de rede sem fio que estão nos dispositi-
vos dos usuários. Outro meio muito, principalmente para interligar 
os diversos dispositivos de redes, como os switches, é a fibra ótica. 
Apesar do seu custo elevado (tanto de instalação como de manu-
15
tenção), ela é muito utilizada para interligar os diversos switches ou 
servidores de alta capacidade dentro de uma rede de computadores. 
A grande vantagem da fibra ótica é sua imunidade às interferências 
eletromagnéticas e maior largura de banda que o par metálico.
 O uso das redes de computadores em corporações tem o ob-
jetivo de gerar economia de tempo e maior controle dos processos, 
ou seja, tornar a organização mais eficiente. Outro ponto impor-
tante é a necessidade que as corporações possuem de manter infor-
mações em tempo real, tornando a rede não apenas um “artigo de 
luxo”, mas uma necessidade real para seus negócios poderem fluir 
da melhor maneira possível. A maioria das empresas já reconhece 
que, para ter sucesso nos negócios, é preciso compartilhar informa-
ção e manter uma boa comunicação não apenas internamente, mas 
também com todo o ambiente externo (clientes, parceiros, governo 
etc.). Uma empresa que utiliza redes acaba se tornando mais com-
petitiva, uma vez que sua eficiência interna aumenta.
 O uso das redes, em especial da internet, tem proporcio-
nado novas oportunidades para as empresas e novos mercados são 
alcançados, permitindo que a empresa ultrapasse barreiras geográ-
ficas, atuando não apenas em sua região, mas de forma nacional, 
regional ou até global. O avanço das redes permitiu o desenvolvi-
mento de diversas aplicações que atualmente fazem parte do nosso 
cotidiano, tais como:
 • Acessos a bases de dados via internet;
 • Acessos às contas bancárias via Internet Banking;
 • Realização de compras de diversos tipos de produtos e servi-
ços por meio de sites de e-commerce (comércio eletrônico);
 • Ferramentas de comunicação online como as de chat (bate-
-papo),
 • Envio e recebimento de correio eletrônico (e-mail) com fer-
ramentas como o Gmail e muitas outras opções e serviços são 
cada vez mais comuns.
Em um ambiente corporativo, a rede permite acesso a ca-
16
dastros de clientes e fornecedores, banco de dados com os produtos 
disponíveis, diversos controles de processos como estoque, pedidos 
de compra, logística e muito mais. Esses sistemas têm diversos no-
mes padronizados pelas indústrias como ERP (Enterprise Resource 
Planning ou Planejamento de Recursos Empresariais), CRM (Cus-
tomer Relationship Management ou Gestão de Relacionamento com 
o Cliente) e assim por diante. Esses sistemas podem ser utilizados 
para administrar os processos de uma corporação de maneira única 
e muito mais eficiente.
 Além disso, em um ambiente corporativo, existe ainda o 
grande desafio da convergência entre os dados e serviços de multi-
mídia, como voz e imagem, pois, atualmente, essa é a realidade de 
uma rede em uma grande corporação e não mais uma tendência, ou 
seja, ambientes de rede complexos e com cada vez mais dispositi-
vos, diferentes tipos de tráfego e necessidades para serem tratadas 
pelos elementos de rede.
Redes locais, metropolitanas e geograficamente 
distribuídas
O conceito de rede se refere à transmissão de dados digitais entre 
dois ou mais computadores. Este sistema de comunicação é com-
posto por elementos ou dispositivos que têm funções bem especí-
ficas na rede, tais como os switches, que têm a função de dar acesso 
à rede para os computadores, ou os roteadores, que têm a função 
de encaminhar os pacotes IP para os destinos corretos, e assim por 
diante. A conexão física entre os dispositivos de computação em 
rede é estabelecida usando mídia cabo (com fio) ou mídia ar (sem 
fio). A rede de computadores mais conhecida é a internet.
17
Figura 2: Redes de Longa Distância (WAN) integrando Redes Locais (LAN).
Fonte: Shutterstock.
 Toda essa troca de informação é realizada por meio de pro-
tocolos. Na ciência da computação ou informática, um protocolo é 
uma convenção ou padrão que controla e possibilita uma conexão, 
comunicação, transferência de dados entre dois sistemas computa-
cionais. De maneira simples, um protocolo pode ser definido como 
“as regras que governam” a sintaxe, semântica e sincronização da 
comunicação, ou seja, que controlam essa “conversa” entre os dis-
positivos. Os protocolos podem ser implementados pelo hardware, 
software oupor uma combinação dos dois.
18
É bem simples de visualizar a importância dos protocolos de co-
municação em rede. Imagine uma reunião em que diversas pessoas 
estão sentadas ao redor da mesa querendo expor seus problemas e 
pontos de vista. Se não houver uma regra ou protocolo, fica impos-
sível haver a comunicação. Afinal, se todos falarem ao mesmo tem-
po, ninguém irá se entender. A função dos protocolos de rede é bem 
semelhante, porém muito mais complexa e com uma variedade de 
padrões. 
Falando em termos simples, uma rede precisa dos seguintes 
protocolos:
 • Os que regulam o acesso aos meios físicos, como Ethernet com 
CSMA/CD, PPP, Frame-relay etc.;
 • Os que regulam o envio pela rede e o endereçamento lógico da 
rede, como o protocolo IP;
 • Os que regulam o envio das informações dentro dos computa-
dores e as separam em diversas comunicações, como os pro-
tocolos TCP e UDP;
 • Os que fornecem os serviços de rede aos usuários, como os 
protocolos HTTP, FTP, Telnet, DHCP, DNS etc.
Redes geograficamente distribuídas
Uma maneira de categorizar os diferentes tipos de projetos de redes 
de computadores é pelo seu escopo ou escala. Por razões históri-
cas, a indústria de redes refere-se a quase todo tipo de projeto como 
uma espécie de rede de área. A classificação quanto à abrangência 
geográfica é a mais comum e a que utilizamos em nosso dia a dia. 
Exemplos comuns de tipos de redes de área são: 
EXEMPLIFICANDO
19
 LAN (Local Area Network ou Rede Local): são redes que for-
necem recursos a um grupo de computadores muito próximos uns 
dos outros, como em um prédio de escritórios, escola ou casa. Ge-
ralmente, as LANs são criadas para permitir o compartilhamento de 
recursos e serviços, como arquivos, impressoras, jogos, aplicativos, 
e-mail ou acesso à internet. Ela é uma rede restrita a áreas físicas 
menores, um escritório local, escola ou casa. Aproximadamente to-
das as LANs atuais, com ou sem fio, são baseadas em Ethernet. Em 
uma rede local, as velocidades de transferência de dados são maio-
res do que as da WAN e da MAN, que podem se estender a 10 Mbps 
(Ethernet) e 1,0 Gbps (Gigabit Ethernet).
Figura 3: Exemplo de Rede Local (LAN).
Fonte: Shutterstock.
 WLAN (Wireless Local Area Network ou Rede Local sem fio): 
são redes LAN que funcionam usando tecnologia sem fio, também 
conhecida como Wi-Fi. Esse tipo de rede está se tornando mais po-
pular à medida que a tecnologia sem fio é desenvolvida e é usada 
mais em casa e por pequenas empresas. Isso significa que os dispo-
sitivos não precisam depender tanto de cabos e fios físicos e podem 
organizar seus espaços com mais eficiência. Uma WLAN opera um 
ou mais pontos de acesso sem fio aos quais os dispositivos dentro do 
alcance do sinal se conectam.
20
Figura 4: Exemplo de Rede Local sem Fio (WLAN).
Fonte: Shutterstock.
WAN (Wide Area Network ou Rede de Longa Distância): são 
redes consideradas de longa distância, geralmente implantadas por 
empresas de telecomunicações privadas. Elas têm como caracterís-
tica serem distribuídas geograficamente e interconectar várias re-
des locais (LANs). Em uma empresa, uma WAN pode consistir em 
conexões com a sede da empresa, filiais, site-site, serviços em nu-
vem e outras instalações. Normalmente, um roteador ou outro dis-
positivo multifuncional é usado para conectar uma LAN a uma WAN. 
As WANs corporativas permitem que os usuários compartilhem o 
acesso a aplicativos, serviços e outros recursos localizados central-
mente. Isso elimina a necessidade de instalar o mesmo servidor de 
aplicativos, firewall ou outro recurso em vários locais, por exemplo.
 MAN (Metropolitan Area Network ou Rede Metropolitana): 
são redes que conectam dois ou mais computadores, comunicando 
dispositivos ou redes em uma única rede que possui área geográfica 
maior do que a coberta por uma rede local (LAN), mas menor que a 
região coberta por uma rede de longa distância (WAN). Na maioria 
das vezes, as MANs são construídas para cidades ou vilarejos para 
21
fornecer uma alta conexão de dados e geralmente pertencentes a 
uma única grande organização.
 SAN (Storage Area Network ou Rede de Armazenamento, 
Rede de Sistema, Rede de Servidores ou, às vezes, Rede Área Pe-
quena): são redes de armazenamento que compartilham uma base 
de dados comuns em um determinado ambiente, normalmente um 
Data Center. 
 As SANs são mais comuns nos armazenamentos de grande 
porte (storage). O Data Center é um ambiente projetado para abrigar 
servidores e outros componentes como sistemas de armazenamen-
to de dados e ativos de rede (switches, roteadores). Utilizam tecno-
logias como o Fiber Channel (canal de fibra).
 PAN (Personal Area Network ou Rede Pessoal ou Privativa): 
são redes para uso pessoal. As redes PAN geralmente são sem fio, 
instaladas sob demanda (ad-hoc) quando são necessárias para se 
comunicar entre dois ou mais dispositivos. As redes PAN podem ser 
usadas entre dispositivos pertencentes a duas partes diferentes ou 
entre dois dispositivos pertencentes a uma pessoa, como um laptop 
ou telefone celular. Essas redes geralmente são caracterizadas como 
de curto alcance, geralmente limitadas a 10 metros ou menos de al-
cance. Um exemplo de uma tecnologia PAN é a rede sem fio blue-
tooth. 
Topologias de redes de computadores
As redes de computadores permitem que os usuários utilizem sua 
estrutura de forma que possam compartilhar informações com um 
melhor desempenho. É com a topologia de redes que podemos des-
crever como estes computadores estão ligados em rede e interli-
gados entre si, tanto do ponto de vista lógico como físico. Existem 
duas maneiras de definir a geometria da rede: a topologia física e a 
topologia lógica.
22
Topologia física
Descreve o posicionamento dos nós da rede e as conexões físicas 
entre eles. Isso inclui o arranjo e a localização dos nós da rede e a 
maneira como eles estão conectados. Veja a seguir os tipos de topo-
logias físicas:
 • Barramento: cada estação de trabalho é conectada a um cabo 
principal chamado barramento. Portanto, na verdade, cada 
estação é conectada diretamente a todas as outras estações de 
trabalho na rede.
Figura 5: Barramento
Fonte: Shutterstock.
 • Estrela: existe um concentrador central (hub, switch, rotea-
dor, computador etc.) em que todas as estações de trabalho 
são conectadas. Cada estação de trabalho é independente, mas 
com diversos concentradores elas acabam todas indiretamen-
te conectadas.
23
Figura 6: Estrela
Fonte: Shutterstock.
 • Anel: as estações de trabalho são conectadas em uma confi-
guração de circuito fechado. Pares adjacentes de estações de 
trabalho são conectados diretamente. Outros pares de esta-
ções de trabalho estão indiretamente conectados, os dados 
passando por um ou mais nós intermediários.
Figura 7: Anel
Fonte: Shutterstock.
24
 • Malha: emprega um dos dois esquemas, chamados de malha 
completa e malha parcial. Na topologia de malha completa, 
cada estação de trabalho é conectada diretamente a cada uma 
das outras. Na topologia de malha parcial, algumas estações 
de trabalho são conectadas a todas as outras e algumas são 
conectadas apenas àqueles outros nós com os quais trocam a 
maior parte dos dados.
Figura 8: Malha
Fonte: Shutterstock.
 • Árvore: usa duas ou mais redes em estrela conectadas juntas. 
Os computadores centrais das redes estelares estão conecta-
dos a um barramento principal. Assim, uma rede de árvores é 
uma rede de barramento de redes estelares.
25
Figura 9: árvore
Fonte: Shutterstock. 
Topologia lógica
Refere-se à natureza dos caminhos que os sinais seguem de nó para 
nó; uma rede lógica é governada por protocolos usados pelos da-
dos que se movem sobre ela. Em muitos casos, a topologia lógica é 
igual à topologia física, mas nem sempre é esse o caso. Por exem-
plo, algumas redes são fisicamente dispostas em uma configuração 
em estrela, mas operam logicamente como redes de barramento ou 
anel.
“Um protocolo define o formato e a ordem das mensagens troca-das entre duas ou mais entidades comunicantes, bem como as ações 
realizadas na transmissão e/ou no recebimento de uma mensagem 
ou outro evento” (KUROSE; ROSS, 2010, p. 7). 
DEFINIÇÃO
26
Princípios de transmissão da informação 
A comunicação de dados é o movimento da informação do compu-
tador de um ponto para outro por meio de sistemas de transmis-
são elétrica ou óptica. Tais sistemas são frequentemente chama-
dos de redes de comunicação de dados. Isso contrasta com o termo 
mais amplo de telecomunicações, que inclui a transmissão de voz 
e imagem (fotos e vídeos), bem como dados, e geralmente implica 
distâncias maiores.
 Em geral, as redes de comunicação coletam dados de com-
putadores e outros dispositivos e transmitem essas informações 
para um servidor central, que é um computador, microcomputador 
ou mainframe mais potente, ou executam o processo inverso ou 
ainda uma combinação dos dois.
 As redes de comunicação de dados facilitam o uso mais 
eficiente de computadores e melhoram o controle diário de uma 
empresa, fornecendo um fluxo de informações mais rápido. Eles 
também fornecem serviços de transferência de mensagens para 
permitir que usuários de computador conversem entre si via e-mail, 
bate-papo e streaming de vídeo.
 Um canal de comunicação é necessário para transportar o 
sinal de um ponto para outro. Tradicionalmente, o canal é forneci-
do por pares de fios de cobre, por meio de micro-ondas terrestres, 
micro-ondas por satélite, cabo de fibra óptica e sinais de rádio. Es-
ses meios diferem em termos de largura de banda, que é a faixa de 
frequências que podem transmitir. Quanto maior a largura de banda 
de um meio, maior a quantidade de informação que ele pode carre-
gar.
 Guias de onda são tubos ocos projetados para confinar e 
guiar as ondas de rádio entre dois locais. O transmissor tem duas 
opções de formas de onda disponíveis para enviar informações pela 
rede: analógica e digital, que serão detalhadas nos próximos tópi-
cos. 
27
 O conhecimento científico de eletricidade e magnetismo 
que é necessário para permitir as telecomunicações começou com 
as investigações de Michael Faraday, muitas vezes considerado o 
maior experimentalista de sua época. Faraday não era habilidoso em 
matemática, mas seu amigo James Clerk Maxwell era.
 Foi Maxwell quem unificou as descobertas discrepantes so-
bre as propriedades da eletricidade, do magnetismo e suas inter-re-
lações íntimas, consagrando-as nas quatro belas equações vetoriais 
conhecidas como as equações de Maxwell, do eletromagnetismo.
 Além disso, Maxwell representou matematicamente o con-
ceito intuitivo de Faraday dos campos elétricos e magnéticos. To-
das as teorias físicas modernas são teorias de campo e desfrutam da 
vantagem atraente de banir os conceitos de “ação à distância” da 
ciência.
 A partir da matemática das equações de Maxwell, ele con-
seguiu calcular explicitamente a velocidade da luz a partir da medi-
ção de duas constantes elétricas e demonstrar que os efeitos eletro-
magnéticos viajam pelo espaço à velocidade da luz. Em sua análise, 
Maxwell introduziu o famoso conceito da corrente de deslocamento 
mostrando que sem ele as outras equações seriam inconsistentes 
com a conservação da carga elétrica.
 John Henry Poynting mostrou que, onde quer que campos 
elétricos e magnéticos estejam presentes, há um fluxo de energia 
naquele ponto. É essa energia que permite a transmissão de mensa-
gens pelo espaço. 
Tecnologias básicas de comunicação
A tecnologia de telecomunicação envolve a transferência de sinais 
de informação por meio de fios, fibra ou pelo ar por meio de sinais 
SAIBA MAIS
28
elétricos ou ópticos. Os sinais de comunicação são geralmente ca-
racterizados por sua intensidade (tensão e corrente) e frequência 
(ciclos por segundo).
 Para permitir que informações sejam transferidas usando 
sinais de comunicação, uma fonte de informação (dados, voz ou 
imagem) é representada pelo sinal em si (chamado de sinal de ban-
da base) ou a informação muda ligeiramente a forma de onda do 
sinal de comunicação (chamado sinal de banda larga). A informação 
é imposta ao sinal de transporte (chamado de portadora), variando 
o nível do sinal ou mudanças de tempo (mudança de frequência).
Tipos de sinal
Existem dois tipos básicos de sinais: analógico e digital. Muitos sis-
temas de comunicação recebem sinais analógicos (por exemplo, si-
nais de áudio), convertem para um formato digital, transportam os 
sinais digitais por meio de uma rede e reconvertem os sinais digitais 
de volta à sua forma analógica quando chegam ao seu destino.
Sinal analógico
É uma onda contínua denotada por uma onda senoidal e pode 
variar em intensidade do sinal (amplitude) ou frequência (tempo). 
O valor de amplitude da onda senoidal pode ser visto como os pon-
tos mais alto e mais baixo da onda, enquanto o valor da frequência 
(tempo) é medido no comprimento físico da onda senoidal da es-
querda para a direita. 
Existem muitos exemplos de sinais analógicos a nossa volta. O som 
de uma voz humana é analógico, porque as ondas sonoras são con-
tínuas, assim como nossa própria visão, porque vemos várias for-
mas e cores de maneira contínua devido às ondas de luz. Mesmo um 
EXEMPLO
29
típico relógio de cozinha, com seus ponteiros se movendo continua-
mente, pode ser representado como um sinal analógico.
Sinal digital
Tem um número limitado de estados discretos, geralmente dois, 
em contraste com sinais analógicos, que variam continuamente e 
têm um número infinito de estados. Os sinais digitais transferem 
níveis discretos de sinal em intervalos de tempo predeterminados. 
Os sinais digitais normalmente possuem dois níveis: on (logic 1) e 
off (logic 0). A informação contida em um único período de tempo é 
chamada de um pulso. O número de bits transferidos em um segun-
do é chamado de taxa de transferência de dados ou bits por segundo 
(bps). Como muitos bits são tipicamente transferidos em um segun-
do, a taxa de dados é normalmente precedida por um multiplicador 
k (mil) ou M (milhões). Por exemplo, se a taxa de transferência de 
dados for de 3 milhões de bits por segundo, 3 Mbps indicariam isso. 
Normalmente, os bits são combinados em grupos de 8 bits para for-
mar um byte. Quando a referência é feita para bytes em vez de bits, 
o b é capitalizado.
A forma mais antiga de comunicação por rádio digital era o códi-
go Morse. Para enviar o código Morse, o transmissor de rádio era 
simplesmente ligado e desligado para formar pontos e traços. O re-
ceptor detectaria a portadora de rádio para reproduzir os pontos e 
traços. Um livro de códigos de pontos e traços foi usado para deco-
dificar a mensagem em símbolos ou letras. Os pulsos ou bits ligados 
e desligados que compõem um sinal digital moderno são enviados 
de maneira semelhante.
CURIOSIDADE
30
A tendência nos sistemas de comunicação, assim como em 
outros tipos de produtos eletrônicos, como discos compactos, é 
mudar de sistemas analógicos para sistemas digitais. Os sistemas 
digitais têm uma série de vantagens importantes, incluindo o fato 
de que os sinais digitais são mais imunes ao ruído. Ao contrário dos 
sistemas analógicos, mesmo quando o ruído foi introduzido, quais-
quer erros resultantes no fluxo de bits digital podem ser detecta-
dos e corrigidos. Além disso, os sinais digitais podem ser facilmente 
manipulados ou processados de maneiras úteis, usando técnicas 
modernas de computação.
Modos de transmissão
A transmissão de dados entre duas máquinas pode ser realizada de 
diferentes maneiras, tais como: o sentido das trocas, como as trocas 
são realizadas, o modo de transmissão, o número de bits enviados 
simultaneamente e a sincronização entre o emissor e o receptor. Es-
pecificamente neste tópico, vamos estudar os três modos de trans-
missão de dados: ligação simplex, half-duplex e full-duplex.
Simplex
 Envia apenas informações em uma direção. Por exemplo, 
uma estação de rádio geralmente envia sinais para o público, mas 
nunca recebe sinaisdeles, portanto, uma estação de rádio é um ca-
nal simplex. Também é comum usar o canal simplex na comunica-
ção por fibra ótica. Um fio é usado para transmitir sinais e o outro 
é para receber sinais. Mas isso pode não ser óbvio porque o par de 
fios de fibra é frequentemente combinado a um cabo. A boa parte 
do modo simplex é que toda a sua largura de banda pode ser usada 
durante a transmissão.
 Half-duplex
 Os dados podem ser transmitidos em ambas as direções em 
um portador de sinal, não ao mesmo tempo. Em certo ponto, é na 
verdade um canal simplex cuja direção de transmissão pode ser tro-
cada. Walkie-talkie é um dispositivo half-duplex típico. Ele tem um 
botão “push-to-talk” (apertar para falar) que pode ser usado para 
ligar o transmissor, mas desliga o receptor. Portanto, uma vez que 
31
você apertar o botão, você não poderá ouvir a pessoa com quem está 
falando, mas seu parceiro poderá ouvi-lo.
 Full-duplex
É capaz de transmitir dados em ambas as direções em uma 
portadora de sinal ao mesmo tempo. Ele é construído como um par 
de links simplex que permite a transmissão simultânea bidirecio-
nal. Por exemplo, as pessoas nas duas extremidades de uma chama-
da podem falar e ser ouvidas umas pelas outras ao mesmo tempo, 
porque há dois caminhos de comunicação entre elas. Assim, usar o 
modo full duplex pode aumentar muito a eficiência da comunicação. 
Taxa de transmissão
A taxa de transmissão é a velocidade na qual os dados são transmi-
tidos por um canal. Foi nomeado posteriormente de Código Baudot 
em homenagem ao cientista francês Jean Maurice Émile Baudot, 
que inventou um dos primeiros códigos de transmissão de dados. 
Em baixas velocidades, um baud é equivalente a um bit por segundo, 
portanto, um canal de 1200 bauds transmitirá dados a uma taxa de 
1200 bps.
 Quando a taxa de transmissão de uma linha é definida para 
DCE, o termo baud é frequentemente usado. Se usado corretamente, 
baud indica o número de mudanças de sinal de linha por segundo, 
portanto, se cada sinal transmitido for um ou zero, então a taxa de 
transmissão e a taxa de transmissão real são os mesmos. No entan-
to, há muitos casos em que o sinal de linha pode assumir mais de 
dois estados e, como tal, cada sinal pode ser usado por mais de um 
bit.
Baud Rate (Taxa Baud)
É a medida das unidades de sinal necessárias para transmitir os da-
dos. O ideal é criar um sistema eficiente usando o menor número de 
sinais possível. Quanto menos sinais houver, menor será a largura 
de banda necessária para mover os dados. A taxa de transmissão de-
32
termina a quantidade de largura de banda necessária nos enlaces de 
comunicação. A taxa de transmissão de dados ou bit (DTR) é medida 
em bits por segundo (bps). A taxa de transmissão de dados indica 
quanto tempo levará para transmitir os dados; em termos do usuá-
rio e do computador, essa é a informação mais importante, porque o 
DTR é usado para comparar velocidades e desempenho. Baud sem-
pre será menor ou igual ao DTR.
Codecs e modems
O fato é que hoje não temos redes totalmente digitais ou totalmente 
analógicas: temos uma mistura dos dois. Portanto, em vários pontos 
de uma rede, é necessário converter entre os dois tipos de sinal. Os 
dispositivos que lidam com essas conversões são codecs e modems.
 Um codec (que é uma contração do codificador-descodifi-
cador) converte sinais analógicos em sinais digitais. Existem dife-
rentes codecs para diferentes finalidades. Para a PSTN (Public Swit-
ched Telephone Network ou Rede Pública de Telefonia Comutada), 
por exemplo, existem codecs que minimizam o número de bits por 
segundo necessário para transportar voz digitalmente por meio da 
PSTN. Nas redes celulares, por causa das restrições e do espectro 
disponível, um codec precisa comprimir ainda mais a voz para obter 
o uso mais eficiente do espectro. Os codecs aplicados à comunicação 
de vídeo também exigem técnicas de compressão muito específicas 
para poder mover os sinais de alta largura de banda sobre o que pode 
ser um pouco limitado nos canais atuais.
 Um modem é um dispositivo de rede que modula e desmo-
dula sinais analógicos da portadora (chamados ondas senoidais) 
para codificar e descodificar informações digitais para processa-
mento. Os modems realizam essas duas tarefas simultaneamente e, 
por esse motivo, o termo modem é uma combinação de “modular” 
e “desmodular”. Existem também modems projetados para funcio-
nar especificamente com recursos digitais (por exemplo, modems 
ISDN, modems ADSL). Um modem manipula as variáveis da onda 
eletromagnética para diferenciar entre uns e zeros. 
33
Embora seja possível converter entre redes analógicas e digitais, em 
geral, as conversões são um elo fraco em uma rede. Uma conversão 
é um ponto no qual problemas de rede podem ocorrer, uma oportu-
nidade para erros e distorções serem introduzidas. Portanto, ideal-
mente, queremos avançar em direção a um ambiente óptico de pon-
ta a ponta e digital de ponta a ponta. Isso significa que em nenhum 
lugar entre o transmissor e o receptor é necessário fazer conversões 
de sinais. 
Modelos de redes 
Os modelos tentam explicar o funcionamento da rede, dividindo-
-a em camadas. Não é necessário segui-lo à risca pelos protocolos 
de redes, mas ajuda na compreensão de vários aspectos teóricos de 
como é o funcionamento da rede.
TCP/IP
São dois dos padrões de rede que tornam a internet possível. O Pro-
tocolo IP (Internet Protocol ou Protocolo Internet) define como os 
computadores podem obter dados entre si por meio de um conjun-
to interconectado de redes. O Protocolo TCP (Transmission Control 
Protocol ou Protocolo de Controle de Transmissão) define como os 
aplicativos podem criar canais confiáveis de comunicação em uma 
rede IP. O IP basicamente define endereçamento e roteamento, en-
quanto o TCP define como ter uma conversa por meio de um enlace 
mediado por IP sem perder os dados. 
IMPORTANTE
34
O TCP/IP surgiu da pesquisa de redes do Departamento de Defesa 
dos EUA. 
Modelo OSI
O OSI (Open System Interconnection ou Interconexão de Sistemas 
Abertos) descreve como os diferentes componentes de software e 
hardware envolvidos em uma comunicação de rede devem dividir 
seu trabalho e interagir de outra forma. Foi criado pela ISO (Interna-
tional Organization for Standardization ou Organização Internacional 
de Normalização) para incentivar os fornecedores e desenvolve-
dores de redes a criar sistemas interoperáveis e intercambiáveis. É 
definido no padrão ISO/IEC 7498-1. O modelo OSI define uma rede 
como um conjunto de sete elementos funcionais ou camadas de 
serviço. Essas camadas variam de interconexão física de nós (por 
exemplo, via interface de rede ou interface de rádio bluetooth) na 
camada 1, também conhecida como camada física, até a camada 7, 
chamada de camada de aplicação. Idealmente, um componente em 
qualquer camada fornece serviços à camada acima dela, consome 
serviços da camada abaixo dela e nunca alcança diretamente ne-
nhuma outra camada ou fornece funções que pertencem a elas.
CURIOSIDADE
35
Figura 11: Modelo OSI x TCP/IP.
Fonte: Editorial Digital Pages (2019)
Caro(a) aluno(a),
Neste material, abordamos os conceitos básicos sobre as redes de 
computadores, incluindo os tipos de redes mais utilizados e como 
eles são apresentados geograficamente, em redes locais, metropo-
litanas e de longa distância. Estudamos os tipos de topologia mais 
utilizados, como barramento, anel e estrela, além da combinação 
de todas elas, no que definimos hoje como nossa infraestrutura de 
rede.
Vimos, também, os princípios de transmissão utilizados nas redes 
de computares, assim como as tecnologias básicas, como a rede ca-
beada e a não cabeada, ou wireless, como é mais conhecida. Exem-
plificamos os tipos de sinal, separando-os em digitais e analógicos, 
SINTETIZANDO
36
e a taxa de transmissão. Apresentamos, além disso, o conceito de 
codificadores e decodificadores de modem e de moduladores. 
Por fim, falamos um pouco sobre o modelo OSI,padrão de norma, 
que é a base para toda documentação que envolve rede. Tratamos do 
modelo TCP/IP, padrão de fato, que é base para toda implementação 
que envolve rede, e sua relação direta com o modelo OSI nas redes e 
na internet hoje em dia. 
Espero que tenha aprendido bastante! Até a próxima!
UN
ID
AD
E
2
Modelo OSI 
Objetivos
1. Entender os modelos TCP/IP e modelo OSI.
2. Conhecer os princípios das camadas do modelo OSI.
3. Conhecer os principais protocolos das camadas do modelo 
OSI.
38
Introdução
Olá, aluno(a)!
Convidamos você a nos acompanhar e a aprofundar os conhecimen-
tos sobre o modelo OSI. Esse modelo ajuda na compreensão de como 
as redes de computadores devem se comportar. Sendo assim, neste 
material, demonstraremos quais camadas compõem o modelo OSI e 
quais as suas respectivas funções.
 Iniciaremos com a camada física, que representa a trans-
missão de bits, assim como o estabelecimento de conexões físicas. 
Seguiremos para a camada enlace, caracterizada por transformar 
os bits em quadros (frames), buscando fornecer um meio de trans-
missão confiável entre dois sistemas adjacentes. Então, veremos a 
camada rede, que é responsável pelo roteamento e controle de con-
gestionamento dos dados transmitidos em rede.
 Seguindo os estudos, detalharemos a camada transporte, 
que tem como uma das suas funções a detecção e correção de er-
ros fim a fim. Conheceremos, também, a camada de sessão, que fica 
responsável por gerenciar uma sessão incluindo a sua abertura e o 
seu encerramento. A penúltima camada, denominada de apresen-
tação, representa a interface responsável por exibir as informações 
recebidas pelo usuário.
 Por fim, veremos que a camada aplicação representa a ca-
mada mais próxima do usuário, na qual são executados a maioria 
dos softwares e são utilizados a maioria dos serviços.
Contemple esses conteúdos e ótimos estudos!
39
Estrutura do modelo osi
O modelo OSI tem como objetivo criar uma estrutura para definições 
de padrões para interoperabilidade de sistemas e a conectividade de 
sistemas diferentes, ou seja, para que diferentes fabricantes possam 
montar protocolos que sejam interoperáveis. Esse modelo define 
um conjunto de sete camadas e os serviços atribuídos a cada uma; 
porém, é importante destacar que o modelo OSI é uma referência, 
e não uma implementação. Nos próximos tópicos, vamos explorar 
cada uma das sete camadas deste modelo.
Camada física
A camada física se destina a consolidar os requisitos de hardware 
de uma rede para permitir a transmissão bem-sucedida de dados. 
Os engenheiros de rede podem definir diferentes mecanismos de 
transmissão de bits para o nível da camada física, incluindo formas 
e tipos de conectores, cabos e frequências para cada meio físico. Ela 
às vezes desempenha um papel importante no compartilhamento 
efetivo dos recursos de comunicação disponíveis e ajuda a evitar 
a contenção entre vários usuários. Ela também lida com a taxa de 
transmissão para melhorar o fluxo de dados entre um remetente e 
um receptor. A camada física fornece os seguintes serviços:
 • Modula o processo de conversão de um sinal de uma forma 
para outra, para que possa ser transmitido fisicamente por 
meio de um canal de comunicação.
 • Entrega bit a bit.
 • Codificação de linha, que permite que os dados sejam envia-
dos por dispositivos de hardware otimizados para comuni-
cações digitais que podem ter um tempo discreto no link de 
transmissão.
 • Sincronização de bits para comunicações seriais síncronas.
 • Sinalização de partida, parada e controle de fluxo em comuni-
40
cação serial assíncrona.
 • Comutação de circuitos e controle de hardware de multiple-
xação de sinais digitais multiplexados.
 • Detecção de colisão, em que a camada física detecta a dispo-
nibilidade da operadora e evita os problemas de congestiona-
mento causados por pacotes não entregues.
 • Equalização de sinal para garantir conexões confiáveis e faci-
litar a multiplexação.
 • Encaminhar correção de erro/codificação de canal, como có-
digo de correção de erro.
 • Intercalação de bits para melhorar a correção de erros.
 • Autonegociação.
 • Controle do modo de transmissão.
Exemplos de protocolos que usam camadas físicas incluem:
 • xDSL (Digital Subscriber Line ou Linha Digital de Assinante).
 • ISDN (Integrated Service Digital Network ou Rede Digital de 
Serviços Integrados).
 • IrDA (Infrared Data Association ou Associação de Dados Infra-
vermelhos).
 • USB (Universal Serial Bus ou Barramento Serial Universal).
 • Bluetooth.
 • Ethernet.
Transmissão por meios físicos
Os meios, ou mídias, pelos quais os dados são transportados de um 
lugar para outro são chamados de meios de transmissão ou de co-
municação. A mídia é a ligação física por meio da qual os sinais são 
41
confinados da origem até o destino. Ela é formada por um condu-
tor interno (geralmente cobre), revestido por um material externo 
(capa). A mídia é ótima para redes porque oferece alta velocidade, 
boa segurança e boas taxas de transmissão. No entanto, alguns tipos 
não podem ser usados em comunicações de grandes distâncias, por 
limitação construtiva própria. Três tipos comuns de mídia são usa-
dos na transmissão de dados:
Cabo coaxial: é uma mídia de comunicação muito comum e 
amplamente utilizada. Por exemplo, o sinal de televisão a cabo é ge-
ralmente coaxial. Ele recebe esse nome porque contém dois condu-
tores paralelos entre si. O condutor central é geralmente de cobre, 
podendo ser um fio sólido ou um cabo trançado marcial. Fora des-
te condutor central há um material não condutor, normalmente de 
plástico branco, chamado de dielétrico, usado para separar o con-
dutor interno do condutor externo, como ilustra a figura 1. O outro 
condutor é uma malha fina feita de cobre. Ele é usado para ajudar a 
proteger o cabo da EMI (Electromagnetic Interference ou Interfe-
rência Eletromagnética). Fora da malha de cobre é a capa protetora 
final. Os dados reais viajam pelo condutor central. A interferência 
EMI é capturada pela malha externa de cobre, que é devidamente 
aterrada.
Figura 1 - Cabo coaxial
Fonte: Shutterstock.
42
Cabo par trançado: o cabeamento de rede mais popular é o 
par trançado. Isto se deve por ele ser leve, fácil de instalar, apresen-
tar baixo custo e suportar muitos tipos diferentes de rede. Também 
suporta velocidades de até 40 Gbps. O cabeamento de par trançado 
é feito de pares de cobre de fio sólido (rígido) ou de cabo trançado 
(flexível), um ao lado do outro. As tranças são feitas para reduzir a 
vulnerabilidade da EMI e da paradiafonia (CrossTalk ou “Linha Cru-
zada”). O número de pares no cabo depende da aplicação. O núcleo 
de cobre é geralmente 22 AWG a 26 AWG, conforme medido no pa-
drão americano de bitola de fio. Os tipos de cabos de pares trançados 
são:
Figura 2 – Exemplo de cabo par trançado sem blindagem (a) e com blindagem (b)
Fonte: Shutterstock.
Fibra óptica: o cabo de fibra óptica não usa sinais elétricos 
para transmitir dados, mas, sim, sinais luminosos. Nele, a luz se 
move apenas em uma direção. Para comunicação bidirecional, uma 
segunda conexão deve ser feita entre os dois dispositivos. Temos 
43
duas partes no cabo: a casca (cladding) e o núcleo (core). Um feixe 
de laser gerado por um dispositivo é enviado no formato de pulso 
de luz por meio deste cabo para outro dispositivo. Esses pulsos são 
traduzidos em 1 (um) e 0 (zero) no outro extremo. No centro do cabo 
de fibra há o núcleo de vidro envelopado em uma casca de vidro de 
densidade diferente. A luz do laser se move por este vidro para o ou-
tro dispositivo, refletindo nesta casca (cladding). Nenhuma luz es-
capa do núcleo de vidro devido a este revestimento reflexivo. O cabo 
de fibra óptica possui largura de banda maior que 2Gbps.
Figura 3 - Fibra óptica
Fonte: Freepik. 
Transmissão sem fio
A comunicação sem fio desempenha um papel significativo no dia a 
dia. Além da comunicação, a tecnologia se tornou parte integrante 
de nossas atividades diárias.Ela é referida como comunicação sem 
fio, isto é, fornece uma troca de dados sem qualquer condutor por 
meio de sinais de ondas eletromagnéticas. A informação é transmi-
tida por meio dos dispositivos ao longo de alguns metros ou a cen-
tenas de quilômetros por meio de canais bem definidos; diferentes 
tipos de sinais são listados na comunicação entre os dispositivos 
para transmissão de dados sem fio.
44
 A tecnologia de comunicação sem fio é categorizada em di-
ferentes tipos, dependendo da distância da comunicação, do inter-
valo de dados e do tipo de dispositivos usados. A seguir estão alguns 
dos diferentes tipos de tecnologias de comunicação sem fio:
 Rádio: a comunicação por rádio foi uma das primeiras tec-
nologias sem fio desenvolvidas e ainda em uso. Os rádios multica-
nais portáteis permitem que o usuário se comunique a curtas dis-
tâncias em terra com outros usuários por meio de uma banda cidadã 
(pública). Da mesma forma, os rádios marítimos e aeronáuticos se 
comunicam a longas distâncias no mar e no ar, com embarcações 
e aeronaves, usando uma banda restrita (militar). A transmissão 
acontece com o envio de dados da antena do transmissor na forma 
de sinais de rádio para a antena do receptor. Outra forma de comu-
nicação bastante difundida é a transmissão de estações de progra-
mação comuns de rádio. A transmissão acontece em simultâneo por 
diversas emissoras em frequências distintas, de forma que o recep-
tor é passivo e apenas recebe a informação, sem retransmiti-la. Ela 
pode ocorrer por modulação de amplitude das ondas, AM (Amplitude 
Modulation) ou por modulação de frequência das ondas, FM (Fre-
quency Modulation), em longas distâncias.
 Celular: uma rede celular usa enlaces de rádio criptografa-
dos, modulados para permitir que muitos usuários se comuniquem 
por meio da única banda de frequência. Como os aparelhos indivi-
duais não possuem um poder de transmissão significativo, o siste-
ma depende de uma rede de torres de celular capazes de triangular 
a fonte de qualquer sinal e transferir as funções de recepção para a 
antena mais adequada. A transmissão de dados por meio de redes 
celulares é possível com sistemas 4G modernos capazes de atingir 
velocidades de DSL com fio. As empresas de telefonia celular co-
bram de seus clientes por minuto de voz ou kilobytes de dados.
 Satélite: a comunicação por satélite é uma tecnologia sem 
fio que possui importância significativa em todo o mundo. Eles en-
contraram uso generalizado em situações especializadas. A tecno-
logia de satélite é utilizada em dispositivos para se comunicar dire-
tamente com o satélite em órbita por meio de sinais de rádio. Isso 
permite que os usuários permaneçam conectados virtualmente de 
qualquer lugar da Terra. Os telefones e modems por satélite portáteis 
45
têm um recurso de transmissão e hardware de recepção mais pode-
rosos do que os dispositivos celulares devido ao aumento do alcance. 
A comunicação por satélite consiste em um segmento espacial e um 
segmento terrestre. Quando o sinal é enviado para o satélite por um 
dispositivo, o satélite amplifica o sinal e o envia de volta para a an-
tena do receptor, que está localizada na superfície da Terra. O seg-
mento terrestre consiste em um transmissor, receptor e o segmento 
espacial consiste no próprio satélite.
 Wi-Fi: é uma tecnologia de comunicação sem fio de baixo 
custo. Uma configuração Wi-Fi consiste em um roteador sem fio 
que serve como um hub de comunicação, ligando o dispositivo por-
tátil a uma conexão com a internet. Essa rede facilita a conexão de 
vários dispositivos, dependendo da configuração do roteador. Essas 
redes têm alcance limitado devido à baixa transmissão de energia, 
permitindo que o usuário se conecte apenas nas proximidades. Essa 
rede facilita a conexão de vários dispositivos, dependendo da confi-
guração do roteador.
Camada enlace
A camada de enlace esconde características físicas do meio de 
transmissão para as camadas superiores, pois transforma os bits 
em quadros (frames). Sua principal função é fornecer um meio de 
transmissão confiável entre dois sistemas adjacentes. Para redes 
locais, a camada de enlace é dividida em dois subníveis: LLC (Logi-
cal Link Control ou Controle Lógico do Enlace) e MAC (Media Access 
Control ou Controle de Acesso a Mídia), sendo que a LLC faz inter-
face com a camada de rede e o MAC com a camada física.
Os representantes da camada de enlace são as interfaces de 
rede, switches e bridges. Nas redes atuais, recomenda-se o uso de 
switches (comutadores) no lugar dos HUBs (Hardware Unit Broadcast 
ou Unidade de Equipamento de Difusão) por questões de desem-
penho e segurança, pois estes, ao invés de enviar uma informação 
recebida para todas as portas, criam um caminho virtual ponto a 
ponto entre os computadores que estão se comunicando. As infor-
mações trocadas pelos protocolos da camada, tais como a Ethernet, 
46
Fast Ethernet, PPP (Point-to-Point Protocol ou Protocolo Ponto-a-
-Ponto) e demais são chamadas de quadros (frames). As funções 
mais comuns dessa camada são:
 • Delimitação e formato dos quadros de bits.
 • Detecção de erros.
 • Sequenciamento dos dados.
 • Controle de fluxo de quadros.
 • Endereçamento físico (endereço MAC).
 • Controle de acesso aos meios físicos.
Diz-se que os sistemas na rede de transmissão estão no mesmo en-
lace e que o trabalho da camada de enlace de dados tende a se tor-
nar mais complexo quando está lidando com múltiplos hosts em um 
único domínio de colisão. 
A camada de enlace fornece os meios processuais e fun-
cionais para a transferência de dados entre os nós da rede, assim 
como fornece os meios para detectar e corrigir erros que possam 
ocorrer na camada física. Funciona entre dois hosts que estão di-
retamente conectados em algum sentido. Essa conexão direta pode 
ser ponto a ponto ou broadcast.
 Além disso, ela também é responsável por converter o fluxo 
de dados em sinais bit a bit e enviá-los pelo hardware subjacen-
te. Na extremidade de recepção, a camada de enlace de dados coleta 
dados de hardware que estão na forma de sinais elétricos, os monta 
em um formato de quadro reconhecível e passa para a camada supe-
rior. Os bits de dados são codificados, decodificados e organizados 
na camada de enlace de dados antes de serem transportados como 
CURIOSIDADE
47
quadros entre dois nós adjacentes na mesma LAN ou WAN. São ser-
viços da camada de enlace:
 • Enquadramento e acesso ao enlace: quase todos os protoco-
los da camada de enlace encapsulam cada datagrama da ca-
mada de rede dentro de um quadro de camada de enlace antes 
da transmissão no enlace. Um quadro consiste em um campo 
de dados, no qual o datagrama da camada de rede é inserido e 
vários campos de cabeçalho (um quadro também pode incluir 
campos de trailer; no entanto, nos referimos a campos de ca-
beçalho e trailer como campos de cabeçalho). Um protocolo de 
enlace de dados especifica a estrutura do quadro, bem como 
um protocolo de acesso de canal que especifica as regras pe-
las quais um quadro é transmitido para o enlace. Para enlaces 
ponto-a-ponto que têm um único remetente em uma extre-
midade do enlace e um único receptor na outra extremidade 
do enlace, o protocolo de acesso ao enlace é simples (ou ine-
xistente), o remetente pode enviar um quadro sempre que o 
enlace está ocioso.
 • Entrega confiável: se um protocolo de camada de enlace for-
nece o serviço de entrega confiável, ele garante a movimenta-
ção de cada datagrama da camada de rede por meio do enlace 
sem erros. Semelhante a um serviço de entrega confiável de 
camada de transporte, um serviço de entrega confiável de ca-
mada de enlace é obtido com confirmações e retransmissões. 
Um serviço de entrega confiável da camada de enlace é fre-
quentemente usado para enlaces propensos a altas taxas de 
erro, como um enlace sem fio, com o objetivo de corrigir um 
erro localmente, no enlace em que o erro ocorre, em vez de 
forçar um fim de retransmissão completa dos dados por pro-
tocolode transporte ou camada de aplicação. No entanto, a 
entrega confiável da camada de enlace é frequentemente con-
siderada como desnecessária para enlaces de erro de bit baixo, 
incluindo enlaces de fibra, coaxial e muitos de cobre de par 
trançado. Por esse motivo, muitos dos protocolos de camada 
de enlace mais populares não fornecem um serviço de entrega 
confiável.
48
 • Controle de fluxo: os nós em cada lado de um enlace têm uma 
quantidade limitada de capacidade de buffer de pacote. Esse é 
um problema em potencial, já que um nó receptor pode rece-
ber quadros a uma taxa mais rápida do que pode processar os 
quadros (durante algum intervalo de tempo). Sem controle de 
fluxo, o buffer do receptor pode transbordar e os quadros po-
dem se perder. Semelhante à camada de transporte, um pro-
tocolo de camada de enlace pode fornecer controle de fluxo 
para impedir que o nó de envio em um lado de um enlace so-
brecarregue o nó receptor no outro lado do enlace. 
Mecanismos de detecção e controle de erros
A camada de enlace de dados usa técnicas de controle de erros para 
garantir que quadros, ou seja, fluxos de bits de dados, sejam trans-
mitidos da origem para o destino com um certo grau de precisão. 
Para isso, a camada de enlace se utiliza de algumas técnicas a fim 
de detectar e corrigir possíveis erros que, porventura, venham a 
ocorrer nesta camada. Quando os bits são transmitidos pela rede 
de computadores, eles estão sujeitos a serem corrompidos devido 
a problemas de interferência e de rede. Os bits corrompidos levam a 
dados espúrios, sendo recebidos pelo destino e chamados de erros.
Tipos de erros
Os erros podem ser de três tipos, que são: erros de bit único, erros de 
vários bits e erros de conjuntos de bits (burst, ou rajada).
 • Erro de bit único: no quadro recebido, apenas um bit foi cor-
rompido, ou seja, foi alterado de 0 para 1 ou de 1 para 0.
Figura 4 - Erro de bit único
Fonte: Editorial Digital Pages (2020).
49
 • Erro de vários bits: no quadro recebido, mais de um bit está 
corrompido.
Figura 5 - Erro de vários bits
Fonte: Editorial Digital Pages (2020).
 • Erro de burst: no quadro recebido, mais de um bit consecutivo 
está corrompido.
Figura 6 - Erro de burst
Fonte: Editorial Digital Pages (2020) .
Controle de erros
O controle de erros pode ser feito de duas maneiras:
 • Detecção de erros: o receptor de um nó pode decidir incorre-
tamente que um bit em um quadro seja zero quando for trans-
mitido como um (e vice-versa). Esses erros são introduzidos 
por atenuação de sinal e ruído eletromagnético. Como não há 
necessidade de encaminhar um datagrama com erro, muitos 
protocolos de camada de enlace fornecem um mecanismo 
para que um nó detecte a presença de um ou mais erros. Isso 
é feito tendo os bits de detecção de erro do conjunto de nós 
de transmissão no quadro e fazendo com que o nó receptor 
50
execute uma verificação de erro. A detecção de erros é um ser-
viço muito comum entre os protocolos da camada de enlace, 
geralmente é mais sofisticada e implementada no hardware.
 • Correção de erros: a correção de erros é semelhante à detec-
ção de erros, exceto pelo fato de um receptor não só detectar 
se erros foram introduzidos no quadro, mas também deter-
minar exatamente onde ocorreram os erros (e, portanto, cor-
rigir esses erros). Alguns protocolos (como o ATM) fornece 
correção de erro na camada de enlace para o cabeçalho do pa-
cote e não para o pacote inteiro. Para detecção e correção de 
erros, o remetente precisa enviar alguns bits adicionais junta-
mente com os bits de dados. O receptor executa as verificações 
necessárias com base nos bits redundantes adicionais. Se ele 
achar que os dados estão livres de erros, ele remove os bits 
redundantes antes de passar a mensagem para as camadas 
superiores.
Técnicas de detecção de erros
Existem três técnicas principais para detectar erros em qua-
dros:
1. Verificação de paridade: a verificação de paridade é feita adi-
cionando um bit extra, chamado bit de paridade aos dados. Ao 
criar um quadro, o remetente conta o número de 1s e adiciona 
o bit de paridade da seguinte maneira: 
 • no caso de paridade par: se os dados originais são 1010001, 
existem três 1s. Quando a verificação de paridade par é usada, 
um bit de paridade com valor 1 é adicionado ao lado esquerdo 
dos dados para fazer com que o número de 1s seja par; os da-
dos transmitidos tornam-se 11010001;
 • no caso de paridade ímpar: se a verificação de paridade ím-
par for usada, o valor do bit de paridade é zero; 01010001. Se 
os dados originais contiverem um número par de 1s (1101001). 
 Ao receber um quadro, o receptor conta o número de 1s nele. 
51
Em caso de verificação de paridade par, se a contagem de 1s é par, o 
quadro é aceito, caso contrário, é rejeitado. Uma regra semelhante é 
adotada para verificação de paridade ímpar. A verificação de parida-
de é adequada apenas para detecção de erros de bit único.
2. Checksum: envolve a divisão dos dados em quadros ou seg-
mentos de tamanho fixo. O remetente adiciona os segmentos 
usando a aritmética de complemento de 1 para obter a soma. 
Em seguida, ele complementa a soma para obter a soma de 
verificação e a envia junto com os quadros de dados. O recep-
tor adiciona os segmentos de entrada junto com a soma de ve-
rificação usando a aritmética de complemento de 1 para obter 
a soma e, em seguida, a complementa. Se o resultado for zero, 
os quadros recebidos serão aceitos; caso contrário, eles são 
descartados.
3. Verificação de Redundância Cíclica (CRC): envolve a divisão 
binária dos bits de dados sendo enviados por um divisor pre-
determinado acordado pelo sistema de comunicação. O divisor 
é gerado usando polinômios. Aqui, o remetente executa a divi-
são binária do segmento de dados pelo divisor. Em seguida, ele 
anexa os bits restantes de CRC ao final do segmento de dados. 
Isso torna a unidade de dados resultante exatamente divisível 
pelo divisor. O receptor divide a unidade de dados de entrada 
pelo divisor. Se não houver nenhum resto, a unidade de dados 
será considerada correta e aceita. Caso contrário, entende-se 
que os dados estão corrompidos e, portanto, são rejeitados.
Técnicas de correção de erros
Técnicas de correção de erros descobrem o número exato de 
bits que foram corrompidos e suas localizações. Existem duas ma-
neiras principais:
 • Retransmissão: se o receptor detectar um erro no quadro re-
cebido, ele solicitará ao remetente que retransmita o quadro. 
É uma técnica relativamente simples. Mas ele pode ser usado 
com eficiência somente quando a retransmissão não é cara 
como na fibra óptica e o tempo de retransmissão é baixo em 
52
relação aos requisitos da aplicação.
 • Correção de erro de encaminhamento: se o receptor detec-
tar algum erro no quadro de entrada, ele executará o código 
de correção de erros que gera o quadro real. Isso economiza a 
largura de banda necessária para a retransmissão. É inevitável 
em sistemas de tempo real. No entanto, se houver muitos er-
ros, os quadros precisam ser retransmitidos. Os quatro prin-
cipais códigos de correção de erro são:
 • Códigos Hamming.
 • Código de convolução binária.
 • Reed: código de Solomon.
 • Código de verificação de paridade de baixa densidade.
Camada de redes
A camada de redes tem a função de fornecer um canal de comuni-
cação independente do meio, pois ela transmite pacotes de dados 
por meio da rede utilizando um esquema de endereçamento lógico 
que pode ser roteado por diversas redes até chegar ao seu destino. As 
funções características da camada 3 são:
 • Tradução de endereços lógicos em endereços físicos.
 • Esquema de endereçamento lógico.
 • Roteamento de pacotes.
 • Não possuem garantia de entrega dos pacotes. 
Assim, a responsabilidade da camada de rede é transportar 
pacotes de um hospedeiro origem a um hospedeiro destino. Para fa-
zer essa ação, duas importantes funções da camada de rede podem 
ser identificadas, são elas:
 • Repasse: Quando um pacote chega ao enlacede entrada de um 
roteador, este deve conduzi-lo até o enlace de saída apropria-
53
do. Por exemplo, um pacote proveniente do hospedeiro H1 que 
chega ao roteador R1 deve ser repassado ao roteador seguinte 
por um caminho até H2. 
 • Roteamento: A camada de rede deve determinar a rota ou o 
caminho tomado pelos pacotes ao fluírem de um remetente a 
um destinatário. Os algoritmos que calculam esses caminhos 
são denominados algoritmos de roteamento. Um algoritmo de 
roteamento determinaria, por exemplo, o caminho pelo qual 
os pacotes fluiriam de H1 para H2. 
Vamos considerar um exemplo de viagem que tem origem em Recife 
e destino em São Paulo. Durante a viagem, nosso motorista passa 
por muitos cruzamentos de rodovias em sua rota. Podemos imagi-
nar o repasse como o processo de passar por um único cruzamento: 
um carro chega ao cruzamento vindo de uma rodovia e determina 
qual rodovia ele deve pegar para sair do cruzamento. Podemos ima-
ginar o roteamento como o processo de planejamento da viagem 
de Recife até São Paulo: antes de partir, o motorista consultou um 
mapa e escolheu um dos muitos caminhos possíveis. Cada um deles 
consiste em uma série de trechos de rodovias conectados por cru-
zamentos.
EXEMPLO
54
Figura 7 - Representação dos dispositivos e suas camadas
Fonte: Kurose (2014).
Na época do seu desenvolvimento, a arquitetura TCP/IP era a 
única alternativa para fazer frente aos protocolos proprietários dos 
diversos fabricantes. O conjunto de protocolos TCP/IP foi desenvol-
vido como parte da pesquisa feita pela DARPA (Defense Advanced Re-
search Projects Agency ou Agência de Projetos de Pesquisa Avançada 
de Defesa). Posteriormente, o TCP/IP foi incluído no BSD (Berkeley 
Software Distribution ou Distribuição de Software de Berkeley) da 
UNIX.
 As redes de computadores que fornecem serviços orienta-
dos à conexão são denominadas circuitos virtuais, enquanto as que 
55
fornecem serviços sem conexão são chamadas de redes de datagra-
ma.
A internet que usamos é realmente baseada na rede de datagrama 
(sem conexão) no nível da rede, pois todos os pacotes de uma fonte 
para um destino não seguem o mesmo caminho.
Redes por circuitos virtuais
Figura 8 - Redes por circuitos virtuais
Fonte: Editorial Digital Pages (2020).
 • O primeiro pacote vai e reserva recursos para os pacotes sub-
sequentes que, como resultado, seguem o mesmo caminho 
durante todo o tempo de conexão.
 • Como todos os pacotes seguem o mesmo caminho, um cabe-
çalho global é necessário apenas para o primeiro pacote da 
conexão, e outros pacotes geralmente não exigem cabeçalhos 
globais.
 • Como os dados seguem um determinado caminho dedicado, 
CURIOSIDADE
56
os pacotes alcançam o destino.
 • Nos circuitos virtuais (switching ou comutação), é certo que 
todos os pacotes irão definitivamente alcançar o destino. Ne-
nhum pacote será descartado devido à indisponibilidade de 
recursos.
 • Os circuitos virtuais, portanto, são meios altamente confiá-
veis de transferência.
 • Cada vez que uma nova conexão tem que ser configurada com 
reserva de recursos e manipulação extra de informações em 
roteadores, torna-se caro implementar circuitos virtuais.
 • Eles são usados em redes TDM (Time Division Multiplex ou 
Multiplexação por Divisão de Tempo), que são usadas para as 
chamadas telefônicas.
Redes por Datagrama
Figura 9 - Redes por datagrama
Fonte: Editorial Digital Pages (2020)
 • É um serviço sem conexão. Não há necessidade de reserva de 
recursos, pois não há caminho dedicado para uma sessão de 
conexão.
 • Todos os pacotes estão livres para ir para qualquer caminho 
57
em qualquer roteador intermediário que é decidido em qual-
quer lugar, mudando dinamicamente as tabelas de roteamen-
to nos roteadores.
 • Como cada pacote é livre para escolher qualquer caminho, 
todos os pacotes devem ser associados a um cabeçalho com 
informações adequadas sobre a fonte e os dados da camada 
superior.
 • A propriedade sem conexão faz com que os pacotes de dados 
cheguem ao destino em qualquer ordem, o que significa que 
eles não precisam chegar no destino na ordem em que foram 
enviados.
 • As redes de datagrama não são confiáveis como circuitos vir-
tuais.
 • A principal desvantagem do datagrama (Packet Switching ou 
Comutação de Pacotes) é que, se o buffer, a CPU e a largura de 
banda estiverem disponíveis, somente o pacote será encami-
nhado. Caso contrário, o pacote será descartado.
 • Geralmente são usados em redes IP, que usam serviços de da-
dos como internet.
Arquitetura TCP/IP
Quando o TCP (Transmission Control Protocol ou Protocolo de Con-
trole de Transmissão) se associa ao IP, você obtém o controlador de 
tráfego da internet. O TCP e o IP trabalham juntos para transmitir 
dados pela internet, mas em diferentes níveis. Como o IP não ga-
rante a entrega confiável de pacotes através de uma rede, o TCP 
assume a responsabilidade de tornar a conexão confiável.
 O TCP é o protocolo que garante confiabilidade em uma 
transmissão, o que garante que não haja perda de pacotes, ou seja, 
que eles estejam na ordem correta, que o atraso esteja em um nível 
aceitável e que não haja duplicação de pacotes. Tudo isso é para ga-
rantir que os dados recebidos sejam consistentes, em ordem, com-
58
pletos e suaves (para que você não ouça a fala interrompida). Du-
rante a transmissão de dados, o TCP funciona um pouco antes do IP. 
O TCP agrupa dados em pacotes TCP antes de enviá-los para o IP, 
que por sua vez os encapsula em pacotes IP.
Figura 10 - Arquitetura TCP/IP
Fonte: Editorial Digital Pages (2020).
Endereçamento IP
Um endereço IP é um número que identifica um computador ou 
outro dispositivo na internet. É semelhante a um endereço de cor-
respondência, que identifica de onde vem o correio e onde deve ser 
entregue. Os endereços IP identificam de forma exclusiva a origem e 
o destino dos dados transmitidos com o protocolo da internet.
Um endereço IP é um endereço único que identifica uma máquina 
(que pode ser um computador, um servidor, um dispositivo eletrô-
nico, um roteador, um telefone etc.) em uma rede, servindo, por-
tanto, para rotear e encaminhar pacotes IP da origem para o destino. 
SAIBA MAIS
59
Endereços IPv4 e IPv6
Os endereços IPv4 têm 32 bits de comprimento (4 bytes). Um exem-
plo de um endereço IPv4 é 216.58.216.164, que é a primeira página 
do Google.com. O endereço IP é representado pelos 4 bytes separa-
dos por “.” e representados por números decimais. Desta forma o 
endereço IP 11010000 11110101 0011100 10100011 é representado por 
208.245.28.63. O valor máximo de endereços IPv4 de um número de 
32 bits é 232, ou 4.294.967.296.
 Nos anos 80, isso era suficiente para abordar todos os dis-
positivos em rede, mas os cientistas sabiam que esse espaço rapida-
mente se esgotaria. Tecnologias como o NAT atrasaram o problema, 
permitindo que muitos dispositivos usassem um único endereço IP, 
mas é necessário um espaço de endereçamento maior para atender 
à internet moderna.
 Uma grande vantagem do IPv6 é que ele usa 128 bits de da-
dos para armazenar um endereço, permitindo 2128 endereços úni-
cos, ou 340.282.366.920.9 38.463.463.374.607.431.768.211.456. A 
quantidade de endereçamento do IPv6, de 340 undecilhões, é muito 
maior que o IPv4.
Figura 11 - Exemplo de cabeçalho de datagrama internet
Fonte: Comer (2006 apud MARTINS, 2010, p. 105).
60
O IPv6 (Internet Protocol versão 6) é um conjunto de espe-
cificações da IETF (Internet Engineering Task Force ou Força-tarefa 
de engenharia da internet) que é essencialmente uma atualização 
da versão 4 do IP (IPv4). Os fundamentos do IPv6 são semelhantes 
aos do IPv4, os dispositivos podem usar o IPv6 como endereços de 
origem e destino para passar pacotes pela rede, e ferramentas como 
o ping funcionam para testes de rede, como fazem no IPv4, com al-
gumas pequenas variações.
 A melhoria mais óbvia no IPv6 sobre o IPv4 é que os ende-
reços IP são ampliados de 32 bits para 128 bits. Essa extensão ante-
cipa um considerávelcrescimento futuro da internet e fornece alívio 
para o que foi percebido como uma iminente escassez de endereços 
de rede. O IPv6 também oferece suporte à configuração automática 
para ajudar a corrigir a maioria das deficiências da versão 4 e possui 
recursos integrados de segurança e mobilidade.
Confira alguns recursos do IPv6:
 • Suporta endereços de origem e destino com 128 bits (16 bytes) 
de comprimento.
 • Requer suporte IPSec.
 • Usa o campo Flow Label para identificar o fluxo de pacotes 
para o gerenciamento de QoS por roteador.
 • Permite que o host envie pacotes de fragmentos, mas não ro-
teadores.
 • Não inclui uma soma de verificação no cabeçalho.
 • Usa um endereço multicast de todos os nós do escopo do link 
local.
 • Não requer configuração manual ou DHCP.
 • Usa registros de recurso de endereço do host (AAAA) no DNS 
para mapear nomes de host para endereços IPv6.
 • Usa registros de recursos de ponteiro (PTR) no domínio DNS 
IP6.ARPA para mapear endereços IPv6 para nomes de host.
61
 • Suporta um tamanho de pacote de 1280 bytes (sem fragmen-
tação).
 • Move dados opcionais para cabeçalhos de extensão IPv6.
 • Usa NDP (Neighbor Discovery Protocol ou Protocolo de Desco-
berta de Vizinhos) para reconhecimento da vizinhança a fim 
de resolver endereços IP para endereços de camada de link.
 • Usa mensagens MLD (Multicast Listener Discovery ou Desco-
berta de Escuta de Multicast) para gerenciar a associação em 
grupos de sub-rede locais.
Figura 12 - Exemplo de cabeçalho de datagrama internet versão 6
Fonte: Editorial Digital Pages (2020).
Conceito de NAT
A NAT (Network Address Translation, ou Tradução do Endereço da 
Rede) converte os endereços IP dos computadores em uma rede 
local em um único endereço IP. Esse endereço é geralmente usado 
pelo roteador que conecta os computadores à internet. Ela permite 
que um único dispositivo atue como um gateway de internet para 
62
clientes de LAN internos, traduzindo os endereços IP de rede interna 
dos clientes para o endereço IP no dispositivo de gateway habilitado 
para NAT. Em outras palavras, a NAT é executada no dispositivo que 
está conectado à internet e oculta o restante da sua rede do público, 
fazendo com que toda a sua rede apareça como um único dispositivo 
(ou computador, se quiser) para o resto do mundo.
 A NAT é transparente para a sua rede, ou seja, todos os dis-
positivos de rede internos não precisam ser reconfigurados para 
acessar a internet. Tudo o que é necessário é permitir que seus dis-
positivos de rede saibam que o dispositivo NAT é o gateway padrão 
da internet. A NAT é segura, pois oculta sua rede da internet. Todas 
as comunicações da sua rede privada são tratadas pelo dispositivo 
NAT, o que garantirá que todas as traduções apropriadas sejam exe-
cutadas e forneçam uma conexão perfeita entre seus dispositivos e a 
internet.
Figura 13 - Exemplo de funcionamento do conceito de NAT
Fonte: Editorial Digital Pages (2020).
Camada transporte
A camada de transporte do modelo OSI está intimamente relaciona-
da à camada de rede, mas adiciona funcionalidade a ela. Você pode 
pensar nessa camada como um policial de trânsito ou um supervi-
sor para a multidão irracional de pacotes que é a camada de rede. 
A camada de transporte assume a responsabilidade pela verifica-
ção da entrega de dados. A camada de rede pode ter uma alta taxa 
de sucesso na obtenção de dados para o destino, mas a camada de 
63
transporte é especificamente informada para garantir a entrega dos 
dados. De qualquer maneira, você usará mecanismos de entrega de 
camada de transporte, mas você (ou o aplicativo que estiver usando) 
precisará decidir se usará a entrega de dados verificada ou a entrega 
de dados não verificada.
 Os mecanismos reais que são usados para garantir a entrega 
de dados dependem do protocolo de rede que está em uso, enquan-
to o conceito de confiabilidade de entrega é mais universal. Ao tra-
balhar com o conjunto de protocolos TCP/IP, a entrega verificada é 
executada usando o TCP (Transmission Control Protocol ou Protocolo 
de Controle de Transmissão), enquanto a entrega não verificada é 
executada usando o UDP (User Datagram Protocol ou Protocolo de 
Datagrama do Usuário). A camada de transporte pode fornecer al-
guns ou todos os seguintes serviços:
 • Comunicação orientada à conexão: os dispositivos nos pon-
tos finais de uma comunicação de rede estabelecem um pro-
tocolo de “handshake” (“aperto de mão”) para garantir que 
a conexão seja robusta antes que os dados sejam trocados. A 
fraqueza desse método é que, para cada mensagem entregue, 
há um requisito para uma confirmação, adicionando uma car-
ga de rede considerável em comparação com os pacotes corre-
tores de erros de autocorreção. As solicitações repetidas cau-
sam lentidão significativa na velocidade da rede quando são 
enviados fluxos de bytes ou datagramas com defeito.
 • Entrega de mesmo pedido: garante que os pacotes sejam 
sempre entregues em sequência estrita. Embora a camada de 
rede seja responsável, a camada de transporte pode corrigir 
quaisquer discrepâncias na sequência causadas por quedas de 
pacotes ou interrupção do dispositivo.
 • Integridade dos dados: usando “checksums” (verificação de 
soma de bits), a integridade dos dados em todas as camadas 
de entrega pode ser assegurada. Essas somas de verificação 
garantem que os dados transmitidos são os mesmos que os 
dados recebidos por meio de tentativas repetidas feitas por 
outras camadas para que os dados ausentes sejam reenviados.
64
 • Controle de fluxo: os dispositivos em cada extremidade de 
uma conexão de rede geralmente não têm como saber quais 
são os recursos uns dos outros em termos de taxa de transfe-
rência de dados e, portanto, podem enviar dados mais rapi-
damente do que o dispositivo receptor pode armazená-los ou 
processá-los. Nesses casos, os excessos de buffer podem cau-
sar interrupções completas na comunicação. Por outro lado, 
se o dispositivo receptor não estiver recebendo dados com ra-
pidez suficiente, isso causa um estouro de buffer, o que pode 
causar uma redução desnecessária no desempenho da rede.
 • Controle de tráfego: as redes de comunicação digital estão 
sujeitas a restrições de largura de banda e velocidade de pro-
cessamento, o que pode significar uma enorme quantidade de 
potencial para congestionamento de dados na rede. Esse con-
gestionamento de rede pode afetar quase todas as partes de 
uma rede. A camada de transporte pode identificar os sinto-
mas de nós sobrecarregados e taxas de fluxo reduzidas.
 • Multiplexação: a transmissão de múltiplos fluxos de pacotes 
de aplicativos não relacionados a outras fontes (multiple-
xação) por meio de uma rede requer alguns mecanismos de 
controle muito dedicados, que são encontrados na camada de 
transporte. Essa multiplexação permite o uso de aplicativos 
simultâneos em uma rede, como quando diferentes navega-
dores da internet são abertos no mesmo computador. No mo-
delo OSI, a multiplexação é manipulada na camada de serviço.
 • Orientação byte: algumas aplicações preferem receber fluxos 
de bytes em vez de pacotes; a camada de transporte permite a 
transmissão de fluxos de dados orientados por bytes, se ne-
cessário. 
O Protocolo TCP
O TCP é um padrão que define como estabelecer e manter uma con-
versação de rede através da qual os programas e aplicativos possam 
trocar dados. O TCP funciona com o IP, que define como os compu-
65
tadores enviam pacotes de dados entre si. Juntos, TCP e IP são as 
regras básicas que definem a internet. Veja algumas das suas carac-
terísticas:
 • Viabiliza conexão confiável fim-a-fim.
 • Opera em modo orientado a conexão.
 • Possibilita adequado controle de fluxo através da janela des-
lizante.
 • Permite utilizar controle de erros através de algoritmos de 
checksum.
 • Permite várias conexões TCP simultâneas no mesmo host.
 • Realiza a abertura de conexão através de handshake triplo.
Figura 14 - Protocolos que utilizam TCP
Fonte: EditorialDigital Pages (2020).
66
O Protocolo UDP
A função básica da camada de transporte é aceitar os dados da ca-
mada acima, dividi-los em unidades menores, passar essas unida-
des de dados para a camada de rede e garantir que todas as peças 
cheguem corretamente na outra extremidade. Além disso, tudo isso 
deve ser feito de forma eficiente e isolar as camadas superiores das 
inevitáveis mudanças na tecnologia de hardware.
 A camada de transporte também determina o tipo de ser-
viço a ser fornecido à camada de sessão e, em última análise, aos 
usuários da rede. O tipo mais popular de conexão de transporte é um 
canal ponto-a-ponto livre de erros que entrega mensagens ou bytes 
na ordem em que foram enviados. Ela é uma verdadeira camada de 
ponta a ponta, desde a origem até o destino. Em outras palavras, 
um programa na máquina de origem realiza uma conversa com um 
programa semelhante na máquina de destino, usando os cabeçalhos 
das mensagens e as mensagens de controle.
 O protocolo UDP fornece uma forma simples de acesso ao 
sistema de comunicação, provendo um serviço sem conexão, sem 
confiabilidade e sem correção de erros. A principal função do nível 
de transporte implementada em UDP é a capacidade de multiplexa-
ção de acesso ao sistema de comunicação.
 Esta função permite que vários processos ou programas 
sendo executados em um computador possam acessar o sistema de 
comunicação e o tráfego de dados respectivo a cada um deles seja 
corretamente identificado, separado e utilize buffers individuais. Os 
protocolos de camada de transporte são definidos pela IETF no RFC 
793. Suas características são:
 • Oferece protocolo sem confiabilidade, não orientado a cone-
xão.
 • Não há campos de sequência ou de reconhecimento.
 • Os protocolos da camada de aplicação (superiores) devem 
prover reconhecimento para haver confiabilidade.
 • Possibilita várias conexões UDP simultâneas no mesmo host�
67
Figura 15 - Protocolos que utilizam UDP
Fonte: Editorial Digital Pages (2020).
Camada sessão
 Essa camada gerencia uma sessão iniciando a abertura e o 
encerramento de sessões entre processos de aplicativos do usuá-
rio final. Também controla conexões únicas ou múltiplas para cada 
aplicativo de usuário final e se comunica diretamente com as ca-
madas de apresentação e de transporte. Os serviços oferecidos pela 
camada de sessão são geralmente implementados em ambientes de 
aplicativos usando RPCs (Remote Procedure Call ou Chamada Remota 
de Procedimento). As sessões são mais comumente implementadas 
em navegadores da web usando protocolos como o ZIP (Zone Infor-
mation Protocol ou Protocolo de Informações de Zona), AppleTalk 
Protocol (Protocolo de Comunicação Apple) ou SCP (Session Control 
Protocol ou Protocolo de Controle de Sessão). Esses protocolos tam-
bém gerenciam a restauração de sessão por meio de pontos de veri-
ficação e recuperação.
 Esta camada suporta operações full-duplex e half-duplex e 
cria procedimentos para verificação, adiamento, reinicialização e 
encerramento. A camada de sessão também é responsável por sin-
cronizar informações de diferentes origens. Por exemplo, as sessões 
são implementadas em programas de televisão ao vivo nos quais os 
fluxos de áudio e vídeo emergentes de duas fontes diferentes são 
mesclados. Isso evita a sobreposição e o tempo de transmissão si-
68
lencioso.
Camada apresentação
A camada de apresentação traduz principalmente dados entre a 
camada de aplicação e o formato de rede. Os dados podem ser co-
municados em diferentes formatos por meio de diferentes fontes. 
Assim, a camada de apresentação é responsável por integrar todos 
os formatos em um formato padrão para uma comunicação efi-
ciente e eficaz. Ela segue esquemas de estrutura de programação de 
dados desenvolvidos para diferentes linguagens e fornece a sintaxe 
em tempo real para a comunicação entre dois objetos, como cama-
das, sistemas ou redes. O formato de dados deve ser aceitável pelas 
próximas camadas; caso contrário, a camada de apresentação pode 
não ser executada corretamente. 
 Dispositivos de rede ou componentes usados pela camada 
de apresentação incluem redirecionadores e gateways. A camada de 
apresentação é responsável por:
 • Criptografia/descriptografia de dados.
 • Conversão de caracteres/string.
 • Compressão de dados.
 • Manipulação gráfica.
Camada aplicação
O modelo OSI define a camada de aplicação como a interface res-
ponsável por exibir as informações recebidas pelo usuário. Ela 
fornece acesso total do usuário final a uma variedade de serviços 
de rede compartilhados, garantindo uma comunicação de forma 
extremamente eficiente. Essa camada tem muitas atribuições, in-
cluindo tratamento e recuperação de erros, fluxo de dados em rede 
particular ou como um todo. Também é utilizada para desenvolver 
aplicações baseadas em rede.
69
Serviços em rede
São softwares que atuam de forma remota e com a função de esta-
belecer uma relação cliente-servidor na comunicação entre dispo-
sitivos em uma rede, provendo um serviço. Mais especificamente, 
esses serviços estabelecem comunicação padronizada, fornecendo 
interoperabilidade entre aplicações diferentes. Eles fazem isso, por 
exemplo, em HTTP usando tecnologias como XML (Extensible Mar-
kup Language ou Linguagem de Marcação Extensível), SOAP (Sim-
ple Object Access Protocol ou Protocolo Simples de Acesso a Objetos), 
WSDL (Web Services Description Language ou Linguagem Descrição 
dos Serviços da Web) e UDDI (Universal Description, Discovery and In-
tegration ou Descrição, Descoberta e Integração Universal).
 A relação cliente-servidor é definida como uma solicitação 
de um serviço pelo host (cliente) e a provisão de tal solicitação pelo 
seu respectivo provedor (servidor). Como apresentam transparên-
cia de linguagem, não importa se o sistema servidor que fornece o 
serviço é programado em Java e o cliente é programado em Perl, Py-
thon ou Ruby, por exemplo. Por meio de serviços, um servidor Win-
dows pode interagir com um servidor Linux ou fornecer um aplicati-
vo remoto a desktops, laptops ou smartphones e outros dispositivos 
móveis em toda a internet com sistemas operacionais diversos.
Protocolos da camada de aplicação
São exemplos de protocolos da camada de aplicação:
a. Telnet (TN): é um protocolo de rede, e uma aplicação (soft-
ware), utilizado para acesso remoto a computadores e ter-
minais por meio de uma rede pública (internet) ou privada, 
ambas TCP/IP. Ele foi concebido em 1969 e é considerado um 
dos primeiros padrões da internet pela IETF. Projetado para 
acesso remoto ao servidor pelo gerenciamento e arquitetura 
cliente-servidor, o Telnet funciona por meio de um progra-
ma criado especificamente para fornecer conectividade entre 
dois computadores remotos: o do cliente e outro do servidor. 
Ao fornecer credenciais de usuário (log in) e senha (password) 
70
corretas, um usuário pode acessar a funcionalidade privi-
legiada de um sistema remoto. Além disso, os comandos do 
Telnet podem ser executados em um dispositivo do cliente 
ou servidor suportado. Todas as mensagens em texto são não 
criptografadas e não possuem mecanismos de segurança es-
pecíficos. Por conta disso, em muitos aplicativos e serviços, o 
Telnet foi posteriormente substituído pelo SSH (Secure Shell 
ou Encapsulamento Seguro).
b. FTP (File Transfer Protocol ou Protocolo de transferência de 
arquivos): sua especificação original foi escrita por Abhay 
Bhushan e publicada como RFC 114, em 16 de abril de 1971, 
tendo sido substituída posteriormente pela RFC 765, em ju-
nho de 1980 e cuja especificação atual é RFC 959 (outubro de 
1985). Os primeiros aplicativos de cliente FTP usavam o prompt 
de comando do DOS com comandos e sintaxe padronizados. 
Desde então, muitos clientes GUI (Graphic User Interface ou 
Interface Gráfica do Usuário) foram desenvolvidos dentro dos 
sistemas operacionais, facilitando o upload e o download de 
arquivos pelo usuário. Existem vários usos e tipos de FTP:
 • site FTP: site no qualos usuários podem facilmente fazer 
upload ou download de arquivos específicos.
 • FTP por e-mail: permite que os usuários sem acesso à inter-
net acessem e copiem arquivos com um FTP anônimo, en-
viando uma mensagem de e-mail para ftpmail@decwrl.dec.
com com a palavra help no corpo do texto.
 • FTP Explorer: cliente FTP baseado no gerenciador de arquivos 
do Windows.
 • servidor FTP: servidor dedicado que fornece um serviço FTP. 
Ele requer hardware ou software de segurança, utilização de 
nomes de usuário/senhas e controle de acesso a arquivos para 
prevenir possíveis invasões.
 • cliente FTP: aplicação de computador que acessa um servidor 
FTP. Ela requer que os usuários bloqueiem as tentativas de co-
nexão FTP de entrada usando o modo passivo e verifiquem se 
71
há vírus em todos os arquivos baixados.
 • TFTP (Trivial File Transfer Protocol ou Protocolo de Transfe-
rência de Arquivos Simples): protocolo simples usado para 
transferência de arquivos. Utiliza o protocolo UDP para trans-
portar dados de uma extremidade para outra, principalmen-
te para ler e gravar arquivos de um servidor remoto. Tem re-
cursos limitados em comparação com o FTP, pois não oferece 
autenticação e segurança durante a transferência de arquivos. 
Como resultado, geralmente é usado para transferir arquivos 
de inicialização ou arquivos de configuração entre máquinas 
em uma configuração local. Por causa de seu design simples, 
raramente é usado de maneira interativa por usuários em uma 
rede de computadores.
c. SMTP (Simple Mail Transfer Protocol ou Protocolo Simples de 
Transferência de Correio): é um protocolo TCP/IP usado no 
envio e recebimento de e-mail. Como é limitado em sua ca-
pacidade de enfileirar mensagens na extremidade de recebi-
mento, é usado com um dos dois outros protocolos, POP3 ou 
IMAP, que permitem que o usuário salve mensagens em uma 
caixa de correio do servidor e faça o download delas periodica-
mente. Em outras palavras, os usuários geralmente usam um 
programa que usa SMTP para enviar e-mails e POP3 ou IMAP 
para receber e-mails. Em sistemas baseados em Unix, o Send-
mail é o servidor SMTP mais usado para e-mail. Em um pacote 
comercial, o Sendmail inclui um servidor POP3. O Microsoft Ex-
change inclui um servidor SMTP e pode ser configurado para 
incluir suporte a POP3. O SMTP geralmente é implementado 
para operar na porta 25 da internet. Uma alternativa ao SMTP 
amplamente usada na Europa é o X.400. Muitos servidores de 
e-mail agora oferecem suporte ao ESMTP (Extended Simple 
Mail Transfer Protocol ou Protocolo Simples de Transferência 
de Correio Estendido), que permite que os arquivos de multi-
mídia sejam entregues na forma de e-mail.
d. POP3 (Post Office Protocol ou Protocolo dos Correios): proto-
colo padrão da Internet que extrai e recupera e-mails de um 
servidor de e-mail remoto para acesso pela máquina host� 
72
Fornece aos usuários finais a capacidade de buscar e receber 
e-mails, sendo o principal protocolo por trás da comunicação 
por e-mail. Funciona por meio de um cliente de software de 
e-mail de suporte que integra o POP para se conectar ao ser-
vidor de e-mail remoto e fazer o download de mensagens de 
e-mail para a máquina do computador do destinatário. Utiliza 
a pilha do protocolo TCP/IP para conexão de rede e funciona 
com o protocolo SMTP para comunicação de e-mail de ponta 
a ponta, em que o POP envia mensagens e o SMTP as envia 
para o servidor. A partir de 2012, o Post Office Protocol está em 
sua terceira versão, conhecida como POP3, e é comumente 
utilizado na maioria das arquiteturas de comunicação clien-
te-servidor de e-mail.
e. IMAP (Internet Message Access Protocol ou Protocolo de Acesso 
a Mensagem da Internet): é um protocolo padrão para acessar 
e-mails em um servidor remoto de um cliente local. O IMAP é 
um protocolo de internet da camada de aplicação que usa os 
protocolos da camada de transporte subjacente para estabe-
lecer serviços de comunicação de host para host para aplica-
tivos. Isso permite o uso de um servidor de correio remoto. O 
endereço de porta conhecido para o IMAP é 143. A arquitetura 
IMAP permite que os usuários enviem e recebam e-mails por 
meio de um servidor remoto, sem suporte de um dispositivo 
específico. Esse tipo de acesso é ideal para viajantes que rece-
bem ou respondem e-mails de seu computador de mesa ou de 
escritório doméstico. Ele também é conhecido como protoco-
lo de acesso a e-mail interativo, protocolo de acesso a correio 
da internet e protocolo de acesso a e-mail provisório. O IMAP 
foi originalmente projetado em 1986, por Mark Crispin, como 
um protocolo de caixa de correio remota. Isso foi durante o 
uso popular do POP. O IMAP e o POP ainda são suportados pela 
maioria dos servidores e clientes de e-mail modernos. No en-
tanto, o IMAP é um servidor de arquivos remoto, enquanto no 
POP os arquivos são enviados e encaminhados. Em outras pa-
lavras, com o IMAP, todos os e-mails permanecem no servi-
dor até que o cliente os exclua. Ele também permite que vários 
clientes acessem e controlem a mesma caixa de correio. Quan-
73
do um usuário solicita um e-mail, ele é roteado por meio de 
um servidor central. Isso mantém um documento de armaze-
namento para os arquivos de e-mail. Alguns dos benefícios do 
IMAP incluem a capacidade de excluir mensagens, pesquisar 
palavras-chave no corpo dos e-mails, criar e gerenciar várias 
caixas de correio ou pastas e exibir os títulos para verificações 
visuais fáceis dos e-mails. O IMAP ainda é amplamente uti-
lizado, embora seu uso tenha diminuído devido aos serviços 
de envio de e-mails por meio de interfaces baseadas na web, 
como Gmail, Hotmail, Yahoo Mail etc.
f. HTTP (Hypertext Transfer Protocol ou Protocolo de Transferên-
cia de Hipertexto): protocolo da camada de aplicação usado 
principalmente na internet. O HTTP usa um modelo cliente/
servidor no qual o navegador é o cliente e se comunica com o 
servidor da Web que hospeda o site. O navegador usa HTTP, 
que é transportado por TCP/IP para se comunicar com o ser-
vidor e recuperar o conteúdo da web para o usuário. O HTTP é 
um protocolo amplamente utilizado e foi rapidamente ado-
tado pela internet devido à sua simplicidade. É um protocolo 
sem estado e sem conexão. Embora a simplicidade do HTTP 
seja sua maior força, também é sua principal desvantagem. 
Como resultado, o projeto HTTP-NG (Next Generation ou 
Próxima Geração) surgiu como uma tentativa de substituir o 
HTTP. O HTTP-NG promete oferecer um desempenho mui-
to mais alto e recursos adicionais para suportar aplicativos 
comerciais eficientes, além de simplificar os recursos de se-
gurança e autenticação do HTTP. Algumas das metas do HT-
TP-NG já foram implementadas no HTTP 1.1, que incorpora 
melhorias de desempenho, segurança e outros recursos à sua 
versão original HTTP 1.0, tais como: conexão para cada tran-
sação de solicitação e resposta. Em sua versão anterior, era 
necessária uma conexão separada. Na versão posterior, a co-
nexão pode ser reutilizada. Um pedido HTTP básico envolve os 
seguintes passos:
 • uma conexão com o servidor HTTP é aberta;
 • uma solicitação é enviada ao servidor;
74
 • algum processamento é feito pelo servidor;
 • uma resposta do servidor é enviada de volta;
 • a conexão está fechada.
g. HTTPS (Hypertext Transfer Protocol Secure ou Protocolo de 
Transferência de Hipertexto Seguro): variante do protocolo de 
transferência da web (HTTP) padrão que adiciona uma cama-
da de segurança aos dados em trânsito por meio de uma cone-
xão SSL (Secure Sockets Layer ou Camada de Soquetes Seguros) 
ou TLS (Transport Layer Security ou Segurança da Camada de 
Transporte). O HTTPS permite comunicação criptografada e 
conexão segura entre um usuário remoto e o servidor web. Ele 
é projetado principalmente para fornecer uma camada de se-
gurança aprimorada sobre o protocolo HTTP, inseguro para 
dados e transações confidenciais, tais como: detalhes de fatu-
ramento, transações de cartão de crédito, log in de usuário etc.O HTTPS criptografa todos os pacotes de dados em transição, 
utilizando a criptografia SSL ou TLS para evitar ataques nos 
quais é possível extrair o conteúdo dos dados mesmo que a 
conexão esteja comprometida. É configurado e suportado por 
padrão na maioria dos navegadores web e inicia uma conexão 
segura automaticamente se os servidores da web acessados 
solicitarem conexão segura. O HTTPS funciona em colabora-
ção com autoridades de certificação que avaliam o certificado 
de segurança do site acessado.
h. DNS (Domain Name System ou Sistema de Nomes de Domí-
nio): é um dos instrumentos mais fundamentais da internet. 
O DNS é um protocolo TCP/IP. Sua finalidade é a conversão de 
nomes de domínio fáceis para o entendimento humano, como 
“howstuffworks.com”, em um endereço IP (Internet Protocol), 
como 70.42.251.42, que os dispositivos usam para identificar 
um ao outro na rede. É, em suma, um sistema de correspon-
dência de nomes com números. Seu conceito é como uma lista 
telefônica para a internet. Sem esse tipo de sistema de orien-
tação, seria necessário recorrer a meios muito mais complica-
dos para encontrar a informação que busca, ou conhecer todos 
75
os números de telefone dos seus contatos por analogia ao IP.
i. SSH (Secure Shell ou Encapsulamento Seguro): protocolo crip-
tográfico e interface para execução de serviços de comunica-
ção de rede com um dispositivo remoto de forma segura, ou 
seja, permite que dois usuários conectados remotamente exe-
cutem comunicação de forma segura em uma rede não segura. 
Inicialmente, era um comando baseado em Unix, mas agora 
também é suportado em sistemas baseados em Windows. Foi 
projetado para permitir que um usuário faça acesso com se-
gurança em um dispositivo remoto e execute serviços e co-
mandos em rede. Por exemplo, ele pode ser usado por admi-
nistradores de rede para fazer acesso remoto a um servidor 
web e, a partir disso, configurá-lo. É considerado o substituto 
seguro para os protocolos Telnet, RSH e Rexec. Normalmen-
te, as comunicações ou processos baseados em SSH funcio-
nam em uma arquitetura cliente/servidor que consiste em um 
cliente e um servidor SSH. O cliente é autenticado e conectado 
com segurança e envia comandos criptografados para serem 
executados no servidor. Tanto o cliente quanto o servidor são 
autenticados com certificados digitais baseados em cripto-
grafia de chave pública RSA. O SSH usa AES, IDEA e Blowfish 
como algoritmos de criptografia. 
Caro(a) aluno(a),
Neste material, abordamos o Modelo OSI em detalhes. Aprendemos 
que esse modelo define um conjunto de sete camadas e os serviços 
atribuídos a cada uma. Vimos que a camada física fica responsável 
pela transmissão por meios físicos ou sem fio, enquanto a camada 
de enlace é fundamental para a comunicação entre sistemas compu-
tacionais em uma mesma rede, inclusive em longa distância. Com-
plementar a isto, vimos que a camada de redes é fundamental para 
a comunicação entre sistemas computacionais em redes distintas.
SINTETIZANDO
76
Através da camada de transporte, conhecemos os protocolos TCP e 
UDP, responsáveis pela garantia da transmissão, confiabilidade e 
segurança de nossas redes. Para gerenciamento de sessões, vimos 
que a camada de sessão verifica se a sessão está aberta, assim como 
o seu encerramento entre processos de aplicativos do usuário final. 
Já a camada de apresentação traduz principalmente os dados entre 
a camada de aplicação e o formato de rede.
Para finalizar, abordamos a camada de aplicação, ou seja, a cama-
da mais próxima do usuário, na qual são executados a maioria dos 
softwares e é nela que também são utilizados a maioria dos serviços. 
Mesmo que eventualmente operem em outras camadas, é na aplica-
ção que eles ficam visíveis, bem como os seus resultados, sucessos 
ou falhas.
Bons estudos e até a próxima!
UN
ID
AD
E
3
Introdução à 
linguagem de script 
Objetivos
 ◼ Compreender os métodos de caracterização da linguagem de 
script;
 ◼ Definir com propriedade os elementos de um ambiente de de-
senvolvimento de scripts;
 ◼ Compreender os elementos lógicos em que se baseia um am-
biente de aplicação de script em shell;
78
Introdução
Olá, aluno(a)!
Neste material, vamos entrar no universo da programação e estudar 
suas possibilidades aplicadas a redes de computadores. Para início, 
é importante saber que shell é o “prompt” da linha de comando do 
Unix e Linux, a famosa telinha preta que recebe comandos digitados 
pelo usuário e os executa. Assim, cada comando digitado pelo usuá-
rio é lido, verificado, interpretado e enviado ao sistema operacional 
para finalmente ser executado.
Portanto, neste material, vamos buscar contribuir com o seu 
aprendizado na área de programação por meio da construção de 
shell script, isto é, construção de arquivos que guardem vários co-
mandos e que poderão ser executados sempre que necessário ou so-
licitado pelo usuário. A organização desses comandos deve ser feita 
de forma lógica, seguindo regras e sintaxe da linguagem. Para isso, 
vamos estudar as estruturas principais para a construção de algo-
ritmos aplicados a exemplos de problemas reais.
Vamos lá!
79
Caracterização da linguagem de script 
Para que você possa compreender o que é uma linguagem de script 
e como ela se posiciona nas tarefas de desenvolvimento de aplica-
ções, é necessário apresentarmos alguns conceitos concernentes a 
tal teoria, os quais veremos a seguir.
O que é o shell
Em programação, podemos utilizar a criação de arquivos de script 
para tornar mais simples as execuções de tarefas repetitivas no dia 
a dia. Isso se dá pelo fato de que muito do que um programador, 
ou desenvolvedor, desempenha reside em ações dessa natureza: 
abrem-se os mesmos programas diariamente, esvaziam-se a lixei-
ra e diretórios temporários para economia de espaço em disco, entre 
outras tarefas recorrentes.
Nesse contexto, um script nada mais é do que um algoritmo 
designado a realizar uma dada tarefa, fazendo uso de comandos es-
pecíficos da interface a ele oferecida e dos arquivos que sejam exe-
cutáveis dentro do sistema operacional que utiliza. Essa interface, 
que recebe o nome de shell, representa a ligação entre o usuário 
(seja ele programador ou usuário final) e o sistema.
Figura 1 - Exemplo de shell
Fonte: print do autor, 2019.
Basicamente, todas as linguagens de script são linguagens 
de programação. A diferença teórica entre os dois conceitos é que 
as linguagens de script não requerem a etapa de compilação e são 
bastante interpretadas – por exemplo, normalmente, um progra-
ma em C precisa ser compilado antes de ser executado, enquanto 
normalmente uma linguagem de script como JavaScript ou PHP não 
80
precisa ser compilada. De um modo geral, programas compilados 
são executados mais rapidamente do que programas interpretados, 
porque são convertidos primeiramente em código de máquina na-
tivo. Além disso, os compiladores leem e analisam o código apenas 
uma vez e relatam os erros coletivamente que o código pode trazer 
em si, ao passo que o interpretador lerá e analisará as instruções 
de código toda vez que eles forem atendidos e irá interromper seu 
fluxo nessa instância se houver algum erro. Na prática, a distinção 
entre os dois conceitos se torna cada vez mais difícil, devido à me-
lhor capacidade de computação do hardware moderno e às práticas 
avançadas de codificação.
O shell interpreta os comandos que são inseridos pelos usuários para 
dispor de acesso a outros aplicativos nativos, ou mesmo inseridos 
diretamente como chamadas de sistema. Além disso, os recursos 
providos pelo shell são indispensáveis ao manuseio de diversos ar-
quivos simultaneamente, seja para realizar uma tarefa de forma re-
petida, seja para programar uma dada ação para determinada oca-
sião, entre outros recursos.
Neste material, apresentaremos os tipos de shell mais di-
fundidos no mercado, e na sequência definiremos conceitos que se 
mostrarão úteis em sua utilização, para então conhecermos exem-
plos práticosde shell.
Tipos de shell
Apresentaremos aqui os tipos de shell mais comuns do mercado, a 
fim de que você consiga se situar no andamento do desenvolvimen-
to dessa linguagem.
Shell Bourne
IMPORTANTE
81
O mais comum dos tipos de shell é o shell Bourne (sh), conce-
bido a partir de um shell original datado de 1975. O shell Bourne era 
tomado como o shell padrão para o Unix versão 7 (no caso, a maioria 
dos sistemas baseados em Unix continua a ter o Bourne como shell 
padrão, mesmo quando outros shell forem usados pela maioria de 
seus usuários).
Desenvolvido por Stephen Bourne, funcionário do Bell Labs, 
esse shell foi um substituto para o shell Thompson, cujo arquivo 
executável possuía a mesma nomenclatura (sh). O Bourne foi lan-
çado em 1979 na versão 7 do Unix, e na sequência distribuído para 
instituições de ensino superior. Embora seja usado como um inter-
pretador de comandos interativos, o Bourne foi também planejado 
como uma linguagem de script e contém a maioria dos recursos que 
geralmente são considerados para produzir programas estrutura-
dos.
O Bourne ganhou popularidade com a publicação de “The Unix 
Programming Environment”, por Brian Kernighan e Rob Pike, o pri-
meiro livro publicado comercialmente que apresentava o shell como 
uma linguagem de programação em forma de tutorial. Alguns dos 
principais objetivos desse shell foram:
 • Permitir que scripts de shell fossem usados como filtros.
 • Fornecer programação, incluindo fluxo de controle e variá-
veis.
 • Prover controle sobre todos os descritores de arquivos de en-
trada e saída.
 • Prover controle sobre manipulação de sinal dentro de scripts.
 • Não delimitar comprimentos de string ao interpretar scripts de 
shell.
 • Racionalizar e generalizar o mecanismo de cotação de strings.
 • Implementar o mecanismo do ambiente, permitindo que o 
contexto fosse estabelecido na inicialização e fornecendo uma 
maneira de os scripts de shell passarem o contexto para subs-
cripts (processos), sem precisar usar parâmetros posicionais 
82
explícitos.
Shell C (csh)
Posteriormente, alguns estudantes da Universidade da Cali-
fórnia, em Berkeley, conceberam o shell C (csh), útil para quem é 
familiar com a sintaxe da linguagem de programação C: o shell C 
(csh ou a versão melhorada, tcsh) é um shell Unix criado por Bill Joy, 
quando este era um estudante de pós-graduação na Universidade da 
Califórnia, Berkeley, no final da década de 1970. Ele foi amplamen-
te distribuído, começando com o lançamento do 2BSD do Berkeley 
Software Distribution (BSD), que Joy começou a distribuir em 1978. 
Outros colaboradores iniciais das ideias e de seu código foram Mi-
chael Ubell, Eric Allman, Mike O’Brien e Jim Kulp.
O shell C é um processador de comandos normalmente exe-
cutado em uma janela de texto, permitindo que o usuário digite 
comandos. O shell C também pode ler comandos de script, e como 
todos os shell do Unix, suporta wildcarding de arquivos, piping, do-
cumentos, substituição de comandos, variáveis e estruturas de con-
trole para testes de condição e iteração. O que diferenciou o shell C 
dos outros, especialmente na década de 1980, foram seus recursos 
interativos e estilo generalista. Seus novos recursos tornaram mais 
fácil e rápido o uso de um shell. O estilo generalista da linguagem 
parecia mais com C e era visto pelos programadores como mais le-
gível.
Em muitos sistemas operacionais, como o Mac OS X e o Red 
Hat Linux, o csh é na verdade o tcsh, uma versão melhorada do csh. 
Muitas vezes, um dos dois arquivos é um link físico ou um link sim-
bólico para o outro, de modo que qualquer nome se refere à mesma 
versão aprimorada do shell C.
Na distribuição Debian e em alguns derivados (incluindo o 
Ubuntu), para Linux, existem dois pacotes diferentes: csh e tcsh. O 
primeiro é baseado na versão original do csh e o último é o tcsh me-
lhorado.
O tcsh adicionou ao csh a funcionalidade do uso de nomes de 
arquivo e conclusão de comandos e conceitos de edição de linha de 
comando emprestados do sistema Tenex (que é a fonte da inicial ‘t’ 
83
em tcsh). Como o tcsh apenas adicionou funcionalidades e não al-
terou o que já existia no shell, o tcsh permaneceu compatível com 
as versões anteriores do shell C original. Embora tenha começado 
como uma ramificação lateral da árvore fonte original que Joy criou 
em seu primeiro projeto, o tcsh é agora o principal ramo para o de-
senvolvimento contínuo, sendo muito estável. Ainda assim, novos 
lançamentos continuam a aparecer aproximadamente uma vez por 
ano, consistindo principalmente em pequenas correções de erros.
Shell Korn
O terceiro dos mais difundidos shell do mercado é o shell Korn. 
Trata-se de um shell Unix que foi desenvolvido por David Korn, no 
Bell Labs, no início da década de 1980 e anunciado na USENIX, em 14 
de julho de 1983. Seu desenvolvimento inicial foi baseado no códi-
go-fonte do shell Bourne. Outros colaboradores anteriores foram os 
desenvolvedores do Bell Labs, Mike Veach e Pat Sullivan, que escre-
veram o código dos modos de edição de linhas do estilo Emacs e VI 
(do Unix), respectivamente. O shell Korn é compatível com versões 
anteriores do shell Bourne e inclui muitos recursos do shell C, inspi-
rados nas solicitações dos usuários do Bell Labs.
O KornShell se encontra em conformidade com as normas PO-
SIX.2, Shell & Utilities, e IEEE 1003.2-1992. As principais diferenças 
entre o shell Korn e o shell Bourne tradicional incluem:
 • Controle de tarefas, alias de comandos e histórico de coman-
dos projetados após os recursos correspondentes do shell C (o 
controle de trabalho foi adicionado ao shell Bourne em 1989).
 • Uma escolha de três estilos de edição de linha de comando ba-
seados em VI, Emacs e Xemacs.
 • Matrizes associativas e operações aritméticas de ponto flu-
tuante incorporadas (disponíveis apenas na versão ksh93 do 
KornShell).
 • Extensibilidade dinâmica de comandos incorporados (a partir 
do ksh93).
Shell Bash (bsh)
84
O shell Bash é uma linguagem de comandos e shell do Unix es-
crita por Brian Fox para o Projeto GNU como uma substituição gra-
tuita de software para o shell Bourne. Lançado pela primeira vez em 
1989, foi amplamente distribuído como o shell de login padrão para 
a maioria das distribuições Linux e o macOS da Apple (antigo OS X). 
Uma versão também está disponível para o Windows 10. É também 
o shell do usuário padrão no Solaris 11.
O Bash é um processador de comandos que normalmente é 
executado em uma janela de texto onde o usuário digita comandos 
que causam ações. O Bash também pode ler e executar comandos 
de shell script. Como todos os shells do Unix, ele suporta globbing de 
nomes de arquivos (correspondência de curingas), piping, substi-
tuição de comandos, variáveis e estruturas de controle para teste de 
condição e iteração. As palavras-chave, sintaxe e outras caracterís-
ticas básicas da linguagem são todas copiadas do sh. Outros recur-
sos, por exemplo, histórico, são copiados dos shells csh e ksh. O Bash 
é um shell compatível com POSIX, mas com várias extensões.
O nome do shell é um acrônimo para Bourne-again shell, um 
trocadilho com o nome do shell Bourne, que ele substitui, e o termo 
comum born again.
Uma brecha no Bash datada da versão 1.03 (especificamente 
em agosto de 1989), apelidada de shellshock, foi descoberta no início 
de setembro de 2014 e rapidamente levou a uma série de ataques 
pela Internet. Pacotes para corrigir os bugs foram disponibilizados 
logo após sua identificação, mas nem todos os computadores foram 
atualizados.
A escolha do shell pelo usuário depende principalmente de suas pre-
ferências pessoais, pois os principais recursos se encontram dispo-
níveis em qualquer uma das alternativas.
SAIBA MAIS
85
Inicialização do shell
Os sistemas operacionais que suportam scripts de shell são usual-
mente sistemas de compartilhamento de tempo com vários usuá-
rios, sugerindo que mais de um usuário possa efetuar login e usar 
o sistema. Nesse contexto, os administradoresde sistemas têm a 
tarefa de gerenciar vários aspectos de como diferentes usuários 
podem operar um sistema em termos de instalação, atualização 
e remoção de software, programas que podem executar, arquivos 
que podem ser visualizados, editados e assim por diante. Os siste-
mas também permitem que os ambientes dos usuários sejam cria-
dos ou mantidos de duas maneiras principais: usando configurações 
globais (do sistema) e específicas do usuário (pessoais). Para fins 
didáticos, apresentaremos alguns exemplos nesta seção com o uso 
do shell Bash.
Normalmente, o método básico para trabalhar com um siste-
ma dessa natureza é, como já vimos, o shell, que cria um ambiente 
dependente de certos arquivos que lê durante sua inicialização após 
um login de usuário bem-sucedido. Para que um usuário inicie sua 
sessão, tanto de forma local como remota, é preciso que ele insira 
seus dados de login e senha para o script de login, responsável pela 
inicialização de sessão de usuário no sistema. O script de login exa-
mina se o nome informado consta da lista de usuários e se sua senha 
é igual à armazenada. Caso positivo, o script de login invoca o shell 
configurado para que o usuário devidamente identificado comece a 
trabalhar dentro do sistema. A informação de login e senha de usuá-
rios está armazenada no arquivo /etc/passwd na grande parte dos 
sistemas, sendo a senha criptografada, além de também serem ar-
mazenados valores de número de identificação do usuário, número 
de identificação do seu grupo, uma descrição sucinta do usuário, seu 
diretório padrão de login (usualmente HOME) e o shell de seu uso, 
nesta ordem. Nessa configuração de armazenamento, os campos 
em questão são separados por dois pontos (:).
Quando o shell é invocado, há certos arquivos de inicializa-
ção que o ajudam a configurar um ambiente para o próprio shell e o 
usuário do sistema, que é predefinido (e personalizado) com fun-
ções, variáveis, aliases e assim por diante. Existem duas categorias 
86
de arquivos de inicialização lidos pelo shell:
 • Arquivos de inicialização de todo o sistema – Estes contêm 
configurações globais que se aplicam a todos os usuários no 
sistema e geralmente estão localizadas no diretório /etc. Eles 
incluem: /etc/profiles e /etc/bashrc ou /etc/ bash.bashrc.
 • Arquivos de inicialização específicos do usuário – Estes ar-
mazenam configurações que se aplicam a um único usuário 
no sistema e normalmente estão localizados no diretório ini-
cial do usuário como arquivos de ponto. Eles podem substituir 
as configurações de todo o sistema. Eles incluem: .profiles, 
.bash_profile, .bashrc e .bash_login.
O shell pode ser invocado em três modos possíveis:
Shell interativo com login
O shell é invocado depois que um usuário efetua login com 
sucesso no sistema, usando /bin/login, depois de ler as credenciais 
armazenadas no arquivo /etc/passwd.
Quando o shell é iniciado como um shell interativo com login, 
ele lê o /etc/ profile e seu equivalente específico do usuário ~/.bash_
profile.
Figura 2 - Exemplo de shell interativo com login
Fonte: print do autor, 2019.
Shell interativo sem login
O shell é iniciado na linha de comando usando um programa 
shell, por exemplo, $/bin/bash ou $/bin/zsh. Também pode ser ini-
87
ciado executando o comando /bin/su.
Além disso, um shell interativo sem login também pode ser 
invocado com um programa de terminal como o konsole, termina-
tor ou xterm de dentro de um ambiente gráfico.
Quando o shell é iniciado neste estado, ele copia o ambiente 
do shell pai e lê o arquivo ~/.bashrc específico do usuário para obter 
instruções adicionais de configuração de inicialização.
Figura 3 - Exemplo de shell interativo sem login
Fonte: print do autor, 2019.
Shell não interativo
O shell é invocado quando um script de shell está sendo exe-
cutado. Nesse modo, ele está processando um script e não requer a 
entrada do usuário entre os comandos, a menos que seja de outra 
forma. Ele opera usando o ambiente herdado do shell pai.
Ultrapassados os processos de login em si, o shell executa os 
comandos nos arquivos de sistema e depois procura pelos arquivos 
de inicialização dentro do diretório HOME do usuário. Reforçamos, 
aqui, que os arquivos de inicialização têm como finalidade estabele-
cer configurações relativas às particularidades do sistema, ao passo 
que os arquivos de inicialização de cada usuário têm por objetivo 
assegurar que cada usuário possa personalizar o comportamento do 
shell como entender melhor. Tais arquivos podem conter quaisquer 
comandos que façam sentido ao shell, que os executará na ordem em 
que os localizar. As tarefas mais comuns inerentes a tais arquivos se 
referem quase sempre ao gerenciamento básico de arquivos.
88
Noções básicas sobre arquivos de inicialização do 
shell de todo o sistema
Nesta seção, iremos ressaltar os arquivos de inicialização do shell 
que armazenam configurações para todos os usuários no sistema. 
Estes se dispõem da seguinte forma:
 • Arquivo /etc/profile – Armazena configurações de ambiente 
em todo o sistema e programas de inicialização para configu-
ração de login. Todas as configurações que se deseje aplicar a 
todos os ambientes de usuários do sistema devem ser adicio-
nadas neste arquivo. Por exemplo, pode-se definir a variável 
de ambiente global PATH aqui.
Figura 4 - Arquivo de configuração de todo o sistema
Fonte: print do autor, 2019.
89
 • Diretório /etc/profile.d/ – Armazena scripts de shell usados 
para fazer alterações personalizadas no ambiente.
Figura 5 - Scripts de shell customizados.
Fonte: print do autor, 2019.
 • Arquivo /etc/bashrc ou /etc/bash.bashrc – Contém funções e 
aliases que abrangem todo o sistema, incluindo outras confi-
gurações que se aplicam a todos os usuários do sistema.
Se o sistema possuir vários tipos de shells, é uma boa ideia 
inserir configurações específicas de bash nesse arquivo.
90
Figura 6 - Funções e aliases de todo o sistema.
Fonte: print do autor, 2019.
Noções básicas sobre arquivos de inicialização do 
shell específicos do usuário
Explicaremos aqui mais sobre os arquivos de ponto de inicialização 
do shell específico do usuário (bash), que armazenam configura-
ções para um usuário específico no sistema e que estão localiza-
dos no diretório inicial de um usuário. Estes incluem os seguintes 
arquivos:
91
Figura 7 - Inicialização do shell
Fonte: print do autor, 2019.
 • Arquivo ~/.bash_profile – Armazena configurações especí-
ficas de ambiente de usuário e de inicialização. Pode-se defi-
nir a variável de ambiente PATH personalizada aqui, confor-
me a figura a seguir.
92
Figura 8 - Perfil bash
 Fonte: print do autor, 2019.
 • Arquivo ~/.bashrc – Este arquivo armazena aliases e funções 
específicas do usuário.
Figura 9 - Arquivo de usuário bashrc
Fonte: print do autor, 2019.
93
 • Arquivo ~/.bash_login – Contém configurações específicas 
que normalmente são executadas apenas quando se efetua lo-
gin no sistema. Quando o ~/.bash_profile está ausente, este 
arquivo será lido pelo bash.
 • Arquivo ~/.profile – Este arquivo é lido na ausência de 
~/.bash_profile e ~/.bash_login. Ele pode armazenar as mes-
mas configurações, que também podem ser acessadas por 
outros shells no sistema. Observe que falamos principalmente 
sobre o bash aqui – outros shells podem não entender a sintaxe 
do bash.
 • Arquivo ~ /.bash_history – O bash mantém um histórico dos 
comandos que foram inseridos por um usuário no sistema. 
Essa lista de comandos é mantida no diretório inicial de um 
usuário no arquivo ~ /.bash_history.
Figura 10 - Visão dos últimos comandos executados
Fonte: print do autor, 2019.
 • Arquivo ~ /.bash_logout – Não é usado para a inicialização 
do shell, mas armazena instruções específicas do usuário para 
o procedimento de logout. Ele é lido e executado quando um 
usuário sai de um shell de login interativo. Um exemplo prático 
seria limpar a janela do terminal no logout. Isso é importante 
para conexões remotas, o que deixaráuma janela limpa depois 
de fechá-las.
94
Figura 11 - Limpeza de histórico após logout.
Fonte: print do autor, 2019.
Definição do ambiente de aplicabilidade e 
desenvolvimento 
Para que possamos entender como se definem os elementos cons-
titutivos de um ambiente de aplicabilidade e desenvolvimento de 
algoritmos, é preciso elencar sua definição e propriedades, que ve-
remos a seguir.
Definição de algoritmo
A palavra algoritmo, à primeira vista, pode parecer algo estranho. 
Embora possua designação desconhecida, fazemos uso constan-
temente de algoritmos em nosso cotidiano: a maneira como uma 
pessoa toma banho ou como prepara uma receita é considerado um 
algoritmo. Podemos listar outros exemplos de algoritmos, como:
 • instruções para se operar uma máquina;
 • orientações de como preencher um formulário para abertura 
de conta corrente em um banco;
 • regras para determinação de pontos de máximos e mínimos 
ao se determinar o volume máximo de uma caixa;
 • os passos para o cálculo de tarifas de água e luz de uma resi-
dência, entre outras tarifas.
95
São vários, portanto, os conceitos que podem ser arbitrados para 
algoritmos. Por definição própria, algoritmo é um conjunto limita-
do de regras e procedimentos devidamente ordenados que têm por 
meta a resolução sistemática de um determinado problema.
Por que utilizar algoritmos
Cientistas da computação aprendem por experiência. Aprendemos 
vendo outros resolvendo problemas e solucionando problemas por 
nós mesmos. O fato de estarmos expostos a diferentes técnicas de 
resolução de problemas e de vermos como diferentes algoritmos são 
projetados nos ajuda a assumir o próximo problema desafiador que 
nos é dado. Considerando vários algoritmos diferentes, podemos 
começar a desenvolver o reconhecimento de padrões para que, da 
próxima vez que surgir um problema semelhante, possamos melhor 
resolvê-lo.
Algoritmos são frequentemente diferentes um do outro. É 
inteiramente possível que existam muitas maneiras diferentes de 
implementar os detalhes para calcular a função de raiz quadra-
da de um número. Um algoritmo pode usar muito menos recursos 
que outro, ou levar 10 vezes mais tempo para retornar o resultado 
como o outro. Seria interessante haver alguma maneira de compa-
rar essas duas soluções. Mesmo que ambas funcionem, uma talvez 
seja melhor que a outra. Podemos sugerir que uma é mais eficiente, 
que simplesmente trabalha mais rápido ou usa menos memória. Ao 
estudarmos algoritmos, podemos aprender técnicas de análise que 
nos permitem comparar e contrastar soluções baseadas unicamente 
em suas próprias características, não nas características do progra-
ma ou computador usado para implementá-los.
Na pior das hipóteses, podemos ter um problema que é in-
tratável, o que significa que não há algoritmo que possa resolver o 
DEFINIÇÃO
96
problema em um tempo realista. É importante ser capaz de distin-
guir entre os problemas que têm soluções, aqueles que não têm, e 
aqueles em que as soluções existem, mas requerem muito tempo ou 
outros recursos para funcionar razoavelmente.
Muitas vezes haverá trocas que precisaremos identificar e 
decidir. Como cientistas da computação, além de nossa capacidade 
de resolver problemas, também precisaremos conhecer e entender 
as técnicas de avaliação de soluções. Ao final, muitas vezes há inú-
meras maneiras de resolver um problema. Encontrar uma solução 
e, em seguida, decidir se é uma boa decisão são tarefas que faremos 
repetidamente.
A importância do algoritmo está, assim, no fato de termos que 
especificar uma sequência de passos lógicos necessária ao compu-
tador para que resolva uma tarefa qualquer, pois a máquina por si 
só não possui vontade própria para tal. Com algoritmos, é possível 
formular uma solução para um dado problema, independente de se 
usar uma linguagem específica.
Características dos algoritmos e suas formas de 
representação
Todo algoritmo deve possuir uma estrutura mínima:
 • possuir início e fim;
 • não ser ambíguo;
 • poder receber dados de entrada;
 • poder gerar informações de saída;
 • ser efetivo e eficaz, ou seja, apresentar passos ou etapas reali-
záveis em um tempo finito.
Algoritmos podem ser representados, dentre outras manei-
ras, por:
1. Descrição baseada em uma narrativa - Utiliza a língua (no 
97
nosso caso, o português) para ser descrito. Por exemplo, uma 
receita de bolo simples:
 • Separe 500 g de manteiga.
 • Separe 5 ovos.
 • Separe 2 kg de massa pronta para bolo.
 • Misture os ingredientes acima.
 • Reserve a mistura obtida em uma forma de bolo.
 • Leve a forma ao forno pré-aquecido em temperatura de 180 
ºC.
 • Aguarde 20 a 25 minutos.
 • Retire a forma do forno e deixe esfriar.
 • Sirva a gosto.
Vantagens:
a língua portuguesa nos é bastante conhecida. 
Desvantagens:
 • pode haver imprecisão na descrição dos passos do algoritmo;
 • a descrição livre de passos acarreta baixa confiabilidade;
 • a descrição de passos é extensa, podendo ser prolixa.
2. Fluxograma - Corresponde ao uso de símbolos gráficos para 
representar algoritmos. Em um fluxograma, há símbolos pa-
dronizados para as etapas de início, entrada de dados, proces-
samento, cálculos, saída de dados e fim.
98
Fluxograma 1 - Blocos de um fluxograma e exemplo de utilização
Fonte: Editorial Digital Pages, 2019.
Vantagens:
 • fluxogramas são bastante conhecidos;
 • a representação gráfica facilita o entendimento do algoritmo;
 • é padronizado mundialmente para tal uso.
Desvantagens:
 • não oferece muita atenção aos dados, sem construir recursos 
específicos para descrevê-los ou representá-los;
 • fluxogramas tendem a ficar muito longos à medida que o al-
goritmo se torna mais complexo.
99
3. Pseudolinguagem - Consiste em uma forma linguística de 
programação, com a definição de comandos próximos do por-
tuguês, para representar passos de um algoritmo.
Por exemplo:
Algoritmo CALCULA_TRIPLO 
NUM, TRIPLO: inteiro
inicio
Leia NUMERO 
TRIPLO 3 * NUM
Escreva TRIPLO 
fim
Vantagens:
 • utiliza o português como base;
 • admite a quantificação e qualificação de dados na estrutura de 
variáveis;
 • permite a transcrição quase imediata do algoritmo para uma 
determinada linguagem de programação.
Desvantagens:
 • exige a formalização de linguagem não realística;
 • não possui padronização em nível mundial.
Fundamentação da lógica dentro do 
ambiente de programação 
Para compreender como a lógica de programação tem seu propósi-
to justificado quando se lida com algoritmos, elencamos nas seções 
seguintes os conceitos a ela concernentes.
100
Estruturas principais para a construção de 
algoritmos
Há três estruturas básicas de controle nas quais deve se basear um 
bom algoritmo, descritas a seguir.
 • Sequenciação: os comandos de um algoritmo fazem parte de 
uma certa e definida sequência, em que é relevante a ordem 
na qual se encontram os dispostos. De um modo genérico, tal 
sequência pode ser expressa da seguinte forma:
Comando 1
Comando 2
Comando 3
:
Comando N
Tem-se assim de uma sequenciação com N comandos, exe-
cutados na ordem em que aparecem.
 • Decisão ou seleção: Tal estrutura também é referida como 
estrutura condicional. Nela, há a subordinação do proces-
samento de um ou mais comandos à realização de uma dada 
condição. Por exemplo:
Se <condição>,
então <sequência de comandos 1>,
senão <sequência de comandos 2>.
Se a <condição> for verdadeira, será executada a <sequência 
de comandos 1>. Do contrário, será executada a <sequência de co-
mandos 2>. 
Outro exemplo:
Se eu dispuser de dinheiro suficiente, comprarei uma boa 
calça jeans. Caso contrário, comprarei uma calça de qualidade qual-
quer.
101
 • Repetição ou iteração: essa estrutura, também conhecida por 
laço, permite que tarefas individuais sejam iteradas um certo 
número determinado de vezes segundo dada lógica. Observe 
os exemplos a seguir.
a. Atirarei pedras em uma janela até quebrá-la.
b. Farei cinco arremessos livres.
c. Enquanto dispuserde saúde e recursos, desfrutarei de minha 
vida.
No exemplo (a), repete-se a ação de atirar pedras em uma ja-
nela até que seja satisfeita a condição de quebrá-la.
No exemplo (b), haverá a repetição da tarefa de se arremes-
sar uma bola de basquete em uma cesta um número determinado de 
vezes (cinco).
No exemplo (c), a condição que permitirá a alguém continuar 
desfrutando a vida é possuir recursos e saúde.
A utilização conjugada das três estruturas supracitadas per-
mite a solução de uma elevada miríade de problemas, e todas as 
linguagens de programação oferecem elementos representantes de 
tais estruturas. Conheceremos essas estruturas com mais proprie-
dade mais à frente na nossa trajetória de estudos!
Caro(a) aluno(a),
Neste material, apresentamos os conceitos básicos de programação 
shell, bem como introduzimos os conteúdos preliminares necessá-
rios ao entendimento de como converter problemas do mundo real 
em algoritmos. A finalidade maior do material, na forma com que 
seus tópicos foram distribuídos, é a de fazer com que você com-
preenda os pilares de utilização das regras de construção de algorit-
mos, visando assim ao melhor desempenho quando você, aluno(a), 
SINTETIZANDO
102
ensejar, com propriedade, elaborar seus próprios scripts de resolu-
ção de tarefas. 
Em termos específicos, apresentamos métodos elaborados para ca-
racterizar o que é uma linguagem de script, trazendo na sequência, 
de forma bem justificada, os elementos constitutivos de um am-
biente de desenvolvimento de scripts. Com tal embasamento e se-
gundo as restrições de resolução de problemas, trouxemos elemen-
tos relevantes para que você consiga compreender o encadeamento 
lógico de partes de uma aplicação de script em shell. 
Ao aproximar os conceitos técnicos apresentados de situações 
realísticas, nosso objetivo foi criar em você o claro sentimento de 
transformar toda e qualquer tarefa, preferencialmente vinculada a 
um problema, em um algoritmo. Assim, você poderá definir de for-
ma mais confortável e assertiva que caminho tomar na solução de 
um problema de computação.
Bons estudos e até a próxima!
UN
ID
AD
E
4
Desenvolvimento 
de Aplicações
Objetivos
1. Capacitar o aluno a desenvolver uma aplicação básica com 
scripts de log-on.
2. Capacitar o aluno a desenvolver uma aplicação básica para au-
tomação de tarefas cotidianas.
104
Introdução
Olá, aluno(a)!
Chegou o momento de aprofundar seus conhecimentos sobre a sin-
taxe do shell script por meio de exemplos práticos. Sabemos que o 
uso desta linguagem pode facilitar a realização de inúmeras tarefas 
administrativas no Linux. O shell possui estruturas de linguagem 
de programação como variáveis, estruturas de decisão e repetição, 
assim como funções comuns em outras linguagens. A construção e 
utilização de scripts com essa linguagem possibilita a automação de 
tarefas. 
Neste contexto, vamos ver alguns descritores e operadores 
de arquivos; em seguida vamos analisar operadores específicos para 
redirecionamentos de Entrada e Saída, como por exemplo o stdout e 
stderr. Traremos, também, alguns exemplos de dutos (pipes), como 
cat (para concatenar) e sort (para ordená-los).
Prosseguindo com os estudos, vamos identificar algu-
mas variáveis que são definidas internamente pelo shell, podendo 
ser utilizadas durante sua execução. Em seguida, operadores para 
comparação numérica e de strings serão listadas para facilitar na 
manipulação dos valores que as variáveis possuem durante a sua 
inserção nos códigos de shell script. E, claro, para facilitar duran-
te a construção da codificação, há uma série de atalhos que podem 
agilizar essa atividade, por exemplo, o Ctrl+L, que vai limpar todo o 
terminal. 
Por fim, após a reunião de vários conceitos e sintaxe de shell 
script, vamos ver o passo a passo de uma aplicação básica para auto-
mação de tarefas cotidianas.
Preparado(a)? Hora de testar os códigos presentes neste ma-
terial para consolidar seus conhecimentos sobre shell script.
Bons estudos!
105
Desenvolvimento de aplicações 
Neste material, apresentaremos os passos necessários para o de-
senvolvimento de aplicações utilizando scripts em shell. Portanto, 
abordaremos conceitos importantes para entendermos como se or-
ganizam as operações de entrada, processamento e saída em shell. 
Depois, faremos uma introdução aos passos de roteirização de um 
script em tal ambiente, para aplicações básicas com scripts de log-on 
e para automação de tarefas cotidianas.
Descritores de arquivos
Arquivos em ambientes com shell apresentam forma livre, consis-
tindo apenas em uma sequência de caracteres específicos. Em siste-
mas baseados em shell, descritores de arquivos (FD) são indicado-
res abstratos (identificadores), usados para acessar um arquivo ou 
outro recurso de entrada e saída, como um pipe ou soquete de rede. 
Os descritores de arquivos fazem parte da interface de programa-
ção de aplicativos POSIX, sendo inteiros não negativos, geralmente 
representados como do tipo inteiro em linguagens de programação 
que o declarem (como o C).
Cada processo no sistema deve possuir três descritores de ar-
quivos POSIX
padrão, correspondentes aos três fluxos padrão apresentados 
a seguir.
Tabela 1 - Descritores de arquivo
Fonte: Editorial Digital Pages (2019)
106
O shell define três descritores de arquivos relevantes. Veja 
cada um deles a seguir.
Entrada padrão (stdin) 
Como sugere o nome, a entrada padrão corresponde ao des-
critor de arquivo do qual um dado aplicativo lerá a entrada de da-
dos, se não for a ele informado outro descritor de arquivos espe-
cífico. A entrada padrão está normalmente associada a um terminal 
de entrada – usualmente o teclado.
Saída padrão (stdout) 
Corresponde ao descritor ao qual será direcionada a saída de 
qualquer aplicativo, se outro descritor específico não for informa-
do. Está usualmente associada a um terminal de saída – geralmente 
o vídeo.
(Saída de) Erro padrão (stderr) 
Corresponde ao descritor em que são escritos os erros pro-
venientes do processamento. Esse descritor está separado da saída 
padrão para que eventuais erros ou avisos não venham perturbar os 
resultados propriamente ditos. Também está associado a um termi-
nal de saída, geralmente o vídeo.
Todos os programas que fazem interface com o usuário precisam 
receber por algum meio as informações passadas por ele. O meio 
mais antigo e até mesmo comum do usuário passar informações a 
um programa é via teclado. Por isto mesmo, ele é considerado a en-
trada padrão, e é daí que vem o nome stdin (STandarD INput, ou 
Entrada Padrão).
É importante ressaltar que a maioria dos comandos do shell 
funcionam como filtros, possuindo uma única entrada (stdin) e 
duas saídas (stdout e stderr), em que o fluxo é de um caractere por 
CURIOSIDADE
107
vez. Em suma, cada comando do shell filtra os dados de entrada, 
transforma-os após processamento e os escreve na saída padrão, 
ao passo que eventuais mensagens de erro são direcionadas à saí-
da de erros.
Na implementação tradicional do Unix, descritores de ar-
quivos indexam uma tabela de descritores de arquivos por processo 
mantida pelo kernel, que por sua vez indexa uma tabela de arqui-
vos do sistema aberta por todos os processos. Essa tabela registra 
o modo com o qual o arquivo (ou outro recurso) foi aberto: para 
leitura, escrita, anexação e, possivelmente, outros modos. A tabela 
também indexa uma terceira tabela, chamada tabela de inode, que 
descreve os arquivos subjacentes reais. Para executar uma operação 
de entrada ou saída, o processo passa o descritor de arquivo para o 
kernel por meio de uma chamada de sistema, e o kernel acessará o 
arquivo em nome do processo. O processo não tem acesso direto às 
tabelas de arquivos ou inodes.
Já em sistemas operacionais baseados em Linux, o conjunto 
de descritores de arquivos abertos em um processo pode ser aces-
sado sob o caminho / proc/PID/fd/, em que PID é o identificador do 
processo. Em sistemas do tipo Unix, por sua vez, osdescritores de 
arquivos podem se referir a qualquer tipo de arquivo Unix chamado 
em um sistema de arquivos. Assim como arquivos regulares – isso 
inclui diretórios, dispositivos de bloco e caracteres (também cha-
mados de “arquivos especiais”), bem como soquetes de domínio 
Unix e pipes nomeados. Os descritores de arquivo também podem se 
referir a outros objetos que normalmente não existem no sistema de 
arquivos, como pipes anônimos e soquetes de rede.
A estrutura de dados FILE na biblioteca de E/S padrão geral-
mente inclui um descritor de arquivo de baixo nível para o objeto 
em questão nos sistemas semelhantes ao Unix. A estrutura geral de 
dados fornece abstração adicional e é conhecida como um identifi-
cador de arquivo.
108
Operadores em descritores de arquivos 
A lista a seguir apresenta operações típicas em descritores de arqui-
vos em sistemas modernos semelhantes ao Unix. A maioria dessas 
funções é declarada no cabeçalho <unistd.h>, mas algumas estão 
no cabeçalho <fcntl.h>.
Descritores de criação de arquivos
 • open()
 • create()
 • socket()
 • accept()
 • socketpair()
 • pipe()
 • opendir()
 • open_by_handle_at() (Linux)
 • signalfd() (Linux)
 • eventfd() (Linux)
 • timerfd_create() (Linux)
 • memfd_create() (Linux)
 • userfaultfd() (Linux)
Descritores de derivação de arquivos
 • dirfd()
 • fileno()
Operações em um descritor simples de arquivo
 • read(), write()
 • readv(), writev()
109
 • pread(), pwrite()
 • recv(), send()
 • recvmsg(), sendmsg()
 • sendfile()
 • lseek()
 • fstat()
 • fchmod()
 • fchown()
 • fdopen()
 • ftruncate()
 • fsync()
 • fdatasync()
 • fstatvfs()
 • dprintf()
 • vmsplice() (Linux)
Operações em descritores múltiplos de arquivo
 • select(), pselect()
 • poll()
 • epoll() (Linux)
 • kqueue() (para sistemas baseados em BSD).
 • sendfile()
 • splice(), tee() (Linux)
Operações em tabelas de descritores de arquivos
110
 • fcntl()
 • close()
 • closefrom() (BSD e Solaris, apenas)
 • dup()
 • dup2()
Operações que modificam estados de processos
 • fchdir()
 • mmap()
Travamento de arquivos
 • flock()
 • fcntl()
 • lockf()
Soquetes
 • connect()
 • bind()
 • listen()
 • accept()
 • getsockname()
 • getpeername()
 • getsockopt()
 • setsockopt()
 • shutdown()
111
Redirecionamentos
Os recursos de redirecionamento de E/S são úteis para redefinir en-
tradas e saídas padrão em outros descritores de arquivos defini-
dos pelo usuário. Por padrão, stdout e stderr são impressos em um 
terminal de vídeo, mas podemos redirecionar essa saída para um 
arquivo usando o operador >:
$ echo hello hello
$ echo hello > new-file
$ cat new-file
hello
O segundo eco não imprimiu nada no terminal porque redi-
recionamos sua saída para um arquivo chamado new-file. Na ver-
dade, o novo arquivo faz duas coisas: ele cria um arquivo chamado 
new-file – se não existir – e substitui o conteúdo do novo arquivo.
Portanto, se o arquivo novo já existisse e fizéssemos echo 
hello > new file, ele teria apenas o hello nele. Se desejarmos anexar 
ao arquivo, em vez de substituir seu conteúdo, poderíamos usar o 
operador >>:
$ cat new-file
hello
$ echo hello again >> new-file
$ cat new-file
hello
hello again
A tabela a seguir apresenta operadores de redirecionamento 
para os dois principais tipos de shells.
112
Tabela 2 - Redirecionadores
Fonte: Editorial Digital Pages (2019)
113
Dutos (pipes)
Os dutos (pipes) são considerados elos de ligação entre a saída pa-
drão de um programa e a entrada padrão de outro programa.
Considere um exemplo em que se queira concatenar (cat) o conteú-
do de dois arquivos (homens e mulheres), ordená-los (sort) e regis-
trar a saída em um novo arquivo (grupo). Para tal, faz-se:
$ cat homens mulheres $ | vert$ sort $ >$ grupo
Como se observa, o comando cat concatena homens e mulheres em 
uma mesma saída padrão, que por sua vez servirá de entrada padrão 
ao comando sort, que terá sua saída redirecionada ao arquivo gru-
po. Sem o uso de dutos, o comando anterior teria de ser escrito da 
seguinte forma:
$ cat homens mulheres $ >$ homensemulheres
$ sort homensemulheres $ >$ grupo
$ rm homensemulheres
No modo tradicional, a quantidade de comandos se torna maior e é 
necessário o uso de um arquivo temporário homensemulheres.
É também possível o uso de mais de um duto na mesma linha de 
comando, bem como imprimir diretamente a saída do processo por 
meio do comando de impressão lpr.
$ cat homens mulheres $ | vert$ sort $ | vert$ lpr
ACESSE
114
Caracteres especiais e curingas
O shell conta também com um conjunto de caracteres especiais que 
mudam de valor conforme o uso a eles atribuído, chamados de 
curingas. O uso de curingas reduz o esforço de digitação e incenti-
va o uso de convenções ao se nomear de arquivos. Alguns curingas 
são:
* - pode ser substituído por zero ou mais caracteres;
? - pode ser substituído por um caractere;
[...] - pode ser substituído por um dos caracteres entre col-
chetes.
Por exemplo, se tivermos os arquivos casa1, casa2 e casa3, 
podemos concatená-los usando os curingas apropriados, sem a 
menção explícita aos seus nomes. Nesse caso, há três modos de fa-
zê-lo:
 • $ cat casa* $ >$ casas
 • $ cat casa? $ >$ casas
 • $ cat casa[123] $ >$ casas
Tais conceitos podem ser generalizados e superpostos, ou 
seja, ?ama* poderia coincidir com camada, mas não gramada nem 
proclamada. Do mesmo modo, par[iar][sra] passaria por paris, pa-
rar e parra. Além disso, pode-se especificar um intervalo de carac-
teres, de modo que a expressão [a-z] significa qualquer caractere 
minúsculo e [0-9] indica qualquer algarismo.
Há outros caracteres especiais para o shell além dos curingas, 
como por exemplo o ponto e vírgula (;), que tem por finalidade in-
serir comandos múltiplos em uma mesma linha:
$ cd cidade; rm carros* ; cd ..
Desse modo, excluem-se os veículos do diretório cidade e se 
retorna ao diretório anterior.
A tabela a seguir apresenta os caracteres especiais mais co-
mumente utilizados em scripts para shell.
115
Tabela 3 - Caracteres especiais
Fonte - Editorial Digital Pages (2019)
Do mesmo modo, alguns caracteres especiais podem ser 
combinados para realizar a expansão de variáveis em scripts. A 
tabela a seguir fornece exemplos dessa utilização.
Tabela 4 - Expansão de variáveis
116
Fonte - Editorial Digital Pages (2019)
É possível também a combinação de caracteres para a for-
mação de blocos e agrupamentos úteis em scripts. A tabela a seguir 
apresenta tal configuração de uso de caracteres.
Tabela 5 - Blocos e agrupamentos
Fonte - Editorial Digital Pages (2019)
Resumindo, por fim, os curingas de uso em scripts, a tabela a 
seguir traz os mais comuns.
Tabela 6 - Curingas
Fonte - Editorial Digital Pages (2019)
117
Controle de processos
Outra característica de operação que possui notável proveito se re-
laciona ao caractere &. Por serem muitos dos sistemas operacionais 
baseados em shell, tanto multiusuário como multitarefa, vários 
usuários podem utilizar o mesmo computador e executar mais de 
uma tarefa simultaneamente, com recursos compartilhados. Desse 
modo, se desejarmos alocar um determinado programa para ser 
executado em segundo plano, devemos anexar o caractere & após 
um dado comando. 
Considere que um programa chamado vento tomará dias de execu-
ção e não se deseja esperar que ele termine. Para tal, executa-se o 
programa como:
$ chuva &
[1] 1380
Nessa condição, o shell deixará o programa sendo executado 
em segundo plano, informando a ordem dentre os seus processos 
([1]) e a ordem geral do processo em questão (1380). 
O processamento em segundo plano se mostra como um 
recurso poderoso se bem empregado, permitindo que se ocupe o 
tempo ocioso dos computadores, devendo o usuário, no entanto, se 
lembrar de que se o programa não terminar por si próprio, será exe-
cutado até que seu processo seja explicitamente encerrado, seja por 
meio de uma reinicialização, seja por meio do comando kill.
Outra utilidadedesse recurso está baseada na suspensão de 
um aplicativo, realização de outra tarefa e, depois, na continuação 
da execução do aplicativo suspenso.
EXEMPLO
118
Substituição da saída padrão
A substituição de stdin é outra funcionalidade do shell, usada por 
meio de comandos $ ^\backprime\; ^\backprime$, que têm por fi-
nalidade colocar a saída da execução de um programa como argu-
mento de outro, de um modo distinto do configurado com pipes. Por 
exemplo, o comando which (qual) serve para mostrar onde o shell 
está achando determinado aplicativo. Se fizermos:
$ which cat
/bin/cat
Seremos informados que o shell executa o cat que está em /
bin. Se quisermos conhecer as propriedades do arquivo cat, usamos 
ls em conjunto com os comandos:
$ ls $ ^\backprime$which cat $ ^\backprime$
Ao que a saída do which cat servirá de argumento para a exe-
cução do comando ls. Portanto, a linha anterior poderia ser escrita 
como:
$ ls /bin/cat
Mais uma vez, duas operações são realizadas simultanea-
mente: é localizado o cat no sistema de arquivos e são listadas suas 
propriedades. A importância do shell em tal contexto é a de propor-
cionar a comunicação dos aplicativos entre si e com o usuário.
Variáveis do shell
O shell tem como funcionalidade a capacidade de permitir 
que se criem variáveis e que a elas sejam atribuídos valores ar-
mazenados durante a execução do shell. Essas variáveis podem ser 
locais ou de ambiente (globais).
Nomes de variáveis podem ser constituídos de quaisquer ca-
racteres alfanuméricos. Para a criação e atribuição de um valor a 
uma variável na mesma operação, é utilizado o comando set para 
variáveis locais ou setenv para as globais. Por exemplo:
$ set estado = “Amazonas”
119
$ echo $estado Amazonas
Nesse exemplo, echo exibe o conteúdo de $estado na tela. O 
argumento passado para echo é “Amazonas”, pois o shell já fez a 
interpolação da variável $estado na cadeia de caracteres correspon-
dente. Para se fazer referência ao nome de uma variável sem ambi-
guidade, inclui-se seu nome entre chaves { }. 
$ set arquivos= “/textos/livro”
$ cp ${arquivos}/aula5.tex /home/autores
O shell procura por uma variável arquivos e concatena o seu valor 
com o resto da cadeia /aula5.tex, passando o argumento inteiro 
para o comando cp.
O recurso funcional de substituição da saída padrão pode ser 
também explorado para a definição de variáveis a partir da saída de 
aplicativos, que podem ser explorados a contento na construção de 
scripts de shell.
$ set sistema=’uname’
$ echo $sistema Unix
Algumas variáveis são definidas internamente pelo shell, po-
dendo ser utilizadas durante sua execução. A Tabela 7 relaciona al-
gumas das variáveis definidas pelo shell na inicialização.
EXEMPLO
120
Tabela 7 - Variáveis definidas pelo shell (os nomes em minúsculas são de variáveis 
locais e os nomes em maiúsculas são de variáveis globais)
Fonte - Editorial Digital Pages (2019)
Variáveis são, por padrão, cadeias de caracteres (strings). 
Quanto à interpolação de variáveis, ocorre sempre que seu nome 
for invocado diretamente ou entre aspas duplas – qualquer texto 
disposto entre aspas simples será interpretado literalmente. Por 
exemplo:
$ set dia = domingo
$ set aviso = “Amanhã será $dia’’
$ echo $aviso
121
Amanhã será domingo
$ set aviso = “Ontem foi $dia’’
$ echo $aviso Ontem foi $dia
Assim, as aspas simples são um mecanismo para que as in-
terpolações de variáveis sejam ignoradas, ao passo que as duplas 
permitem que as substituições sejam feitas.Para exibir nomes de 
variáveis do shell, o procedimento é simples, tomando apenas algu-
mas linhas de código:
printf “$VARIABLE_NAME\n”
printf “String %s” $VARIABLE_NAME
printf “Número decimal com sinal %d” $VARIABLE_NAME
printf “Número decimal em ponto flutuante %f” $VARIABLE_
NAME
Para exibir o caminho de busca do programa, usa-se a sin-
taxe:
printf “$PATH\n”
ou
printf “O caminho de busca é %s\n” $PATH
Na manipulação de variáveis, é importante, ainda, detalhar 
uma ferramenta bastante funcional: o comando test. Com ele, é 
possível avaliar uma determinada condição dada a partir do valor da 
variável testada. Se a condição for verdadeira, a variável $? é retor-
nada com o valor 0; se falsa, o valor retornado é 1. 
No shell, o comando test pode também ser representado por 
colchetes, para assemelhá-lo mais ao comando test representado 
em outras linguagens de programação.
122
Usa-se a sintaxe:
test 1 = 1; echo $?
A saída dessa condição é igual a 0, pelo fato de ela ser verdadeira. 
Pode também ser escrita da seguinte forma:
[ 1 = 1 ]; echo $?
O comando test dispõe das seguintes opções, listadas na ta-
bela a seguir:
Tabela 8 - Opções do comando test
EXEMPLO
123
Fonte - Editorial Digital Pages (2019)
São válidas para o comando test, assim, as seguintes avalia-
ções lógicas:
 • s1 = s2 - Verdadeiro se a string s1 é igual a s2.
 • s1 != s2 - Verdadeiro se a string s1 for diferente de s2.
 • s1 < s2 - Verdadeiro se a string s1 for menor que s2.
 • s1 > s2 - Verdadeiro se a string s1 for maior que s2.
 Podem ser definidas, ainda, as seguintes classes de caracte-
res para uso com test:
[:alnum:] - Alfanumérica 
[:alpha:] - Alfabética 
[:ascii:] - Caracteres ASCII
124
[:blank:] - Espaço ou TAB 
[:cntrl:] - Caracteres de controle 
[:digit:] - Dígitos decimais 
[:graph:] - Caracteres gráficos
[:lower:] - Caracteres minúsculos 
[:print:] - Não são caracteres de controle 
[:punct:] - Caracteres de pontuação
[:space:] - Whitespace (espaço em branco)
[:upper:] - Caracteres maiúsculos 
[:xdigit:] - Dígitos hexadecimais
História de comandos
Quando o shell é iniciado, passa a armazenar todos os comandos di-
gitados pelo usuário, na sequência em que são inseridos. Esses co-
mandos podem ser então recuperados, editados e novamente pro-
cessados por ele, ao que se dá o nome de história do shell.
O número de comandos que é gravado pelo shell é definido por 
uma variável de ambiente chamada history, ao passo que uma variá-
vel savehist determina a quantidade de comandos a ser gravada no 
history ao final da sessão, para uso futuro.
Além da história de comandos, o programador em script pode 
fazer uso de atalhos de linha de comando, úteis ao manipular listas 
de comandos já inseridos, conforme podemos ver na tabela a seguir:
125
Tabela 9 - Atalhos da linha de comando
Fonte - Editorial Digital Pages (2019)
 É útil, ao programador, aglutinar aos seus conceitos o uso 
mnemônico de comandos de rápida memorização e de importân-
cia frequente, listados na tabela a seguir.
Tabela 10 - Comandos de referência rápida
126
Fonte - Editorial Digital Pages (2019)
Por fim, é preciso que o programador saiba, por trabalhar 
com o prompt do shell de forma massiva, conhecer combinações de 
escape especiais, como as listadas na tabela a seguir.
Tabela 11 - Escapes especiais (tomando o bash como referência)
Fonte - Editorial Digital Pages (2019)
127
Aplicação básica
Para a criação de uma aplicação básica de script de log-on sob shell, 
é preciso antes entender o que é um script de automação: trata-se 
de um ponto de ativação que contém variáveis com valores de liga-
ção correspondentes a esse ponto e com um código fonte construído 
com esse propósito. Vamos detalhar melhor esses elementos a se-
guir.
Ponto de ativação
Ponto de ativação é o elemento que define o contexto de exe-
cução para um script – como por exemplo, quando um determina-
do objeto de negócios é atualizado, ou ainda quando se armazena 
um certo valor em um campo. Na construção de aplicativos bási-
cos, cada ponto de ativação tem reservado para si um aplicativo dito 
“assistente”, que cria cada tipo de ponto de ativação.
Variáveis e valores de ligação
É possível especificar as variáveis que determinam como as 
informações são inseridas ou recebidas de um script nos aplica-
tivos de assistente. As variáveis não são consideradas elementos 
obrigatórios, mas, se usadas, simplificam a quantidade de código 
utilizado, facilitando suareutilização.
Código fonte
É possível a gravação de código fonte em um aplicativo ex-
terno para futura importação como aplicativo. Como alternativa, é 
possível a inserção de código diretamente nos aplicativos do as-
sistente, devendo tal código ser gravado em linguagens suportadas 
pelos mecanismos de script em uso.
Desenvolvimento de aplicação básica para 
automação de tarefas cotidianas 
Neste tópico, vamos apresentar um roteiro específico para a cons-
trução de uma aplicação básica executada para automação de tare-
fas cotidianas, para que você se familiarize com os primeiros passos 
no desenvolvimento de tais scripts. Nossa intenção, aqui, é agregar 
128
ao seu conhecimento os conceitos de forma rápida, mas aprofun-
dada, de modo que você seja capaz de ter uma estratégia rápida de 
raciocínio ao lidar com problemas de maior relevância prática.
Roteiro de aplicação
O processo de automação de comandos sempre segue, via de regra, 
um teste manual. Normalmente, uma ou mais rodadas de testes 
manuais já seriam suficientes para testar a funcionalidade da auto-
mação de código, pois isso implica que casos de teste manuais pre-
viamente existentes já foram executados ao menos uma vez.
Como exemplo, vamos considerar um caso de teste manual – 
um simples log-on no Gmail.
Figura 1 - Caso de teste manual – log-on no Gmail.
Fonte - Print do autor (2019)
A pergunta lançada agora é: como transformar isso em um 
script de automação? A Figura 2 a seguir ilustra o fluxo necessário 
para tal transformação.
Figura 2 - Etapas para elaboração de script de automação.
Fonte: Editorial Digital Pages (2019)
129
A seguir, vamos detalhar cada etapa do diagrama anterior.
Estado da automação
Esse elemento não é nada mais do que um estado particular da apli-
cação a ser definida para uma determinada etapa a ser executada. 
Isso é especialmente importante em dois cenários. Vejamos quais 
são eles a seguir.
Para começar o teste
Nesse caso, precisamos que o navegador esteja disponível e 
seja lançado. Dessa questão vem a nova pergunta: como identificar 
o passo a passo e escrever isso no mundo da automação? Temos a 
opção de iniciar o navegador usando instruções programáticas ou 
podemos usar a caixa de diálogo “gravar e executar configuração” 
para definir as propriedades. Definir tais propriedades corretamen-
te é um fator crucial, e muitas vezes essa é a razão pela qual uma 
parte específica do código funcionará em uma máquina e não fun-
cionará nas outras.
Para executar uma determinada etapa
Para que uma etapa seja executada, precisamos que a etapa 
anterior seja concluída. Para fazer isso manualmente, podemos es-
perar até que a execução da etapa seja concluída e que a página seja 
totalmente carregada. Deve-se usar a sincronização ou esperar até 
que as instruções do script de automação aguardem que o estado de-
sejado seja implementado.
É importante tomar cuidado com uma situação particular: 
quando se está executando o mesmo código para vários conjuntos 
de dados, é preciso se certificar de que se retorna à automação, ao 
estado em que deve estar antes de se iniciar a próxima iteração.
Passos do teste
Podemos categorizar as etapas do teste manual em três ca-
tegorias:
130
 • Entrada de dados: As etapas de entrada de dados são aquelas 
em que o usuário insere algumas informações como entrada 
para seu AUT;
 • Mudanças de etapas do estado de automação: Essas etapas 
são aquelas que farão com que uma mudança aconteça na au-
tomação. Pode-se incluir uma nova página, um determinado 
campo sendo visível, uma caixa de edição sendo editável etc.;
 • Combinação: Como o nome indica, esta é a combinação dos 
tipos anteriores. Podemos tomar como exemplo uma caixa de 
seleção, que quando ativada pode deixar um certo campo ati-
vo. Nesse caso, devemos inserir o valor lógico verdadeiro para 
o campo de caixa de seleção, o que também resulta em um es-
tado de automação.
No caso de teste anterior, apenas os passos dos dois primei-
ros tipos existem.
O pré-requisito para se criar um script de automação usando 
qualquer ferramenta é gastar algum tempo analisando a ferramen-
ta, bem como a automação associada: é preciso ver como ambos in-
teragem entre si.
Os passos de entrada de dados não são muito diferentes nos 
métodos de automação e manual. Tudo o que se faz é inserir os da-
dos, mas a maneira como se faz referência ao campo é diferente. 
Como a máquina executará as etapas, basta nos certificarmos de 
que nos referimos aos campos na automação de uma maneira que a 
ferramenta entenda.
Para a mudança de etapas de automação/combinação em um 
cenário manual, executa-se a ação – clicando, verificando ou inse-
rindo – e verifica-se a alteração de uma só vez. Em um cenário de 
automação, todavia, isso não é possível. Portanto, é preciso adicio-
nar etapas para ação e validação/verificação.
131
Verificação e validação
Verificação e validação são tarefas independentes entre si, mas 
aplicadas em conjunto, cuja finalidade é avaliar se um produto, ser-
viço ou sistema cumpre os requisitos e especificações e se atinge sua 
finalidade. No caso de programação, o conceito se refere a compo-
nentes críticos de um sistema computacional. Na maior parte das 
vezes, os termos verificação e validação são seguidos pelo termo 
“independente”, o que indica que tais tarefas devem ser executa-
das por uma terceira parte que não possui interesse na consecução 
dessas tarefas.
Em termos individuais do contexto da computação, a tarefa 
de validação se refere à garantia de que o programa concebido aten-
da às necessidades dos usuários, envolvendo, em linhas gerais, sua 
aceitação e adequação. Já a tarefa de verificação atesta se o código 
desenvolvido se encontra em conformidade com os requisitos e es-
pecificações de uso, sendo um processo de verificação interna. Sem 
verificação e validação, a intenção de testar é perdida. Normalmen-
te, você terá que usar um ponto de verificação, com muitas decla-
rações condicionais e também comandos de laços para a construção 
de lógica.
Dados de teste
Algumas das perguntas que podemos responder como requisitos de 
dados de teste são:
 • Onde colocar essa informação?
 • Preciso codificar ou não?
 • Tenho de assumir preocupações com segurança?
 • Preciso me preocupar com reutilização de código?
Quando se observa um script de teste manual, ter os dados de 
teste, o nome de usuário e a senha disponíveis é uma das condições 
prévias para iniciar o teste. Testes buscam por falhas ou erros, exer-
citando o código como um todo, ou partes dele.
132
Resultados
Para um caso de teste manual, pode-se inserir o resultado de cada 
etapa na coluna “resultado real”. O arquivo de resultado de uma 
ferramenta de automação contém o resultado de cada etapa quando 
executado.
As ferramentas de automação atualmente possuem recursos 
de relatório muito robustos. No entanto, talvez ainda seja preciso 
adaptar os resultados do teste. Portanto, devem-se incluir etapas 
para escrever frequentemente no arquivo de resultado, para que se 
saiba exatamente o que aconteceu durante a execução. Se a ferra-
menta que se está usando não suporta a gravação no arquivo de re-
sultado gerado, é recomendável ter, pelo menos, uma planilha ou 
bloco de notas associado a cada teste para inserir comentários sobre 
o status da execução.
Pós-operações 
Uma vez que você terminou o teste, ele não precisa ser mencionado 
explicitamente no caso de teste manual para fechar o navegador ou 
fechar a automação. Na ocorrência do caso de teste de automação, 
você pode incluir essas etapas no script.
Seguindo cada passo e determinando suas características 
mais evidentes, podemos, assim, condensar as funções de cada um.
 • Passo 1: Pré-condição, em que se abre o navegador com a URL 
do Gmail de forma programada;
 • Passos 2 e 7: Instrução de sincronização, importante para ga-
rantir que a automação atinja o estado desejado antes da exe-
cução da próxima etapa;
 • Passos 3 e 4: Entrada de dados, em que todos os dadossão co-
dificados no script – embora não seja aconselhável, é um bom 
começo;
 • Passo 5: alteração da etapa de automação, que inclui clicar no 
botão Entrar;
133
 • Passos 6 e 8: Comentários;
 • Passos 9 e 11: Declaração condicional, em que se tenta verifi-
car se o login foi bem-sucedido, examinando se há um link na 
caixa de entrada na página resultante;
 • Passo 10: Caixa de mensagens, criada para visibilidade;
 • Passos 12 e 13: Estas são as atividades de limpeza, em que se 
sai da conta e fecha-se o navegador.
Em conclusão, podemos observar como um script de automa-
ção se desdobra facilmente quando se tem um script manual bem 
escrito e um conjunto de diretrizes básicas a serem seguidas.
O conhecimento em shell script é fundamental na área de Redes de 
computadores por facilitar na automação de tarefas. Nessa unidade, 
foram apresentados os elementos básicos para que o aluno possa 
tanto desenvolver uma aplicação básica com scripts de log-on, como 
se ver capaz de criar aplicações que permitam a ele automatizar ta-
refas ditas cotidianas. Foi ressaltada a importância de se perfazer 
uma tradução robusta de um caso de teste manual para sua versão 
automatizada, em que cada elemento da automação corresponde a 
um elemento cuidadosamente traçado no fluxo de se associar cada 
etapa de automação a um objetivo específico.
Esse processo deve reforçar no aluno o interesse pela necessidade de 
se verificar e validar cada pequeno cenário envolvido na descrição 
apurada da aplicação que pretende desenvolver. Surge daí a impor-
tância de que o aluno tenha absorvido em si a importância de pro-
jetar um bom código, ao mesmo tempo em que este tenha sido bem 
conectado à aplicação que se deseja desenvolver. No caso específico 
da compreensão de como estruturas de programação devem atuar 
ou tomar parte nesse campo de conhecimento, o aluno consegue 
realizar a coesão de suas habilidades de programação com as ne-
cessidades que o usuário final tem de ver automatizadas, de forma 
SINTETIZANDO
134
transparente, as tarefas que deseja seguir ao utilizar uma aplicação. 
Por isso, é de extrema relevância entendermos as minúcias de cada 
etapa de um script de automação.
135
Referências Bibliográficas
UNIDADE 1
KUROSE, J. F.; ROSS, K. W. Redes de computadores e a internet: 
uma abordagem top-down. 5. ed. São Paulo: Pearson, 2010.
PEARSONHIGHERD. Leituras dos autores James F. Kurose e Keith 
W. Ross. Disponível em: <www.pearsonhigherd.com/kurose-
-ross/>. Acesso em: 30 abr. 2019.
PIMENTEL, C. J. L. Comunicação digital. São Paulo: Editora Bras-
port, 2007.
UNIDADE 2
HAYKIN, S. Sistemas de comunicação analógicos e digitais. 4 ed. 
Porto Alegre: Editora Bookman, 2007.
INTERNET ENGINEERING TASK FORCE. Internet protocol, version 
6 (IPv6) specification. Disponível em: <https://www.ietf.org/rfc/
rfc2460.txt>. Acesso em: 16 maio 2019.
KUROSE, J. F.; ROSS, K. W. Redes de computadores e a internet: uma 
abordagem top-down. 5. ed. São Paulo: Pearson, 2010.
MARTINS, M. R. A. Integração sistêmica em middleware. Orienta-
dor: José Sidnei Colombo Martini. 2010. Dissertação (Mestrado em 
Engenharia Elétrica) – Escola Politécnica, USP, São Paulo, 2010.
PIMENTEL, C. J. L. Comunicação digital. São Paulo: Editora Bras-
port, 2007.
PROAKIS, J. Digital communications. 5. ed. Nova Iorque: Editora 
McGraw-Hill Science, 2007.
SKLAR, B. Digital communications: fundamentals and applica-
tions. 2. ed. Nova Jersey: Editora Prentice Hall, 2008.
TANENBAUM, A. S. Redes de computadores. 4. ed. São Paulo: Edi-
136
tora Campus, 2010.
UNIDADE 3
MEDINA, M.; FERTIG, C. Algoritmos e programação: teoria e práti-
ca. São Paulo: Novatec Editora, 2005.
SOUZA, M. A. F. et al. Algoritmos e lógica de programação. São Pau-
lo: Thomson Learning, 2006.
FORBELLONE, A. L. V.; EBERSPÄCHER, H. F. Lógica de programa-
ção. São Paulo: Pearson Prentice Hall, 2005.
UNIDADE 4
FORBELLONE, A. L. V; EBERSPÄCHER, H. F. Lógica de programação. 
São Paulo: Pearson Prentice Hall, 2005.
MEDINA, M; FERTING, C. Algoritmos e programação: teoria e prá-
tica. São Paulo: Novatec, 2005.
SOUZA, M. A. F. de. et al. Algoritmos e lógica de programação. São 
Paulo: Thomson Learning, 2006.

Mais conteúdos dessa disciplina