Redes de Computadores Aula 4 Aula passada Protocolo em camadas Aplicações C/S x P2P Aula de hoje DNS Sockets Programação com sockets Web
DNS: Domain Name System Pessoas: muitos idenftificadores: 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? Domain Name System: 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?
Banco de Dados Distribuído e Hierárquico Root DNS Servers com DNS servers br DNS servers edu DNS servers yahoo.com DNS servers amazon.com DNS servers ufrj.br DNS servers poly.edu DNS servers umass.edu DNS servers cos.ufrj.br DNS servers land.ufrj.br DNS servers
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 e NASA Mt View, CA f Internet Software C. Palo Alto, CA (and 36 other locations) 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) k RIPE London (also 16 other locations) i Autonomica, Stockholm (plus 28 other locations) m WIDE Tokyo (also Seoul, Paris, SF) 13 root name servers worldwide b USC ISI Marina del Rey, CA l ICANN Los Angeles, CA
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
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
DNS name root DNS server resolution example 2 Host at cis.poly.edu wants IP address for gaia.cs.umass.edu 3 4 5 TLD DNS server iterated query: contacted server replies with name of server to contact I don t know this name, but ask this server local DNS server dns.poly.edu 1 8 requesting host cis.poly.edu 7 6 authoritative DNS server dns.cs.umass.edu gaia.cs.umass.edu
DNS name resolution example root DNS server recursive query: 2 3 puts burden of name resolution on contacted name server 7 6 TLD DNS server heavy load? local DNS server dns.poly.edu 5 4 1 8 requesting host cis.poly.edu authoritative DNS server dns.cs.umass.edu gaia.cs.umass.edu
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
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
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 camada de transporte faz a entrega processo socket TCP with buffers, variables Controlado pelo SO Controlado pelo desenvolvedor Internet Aplicação escolhe serviço de transporte (TCP, UDP), seta alguns parâmetros (buffer, etc) processo socket TCP with buffers, variables
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)
Programação Socket com TCP Processo cliente Cria socket local escolhe porta local Especifica IP e porta do processo servidor Estabelece conexão do socket conexão TCP Processo servidor Cria socket local escolhe porta Aguarda conexão do cliente na porta Ao receber conexão do cliente, cria novo socket para comunicação com cliente Permite atender múltiplos clientes
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 socket IP: 146.164.35.46 Porta: 2198 processo socket socket IP: 146.164.34.2 Porta: 80 processo socket IP: 146.164.35.5 Porta: 3121
Funcionamento Processo Servidor (146.164.34.2, 80) create socket, port=80, for incoming request: welcomesocket = ServerSocket() TCP connection setup wait for incoming connection request connectionsocket = welcomesocket.accept() receive message from connectionsocket (read) write reply to connectionsocket (write) Processo Cliente create socket, connect to 146.164.34.2, port=80 clientsocket = Socket() send message using clientsocket (write) Receive message from clientsocket (read) close connectionsocket (close) close clientsocket
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!