jpalmeida-ip-2016-02-aula06-redes-como-interfaces · 21/11/16 1 interfaces e periféricos redes...

8
21/11/16 1 Interfaces e Periféricos Redes como interfaces Prof. João Paulo A. Almeida ([email protected] ) Histórico • Surgimento e popularização das redes criou a necessidade e oportunidade de usá-las como mecanismo de interação entre um computador e “periféricos” • Ao mesmo tempo miniaturização e barateamento de disposiIvos de rede permiIram que “periféricos” se tornassem autônomos e conectados diretamente na rede • Mainframe com seu terminais... – Terminais ficaram mais poderosos e com mais periféricos que poderiam ser comparIlhados Evolução das redes Rede B Rede C Rede A Evolução das redes Rede B Rede C Rede A Rede B Rede C Rede A Abstração da infraestrutura de rede como interface Rede B Rede C Rede A Abstração da infraestrutura de rede como interface

Upload: vudien

Post on 03-Jan-2019

217 views

Category:

Documents


0 download

TRANSCRIPT

21/11/16

1

InterfacesePeriféricosRedescomointerfaces

Prof.JoãoPauloA.Almeida([email protected])

Histórico

•  Surgimentoepopularizaçãodasredescriouanecessidadeeoportunidadedeusá-lascomomecanismodeinteraçãoentreumcomputadore“periféricos”

•  AomesmotempominiaturizaçãoebarateamentodedisposiIvosderedepermiIramque“periféricos”setornassemautônomoseconectadosdiretamentenarede

•  Mainframecomseuterminais...–  TerminaisficarammaispoderososecommaisperiféricosquepoderiamsercomparIlhados

Evoluçãodasredes

Rede B

Rede C Rede A

Evoluçãodasredes

Rede B

Rede C Rede A

Rede B

Rede C Rede A

Abstraçãodainfraestruturaderedecomointerface

Rede B

Rede C Rede A

Abstraçãodainfraestruturaderedecomointerface

21/11/16

2

Rede B

Rede C Rede A

Latência(atrasosnacomunicação)Comportamentoimprevisíveldarede FalhaseParIcionamentoderede

Rede B

Rede C Rede A

Segurança

Rede B

Rede C Rede A

Heterogeneidade

Fonte: http://www.cs.wustl.edu/~schmidt/PDF/MT-Orbix4.pdf

Programaçãodesistemasdistribuídos

•  Comoprogramarainteraçãoentreumaunidadedeprocessamentoeosperiféricos(e/ououtrasunidadesdeprocessamentocomseusperiféricos?

•  ModelosdeprogramaçãoparasistemasdistribuZdos–  SocketsemTCP/IP

•  AdifusãodaInternetlevouàhegemoniadoInternetProtocol(IP)

•  EntãooproblemadeinteraçãocomperiféricosemredesetraduzeminteraçãoviaIP

Arquiteturacomsockets

Application Program

Socket Layer

TCP UDP

IP

Drivers

Kernel Space

Application Program

21/11/16

3

Sockets

•  Interfacedeso]wareparacomunicaçãodeumprogramadeusuário(partedeaplicação)comapilhadeprotocolosTCP/IP

•  Bibliotecadechamadas/API–  provêfunções,Iposdedados,estruturasdedadoseconstantes

–  Flexível,simplesdeusar,padronizado(portabilidade)•  AAPIBSDsocketsprovêumaabstraçãosimilaraum

sistemadearquivosparasockets(open,close,read,write)–  BSDsockets(origináriosdoBSD4.1Unixem1981)sãoaformamaispopular(APImaispopular)disponívelem:FreeBSD,Linux,Windows,MacOSX,...

http://pages.cpsc.ucalgary.ca/~ijirasek/courses/cpsc441/slides/sockets.ppt#3

Sockets

•  Clienteeservidorsecomunicamatravésdeumpardesockets–  EndereçoIP(32-bitsnaversão4)+númerodaporta(16-bits=64Kportas)

–  OpardesocketsidenIficaumaconexão•  Socketstambémpodemserusadosparacomunicaçãoentre

processosnoUNIX(mesmoIP,portasdiferentes)

http://lrcwww.epfl.ch/sc250_2004/lecture_notes/sc250_04_7.pdf

Endereço IP e Portas

message

agreed portany port socketsocket

Internet address = 138.37.88.249Internet address = 138.37.94.248

other portsclient server

Fonte: Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 4 © Pearson Education 2005

ArquiteturacomsocketsIPePortaApplication Program

Socket Layer

TCP UDP

IP

Drivers

Kernel Space

Application Program

Sockets:usandoserviçosnoníveldetransporte

•  Protocolosnoníveldeaplicação(ex.,HTTP,DNS,SMTP)usamosserviçosdacamadadetransporte

•  Acamadadetransporteprovê:•  Comunicaçãoentreprocessos

–  MulIplexação/demulIplexaçãobaseadonoconceitodeportas•  Entregaconfiáveldedados(emordem):TCP

–  connecIonsetup(handshake)–  congesIoncontrol–  flowcontrol–  Stream(SOCK_STREAM)

•  NãoconfiávelesemordemgaranIdadedatagramas:UDP–  Paraseusar“best-effort”IP–  Datagram(SOCK_DGRAM)

http://lrcwww.epfl.ch/sc250_2004/lecture_notes/sc250_04_7.pdf

Arquiteturacomsockets

Application Program

Socket Layer

TCP UDP

IP

Drivers

Kernel Space

Application Program

21/11/16

4

Arquiteturacomsockets

Application Program

Socket Layer

TCP UDP

IP

Drivers

User Space

Kernel Space

Arquiteturacomsockets

Application Program

Socket Layer

TCP UDP

IP

Drivers

User Space

Kernel Space

Arquiteturacomsockets

Application Program

Socket Layer

TCP UDP

IP

Drivers

User Space

Kernel Space

Application Program

Socket Layer

TCP UDP

IP

Drivers

User Space

Kernel Space

network

Arquiteturacomsockets

Application Program

Socket Layer

TCP UDP

IP

Drivers

User Space

Kernel Space

Application Program

Socket Layer

TCP UDP

IP

Drivers

User Space

Kernel Space

network

driver

Arquiteturacomsockets

Application Program

Socket Layer

TCP UDP

IP

Drivers

User Space

Kernel Space

Application Program

Socket Layer

TCP UDP

IP

Drivers

User Space

Kernel Space

network

internet

driver

Cliente/Servidorcomsockets

•  Cliente:–  Iniciaocontatocomoservidor

•  (temquesaberoendereçoIPouhostname,eaporta)

–  Normalmenterequisitaexecuçãodeumserviço•  Servidor:

–  Esperapassivamente(emumacertaporta)–  Normalmenterodaconstantementeàesperadeclientes

21/11/16

5

Sockets Create socket

bind a port to the socket

SERVER

listen for incoming connections

accept an incoming

connection

read from the connection

write to the connection

close connection

Create socket

connect to server's port

read from the connection

write to the connection

CLIENT

loop loop

ServidorTCP

•  sock_init()Createthesocket

•  bind()Registerportwiththesystem

•  listen()EstablishclientconnecIon

•  accept()AcceptclientconnecIon

•  read/writeread/writedata

•  close()shutdown

ClienteTCP

•  sock_init()Createsocket

•  connect()SetupconnecIon

•  write/readwrite/readdata•  close()Shutdown

Sockets

Create socket

bind a port to thesocket

SERVER

listen for incomingconnections

accept anincoming

connection

read from theconnection

write to theconnection

int socket(int domain, int type, int protocol)sockfd = socket(PF_INET, SOCK_STREAM, 0);

int bind(int sockfd, struct sockaddr *server_addr, socklen_t length)bind(sockfd, &server, sizeof(server));

int listen( int sockfd, int num_queued_requests)listen( sockfd, 5);

int accept(int sockfd, struct sockaddr *incoming_address, socklen_t length)newfd = accept(sockfd, &client, sizeof(client)); /* BLOCKS */

int read(int sockfd, void * buffer, size_t buffer_size)read(newfd, buffer, sizeof(buffer));

int write(int sockfd, void * buffer, size_t buffer_size)write(newfd, buffer, sizeof(buffer));

client é o endereço do cliente que se conectou

server inclui a porta previamente definida

começa a aceitar conexões (máximo 5 na fila)

Sockets

Create socket

CLIENT

connect to Serversocket

read from theconnection

write to theconnection

int socket(int domain, int type, int protocol)sockfd = socket(PF_INET, SOCK_STREAM, 0);

int connect(int sockfd, struct sockaddr *server_address, socklen_t length)connect(sockfd, &server, sizeof(server));

int read(int sockfd, void * buffer, size_t buffer_size)read(sockfd, buffer, sizeof(buffer));

int write(int sockfd, void * buffer, size_t buffer_size)write(sockfd, buffer, sizeof(buffer));

server inclui IP e porta previamente definida

Sockets:Java(ClienteTCP)

21/11/16

6

Sockets:Java(ClienteTCP)2 Sockets:Java(ServidorTCP)

http://lrcwww.epfl.ch/sc250_2004/lecture_notes/sc250_04_7.pdf

Sockets:Java(ServidorTCP)

http://lrcwww.epfl.ch/sc250_2004/lecture_notes/sc250_04_7.pdf

Servidorsingle-threadedxmulI-threaded

• Váriosclientespodemfazerpedidosaomesmotempoparaoservidor.Oservidorentãopode:

–  a)atenderumclienteporvez;outrosclientestemqueesperar(servidornãoconcorrente,ousingle-threaded)

–  b)atenderváriosclientessimultaneamente(servidorconcorrenteoumulI-threaded)•  Dequalquerforma,muitosdisposiIvosrequeremacessodedicadoou

pelomenos“serializado”(ouseja,nãopermitemacessoparalelo).•  Asoluçãoemmuitoscasoséacriaçãodespools,filasdetrabalhosa

seremefetuados

Non-concurrentserversock_init()Createthesocketbind()Registerportwiththesystemwhile(1)Starttheloop.Thisloopwill{serviceeachrequestsequenIallylisten()EstablishclientconnecIonaccept()AcceptclientconnecIonread/writeread/writedata}Endloopclose()Shutdown

ConcurrentserverSock_init()Createthesocketbind()Registerportwiththesystemlisten()EstablishclientconnecIonaccept()AcceptclientconnecIonfork()Createachildprocesswhichwillnowcommunicatewithclientread/writeread/writedatainchildprocessexit()exitchildprocess

21/11/16

7

Sockets

•  Problemas??

Sockets

•  OrdemdosbytesnosIposdedadosdependemdaarquiteturadamáquina

•  hostorder:–  12345678(Motorola)bigendian–  78563412(Intel)li�leendian

networkorder:12345678•  Funçõesdeconversão:

–  u_longhtonl(u_longhostlong);–  u_shorthtons(u_shorthostshort);–  u_longntohl(u_longnetlong);–  u_shortntohs(u_shortnetshort);

Sockets

•  Baixoníveldeabstração...–  Principalmentequandooquevocêqueriafazererapedirparaoutramáquinaexecutarumserviço...ousimplesmenteusarumprocedimentoremoto

–  EndereçosIPs/DNS/portas–  DetectarIme-outs–  Threading

•  Comocodificarosdadosdeumaaplicação?–  Porexemplo,comoenviarumalista,umarray,umstruct,umobjeto

•  Temquesecriarum“protocolo”sempre...

Protocolo

•  Definiçãoclássica–  Mensagenseregrasque

determinamaçõesaseremtomadasdeacordocomarecepçãodasmensagens

•  Maisprecisamente...–  EnIdades(deprotocolo)

cooperandoatravésdeummeiodecomunicação

Entity A Entity B

Communication means

Cooperation

Protocolo

•  Definir/especificar:–  Formatosdemensagens

•  TantoIposdedadosabstratosquantoaformadesecodificá-losnarede

–  Comportamento•  Emquemomentocadamensagempodeserenviadaeoquedeveserfeitoparacadalidarcomcadamensagem

Protocolo/serviço

User A User Q

QA-Service provider

SAP A SAP Q Q-req A-req

A-ind Q-ind

21/11/16

8

Implementaçãodoprotocolo

Lower Level Service provider

TCP/IP

User C User A

PE A PE C

Service provider

sockets socket

LSI C API SAP C SAP A

PDU exchange

Implementaçãodoprotocolo

Lower Level Service provider

TCP/IP

User C User A

PE A PE C

Service provider

sockets socket

LSI C API SAP C SAP A

PDU exchange

BIOSBIOS

Cabeamento ou rádio

Exemplos:protocolosparaimpressão

•  Lineprinterprotocol•  h�p://www.ie�.org/rfc/rfc1179.txt•  IPP•  h�p://tools.ie�.org/html/rfc2910•  SMB/CIFS•  h�p://www.samba.org/cifs/docs/what-is-smb.html

Exemplos:protocolosparacomparIlhamentodedisco•  NFS

•  SMB/CIFS•  h�p://www.samba.org/cifs/docs/what-is-smb.html