Post on 18-Jul-2015
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
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.
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
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
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