Módulo 3 Módulo 3 – Nível Transporte Redes de Computadores - LTIC António Casimiro 2º Semestre 2014/15 Adaptado a partir de: Computer Networking: A Top Down Approach , 6th edition. Jim Kurose, Keith Ross, Addison‐Wesley, 2012. Versão customizada por José Rufino e António Casimiro RC‐LTIC © 2011‐2015 J. Rufino, A. Casimiro © 1996‐2010 J. Kurose and K. Ross, All Rights Reserved. Módulo 3 Nível de transporte - Tópicos Serviços de transporte, abstrações de programação Multiplexagem e desmultiplexagem Serviço não fiável: UDP Serviço fiável: TCP Controlo de fluxo Controlo de congestão RC‐LTIC © 2011‐2015 J. Rufino, A. Casimiro © 1996‐2010 J. Kurose and K. Ross, All Rights Reserved. 3‐2 Módulo 3 Serviços e protocolos de transporte • • • • Do ponto de vista da aplicação a comunicação é feita usando um serviço de transporte A aplicação usa uma interface fornecida pelo serviço de transporte para realizar a comunicação O protocolo de transporte é executado em cada extremo: – Emissor: divide as mensagens da aplicação em segmentos, que passa para o nível de rede – Recetor: reagrupa os segmentos para formar a mensagem, que passa à aplicação Há vários protocolos de transporte – Internet: TCP e UDP RC‐LTIC aplicação transporte rede lig. dados físico aplicação transporte rede lig. dados físico © 2011‐2015 J. Rufino, A. Casimiro © 1996‐2010 J. Kurose and K. Ross, All Rights Reserved. 3‐3 Módulo 3 Interfaces do serviço de transporte • Biblioteca com funções na linguagem C para comunicação – Que podem ser chamadas pela aplicação • Função para obter um “comunicador” – Usada no emissor e no recetor: socket() • Como se fosse o “telefone” • O tipo de serviço de transporte é especificado neste passo • Funções para estabelecimento de ligação – Usada no emissor : connect() – Usadas no recetor: listen(), accept() • Funções para transmissão – Usada no emissor : send(), sendto() – Usada no recetor: recv(), recvfrom() RC‐LTIC © 2011‐2015 J. Rufino, A. Casimiro © 1996‐2010 J. Kurose and K. Ross, All Rights Reserved. 3‐4 Módulo 3 Sockets TCP RC‐LTIC © 2011‐2015 J. Rufino, A. Casimiro © 1996‐2010 J. Kurose and K. Ross, All Rights Reserved. 3‐5 Módulo 3 Sockets UDP RC‐LTIC © 2011‐2015 J. Rufino, A. Casimiro © 1996‐2010 J. Kurose and K. Ross, All Rights Reserved. 3‐6 Módulo 3 Nível de transporte vs nível de rede • Nivel de rede: comunicação lógica entre nós (máquinas) da rede – Ex: Comunicação entre estações de correios, entrepostos, etc • Nível de transporte: comunicação lógica entre processos (aplicações) – O nível de transporte usa os serviços do nível de rede – O serviço prestado pelo nível de transporte é melhor que o serviço do nível de rede – Ex: Comunicação entre casas • Num nó podem existir vários processos – Diferentes processos usam diferentes sockets (portos) – Diferentes nós usam diferentes endereços IP RC‐LTIC © 2011‐2015 J. Rufino, A. Casimiro © 1996‐2010 J. Kurose and K. Ross, All Rights Reserved. 3‐7 Módulo 3 Nível de transporte - Tópicos Serviços de transporte, abstrações de programação Multiplexagem e desmultiplexagem Serviço não fiável: UDP Serviço fiável: TCP Controlo de fluxo Controlo de congestão RC‐LTIC © 2011‐2015 J. Rufino, A. Casimiro © 1996‐2010 J. Kurose and K. Ross, All Rights Reserved. 3‐8 Módulo 3 Multiplexagem/desmultiplexagem Desmultiplexagem no recep: Entrega dos segmentos recebidos ao socket correto = socket P3 aplicação Multiplexagem no emissor: Recolha de dados de vários sockets, encapsulamento com cabeçalhos (usados na desmultiplexagem) = processo P1 P1 aplicação P4 P2 aplicação transporte transporte transporte rede rede ligação ligação ligação físico físico físico Nó 1 RC‐LTIC rede Nó 2 Nó 3 3‐9 © 2011‐2015 J. Rufino, A. Casimiro © 1996‐2010 J. Kurose and K. Ross, All Rights Reserved. Módulo 3 Como funciona a desmultiplexagem • O nó recebe datagramas IP – Cada datagrama tem o endereço IP da origem e o endereço IP do destino – Cada datagrama contém um segmento do nível de transporte – Cada segmento tem o porto de origem e o porto de destino – Um socket é identificado pelo número de porto, único num nó – Porto bem conhecido: HTTP=80 32 bits Porto origem Porto destino Outros campos cabeçalho Dados da aplicação (mensagem) • O endereço IP e o porto são Formato do segmento TCP/UDP usados para entregar segmentos ao socket correto RC‐LTIC © 2011‐2015 J. Rufino, A. Casimiro © 1996‐2010 J. Kurose and K. Ross, All Rights Reserved. 3‐10 Módulo 3 Desmultiplexagem sem ligação • Serviço de transporte UDP não requer ligação – Cada pedido de transmissão tem de indicar o destino – Na programação: sendto (socket, message, destination) • Quando o serviço de transporte num nó recebe um segmento UDP: – Verifica o porto de destino no segmento – Encaminha o segmento UDP para o socket com esse porto • Um socket sem ligação (UDP) pode receber datagramas com vários endereços IP de origem e/ou vários portos de origem – Isto é possível porque o socket não está “ligado” a outro socket RC‐LTIC 3‐11 © 2011‐2015 J. Rufino, A. Casimiro © 1996‐2010 J. Kurose and K. Ross, All Rights Reserved. Módulo 3 Desmultiplexagem sem ligação Porto: 6428 P2 PO: 6428 PD: 9157 cliente IP: A P1 P1 P3 PO: 9157 PD: 6428 PO: 6428 PD: 5775 servidor IP: C PO: 5775 PD: 6428 cliente IP: B PO (Porto de Origem) Nota: fornece o “endereço de retorno” PD (Porto de Destino) RC‐LTIC © 2011‐2015 J. Rufino, A. Casimiro © 1996‐2010 J. Kurose and K. Ross, All Rights Reserved. 3‐12 Módulo 3 Desmultiplexagem com ligação • Serviço de transporte TCP requer ligação - Os pedidos de envio não indicam destino, pois a ligação já existe - Na programação: send (socket, message) • Um nó pode ter vários sockets TCP: • Um socket TCP é identificado por: – – – – – Várias ligações em simultâneo Endereço IP origem Número porto origem Endereço IP destino Número porto destino • P.ex., os servidores HTTP têm um socket para cada cliente que se liga • Estes 4 valores são usados para entregar o segmento ao socket correto RC‐LTIC – Se a ligação não for persistente, cada pedido origina a criação de um novo socket no servidor 3‐13 © 2011‐2015 J. Rufino, A. Casimiro © 1996‐2010 J. Kurose and K. Ross, All Rights Reserved. Módulo 3 Desmultiplexagem com ligação Porto: 80 P1 P4 P5 P2 P1P3 P6 PO: 5775 PD: 80 IP-O: B IP-D: C cliente IP: A PO: 9157 PD: 80 IP-O: A IP-D: C PO (Porto de Origem) PD (Porto de Destino) RC‐LTIC servidor IP: C PO: 9157 PD: 80 IP-O: B IP-D: C cliente IP: B IP-O (IP de Origem) IP-D (IP de Destino) © 2011‐2015 J. Rufino, A. Casimiro © 1996‐2010 J. Kurose and K. Ross, All Rights Reserved. 3‐14 Módulo 3 Módulo 3 – Sumário: Serviços de transporte, multiplexagem e desmultiplexagem Ao concluir o estudo deste tema deverá ter capacidade para: • Enumerar os serviços prestados pelo nível de transporte • Identificar as operações de multiplexagem / desmultiplexagem como fundamentais para a interface entre o nível de transporte e as aplicações • Descrever os conceitos de porto e de porto bem conhecido e relacioná-los com o modelo cliente-servidor RC‐LTIC © 2011‐2015 J. Rufino, A. Casimiro © 1996‐2010 J. Kurose and K. Ross, All Rights Reserved. 3‐15 Módulo 3 Bibliografia • Versão Customizada por José Rufino e António Casimiro de: Computer Networking: a top-down approach featuring the Internet. 6th Edition. J. Kurose and K. Ross. Addisson Wesley. 2012. Capítulo 3 • TCP/IP Tutorial and Technical Overview, IBM Redbooks, December 2006. • Outros elementos de estudo complementares indicados na página da unidade curricular. RC‐LTIC © 2011‐2015 J. Rufino, A. Casimiro © 1996‐2010 J. Kurose and K. Ross, All Rights Reserved. 3‐16