Redes de Computadores Aula 4 - Land
Transcrição
Redes de Computadores Aula 4 - Land
Redes de Computadores Aula 4 Aula passada Protocolo em camadas Aplicações C/S x P2P Web Aula de hoje DNS Sockets Programação com sockets Figueiredo – 2011 DNS: Domain Name System Domain Name System: Pessoas: muitos idenftificadores: Banco de dados distribuído implementado em hierarquia de servidores de nome (name servers) Protocolo na camada de aplicação máquinas, roteadores, se comunicam para resolver os nomes (traduzir nome/IP) Função central da Internet sendo implementada na camada de aplicação Complexidade está nas extremidade da rede – princípio da Internet Por que não centralizado? CPF, passaporte, nome Máquinas na Internet: Endereço IP (32 bits) – usado para endereçar hosts “nome”, e.g., ww.yahoo.com – usado por nós Prob: Como mapear entre endereço IP e nome? Figueiredo – 2011 Banco de Dados Distribuído e Hierárquico Root DNS Servers br DNS servers com DNS servers yahoo.com DNS servers amazon.com DNS servers ufrj.br DNS servers edu DNS servers poly.edu umass.edu DNS servers DNS servers land.ufrj.br DNS servers cos.ufrj.br DNS servers Figueiredo – 2011 DNS: Root name servers contacted by local name server that can not resolve name root name server: contacts authoritative name server if name mapping not known gets mapping returns mapping to local name server a Verisign, Dulles, VA c Cogent, Herndon, VA (also LA) d U Maryland College Park, MD g US DoD Vienna, VA h ARL Aberdeen, MD j Verisign, ( 21 locations) e NASA Mt View, CA f Internet Software C. Palo Alto, CA k RIPE London (also 16 other locations) i Autonomica, Stockholm (plus 28 other locations) m WIDE Tokyo (also Seoul, Paris, SF) (and 36 other locations) 13 root name servers worldwide b USCISI Marina del Rey, CA l ICANN Los Angeles, CA Figueiredo – 2011 TLD e Authoritative Servers Top-level domain (TLD) servers: responsible for com, org, net, edu, etc, and all top-level country domains uk, fr, ca, jp, br. Network Solutions maintains servers for “com” TLD Educause for “edu” TLD NIC.br for “br” TLD Authoritative DNS servers: organization’s DNS servers, providing authoritative hostname to IP mappings for organization’s servers (e.g., Web, mail). can be maintained by organization or service provider Figueiredo – 2011 Local Name Server does not strictly belong to hierarchy each ISP (residential ISP, company, university) has one. also called “default name server” when host makes DNS query, query is sent to its local DNS server acts as proxy, forwards query into hierarchy Figueiredo – 2011 DNS name resolution example root DNS server 2 Host at cis.poly.edu wants IP address for gaia.cs.umass.edu iterated query: ❒ contacted server replies with name of server to contact ❒ “I don’t know this name, but ask this server” 3 4 TLD DNS server 5 local DNS server dns.poly.edu 1 8 7 6 authoritative DNS server dns.cs.umass.edu requesting host cis.poly.edu gaia.cs.umass.edu Figueiredo – 2011 DNS name resolution example recursive query: root DNS server 2 ❒ puts burden of name 3 7 resolution on contacted name server ❒ heavy load? 6 TLD DNS server local DNS server dns.poly.edu 1 5 4 8 authoritative DNS server dns.cs.umass.edu requesting host cis.poly.edu gaia.cs.umass.edu Figueiredo – 2011 DNS: caching and updating records once (any) name server learns mapping, it caches mapping cache entries timeout (disappear) after some time TLD servers typically cached in local name servers Thus root name servers not often visited update/notify mechanisms under design by IETF RFC 2136 Figueiredo – 2011 Comunicação entre Processos Como processos se comunicam? o que é um processo? IPC: sinais, pipes, etc Como processos em máquinas distintas se comunicam? Sockets, RPC Figueiredo – 2011 Sockets Interface entre aplicação e sistema operacional (system call) Processo escreve/le dados do socket similar a arquivo Dados escritos de um lado do socket chegam ao outro lado processo Controlado pelo desenvolvedor processo socket socket TCP with buffers, variables TCP with buffers, variables Internet Controlado pelo SO camada de transporte faz a entrega Aplicação escolhe serviço de transporte (TCP, UDP), seta alguns parâmetros (buffer, etc) Figueiredo – 2011 Endereçando Processos Como endereçar um processo em outra máquina? Processos precisam ter endereço único na rede! Endereço IP identifica a máquina na Internet é suficiente? Não! Mais de um processo em execução na mesma máquina Porta: identifica processo dentro da máquina Ex. 146.164.34.2, porta 80 (servidor HTTP do PESC) Figueiredo – 2011 Programação Socket com TCP Processo cliente Processo servidor Cria socket local Cria socket local escolhe porta escolhe porta local Especifica IP e porta do processo servidor Aguarda conexão do cliente na porta Estabelece conexão do socket Ao receber conexão do cliente, cria novo socket para comunicação com cliente conexão TCP Permite atender múltiplos clientes Figueiredo – 2011 Endereçando Processos com TCP IP e porta identifica processo em uma máquina Como identificar socket dentro do mesmo processo? Utilizar IP/porta de origem! 4-tupla (origem e destino) identifica conexão TCP processo processo socket socket socket IP: 146.164.35.46 Porta: 2198 IP: 146.164.34.2 Porta: 80 processo socket IP: 146.164.35.5 Porta: 3121 Figueiredo – 2011 Funcionamento Processo Servidor (146.164.34.2, 80) create socket, port=80, for incoming request: welcomeSocket = ServerSocket() Processo Cliente TCP connection setup wait for incoming connection request connectionSocket = welcomeSocket.accept() create socket, connect to 146.164.34.2, port=80 clientSocket = Socket() send message using clientSocket (write) receive message from connectionSocket (read) Receive message from clientSocket (read) write reply to connectionSocket (write) close connectionSocket (close) close clientSocket Figueiredo – 2011 Trabalho Aprender o uso de sockets Aplicação cliente/servidor (bem simples) a ser definido em breve Comunicação entre processos usando sockets TCP, sequencial ou com threads Sua linguagem de programação preferida mas tem que usar sockets! Figueiredo – 2011