You are on page 1of 18

Redes de Computadores

Arquitecturas, Protocolos
e Modelos de Referncia

Escola Superior de Tecnologia e Gesto


Instituto Politcnico de Bragana
Maro de 2006

Arquitecturas de redes
Uma Arquitectura de Rede um modelo arquitectnico abstracto que
permite descrever a organizao e o comportamento dos sistemas
que constituem a rede
um modelo arquitectnico baseia-se num conjunto de princpios gerais e define
regras de comportamento
o carcter abstracto permite descrever de forma clara e concisa conceitos e
relaes essenciais entre os componentes da rede

O modelo deve ser essencialmente funcional e permitir


identificar as funes necessrias comunicao
organizar as funes em componentes (decompor/agrupar funes de acordo com
diferenas/semelhanas ou por se basearem em mecanismos comuns)
relacionar (estruturar) os componentes funcionais
definir regras de comportamento e relaes entre os sistemas e os seus
componentes para efeitos de comunicao e cooperao

A partir dum modelo geral e universal possvel especificar e


desenvolver solues particulares e concretas baseadas no modelo

Arquitecturas,
Protocolos e Modelos

Redes de Computadores

Necessidade e objectivos
 As funes a realizar numa rede tm um elevado grau de complexidade
devido a vrios factores
grande diversidade de funes a realizar

as funes so de natureza e complexidade muito diferentes (do nvel fsico ao nvel de aplicao)
e podem ser realizadas de formas muito diversas, dependendo dos sistemas, das tecnologias e
dos servios disponveis em cada momento

grande diversidade de aplicaes a suportar, com caractersticas (tipo e


volume de informao, padres de trfego) e requisitos (desempenho) muito
diferentes

para garantir flexibilidade e adaptabilidade a um ambiente em permanente evoluo, uma rede de


dados no pode ser projectada e optimizada tendo em conta servios ou aplicaes particulares

evoluo tecnolgica

novas solues tecnolgicas devem poder ser exploradas para evitar obsolescncia, melhorar o
desempenho e/ou reduzir custos e devem poder ser incorporadas sem necessidade de introduzir
alteraes radicais (e com custos elevados) nos sistemas

ambiente de comunicao

caracterizado por sistemas heterogneos e dispersos, que geram trfego assncrono (bursty), e
que so ligados por sistemas de transmisso no totalmente fiveis

Arquitecturas,
Protocolos e Modelos

Redes de Computadores

Arquitecturas em camadas
Uma arquitectura de rede no poder ser baseada num
modelo monoltico, por vrias razes
dificuldade de concepo e de desenvolvimento
dificuldade de manuteno e de alterao (evoluo tecnolgica)
inflexibilidade (dificuldade de aplicar a situaes diferentes ou a novas
situaes)

A soluo consiste em decompor o problema global e


complexo num conjunto de problemas mais simples e
tratveis (modularidade), permitindo assim uma
abordagem sistemtica (flexibilidade e adaptabilidade)
Os modelos arquitectnicos adoptados em redes
baseiam-se na organizao das funes em mdulos e
na sua estruturao hierrquica, de que resultam
Arquitecturas em Camadas (Layered Architectures)
Arquitecturas,
Protocolos e Modelos

Redes de Computadores

Arquitecturas em camadas Princpios


Arquitecturas em Camadas baseiam-se em trs
princpios
Independncia entre camadas - uma camada
encapsula as funes que realiza, no sendo visvel
do exterior da camada a forma como essas funes
so realizadas (mas apenas o servio que oferece)
Camadas adjacentes comunicam atravs duma
interface - a camada inferior oferece um servio
camada superior atravs da interface
Valorizao dos servios - o servio oferecido por
uma camada camada superior acrescenta valor ao
servio recebido da camada inferior
Arquitecturas,
Protocolos e Modelos

Redes de Computadores

Arquitecturas em camadas Vantagens

Reduo da complexidade de concepo, desenvolvimento e manuteno


Possibilidade de desenvolvimentos independentes das vrias camadas, o
que pressupe a definio das interfaces entre camadas (e os servios
associados)
Flexibilidade de implementao, visto ser possvel escolher as tecnologias
e os algoritmos de controlo mais adequados a cada funo ou grupo de
funes
Possibilidade de introduzir alteraes numa camada, para explorar novas
tecnologias entretanto disponveis ou algoritmos de controlo mais eficientes
Possibilidade de suportar diferentes aplicaes com base num nmero
reduzido de interfaces (servios) comuns
Concepo e anlise de sistemas complexos com diferentes graus de
abstraco
Adopo de standards, o que permite a produo em massa (com a
consequente reduo de custos) e o suporte de produtos por diferentes
fabricantes (o que aumenta a diversidade de escolha e a flexibilidade das
solues)
Simplificao do ensino e aprendizagem

Arquitecturas,
Protocolos e Modelos

Redes de Computadores

Regras de comunicao Protocolos


Numa arquitectura em camadas os sistemas que constituem a rede
aparecem funcionalmente organizados e estruturados em camadas
- uma camada atravessa transversalmente todos os sistemas
Uma camada constituda por entidades (processos, recursos)
responsveis pela realizao das funes especficas dessa
camada
Entidades de uma mesma camada (peer entities) residentes em
sistemas diferentes cooperam para construir o servio oferecido
pela camada - o que requer a troca de mensagens de controlo e de
sincronizao, para alm de mensagens que contm dados (de
camadas superiores)
Esta comunicao pressupe regras, isto , um Protocolo
Numa arquitectura em camadas, os Protocolos aparecem
igualmente estruturados em camadas - a comunicao entre dois
sistemas pode ento ser decomposta e descrita com base na
comunicao que ocorre em cada camada
Arquitecturas,
Protocolos e Modelos

Redes de Computadores

Protocolos, Interfaces e Servios

Um Protocolo um conjunto de regras de comunicao entre entidades


residentes na mesma camada (peer entities), em sistemas diferentes; com
excepo da camada protocolar mais baixa, esta comunicao (horizontal)
lgica (ou virtual), pois as entidades de uma camada comunicam usando
o servio da camada inferior (e este princpio aplicado recursivamente)
Entidades (programas)
Sistemas (computadores)
Um Protocolo contm trs tipos de elementos
Sintaxe (formato dos dados, cdigos, nveis de sinal, etc.)
Semntica (conjunto de procedimentos e mecanismos suportados em
informao de controlo para coordenao e manipulao de erros)
Temporizaes (adaptao de velocidades, sincronizao, sequenciao, etc.)

Exemplos: Conduo, conversa,


Um servio disponibilizado atravs de uma interface e requer a interaco
entre entidades residentes em camadas adjacentes no mesmo sistema;
esta comunicao (vertical) corresponde ao fluxo real da informao no
sistema
Uma arquitectura fica caracterizada pelo tipo de estruturao e pela
definio das funes, dos protocolos e dos servios de cada camada

Arquitecturas,
Protocolos e Modelos

Redes de Computadores

Modelo de comunicao

Uma entidade da camada N+1 s mantm conversao (atravs de um


protocolo no nvel N+1) com uma outra entidade do mesmo nvel
Na verdade, no h comunicao directa entre duas entidades do mesmo
nvel; genericamente, cada entidade entrega os dados a uma entidade da
camada inferior at que os dados sejam fisicamente transmitidos atravs
do meio de transmisso; no destino, tem lugar o processo inverso
Entre entidades de dois nveis adjacentes, a comunicao faz-se atravs
de uma interface bem definida que consiste num conjunto de
primitivas/funes de acesso aos servios fornecidos

Arquitecturas,
Protocolos e Modelos

Redes de Computadores

Pontos de Acesso ao Servio


(SAPs)

Os servios da camada N so
oferecidos a Entidades (N+1) em
Pontos de Acesso ao Servio - (N)SAPs (Service Access Points)
Um (N)-SAP constitui a interface
lgica entre Entidades (N) e (N+1)

um (N)-SAP servido por uma e uma s


Entidade (N) e usado por uma e uma s
Entidade (N+1)
uma Entidade (N) pode servir vrios (N)SAPs e uma Entidade (N+1) pode usar
vrios (N)-SAPs

Um (N)-SAP identificado por um


endereo-(N) - (N)-address - que o
identifica univocamente na interface
entre as camadas (N) e (N+1)
Exemplo: no sistema telefnico, a
ficha de ligao do telefone
rede equivale a um SAP e o nmero
de telefone o identificador
correspondente
Arquitecturas,
Protocolos e Modelos

Redes de Computadores

10

A arquitectura secretria- tradutorfilsofo


Entidades (N+1) comunicam por
meio dum protocolo (N+1)
usando o servio disponibilizado
pela camada (N) atravs da
interface entre as camadas
A forma como o servio
realizado no visvel do
exterior da camada
Os servios so usados
recursivamente pelas vrias
camadas
A camada N do sistema B
recebe o mesmo objecto que foi
enviado pela camada n do
sistema A
Arquitecturas,
Protocolos e Modelos

Redes de Computadores

11

Arquitectura protocolar simplificada

 Modelo simplificado de 3 camadas:

Acesso rede

Transporte

Troca de dados entre o computador e a rede (acesso ao servio disponibilizado pela rede)
O computador origem fornece rede o endereo do computador de destino o que permite
rede encaminhar os pacotes de informao at ao n de destino
Transferncia de dados extremo-a-extremo (pretende-se em muitos casos que seja
ordenada e fivel)
Independente da rede e da aplicao

Aplicao

Exemplo: transferncia de ficheiros, correio electrnico, acesso a computador remoto, etc.

Arquitecturas,
Protocolos e Modelos

Redes de Computadores

12

Modelo de referncia necessidade

Os fabricantes de computadores desenvolveram arquitecturas prprias com


o objectivo de permitir a ligao em rede dos seus sistemas
embora baseadas em princpios e conceitos semelhantes caracterizavam-se por
diferenas irreconciliveis, no que se refere ao nmero de camadas, funes e
protocolos de cada camada, tipo de controlo e servios disponibilizados

Por outro lado, comearam a implantar-se redes pblicas de comunicao


de dados, baseadas em diferentes tecnologias, protocolos de acesso e
servios
Esta situao tornava os utilizadores muito dependentes das solues de
um nico fabricante e tornava difcil explorar os servios entretanto
oferecidos pelos operadores de redes (em alternativa ao aluguer de
circuitos)
Alternativas a solues especficas de cada fabricante (fechadas) exigiam
recurso a redes pblicas de dados, usando protocolos e interfaces (servios)
normalizados
interligao de equipamentos de diferentes fabricantes usando protocolos
universais

Surgiu assim naturalmente a necessidade de um Modelo Arquitectnico de


Referncia - papel que veio a ser desempenhado pelo Modelo de
Referncia de Sistemas Abertos (Modelo OSI) desenvolvido pela ISO

Arquitecturas,
Protocolos e Modelos

Redes de Computadores

13

Modelo de Referncia OSI (1)


O Modelo de Referncia de Sistemas Abertos (Open Systems
Interconnection Reference Model) define regras gerais de
interaco entre sistemas abertos, isto , sistemas que obedecem a
normas universais de comunicao (por oposio a sistemas
fechados ou proprietrios)
O Modelo OSI cria as bases para a especificao e aprovao de
standards por organizaes de normalizao reconhecidas
internacionalmente - embora os standards no faam parte do
modelo
O Modelo OSI define princpios, conceitos e relaes entre
componentes um modelo abstracto da descrio da
comunicao entre sistemas (e no um modelo de implementao,
i.e., no concretiza servios, protocolos e tecnologias)
O Modelo OSI geral e flexvel - embora definido no contexto das
redes de computadores que se desenvolveram durante a dcada de
70, continuam a ser usados como modelo de descrio de redes e
servios que se desenvolveram desde ento
Arquitecturas,
Protocolos e Modelos

Redes de Computadores

14

Modelo de Referncia OSI (2)

O Modelo OSI prope uma organizao funcional em sete camadas, de


acordo com os seguintes princpios

As funes so decompostas e organizadas em camadas


Cada camada realiza um conjunto de funes relacionadas, suportadas num protocolo
Cada camada fornece servios camada superior escondendo-lhe os detalhes de
implementao
Cada camada usa servios da camada inferior
Mudanas internas numa camada no implicam mudanas nas outras camadas

O Modelo OSI no se pode reduzir a esta viso simplificada de sete


camadas protocolares - pois inclui um conjunto extremamente rico de
conceitos e princpios, nomeadamente

Princpios de estruturao em camadas


Modelo e Tipos de Servio
Descrio das Funes a suportar pelos Protocolos das diferentes camadas
Princpios de Endereamento

Arquitecturas,
Protocolos e Modelos

Redes de Computadores

15

Camadas OSI
Alguns
Alunos
Sonham
Ter
Redes
Logo
Feita

Arquitecturas,
Protocolos e Modelos

Redes de Computadores

16

Comunicao em ambiente OSI


A comunicao entre uma
Aplicao X e uma Aplicao
Y em sistemas diferentes pode
ser descrita pela sequncia
seguinte:
Para comunicar com a
Aplicao Y, a Aplicao X
usa os servios da camada 7
As entidades da camada 7 de
X comunicam com as
entidades da camada 7 de Y
usando um protocolo da
camada 7
O protocolo da camada 7 usa
os servios da camada 6
e assim sucessivamente
Arquitecturas,
Protocolos e Modelos

Redes de Computadores

17

Camada de aplicao
A camada mais prxima do utilizador
Fornece acesso dos utilizadores ao
ambiente OSI, atravs dos seus
Processos de Aplicao, bem como a uma
srie de Servios de Informao
distribudos

Fornece servios de rede s


aplicaes do utilizador
Transferncia de ficheiros
Correio electrnico
Navegadores WWW

Funes de gesto
Arquitecturas,
Protocolos e Modelos

Redes de Computadores

18

Camada de apresentao
Permite independncia aos processos
de Aplicao sobre as diferenas de
representao dos Dados (Formatos e
cdigos de Dados)
Resoluo de diferenas sintcticas e
negociao da sintaxe de transferncia
Assegura que a informao enviada pela
camada de aplicao interpretada pela
camada de aplicao do outro sistema

Arquitecturas,
Protocolos e Modelos

Formato dos dados


Estrutura dos dados
Converso de dados
Compresso de dados
Encriptao de dados

Redes de Computadores

19

Camada de Sesso
Fornece uma estrutura de controlo para
comunicao entre aplicaes, isto ,
controlo e disciplina do dilogo
estabelecendo, gerindo e terminando
conexes (sesses) fim-a-fim, entre
aplicaes cooperantes:
Sesso
Dilogo
Troca de dados

Controlo do dilogo entre processos e


mecanismos de sincronizao (que
permitem a recuperao de uma
transferncia interrompida, pela anlise
de check points)
Arquitecturas,
Protocolos e Modelos

Redes de Computadores

20

10

Camada de transporte
Transferncia de informao extremo a
extremo entre equipamentos terminais
Servio independente do servio de Rede
(ou dos servios nativos de subredes)
Adaptao ao servio de Rede
(fragmentao, multiplexagem de fluxos de
dados)
Separa os protocolos de aplicao dos
protocolos de fluxo de dados
Efectua sequenciao e fragmentao
Fornece recuperao de erros (servio
fivel) e controlo de fluxo fim-a-fim
Portas
Exemplos: TCP (fivel), UDP (no fivel)
Arquitecturas,
Protocolos e Modelos

Redes de Computadores

21

Camada de rede
Estabelecimento, manuteno e
fecho das conexes:
No necessrio em links directos (s
com Redes)

Fornece conectividade e seleco


de caminhos entre dois sistemas
terminais
Encaminhamento
Endereos lgicos

Exemplo: IP
Arquitecturas,
Protocolos e Modelos

Redes de Computadores

22

11

Camada de Ligao de dados


Activa, mantm e desactiva um link
fsico fivel, estruturando a informao
(encapsulando os dados) em tramas
(Frames), em que as camadas
superiores, em especial a 3, assumem
que a transmisso da informao ser
feita de forma transparente e SEM
erros.
Para isso realiza controlo de erros e de fluxo
no link
Endereos fsicos
Acesso ao meio fsico
Exemplos: HDLC, LAPB (X.25), LAPD
(Canal D / RDIS), LAPF (Frame Relay),
PPP, LLC (LANs)
Arquitecturas,
Protocolos e Modelos

Redes de Computadores

23

Camada fsica
Lida com a transmisso e recepo no
estruturada de uma sequncia de bits sobre o
meio fsico, tratando em especial aspectos
mecnicos, elctricos, funcionais e
procedimentais de acesso ao meio fsico:
P. ex.:
tipo de comunicao (simplex, half-duplex, fullduplex)
quantos volts para representar um bit 1 ou 0
qual a durao de cada bit
etc.

Arquitecturas,
Protocolos e Modelos

Dbitos de transmisso
Conectores fsicos
Meio fsico
Exemplo: RS-232
Redes de Computadores

24

12

Funes protocolares

As Funes a realizar pelos Protocolos so naturalmente diferentes de camada para camada,


podendo no entanto haver funes idnticas realizadas em mais do que uma camada, embora em
contextos e com objectivos diferentes
Funes tpicas

Endereamento
Necessidade de identificar, inequivocamente, a entidade correspondente no destino (endereo ou porta)
Tipos de comunicao
Simplex: dados viajam num s sentido (televiso)
Half-duplex: dados viajam nos dois sentidos mas no simultaneamente (rdio polcia)
Full-duplex: dados viajam nos dois sentidos simultaneamente (telefone)
Controlo de fluxo
Efectuado pela entidade que recebe dados
Limita (controla) o dbito do emissor
Pode ser necessrio em vrias camadas protocolares (n a n ou extremo a extremo)
Controlo de erros
Proteco contra perda ou corrupo de dados
Implica deteco de erros e retransmisso de dados no aceites pelo receptor
Pode ser necessrio em vrias camadas protocolares (n a n ou extremo a extremo)
Entrega ordenada de dados
Protocolos orientados conexo garantem que os PDUs chegam ordenados ao destino
Se os PDUs seguirem trajectos diferentes na rede podem chegar ao destino desordenados, podendo ser
reordenados se necessrio
PDUs so numerados sequencialmente para se poder garantir a sua (re)ordenao
Multiplexagem
Uso do mesmo meio para transmisso de dados de diferentes aplicaes
Encapsulamento de dados
Fragmentao e reconstruo de dados
Controlo de ligaes (conexes)

Arquitecturas,
Protocolos e Modelos

Redes de Computadores

25

Unidades de dados

As unidades de dados transferidas atravs da interface entre a camada (N+1) e a


camada (N) designam-se por Unidades de Dados de Servio-(N) e esto
relacionadas com as necessidades dos utilizadores do servio
(N) - SDU - Service Data Unit
As unidades de dados trocadas entre entidades protocolares na camada (N)
designam-se por Unidades Protocolares de Dados-(N) e esto relacionadas com a
operao do protocolo
(N) - PDU - Protocol Data Unit
No caso mais simples a um (N)-SDU corresponde um (N)-PDU - o protocolo da
camada (N) forma um (N)-PDU encapsulando o (N)-SDU com informao adicional,
que pode incluir

informao de controlo do protocolo (PCI - Protocol Control Information)


endereos (ou outros identificadores)
cdigo para deteco de erros

PCI Protocol Control Information


PDU Protocol Data Units
SDU Service Data Units
Arquitecturas,
Protocolos e Modelos

Redes de Computadores

26

13

Encapsulamento

Arquitecturas,
Protocolos e Modelos

Redes de Computadores

27

Fragmentao e reconstruo de
dados
Uma camada protocolar pode ter necessidade de fragmentar
(segmentar) as unidades de dados (SDUs) recebidas da camada
superior, transportando-as, aps encapsulamento, em vrios PDUs
Para ser possvel reconstituir no destino as unidades de dados
iniciais (SDUs) necessrio que a informao de controlo (PCI)
acrescentada pelo protocolo permita relacionar os segmentos (por
exemplo, por meio de nmeros de sequncia e indicao do ltimo
segmento)
Razes para segmentar
Controlo de erro mais eficiente
Atrasos menores na rede
Buffers mais pequenos nos ns da rede

Desvantagens
Overheads adicionais (maior nmero de PDUs e mais informao de controlo
por PDU)
Mais interrupes nos processadores (tipicamente uma por segmento)
Tempos de processamento superiores (funes adicionais a realizar)
Arquitecturas,
Protocolos e Modelos

Redes de Computadores

28

14

Encapsulamento e segmentao

Arquitecturas,
Protocolos e Modelos

Redes de Computadores

29

Modos de operao dos protocolos

A comunicao entre entidades protocolares na mesma camada


pode ser realizada de dois modos:
1. No-orientado conexo (connectionless) - as unidades de
dados (PDUs) so transportadas de forma independente, sem
necessidade de estabelecimento prvio de qualquer associao
lgica (conexo) entre as entidades protocolares

No se tem informao prvia se o destino est apto a receber os


PDUs, confiando na rede para que lhe sejam entregues
Exemplo: carta entregue nos CTT

2. Orientado conexo (connection oriented) - a transferncia de


unidades de dados (PDUs) s possvel aps o estabelecimento
de uma conexo entre as entidades protocolares

Fases de uma conexo: estabelecimento, transferncia de dados,


terminao
Exemplo: comunicao telefnica

Arquitecturas,
Protocolos e Modelos

Redes de Computadores

30

15

Arquitectura Protocolar TCP/IP


Arquitectura dominante
Desenvolvida inicialmente no mbito da ARPANET, que comeou por
ser uma rede experimental financiada pelo Departamento de Defesa
dos EUA, e que ligava universidades e centros de investigao
Os protocolos TCP/IP foram especificados e implementados antes da
maior parte dos protocolos baseados no modelo OSI
Um grande nmero de servios e aplicaes disponveis actualmente
usam TCP/IP

Princpios
As funes de comunicao so estruturadas em mdulos
Entidades comunicam com entidades homlogas (peer) noutros
sistemas
Num sistema uma entidade
Usa servios de outras entidades
Fornece servios a outras entidades
Servios podem ser fornecidos a camadas no adjacentes (ao contrrio do
modelo OSI)

Arquitecturas,
Protocolos e Modelos

Redes de Computadores

31

Modelo de Camadas TCP/IP


A pilha TCP/IP compreende 4
camadas conceptualmente
idnticas s correspondentes
camadas OSI

Arquitecturas,
Protocolos e Modelos

Redes de Computadores

32

16

Modelo de Camadas TCP/IP

Aplicao servios de utilizador

O TCP/IP combina todas as tarefas relacionadas com a aplicao numa nica camada

HTTP, FTP, telnet

Transporte (Transmission Control Protocol/User Datagram Protocol)

Trata da qualidade de servio e fiabilidade


TCP, protocolo fivel, orientado ligao e que efectua, se necessrio, fragmentao e
controlo de fluxo (adaptado transferncia de ficheiros)
UDP, protocolo no-fivel, no orientado ligao e sem garantias de sequenciao
(adaptado transferncia de udio/vdeo em tempo real)

Internet (IP)

Formato dos dados, codificao, controlo de dilogo, gesto da sesso,

Encarrega-se de fazer chegar os pacotes ao destino, independentemente do caminho e das


redes escolhidas para o seu transporte
Implementado em computadores (hosts) e ns intermdios (routers)
Opera em modo no orientado conexo
Pacotes, endereamento lgico, encaminhamento. Internet Protocol (IP)

Acesso rede (subrede)

Trata dos aspectos necessrios para que os pacotes IP consigam ser enviados atravs da
ligao fsica
Trata de todos os aspectos especificados nas camadas fsica e de ligao de dados do
modelo OSI: especificaes elctricas, mecnicas, procedimentais e funcionais; Dbitos,
distncias, conectores fsicos; Quadros (frames); Endereamento fsico; Sincronizao,
controlo de fluxo, controlo de erros.

Arquitecturas,
Protocolos e Modelos

Redes de Computadores

33

OSI vs. TCP/IP

No modelo OSI, a arquitectura veio


primeiro e a implementao dos
protocolos depois
A arquitectura TCP/IP resulta do
desenvolvimento prvio dos seus
protocolos
O modelo OSI assenta em 7 camadas
e o modelo TCP/IP em 4; mas em
ambos as funcionalidades fim-a-fim
so providenciadas acima (e inclusive)
da camada de transporte
O modelo OSI prev comunicao
orientada e no orientada conexo
na camada de rede, enquanto que na
camada de transporte suporta apenas
comunicao orientada conexo
O modelo TCP/IP suporta apenas o
modo no orientado conexo na
camada de rede, mas suporta ambos
na camada de transporte
O modelo OSI visto essencialmente
como uma ferramenta de estudo e
classificao; na prtica o modelo
TCP/IP que impera

Arquitecturas,
Protocolos e Modelos

Redes de Computadores

34

17

TCP/IP - Fronteiras

Arquitecturas,
Protocolos e Modelos

Redes de Computadores

35

Sumrio

Arquitecturas,
Protocolos e Modelos

Redes de Computadores

36

18

You might also like