TCP vs UDP CRD Filipe Pacheco
TCP/IP Stack ping Telnet HTTP FTP Skype MPlay SNTP Application TCP/IP ICMP TCP UDP IGMP Transport RARP IP ARP Network Data Link Ethernet GSM/GPRS Physical
TCP e UDP TCP UDP IP Ethernet
UDP User Datagram Protocol Simples e rápido Necessita de poucos recursos Sem necessidade de ligação prévia Permite broadcast e multicast
Broadcast e Multicast Broadcast Multicast Enviar para todos os computadores de uma rede Multicast Enviar para um grupo de computadores na Internet Cada grupo é definido por um endereço IP único (há um conjuntos de endereços reservados para este efeito) Necessita de configuração de routers usando protocolo IGMP
Broadcast e Multicast Broadcast Enviar para todos os computadores de uma rede Net ID: 192.168.1.0 Net ID: 192.168.2.0 A B C D E F G GTW Mensagem Broadcast
Broadcast e Multicast Broadcast Pode ser enviado para uma rede remota Net ID: 192.168.1.0 Net ID: 192.168.2.0 A B C D E F G GTW 1 Mensagem Broadcast Para 192.168.5.0 Net ID: 192.168.4.0 Net ID: 192.168.5.0 Net ID: 192.168.8.0 GTW 2 L K N M H J
Broadcast e Multicast Multicast Enviar para grupo de computadores Net ID: 192.168.1.0 Net ID: 192.168.2.0 A B C D E F G GTW 1 Net ID: 192.168.4.0 Net ID: 192.168.5.0 Net ID: 192.168.8.0 GTW 2 L K N M H J
Broadcast e Multicast Multicast IGMP Cada computador comunica com o seu Gateway Net ID: 192.168.1.0 Net ID: 192.168.2.0 A B C D E F G GTW 1 Eu sou do grupo 1 Eu sou do grupo 1 Eu sou do grupo 1 Net ID: 192.168.4.0 Net ID: 192.168.5.0 Net ID: 192.168.8.0 Eu sou do grupo 1 GTW 2 Eu sou do grupo 1 L K N M H J
Broadcast e Multicast Multicast IGMP E os Gateways entre si, memorizando em que redes há computadores de um determinado grupo. Net ID: 192.168.1.0 Net ID: 192.168.2.0 A B C D E F G GTW 1 Grupo 1 Aqui Grupo 1 Aqui Net ID: 192.168.4.0 Net ID: 192.168.5.0 Net ID: 192.168.8.0 GTW 2 Eu tenho PCs do grupo 1 Grupo 1 Aqui L K N M H J
UDP - Envio Para enviar um pacote UDP basta: Abrir um “socket” (indicando porta local respectiva) Enviar o pacote indicando endereço IP de destino e porta respectiva Repetir 2 até que não precisemos mais do serviço Fechar o socket
UDP - Recepção Para receber dados UDP: Abrir um “socket” indicando o porto local Se porto já em utilização temos um erro Ficar em espera. Quando chega um pacote recebemos também informação sobre a origem do mesmo Repetir 2 durante o tempo que quiseremos Fechar o socket
Cuidados com o UDP Nada nos garante que há alguém do outro lado a ouvir Podem perder-se pacotes Podem ser entregues pacotes fora de ordem
TCP Ultrapassa as limitações do UDP garantindo: Que há alguém do outro lado Entrega de todos os pacotes excepto em caso de falha catastrófica da rede, situação que é indicada às aplicações Entrega ordenada de pacotes
TCP Na realidade o TCP está periodicamente a enviar pacotes especiais para garantir que ambos os lados estão activos Também envia pacotes especiais indicando à origem que pacotes já foram recebidos (o que permite à origem reenviar pacotes se necessário) Usa um buffer de recepção para ir guardando os pacotes fora de ordem. A aplicação apenas vê pacotes ordernados.
Não pode ser entregue à aplicação enquanto não chegar o 2 TCP Como o TCP garante a entrega ordenada, quando se perde um pacote isso pode originar atrasos significativos na entrega de outros pacotes Aplicação Não pode ser entregue à aplicação enquanto não chegar o 2 TCP 1 2 3 4 5 6 IP
Não pode ser entregue à aplicação enquanto não chegar o 2 TCP O controlo de erros detecta o pacote em falta e pede o reenvio do mesmo Aplicação Não pode ser entregue à aplicação enquanto não chegar o 2 TCP 2 3 4 5 6 Reenviar 2 IP
TCP Socket Para manter a lista de pacotes ordenada e controlar os erros, no TCP um “Socket” corresponde a uma ligação entre dois portos (normalmente de PCs diferentes)
TCP Cliente Abre um Socket para ligar a um determinado Porto de um determinado Computador Quando a ligação é estabelecida: Pode-se enviar os dados que bem se entender Vai-se receber também dados No final: Pode-se fechar a ligação, o computador remoto será informado disto
TCP Servidor Abre um Socket especial para “ouvir” um determinado porto Quando é recebido um pedido de ligação, normalmente, arranca-se um processo separado que vai tratar de receber dados e enviar respostas (tipicamente um ciclo) Quando necessário podemos terminar a ligação
TCP Pedido de ligação Cliente Servidor TCP estabelece a ligação Cliente envia dados Cliente Servidor Servidor envia dados Cliente Servidor Servidor termina a ligação Cliente Servidor Cliente Servidor