36
1 R&C+R&I 1 / ISTEC – 1/415 4ª Parte 4ª Parte Protocolos da camada de Transporte Protocolos da camada de Transporte

R&c 04 14_1 - Protocolos da Camada de Transporte

Embed Size (px)

Citation preview

1

R&C+R&I 1 / ISTEC – 1/415

4ª Parte4ª Parte

Protocolos da camada de TransporteProtocolos da camada de Transporte

2

R&C+R&I 1 / ISTEC – 1/415

� Protocolo TCP (Transmission Control Protocol - RFC 793)* Protocolo Fiável - Garante:

– Comunicação sem erros:• Utilização de confirmações e temporizadores para controlo

de erros• Retransmissão de dados com erros ou não-confirmados

– Ordem cronológica• Numera segmentos (mensagens) para controlo de sequência

* Controlo de fluxo:• Janela deslizante para controlo de quantidade de dados a transmitir

* Orientado à ligação entre extremidades:• Necessário pré-estabelecimento de conexão emissor /recetor

4.1 – O protocolo TCP

3

R&C+R&I 1 / ISTEC – 1/415

� Protocolo TCP (Transmission Control Protocol - RFC 793)* Transmite fluxo de dados:

• Transmissão de vários blocos de dados num segmento* Pouco apropriado para aplicações de tempo-real* Segmento - unidade básica de transmissão (tamanho max. = 64K)* Endereço Nível 4: Socket = < Endereço IP : Nº de Porto >

• Ex. 205.218.156.56 : 80 , Porto 80 = serviço HTTP• Uma aplicação identificada por (Socket Emissor, Socket Destino)• Porto identifica um fluxo de dados de uma ligação a um terminal

* Portos reservados para serviços nº < 1023 Well Known Ports– nº 21 - FTP, nº 23 - Telnet

4.1 – O protocolo TCP

4

R&C+R&I 1 / ISTEC – 1/4154.1 – O protocolo TCP

Exemplos de alguns portos mais conhecidos:

# Porto Descrição # Porto Descrição

20 FTP - Data 110 POP3 (e-mail)

21 FTP - Control 119 NNTP (News)

23 Telnet 194 IRC (Chat)

25 SMTP (e-mail) 443 HTTPS

49 Login 546 DHCP Client

53 DNS 547 DHCP Server

80 HTTP 569 MSN

5

R&C+R&I 1 / ISTEC – 1/415

C:\WINDOWS>netstat -rn

Route Table

Active Routes:

Network Address Netmask Gateway Address Interface Metric 0.0.0.0 0.0.0.0 214.3.35.31 214.3.35.31 1 127.0.0.0 255.0.0.0 127.0.0.1 127.0.0.1 1 214.3.35.0 255.255.255.0 214.3.35.31 214.3.35.31 1 214.3.35.31 255.255.255.255 127.0.0.1 127.0.0.1 1 214.3.35.255 255.255.255.255 214.3.35.31 214.3.35.31 1 224.0.0.0 224.0.0.0 214.3.35.31 214.3.35.31 1 255.255.255.255 255.255.255.255 214.3.35.31 214.3.35.31 1

Active Connections

Proto Local Address Foreign Address State TCP 214.3.35.31:1384 64.58.76.87:80 ESTABLISHED

* Tabela de Routing de computador com ligação TCP activa

4.1 – O protocolo TCP

6

R&C+R&I 1 / ISTEC – 1/4154.1 – O protocolo TCP

� 1* 2

Principais características do protocolo TCP:

7

R&C+R&I 1 / ISTEC – 1/415

� Cabeçalho TCP

Numero de Sequencia

32 bits

Checksum

Opções (0 ou mais palavras)

Porto DestinoPorto Origem

Numero de Acknowledge

Urgent Pointer

TCPHeaderLength

URG

ACK

PSH

RST

SYN

FIN

6 bits livres Dimensão de Janela

4.1 – O protocolo TCP

Apenas para informação

8

R&C+R&I 1 / ISTEC – 1/415

* Porto Origem/Destino - Identificador de locais terminais da ligação* Numero de Sequencia - Identificador de segmento corrente* Numero de Acknowledge - Identificador do próximo byte (octeto)

esperado* Dimensão de Cabeçalho TCP -número de words (32 bits) do cabeçalho* Bit URG - Se=1, valida Urgent Pointer* Bit ACK - Se=1, valida Numero de Acknowledge* Bit PSH - Se=1, identifica segmento de dados prioritários, não devendo

por isso ser armazenados em buffer* Bit RST - Se=1, reinicializar ligação (ex. crash de terminal)* Bit SYN - Se=1, Emissor pretende iniciar ligação / Receptor aceita

pedido de ligação* Bit FIN - Se=1, Emissor pretende finalizar ligação

4.1 – O protocolo TCP

Apenas para informação

9

R&C+R&I 1 / ISTEC – 1/415

* Dimensão de Janela - números de bytes que o destino pode receber. Máximo: 64K, tamanho dinâmica/ variável, em função de: * Disponibilidade de receptor* MTU (Maximum Transmission Unit) da rede:

* tamanho máximo de mensagens

* Checksum - Detecção de erros do cabeçalho e dados* Urgent Pointer - Indicador de offset, no conjunto de bytes, do

segmento corrente, a partir do qual os dados são urgentes Ex. utilizador premiu Ctrl-C e ligação será interrompida, dados previamente armazenados deverão ser apagados

* Opções - Possibilitar adicionar ao protocolo novas características, para melhorar o seu desempenho

4.1 – O protocolo TCP

Apenas para informação

10

R&C+R&I 1 / ISTEC – 1/4154.1 – O Protocolo TCP

Estrutura de Segmento TCP

11

R&C+R&I 1 / ISTEC – 1/4154.2 – TCP: Connection-Oriented

� Necessário pré-estabelecimento de conexão

ClienteServidor

Procedimentode estabelecimentode ligação

12

R&C+R&I 1 / ISTEC – 1/4154.3 – TCP: Fiabilidade

� Dados entregues a aplicação sem erros e por ordem cronológica

ClienteServidor

Se detectados erros ouSe confirmação não chegar dentro de intervalo de tempo pré-definido Retransmitir Mensagem

13

R&C+R&I 1 / ISTEC – 1/4154.4 - TCP: Data Stream

Dados aTransmitir

Cliente Servidor

Transferência de Fluxo de Dados entre Cliente / Servidor

Fluxo de dados: transmissão de vários blocos de dados de possíveis diferentes aplicações num mesmo segmento

14

R&C+R&I 1 / ISTEC – 1/4154.5 – TCP: Controlo do fluxo de dados

ClienteServidor

Servidor informa Cliente de quando e que quantidade de dados pode receber

JanelaDeslizante

15

R&C+R&I 1 / ISTEC – 1/4154.6 - Os extremos de uma conexão TCP

SocketIdentificadorde conexão

Iniciativade ligação

Esperade ligação

16

R&C+R&I 1 / ISTEC – 1/4154.7 - Estabelecimento de uma conexão TCP

Procedimentode estabelecimentode ligação

Cliente Servidor

17

R&C+R&I 1 / ISTEC – 1/415

� 3 way handshake

SYN ; iSN=X

4.7 - Estabelecimento de uma conexão TCP

Cliente Servidor

SYN ; iSN=Y; ACK=X+1

ACK=Y+1

tempo

iSN = initial Seq. Numb.

18

R&C+R&I 1 / ISTEC – 1/4154.7 - Estabelecimento de uma conexão TCP

SYN=1

1) Pedido de Ligação

19

R&C+R&I 1 / ISTEC – 1/4154.7 - Estabelecimento de uma conexão TCP

ACK=1SYN=1

2) Resposta a pedido de Ligação

= SYNACK

20

R&C+R&I 1 / ISTEC – 1/4154.7 - Estabelecimento de uma conexão TCP

3) Confirmação de pedido de Ligação

ACK=1

21

R&C+R&I 1 / ISTEC – 1/415

1) Pedido de Encerramento de conexão Cliente Servidor

4.7 - Encerramento de uma conexão TCP

FIN=1

22

R&C+R&I 1 / ISTEC – 1/415

2) Confirmação de pedido de Encerramento de conexão Cliente Servidor

4.7 - Encerramento de uma conexão TCP

ACK=1

23

R&C+R&I 1 / ISTEC – 1/4154.7 - Encerramento de uma conexão TCP

3,4) Pedido de Encerramento de conexão Servidor Cliente

ServidorCliente

24

R&C+R&I 1 / ISTEC – 1/415

� Processamento de dados normais:* 1) Dados armazenados em buffer de aplicação* 2) Dados fragmentados em segmentos

4.8 - Formação de segmentos TCP

25

R&C+R&I 1 / ISTEC – 1/4154.8 - Formação de segmentos TCP

� Processamento de dados prioritários:* 1) Dados não armazenados em buffer de aplicação* 2) Dados colocados em segmento

PSH=1

26

R&C+R&I 1 / ISTEC – 1/415

* Protocolo UDP (User Datagram Protocol - RFC 768)• Protocolo Nível 4 que tal como TCP corre sobre IP• Não Fiável• Connection-less Oriented• Utilizado em aplicações onde a prontidão é mais importante do que

a exactidão, apropriado para aplicações:• Transmitem pequenas quantidades de informação, ex. ICMP

(Internet Control Message Protocol) para gestão de rede• Não toleram atrasos, ex. voz

• Cabeçalho UDP: 32 Bits

Porto Origem Porto Destino

Dimensão de mensagem UDP (octetos) Checksum UDP (uso opcional, por aplicação)

4.9 – Protocolo UDP

27

R&C+R&I 1 / ISTEC – 1/415

• Protocolos mais recentes• Objetivo: contornar limitações de protocolos tradicionais TCP e UDP,

para satisfazer aplicações multimédia de tempo-real em redes IP:• Transporte de informação sobre qualidade corrente da rede:

• Para adaptação de ritmos de transmissão• Transporte de informação temporal:

• Para sincronismo de pacotes recebidos • Para eliminação de variações de atrasos de transmissão

• Suporte a fluxos de dados: • Multicasting: envio do mesmo pacote para diferentes destinos• Multi-streaming: diferentes fluxos de dados entre as mesmas

entidades terminais• Multi-homing: mesmas entidades terminais com vários

endereços IP

4.10 – Protocolos para aplicações de tempo-real

28

R&C+R&I 1 / ISTEC – 1/4154.11 – RTP

29

R&C+R&I 1 / ISTEC – 1/415

* RTP: Reconstrução de sincronismo entre pacotes no Destino

4.11 – RTP

Fonte

Destino

RTP reconstrói espaçamentooriginal entre pacotes, perdido na

internet, para posteriorentrega a aplicação em Destino

Se pacote chegar c\ atrasosuperior a máximo tolerável => impossível recuperar sincronismo=> pacote considerado perdido

30

R&C+R&I 1 / ISTEC – 1/415

* Cabeçalho RTP:

* Bit V: Versão do protocolo; Bits CC: Contributing Source Counter* Bit P: Se=1 => existem octetos de enchimento (padding) no fim do pacote * Bit X: Se=1 => existe uma extensão do cabeçalho (eXtension) * Bit M: Se=1 => Pacote c\ dados relevantes (Marker), ex. inicio de burst de voz* Payload Type: tipo de dados transportados pelo pacote RTP, ex. voz

* Sequence Number: numeração e controlo de mensagens transmitidas* Timestamp: informação com tempo em que pacote é transmitido* Synchronization Source Identifier: nº aleatório que identifica a fonte dos dados* Contributing Source Identifiers: identificador de outras possíveis fontes de dados

no mesmo fluxo RTP

4.11 – RTP

V

00

01

02

03

04

05

06

07

08

09

10

11

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

12

P X CC M Payload Type Sequence Number

Timestamp

Synchronization Source Identifier

Contributing Source Identifiers (0 … 15 entries)

Apenas para informação

31

R&C+R&I 1 / ISTEC – 1/4154.11 – RTP

32

R&C+R&I 1 / ISTEC – 1/415

* RTCP: Receção de feedback sobre qualidade corrente da comunicação

4.12 – RTCP

Pacotes RTCP transmitidos nos 2 sentidos da comunicação para informar terminais emissor e

recetor sobre condições correntes da rede

=> Terminais poderem adaptar dinamica/ ritmos de Tx

RR: Receiver Report

SR: Sender Report

33

R&C+R&I 1 / ISTEC – 1/415

* Cabeçalho RTCP:

* Bit V: Versão do protocolo

4.12 – RTCP

01

00

02

03

04

05

06

07

09

08

10

11

12

13

14

15

17

16

18

19

20

21

22

23

25

24

26

27

28

29

30

31

V P RC PT=SR=200 length

SSRC of sender

NTP timestamp, most signficant word

NTP timestamp, least signficant word

RTP timestamp

sender's packet count

sender's octet count

hea

der

sen

der

in

fo

V = version

P = padding

RC = reports count

PT = packet type

SR = sender report

SSRC = synchronisation source

NTP = network time protocol data/hora

RTP timestampo Tempo relativo entre pacotes

Apenas para informação

34

R&C+R&I 1 / ISTEC – 1/415

* SCTP (Stream Control Transmission Protocol – RFC 4960)* Protocolo para controlo de transmissão fiável de dados c\ as seguintes

características => evolução de TCP:• Orientado à ligação, semelhante a TCP (c\ 4 way hand-shaking)• Multi-streams: fluxos de dados de diversas aplicações entre duas

entidades terminais SCTP (associação SCTP)• Multi-homing: a cada extremo de uma associações SCTP, podem

ser atribuídos mais do que 1 par de endereços IP• Tolerância a falhas: seleção de caminhos alternativos, com

base nos diferentes endereços IP do multi-homing• Transferência fiável de dados por fluxo, semelhante a TCP• Controlo de erro e fluxo/congestão, semelhante a TCP• Apropriado para aplicações e controlo de streaming de audio

/vídeo, com ou sem requisitos de tempo-real.• Ex. sinalização de VoIP

• Nota: mensagens SCTP = pacotes; mensagens TCP = segmentos

4.13 – SCTP

35

R&C+R&I 1 / ISTEC – 1/415

* Cabeçalho de pacote SCTP:* Pacote SCTP transporta vários fragmentos (chunks) de diferentes

terminais

4.13 – SCTP

Source Port Destination Port

Verification Tag

Checksum

SCTP Common Header

Chunk 1

Chunk N

...

• Verification Tag: Nº aleatório que identifica Associação SCTP• Checksum: controlo de erros de toda a mensagem

• Chunk Type: Tipo de informação transportado em fragmento “chunk” corrente, ex. 00=Dados• Chunk Flags: Informação de controlo de chunk corrente, ex. inicio de mensagem fragmentada• Chunk Length: comprimento total de chunk incluindo campo dados

Apenas para informação

36

R&C+R&I 1 / ISTEC – 1/415

* Cabeçalho SCTP:* Ex. Data Chunk: fragmento de dados de um determinado fluxo:

* D

Flags: Bits UBE=Unordered data, Beginning of fragmented & End of fragmented messageTSN: transmission sequence number: numeração de fragmento “chunk” corrente

transmitida num determinado fluxoStream Identifier: identificador de fluxo de dados da mensagem correnteStream Sequence Number: identificador de posição de chunk em fluxo correntePayload Protocol Identifier: identificador de tipo de dados transmitido na mensagem

4.13 – SCTP

Type=0x00 Flags=UBE Length=variable

TSN Value

Stream Identifier Stream Sequence Num

Variable Length User Data

Payload Protocol Identifier DataChunk

Apenas para informação