jpalmeida-ip-2016-02-aula06-redes-como-interfaces · 21/11/16 1 interfaces e periféricos redes...
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