Nível Transporte 1 Fornece aos níveis superiores serviço eficiente e confiável entre máquina de...

75
Nível Transporte 1 Fornece aos níveis superiores serviço eficiente e confiável entre máquina de origem e destino, independente das redes utilizadas. Torna camadas superiores imunes à tecnologia e imperfeições da sub-rede. Questões típicas: Como controlar várias sessões transferindo dados? É possível várias conexões de transporte em uma de rede? E uma conexão de transporte com várias conexões de rede? Como retomar uma sessão interrompida? Nível Transporte

Transcript of Nível Transporte 1 Fornece aos níveis superiores serviço eficiente e confiável entre máquina de...

Page 1: Nível Transporte 1 Fornece aos níveis superiores serviço eficiente e confiável entre máquina de origem e destino, independente das redes utilizadas. Torna.

Nível Transporte 1

Fornece aos níveis superiores serviço eficiente e confiável entre máquina de origem e destino, independente das redes utilizadas. Torna camadas superiores imunes à tecnologia e imperfeições da sub-rede.

Questões típicas:– Como controlar várias sessões transferindo dados? É

possível várias conexões de transporte em uma de rede? E uma conexão de transporte com várias conexões de rede?

– Como retomar uma sessão interrompida?

– Que ação tomar em caso de congestionamento?

Nível Transporte

Page 2: Nível Transporte 1 Fornece aos níveis superiores serviço eficiente e confiável entre máquina de origem e destino, independente das redes utilizadas. Torna.

Nível Transporte 2

Porque distingui-lo do Nível Rede?

O nível Rede está presente nos roteadores. E se o roteador travar? E se o nível Rede perder pacotes?

É possível que o nível Transporte solicite nova conexão de rede com a entidade remota. Pergunta ao remoto onde parou e retoma do ponto interrompido.

A questão é a qualidade de serviço.

As aplicações utilizam um conjunto padrão de primitivas que funcionam em várias redes.

Page 3: Nível Transporte 1 Fornece aos níveis superiores serviço eficiente e confiável entre máquina de origem e destino, independente das redes utilizadas. Torna.

Nível Transporte 3

Camadas de Rede, Transporte, Aplicação

Page 4: Nível Transporte 1 Fornece aos níveis superiores serviço eficiente e confiável entre máquina de origem e destino, independente das redes utilizadas. Torna.

Nível Transporte 4

Tipos de Serviço

Similar ao nível de rede, oferece 2 tipos de serviço:– Orientado a conexão: Estabelece conexão,

transfere dados, libera conexão.– Sem conexão: Envia pacotes independentes.

Segmento é o termo empregado para designar as mensagens trocadas entre entidades de transporte.

Page 5: Nível Transporte 1 Fornece aos níveis superiores serviço eficiente e confiável entre máquina de origem e destino, independente das redes utilizadas. Torna.

Nível Transporte 5

Endereço de Transporte

É preciso que uma aplicação em uma máquina faça referência à aplicação com a qual deseja se comunicar em outra máquina.

No TCP/IP o endereço de transporte é a porta, e o endereço de rede é o endereço IP.

Como um processo sabe que porta está associada a que serviço? Os endereços estáveis já são conhecidos. IANA – Internet Assigned Numbers Authority controla recursos dos protocolos.

Vide /etc/services ou

http://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xml

Page 6: Nível Transporte 1 Fornece aos níveis superiores serviço eficiente e confiável entre máquina de origem e destino, independente das redes utilizadas. Torna.

Nível Transporte 6

IANA – Internet Assigned Numbers Authority

O texto abaixo foi adaptado de www.iana.org

“ The port numbers are divided into three ranges:– System Ports (Well Known): from 0 through 1023. – User Ports (Registered ): from 1024 through 49151– Dynamic and/or Private Ports: from 49152 through

65535.

The difference uses of these ranges is described in RFC6335

The System Ports are assigned by the IETF process for standards-track protocols (and on most systems can only be used by system (or root) processes ). The User Ports are assigned by IANA using the “Expert Review” process . Dynamic Ports are not assigned. ”

Page 7: Nível Transporte 1 Fornece aos níveis superiores serviço eficiente e confiável entre máquina de origem e destino, independente das redes utilizadas. Torna.

Nível Transporte 7

Exemplo de serviços

Trecho do arquivo /etc/services:

ftp 21/tcp

telnet 23/tcp

smtp 25/tcp mail

time 37/tcp timserver

time 37/udp timserver

rlp 39/udp resource # resource location

nameserver 42/tcp name # IEN 116

whois 43/tcp nicname

domain 53/tcp nameserver # name-domain server

domain 53/udp nameserver

No Windows, vide netstat -a

Page 8: Nível Transporte 1 Fornece aos níveis superiores serviço eficiente e confiável entre máquina de origem e destino, independente das redes utilizadas. Torna.

Nível Transporte 8

Soquetes (1)

SOCKETUma interface local, criada por aplicações, ponto final de comunicação no qual os processos de aplicação podem tanto enviar quanto receber mensagens de e para outro processo de aplicação (local ou remoto)

Socket API (Application Programming Interface)· Introduzida no BSD 4.1 - UNIX de Berkeley, 1981· Hoje há para Linux e Windows (winsock) Explicitamente criados, usados e liberados pelas aplicações Paradigma cliente-servidor Dois tipos de serviço de transporte via socket API:

Datagrama não confiável Confiável, orientado a cadeias de bytes

Page 9: Nível Transporte 1 Fornece aos níveis superiores serviço eficiente e confiável entre máquina de origem e destino, independente das redes utilizadas. Torna.

Nível Transporte 9

Soquetes (2)

Serviço TCP: transferência confiável de bytes de um processo para outro

Page 10: Nível Transporte 1 Fornece aos níveis superiores serviço eficiente e confiável entre máquina de origem e destino, independente das redes utilizadas. Torna.

Nível Transporte10

As primitivas de Soquetes para TCP

Retorna descritor de soquete (s)

Serv: Vincula IP+Porta a s

Serv:

Serv:

Cliente:

Qualquer:

Qualquer:

Qualquer:

Page 11: Nível Transporte 1 Fornece aos níveis superiores serviço eficiente e confiável entre máquina de origem e destino, independente das redes utilizadas. Torna.

Nível Transporte 11

Pseudo-código

socket( )

bind ( )

listen ( )

accept ( )

recv ( )

send ( )

close ( )

socket( )

connect( )

send ( )

recv ( )

close ( )

S

E

R

V

I

D

O

R

C

L

I

E

N

T

E

Cria descritor de soquete

Solicita estabelecimento de conexão

Atribui endereço de protocolo a soquete

Indica que receberá conexões e o máximo

Aguarda conexões

(read) (write)

Fecha soquete, termina conexão

Page 12: Nível Transporte 1 Fornece aos níveis superiores serviço eficiente e confiável entre máquina de origem e destino, independente das redes utilizadas. Torna.

Nível Transporte12

Informações complementares (1)

• Little Endian versus Big Endian: maneiras de armazenar um número na memória. Little Endian: armazena os bytes de menor ordem em primeiro. Comum na arquitetura Intel. Ex: 0x12345678 seria armazenado como (0x78 0x56 0x34 0x12)

Big Endian: 0x12345678 seria armazenado como (0x12 0x34 0x56 0x78). Comum nas arquiteturas RISC. É o formato da rede.

• Função para padronizar a transmissão:

Htons: host to network – unsigned short int to Bigendian.

Htonl: host to network – unsigned long int to Bigendian.

Page 13: Nível Transporte 1 Fornece aos níveis superiores serviço eficiente e confiável entre máquina de origem e destino, independente das redes utilizadas. Torna.

Nível Transporte13

Informações complementares (2)

• É montada uma estrutura de dados (struct sockaddr_in channel) para especificar um endereço local ou remoto de ponto de extremidade para conectar o soquete:

channel.sin_addr.s_addr=htonl(INADDR_ANY)

“This allowed your program to work without knowing the IP address of the machine it was running on, or, in the case of a machine with multiple network interfaces, it allowed your server to receive packets destined to any of the interfaces”.

• Define de que versão virá a família de endereços:channel.sin_family = AF_INET

AF_INET: Address Family for Internet Sockets is IPv4

Server Address

Page 14: Nível Transporte 1 Fornece aos níveis superiores serviço eficiente e confiável entre máquina de origem e destino, independente das redes utilizadas. Torna.

Nível Transporte 14

Solicita arquivo do servidor. Chamada client <url> <file> >f

Código do Cliente (1)

Page 15: Nível Transporte 1 Fornece aos níveis superiores serviço eficiente e confiável entre máquina de origem e destino, independente das redes utilizadas. Torna.

Nível Transporte15

Código do Cliente (2)

Page 16: Nível Transporte 1 Fornece aos níveis superiores serviço eficiente e confiável entre máquina de origem e destino, independente das redes utilizadas. Torna.

Nível Transporte16

Código do Cliente (3)

Page 17: Nível Transporte 1 Fornece aos níveis superiores serviço eficiente e confiável entre máquina de origem e destino, independente das redes utilizadas. Torna.

Nível Transporte17

Código do Servidor (1)

Page 18: Nível Transporte 1 Fornece aos níveis superiores serviço eficiente e confiável entre máquina de origem e destino, independente das redes utilizadas. Torna.

Nível Transporte18

Código do Servidor (2)

Page 19: Nível Transporte 1 Fornece aos níveis superiores serviço eficiente e confiável entre máquina de origem e destino, independente das redes utilizadas. Torna.

Nível Transporte19

Código do Servidor (3)

Page 20: Nível Transporte 1 Fornece aos níveis superiores serviço eficiente e confiável entre máquina de origem e destino, independente das redes utilizadas. Torna.

Exemplo de aplicação cliente-servidor:

1) Cliente lê linha da entrada-padrão do sistema (inFromUser stream), envia para o servidor via socket (outToServer stream)

2) Servidor lê linha do socket3) Servidor converte linha para

letras maiúsculas e envia de volta ao cliente

4) Cliente lê a linha modificada através do soquete(inFromServer stream)

Programação de sockets em JAVA

Page 21: Nível Transporte 1 Fornece aos níveis superiores serviço eficiente e confiável entre máquina de origem e destino, independente das redes utilizadas. Torna.

Pseudo-código para JAVA (TCP)

Page 22: Nível Transporte 1 Fornece aos níveis superiores serviço eficiente e confiável entre máquina de origem e destino, independente das redes utilizadas. Torna.

Nível Transporte22

import java.io.*; import java.net.*; class TCPClient {

public static void main(String argv[]) throws Exception { String sentence; String modifiedSentence;

BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in));

Socket clientSocket = new Socket("hostname", 6789);

DataOutputStream outToServer = new DataOutputStream(clientSocket.getOutputStream());

Criastream de

entrada

Cria socket cliente, (IP,Porta)

conecta ao servidor

Criastream de saídaligado ao socket

Cliente Java (1) Classes

para cadeia de entrada e

saída

Classes para suporte de

rede

Page 23: Nível Transporte 1 Fornece aos níveis superiores serviço eficiente e confiável entre máquina de origem e destino, independente das redes utilizadas. Torna.

Nível Transporte23

Cliente Java (2)

BufferedReader inFromServer = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));

sentence = inFromUser.readLine();

outToServer.writeBytes(sentence + '\n');

modifiedSentence = inFromServer.readLine();

System.out.println("FROM SERVER: " + modifiedSentence);

clientSocket.close(); } }

Criastream de

entradaligado ao

socket

Envia linhapara o servidor

Lê linha do servidor

Page 24: Nível Transporte 1 Fornece aos níveis superiores serviço eficiente e confiável entre máquina de origem e destino, independente das redes utilizadas. Torna.

import java.io.*; import java.net.*;

class TCPServer {

public static void main(String argv[]) throws Exception { String clientSentence; String capitalizedSentence;

ServerSocket welcomeSocket = new ServerSocket(6789); while(true) { Socket connectionSocket = welcomeSocket.accept();

BufferedReader inFromClient = new BufferedReader(new InputStreamReader(connectionSocket.getInputStream()));

24

Cria socket de aceitação

na porta 6789

Espera, no socket

de aceitação, contato do

cliente

Cria stream deentrada ligado

ao socket

Servidor Java (1)

Page 25: Nível Transporte 1 Fornece aos níveis superiores serviço eficiente e confiável entre máquina de origem e destino, independente das redes utilizadas. Torna.

Nível Transporte25

DataOutputStream outToClient = new DataOutputStream(connectionSocket.getOutputStream());

clientSentence = inFromClient.readLine();

capitalizedSentence = clientSentence.toUpperCase() + '\n';

outToClient.writeBytes(capitalizedSentence); } } }

Lê linha do socket

Cria stream de saída ligado ao

socket

Escreve linhapara o socket

Fim do while loop,retorne e espere poroutra conexão do cliente

Servidor Java (2)

Page 26: Nível Transporte 1 Fornece aos níveis superiores serviço eficiente e confiável entre máquina de origem e destino, independente das redes utilizadas. Torna.

Nível Transporte 26

Portmapper

Como pedir conexão a um software que não usa portas conhecidas? Através de processo portmapper:

–Aplicação solicita conexão em porta conhecida associada ao portmapper (normalmente porta 111) que retorna a porta associada ao serviço desejado.–Usuário encerra conexão com portmapper e estabelece com o novo endereço fornecido.–Se a aplicação tem alta demanda é melhor que fique diretamente aguardando conexões.–Quando da criação do serviço a aplicação se comunica com o portmapper para se registrar.

Portmapper equivale a telefonista de auxílio a lista.

Page 27: Nível Transporte 1 Fornece aos níveis superiores serviço eficiente e confiável entre máquina de origem e destino, independente das redes utilizadas. Torna.

Nível Transporte27

Servidor de Processos (1)

É preciso ter um processo aguardando conexões para cada serviço prestado?– Sim e Não. Aplicações que não são tão utilizadas

podem ser ativadas por demanda: um servidor de processos aguarda solicitações e ativa o processo que possa atendê-la.

– No UNIX, este processo é o inetd (ou xinetd).

– Se a aplicação tem alta demanda é melhor que fique diretamente aguardando conexões.

Page 28: Nível Transporte 1 Fornece aos níveis superiores serviço eficiente e confiável entre máquina de origem e destino, independente das redes utilizadas. Torna.

Nível Transporte 28

Servidor de Processos (2)

Como um processo do usuário no host 1 estabelece uma conexão com o processo servidor de correio no host 2.

Page 29: Nível Transporte 1 Fornece aos níveis superiores serviço eficiente e confiável entre máquina de origem e destino, independente das redes utilizadas. Torna.

Nível Transporte 29

Estabelecendo conexão no N4 (1)

Handshake de 3 vias em

cenário normal

Que tal: CR para pedir e ACK para aceitar?

Problema: a rede pode perder, atrasar, corromper ou duplicar pacotes (retransmissões). Os casos comuns devem ser implementados para obter um bom desempenho, mas o protocolo deve lidar com os casos incomuns também.

Page 30: Nível Transporte 1 Fornece aos níveis superiores serviço eficiente e confiável entre máquina de origem e destino, independente das redes utilizadas. Torna.

Nível Transporte30

Estabelecendo conexão no N4 (2)

Antigo CR aparece

duplicadoCR e ACK duplicados

Host 1 percebe que é duplicata: Segundo ACK x

Host 2 percebe que é duplicata: ACK z novamente

Seq=z, Ack=x

Seq=z, Ack=x

Seq=x, Ack=z

Seq=x

Seq=x

Page 31: Nível Transporte 1 Fornece aos níveis superiores serviço eficiente e confiável entre máquina de origem e destino, independente das redes utilizadas. Torna.

Nível Transporte 31

Problema dos dois Exércitos

Page 32: Nível Transporte 1 Fornece aos níveis superiores serviço eficiente e confiável entre máquina de origem e destino, independente das redes utilizadas. Torna.

Nível Transporte32

Encerrando conexão no N4 (1)

Encerramento abrupto com perda de dados

Caso normal com Handshake de 3 vias

Page 33: Nível Transporte 1 Fornece aos níveis superiores serviço eficiente e confiável entre máquina de origem e destino, independente das redes utilizadas. Torna.

Nível Transporte33

Encerrando conexão no N4 (2)

ACK final perdido

Resposta perdida

Resposta e DR seguintes perdidos

Page 34: Nível Transporte 1 Fornece aos níveis superiores serviço eficiente e confiável entre máquina de origem e destino, independente das redes utilizadas. Torna.

Controle de Congestionamento

Nível Transporte34

(a) Goodput x carga (b) Atraso correspondente

Embora congestionamento ocorra nos roteadores, portanto detectado pela camada de rede, é causado pelo tráfego enviado para a rede pela camada de transporte e portanto é responsabilidade conjunta destas camadas.

Page 35: Nível Transporte 1 Fornece aos níveis superiores serviço eficiente e confiável entre máquina de origem e destino, independente das redes utilizadas. Torna.

Controle de Congestionamento

Nível Transporte35

Onde trabalhar no transporte: Encontrar uma boa alocação de banda que ofereça

bom desempenho, evite congestionamento, seja justa entre entidades concorrentes;

Regular a velocidade do fluxo; Considerar a diferença das Redes sem Fio - embora

na teoria camada de transporte seja independente da camada de enlace, na prática é preciso considerar as diferenças com e sem fio.

Page 36: Nível Transporte 1 Fornece aos níveis superiores serviço eficiente e confiável entre máquina de origem e destino, independente das redes utilizadas. Torna.

Uma boa alocação:Imparcialidade max-min (Fairness)

Nível Transporte36

A alocação é imparcial max-min se a largura de banda dada a um fluxo não puder ser aumentada sem diminuir a largura de banda dada a outro fluxo.

Rede com 4 fluxos: A,B,C,D. Cada enlace tem capacidade =.

B recebe 1/3 entre R4 e R5 e continua com 1/3 entre R2 e R3 (1/2 não resolveria o gargalo). Para dar mais para B, deveria reduzir C ou D (ou ambos).

Problema: Necessário conhecimento global da rede.

Page 37: Nível Transporte 1 Fornece aos níveis superiores serviço eficiente e confiável entre máquina de origem e destino, independente das redes utilizadas. Torna.

Uma boa alocação: Convergência

Nível Transporte37

Conexões vem e vão: convergir para o ponto de operação ideal e acompanhar ao longo do tempo.

Ex: No início o Fluxo 1 tem toda largura de banda. Em t=1 divide a banda na metade com Fluxo 2. Em t=4 o Fluxo 3 precisa apenas de 0,2 e os fluxos 1 e 2 ficam com 0,4 cada. Quando o Fluxo 2 termina, o Fluxo 1 abocanha 0,8.

Page 38: Nível Transporte 1 Fornece aos níveis superiores serviço eficiente e confiável entre máquina de origem e destino, independente das redes utilizadas. Torna.

Regulando a velocidade do fluxo

Nível Transporte38

(a) O limite é o receptor de pequena capacidade;

(b) O limite é a rede interna.

Controle de fluxo ajuda no controle de congestionamento

Page 39: Nível Transporte 1 Fornece aos níveis superiores serviço eficiente e confiável entre máquina de origem e destino, independente das redes utilizadas. Torna.

Regulando: Ajuste de banda

Nível Transporte39

O como a velocidade é aumentada ou diminuída é dado por uma lei de controle com efeito importante sobre desempenho.

AIMD - Additive Increase Multiplicative Decrease

Linha da imparcialidade: dois usuários tem banda igual

Linha da eficiência: alocação com 100% da capacidade do enlace.

Congestionamento: esta linha foi cruzada.

Aumento e diminuição additivos - oscilam em torno da linha de eficiência (ex: 1Mbps a mais para cada)

Page 40: Nível Transporte 1 Fornece aos níveis superiores serviço eficiente e confiável entre máquina de origem e destino, independente das redes utilizadas. Torna.

Regulando: Ajuste de banda

Nível Transporte40

Aumento e diminuição

multiplicativos – apontam para a origem

(ex: aumentar 10%)

AIMD: Converge para ponto

Ótimo. Dificuldade:

quanto e como aumentar

(TCP tem o seu modo)

Page 41: Nível Transporte 1 Fornece aos níveis superiores serviço eficiente e confiável entre máquina de origem e destino, independente das redes utilizadas. Torna.

Problemas da Rede sem Fio

Nível Transporte41

Na Teoria: protocolos de transporte são independentes das tecnologias de rede e enlace.

Na prática: problemas com redes sem fio. TCP usa perda de pacote como sinal de congestionamento, mas redes sem Fio perdem pacotes por erro não congestionamento… Pior ainda se os nós se movem e a qualidade do enlace varia.

Cada nível faz o que pode: Enlace tenta retransmitir sem sinalizar nível superior; transporte aplica controle de congestionamento. Há muita pesquisa para desenvolver um Transporte para redes sem fio e como comunicar informações entre os níveis (abordagens cross-layer).

Page 42: Nível Transporte 1 Fornece aos níveis superiores serviço eficiente e confiável entre máquina de origem e destino, independente das redes utilizadas. Torna.

Protocolo de Controle da InternetUser Data Protocol - UDP

Nível Transporte42

Permite envio de dados sem estabelecimento prévio de conexão, sem técnica de verificação que o dado atingiu a outra ponta.

Muito utilizado em aplicações que tem como modelo – um pedido, uma resposta – não necessitando do overhead do estabelecimento de conexão.

A própria resposta é o reconhecimento do pedido. Se a resposta não chegar, simplesmente pergunta novamente.

Exemplo de aplicação que usa UDP: DNS

Page 43: Nível Transporte 1 Fornece aos níveis superiores serviço eficiente e confiável entre máquina de origem e destino, independente das redes utilizadas. Torna.

Nível Transporte43

Segmento UDP

O segmento UDP consiste de um cabeçalho de 8 bytes, seguido pela carga útil.

O simples cabeçalho UDP contém 8 bytes:

Comprimento UDP: inclui cabeçalho e dados.

Checksum: opcional.

Page 44: Nível Transporte 1 Fornece aos níveis superiores serviço eficiente e confiável entre máquina de origem e destino, independente das redes utilizadas. Torna.

O TCP e o UDP calculam o checksum incluindo cabeçalho e dados e um pseudocabeçalho que inclui dados do nível Rede, para garantir a integridade dos dados e das informações de rede, uma vez que o IP só calcula o checksum do cabeçalho IP, não incluindo dados.

Pseudo-cabeçalho não é transmitido nem contado. 44

Pseudo-cabeçalho

Porta DestinoPorta Origem

Tamanho Checksum

Dados

0 16 31

Endereço IP Destino

Endereço IP Origem

Zero TamanhoProtocolo

Pseudo-Header

Datagrama UDP

Header UDP

UDP é protocolo 17,TCP é 6

Page 45: Nível Transporte 1 Fornece aos níveis superiores serviço eficiente e confiável entre máquina de origem e destino, independente das redes utilizadas. Torna.

Pseudo-código para JAVA (UDP)

Page 46: Nível Transporte 1 Fornece aos níveis superiores serviço eficiente e confiável entre máquina de origem e destino, independente das redes utilizadas. Torna.

2 - 46

import java.io.*; import java.net.*; class UDPClient { public static void main(String args[]) throws Exception { BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in)); DatagramSocket clientSocket = new DatagramSocket(); InetAddress IPAddress = InetAddress.getByName("hostname"); byte[] sendData = new byte[1024]; byte[] receiveData = new byte[1024]; String sentence = inFromUser.readLine(); sendData = sentence.getBytes();

Criastream de entrada

Criasocket cliente

Translada nome do

hospedeiro para

endereço IPusando DNS

Cliente Java UDP (1)

Page 47: Nível Transporte 1 Fornece aos níveis superiores serviço eficiente e confiável entre máquina de origem e destino, independente das redes utilizadas. Torna.

DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, 9876); clientSocket.send(sendPacket); DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length); clientSocket.receive(receivePacket); String modifiedSentence = new String(receivePacket.getData()); System.out.println("FROM SERVER:" + modifiedSentence); clientSocket.close(); } }

Cria datagrama com

dados a enviar,tamanho, endereço

IP portaEnvia datagrama

para servidor

Lê datagramado servidor

Cliente Java UDP (2)

Page 48: Nível Transporte 1 Fornece aos níveis superiores serviço eficiente e confiável entre máquina de origem e destino, independente das redes utilizadas. Torna.

import java.io.*; import java.net.*; class UDPServer { public static void main(String args[]) throws Exception { DatagramSocket serverSocket = new DatagramSocket(9876); byte[] receiveData = new byte[1024]; byte[] sendData = new byte[1024]; while(true) { DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length); serverSocket.receive(receivePacket);

Criasocket

datagramana porta

9876

Cria espaço paradatagramas

recebidos

Recebedatagrama

Servidor Java UDP (1)

Page 49: Nível Transporte 1 Fornece aos níveis superiores serviço eficiente e confiável entre máquina de origem e destino, independente das redes utilizadas. Torna.

String sentence = new String(receivePacket.getData()); InetAddress IPAddress = receivePacket.getAddress(); int port = receivePacket.getPort(); String capitalizedSentence = sentence.toUpperCase();

sendData = capitalizedSentence.getBytes(); DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, port); serverSocket.send(sendPacket); } } }

Obtém endereço IP e número da

porta do

transmissor

Escreve o datagrama para

dentro do socket

Termina o while loop,retorna e espera poroutro datagrama

Cria datagramapara enviar ao cliente

Servidor Java UDP (2)

Page 50: Nível Transporte 1 Fornece aos níveis superiores serviço eficiente e confiável entre máquina de origem e destino, independente das redes utilizadas. Torna.

Nível Transporte 50

RTP

Real-Time Transport Protocol – várias aplicações de multimídia precisavam de um protocolo de transporte em tempo real. Considerado protocolo de transporte implementado na camada de aplicação.

Numera pacotes para a apl decidir o que faz com os pacotes e perdas, mas não retransmite (não dá tempo).

Page 51: Nível Transporte 1 Fornece aos níveis superiores serviço eficiente e confiável entre máquina de origem e destino, independente das redes utilizadas. Torna.

Nível Transporte 51

Protocolo de Controle da InternetTransmission Control Protocol - TCP

Protocolo confiável de transporte da Internet, orientado a conexão.

Projetado para prover um fluxo de bytes fim-afim confiável entre processos sobre uma inter-rede não confiável.

O nível 3 da Internet, IP, não garante que os pacotes sejam entregues apropriadamente.

O TCP controla temporizações e retransmite pacotes quando necessário. As conexões são full-duplex e ponto-a-ponto.

Page 52: Nível Transporte 1 Fornece aos níveis superiores serviço eficiente e confiável entre máquina de origem e destino, independente das redes utilizadas. Torna.

Nível Transporte 52

O segmento TCP

O cabeçalho de um segmento TCP:

Page 53: Nível Transporte 1 Fornece aos níveis superiores serviço eficiente e confiável entre máquina de origem e destino, independente das redes utilizadas. Torna.

Nível Transporte 53

O cabeçalho TCP - 1

Número de confirmação: próximo byte esperado.Comprimento cabec: número de palavras de 32 bits no

cabeçalho. (pode variar devido a opções).Flags:

– ECE (ECN-Echo): Receptor sinaliza congestionamento ao transmissor : reduza velocidade (recebeu pacote com ECN no IP);

– CWR: (Congestion Window Reduced) Transmissor sinaliza que reduziu janela (receptor pode parar de enviar ECE);

– URG: Quando a aplicação é interrompida (ex CTRL-C), insere-se informação de controle da aplicação nos dados e liga-se o URG. No destino, interrompe-se a aplicação para entregar os dados urgentes.

– ACK: Se ligado, o número de reconhecimento é válido.– PSH: Se ligado indica para entregar dados imediatamente (não

buferizar, o que poderia ser feito por eficiência);

Page 54: Nível Transporte 1 Fornece aos níveis superiores serviço eficiente e confiável entre máquina de origem e destino, independente das redes utilizadas. Torna.

Nível Transporte54

O cabeçalho TCP - 2

Flags: – RST: Se ligado indica para reiniciar a conexão: há problemas;– SYN: Se ligado indica solicitação de conexão..– FIN: Se ligado, indica fim da conexão.

Tam Janela: Quantos bytes podem ser enviados. O receptor controla o fluxo de bytes do transmissor alterando este campo. Janela zero significa “pare de mandar até que receba valor não zero”.

Checksum: Para confiabilidade extrema. Urgent Pointer: Deslocamento em bytes a partir do

número de sequência onde estão os dados urgentes. Options: Permite adicionar facilidades extras como

negociar tamanho máximo do segmento TCP.

Page 55: Nível Transporte 1 Fornece aos níveis superiores serviço eficiente e confiável entre máquina de origem e destino, independente das redes utilizadas. Torna.

Nível Transporte 55

Estabelecimento de conexão TCP

(a) Caso comum no estabelecimento de uma conexão TCP.

(b) Estabelecendo conexões TCP simultâneas nas mesmas portas: é possível perceber que se trata da mesma conexão.

Page 56: Nível Transporte 1 Fornece aos níveis superiores serviço eficiente e confiável entre máquina de origem e destino, independente das redes utilizadas. Torna.

Nível Transporte56

Máquina de Estados finitos - TCP

Etapas necessárias para estabelecimento e encerramento de conexões. Em cada estado, quando ocorre um evento válido, é possível executar uma ação.

Os 2 sentidos têm que concordar com o fim:FIN e ACK para cada sentido

Page 57: Nível Transporte 1 Fornece aos níveis superiores serviço eficiente e confiável entre máquina de origem e destino, independente das redes utilizadas. Torna.

Nível Transporte57

Máquina de Estados finitos - TCP

• Linha contínua mais escura: caminho normal do cliente;

• Linha tracejada mais escura: caminho normal do servidor;

• Linhas finas: eventos incomuns.

Cada transição é rotulada pelo evento que a produziu e ação resultante separada por barra

Page 58: Nível Transporte 1 Fornece aos níveis superiores serviço eficiente e confiável entre máquina de origem e destino, independente das redes utilizadas. Torna.

Nível Transporte

Janela Deslizante do TCP

O mecanismo de janela utiliza duas informações:• Número de confirmação: próximo número de seqüência

que o remoto espera receber.• Tamanho da janela: Número de bytes que o remoto pode

aceitar.

Número de sequência inicial=1

Número de confirrmação=2001

Número de sequência=4001

2001 3001 4001 5001 6001 700110011

Tam Janela=6000

Dados recebidosSegmento corrente

Page 59: Nível Transporte 1 Fornece aos níveis superiores serviço eficiente e confiável entre máquina de origem e destino, independente das redes utilizadas. Torna.

Nível Transporte 59

Gerenciamento de Janelas no TCP

Page 60: Nível Transporte 1 Fornece aos níveis superiores serviço eficiente e confiável entre máquina de origem e destino, independente das redes utilizadas. Torna.

Nível Transporte60

Vários Timers do TCP

• Timer de Retransmissão: determinar tempo de ida e volta para o destino não é fácil e erros comprometem a eficiência. Utiliza-se algoritmos dinâmicos que ajustam o intervalo de timeout com base na contínua avaliação do desempenho.

• Timer de persistência: Rx envia confirmação com tamanho da janela = 0 (para o Tx). Se uma nova mensagem com tam. Jan # 0 se perde, ambos ficam aguardando. Ao estourar este timer, o Tx envia teste ao Rx que responde com o tamanho da janela atual. Se ainda zero, ativa timer novamente.

• Timer Keepalive: se conexão inativa por um tempo, um lado pergunta o estado do outro.

• Timer no encerramento de conexão: para garantir que após fechar conexão, todos os pacotes foram entregues.

Page 61: Nível Transporte 1 Fornece aos níveis superiores serviço eficiente e confiável entre máquina de origem e destino, independente das redes utilizadas. Torna.

Nível Transporte61

Temporizador de Retransmissão

Como escolher o valor do Retransmission Timer do TCP?Deve ser maior que o RTT– Round-Trip Time – Tempo de Viagem de Ida e Volta ( que varia...)

Densidade de probabilidade dos tempos de chegada de ACK

(a)Atraso esperado em s,na camada de enlacetem pequena variância =>

poderia se definir a temporização como T;

Page 62: Nível Transporte 1 Fornece aos níveis superiores serviço eficiente e confiável entre máquina de origem e destino, independente das redes utilizadas. Torna.

Nível Transporte62

Temporizador de Retransmissão

• Se escolher T1, pode ser muito curto: temporização prematura implica em Retransmissões desnecessárias;

• Se escolher T2, pode ser muito longo: a reação à perda de segmento fica lenta;

Como estimar o RTT?

Densidade de probabilidade dos tempos de chegada de ACK(b) Atraso esperado em ms, na camada de transporte,

grande variância –temporização definida como T1 ou T2?

Page 63: Nível Transporte 1 Fornece aos níveis superiores serviço eficiente e confiável entre máquina de origem e destino, independente das redes utilizadas. Torna.

Nível Transporte63

Estimando RTT

SampleR: tempo medido da transmissão de um segmento até a respectiva confirmação; varia de forma rápida, é desejável um amortecedor para a estimativa do SampleR; usar várias medidas recentes, para gerar o SRTT (Smoothed Round-Trip Time)

SRTT = * SRTT + (1-)* SampleR

: fator de suavização que determina o peso dado ao antigo valor. Valor típico: = 0,875 (Recomendado em RFC).

Page 64: Nível Transporte 1 Fornece aos níveis superiores serviço eficiente e confiável entre máquina de origem e destino, independente das redes utilizadas. Torna.

Nível Transporte64

Exemplo de estimativa de RTT

Page 65: Nível Transporte 1 Fornece aos níveis superiores serviço eficiente e confiável entre máquina de origem e destino, independente das redes utilizadas. Torna.

65

Definindo temporização

Tendo SRTT, quanto deve ser a temporização?· SRTT mais “margem de segurança” – considerar o quanto

a estimativa varia; grandes variações no SRTT => maior margem de segurança

Estimar quanto o SampleR se desvia do SRTT:

DevRTT = (1-)*DevRTT + *|SampleR-SRTT|

(typically, = 0.25)

• Ajustar o intervalo de temporização - intervalo utilizado na maioria das implementações:

TimeoutInterval = SRTT + 4*DevRTT

Page 66: Nível Transporte 1 Fornece aos níveis superiores serviço eficiente e confiável entre máquina de origem e destino, independente das redes utilizadas. Torna.

Nível Transporte66

Evitando Congestionamento

Cada transmissor mantém duas janelas:– Janela fornecida pelo receptor;– Janela de Congestionamento.

O número de bytes que pode ser transmitido é o valor mínimo entre as duas janelas.

Em 1986 aconteceu o primeiro colapso de congestionamento. Observou-se , naquele contexto, que perda de pacote era um sinal de congestionamento (se fosse erro, a camada de enlace já teria retransmitido)

Clock ACK: tempo usado pelo TCP para nivelar o tráfego entre os enlaces que deve atravessar: os pacotes de ACK chegam em ritmo ditado pelo enlace mais lento do caminho.

Page 67: Nível Transporte 1 Fornece aos níveis superiores serviço eficiente e confiável entre máquina de origem e destino, independente das redes utilizadas. Torna.

Nível Transporte67

Partida “Lenta”

No início da conexão, Jan. cong = tam do segmento na conexão. Cada segmento confirmado antes do estouro da temporização, permite o envio de mais dois.

Partida lenta de uma Jan. cong. inicial de um segmento

Page 68: Nível Transporte 1 Fornece aos níveis superiores serviço eficiente e confiável entre máquina de origem e destino, independente das redes utilizadas. Torna.

Nível Transporte68

TCP Tahoe

No início da conexão, Jan.cong = tam do segmento. Se confirmado antes de timeout, duplica janela de congestionamento.

Quando o crescimento atinge um Limiar, passa a ser linear e não mais exponencial. (Limiar inicial=64KB).

Continua crescendo até ocorrer um timeout, ou atingir a janela do receptor.

Quando há um timeout: Limiar = metade da jan. cong. atual, e jan.cong. volta a ter o tamanho de um segmento.

Começa o processo de crescimento exponencial novamente para determinar o que a rede é capaz de gerenciar.

Page 69: Nível Transporte 1 Fornece aos níveis superiores serviço eficiente e confiável entre máquina de origem e destino, independente das redes utilizadas. Torna.

Nível Transporte69

Exemplo do TCP Tahoe

Tamanho máximo do segmento = 1024 bytes.Limiar inicial = 64KB, houve timeout, limiar caiu para 32KB. Transmissão 13 teve timeout, quando a Jan. Cong. estava com 40KB. Limiar passa a ser de 20KB, Jan. Cong=1 segmento.

Page 70: Nível Transporte 1 Fornece aos níveis superiores serviço eficiente e confiável entre máquina de origem e destino, independente das redes utilizadas. Torna.

Nível Transporte70

Retransmissão rápida

Antes de haver timeout, se houver 3 confirmações duplicadas, o TCP assume que o pacote em questão se perdeu mesmo, não está apenas atrasado (Heurística baseada em experiência).

Ex: enviei pacote 1,2,3,4,5,6,7,8. Recebi ACK 1,2,3,4,4,4: provavelmente os pacotes 5,6 e 7 foram recebidos e o 4 se perdeu.

Neste caso uma otimização seria reenviar o 4 ainda que não estourou a temporização => Retransmissão rápida.

Page 71: Nível Transporte 1 Fornece aos níveis superiores serviço eficiente e confiável entre máquina de origem e destino, independente das redes utilizadas. Torna.

Nível Transporte71

TCP Reno

Curva Dente de Serra.

Implementação utilizada por 20 anos. Hoje há inúmeras variações e propostas de melhorias. Aumento aditivo (1 segmento a mais), diminuição multiplicativa (metade) - AIMD

Page 72: Nível Transporte 1 Fornece aos níveis superiores serviço eficiente e confiável entre máquina de origem e destino, independente das redes utilizadas. Torna.

Nível Transporte 72

Obtendo melhor Desempenho

Bons projetos de sistemas (Projeto de redes + software + sistema operacional) não podem ser substituidos por ajustes de configuração.

Regras práticas:

Regra 1: Medir o desempenho da rede:• Medir por tempo suficiente com amostragens

grandes o suficiente;• Cuidado com a interpretação: está sendo usado

cache? Qual efeito da buferização?• Cuidado com eventos imprevistos (transmissão de

vídeo, início de backup, etc...)

Page 73: Nível Transporte 1 Fornece aos níveis superiores serviço eficiente e confiável entre máquina de origem e destino, independente das redes utilizadas. Torna.

Nível Transporte 73

Regras práticas

Regra 2: Projeto de Host para redes Rápidas: as NICs funcionam na velocidade do enlace, aplicação pode freiar o desempenho:

• SO e protocolos são gargalos• Reduzir número de pacotes, reduz overhead;• Minimizar movimentação de dados: cópias devem ser

evitadas (t memória x t CPU)• Minimizar mudanças de contexto (executando em

modo usuário, chega pacote, muda para modo kernel – agrupe segmentos pequenos);

• Prevenir congestionamento é melhor que remediar;• Evitar timeouts

Page 74: Nível Transporte 1 Fornece aos níveis superiores serviço eficiente e confiável entre máquina de origem e destino, independente das redes utilizadas. Torna.

Nível Transporte74

Regras práticas

Regra 3: Buscar processamento rápido de segmentos:• Minimizar processamento de casos normais:

processamento de erros é secundário; realizar testes para detectar normalidade:

• O caminho mais rápido está na linha grossa.

Page 75: Nível Transporte 1 Fornece aos níveis superiores serviço eficiente e confiável entre máquina de origem e destino, independente das redes utilizadas. Torna.

Nível Transporte75

DTN - Delay Tolerant Network

Rede baseada em arquitetura de comutação de mensagens quando a conectividade é intermitente e não se garante comunicação fim a fim. Os dados são armazenados para posterior encaminhamento. Ex: Aviões fora do alcance da base, dispositivos móveis, acesso a satélite de baixa órbita, redes espaciais…• Mensagens = bundles, armazenados até por horas.