serviços de comunicaçõeshalestino/scom/cap3.pdf · são identificados por números, que variam...

18
Serviços de Comunicações 1 A Camada de Transporte da Arquitectura TCP/IP 3.1 – Portos e Sockets 3.2 – O Protocolo UDP 3.3 – O Protocolo TCP Engenharia Informática ESTiG/IPB Capítulo 3 Serviços de Comunicações 2 3.1. Portos e Sockets A Camada de Transporte fornece transferência de dados fim-a-fim Ligação fim-a-fim entre duas aplicações: necessário identificar de forma unívoca cada um dos processos associados Conceito de processo: Um processo corresponde a uma instância activa de uma aplicação num determinado momento A cada processo é atribuído um identificador de processo (PID), único no sistema em que está a correr, e que pode ser diferente de cada vez que essa aplicação é iniciada Engenharia Informática ESTiG/IPB

Upload: lamthuan

Post on 07-Feb-2019

222 views

Category:

Documents


0 download

TRANSCRIPT

Serviços de Comunicações

1

A Camada de Transporte da Arquitectura TCP/IP

3.1 – Portos e Sockets

3.2 – O Protocolo UDP

3.3 – O Protocolo TCP

Engenharia Informática ESTiG/IPB

Capítulo 3

Serviços de Comunicações

2

3.1. Portos e Sockets

● A Camada de Transporte fornece transferência de dados fim-a-fim

● Ligação fim-a-fim entre duas aplicações: necessário identificar de forma unívoca

cada um dos processos associados

● Conceito de processo:

● Um processo corresponde a uma instância activa de uma aplicação num

determinado momento

● A cada processo é atribuído um identificador de processo (PID), único no

sistema em que está a correr, e que pode ser diferente de cada vez que essa

aplicação é iniciada

Engenharia Informática ESTiG/IPB

Serviços de Comunicações

3

3.1. Portos e Sockets

● Conceito de processo (cont.):

● O processo de um programa "Servidor" pode ter várias conexões, para múltiplos

clientes, ao mesmo tempo, logo os identificadores de conexões podem não ser

únicos

● Surgem assim os conceitos de Porto e de Socket, como formas de identificar de

maneira uniforme e única conexões entre programas e respectivos hosts

associados, de forma independente dos PID’s locais

Engenharia Informática ESTiG/IPB

Serviços de Comunicações

4

3.1. Portos e Sockets - Conceito de Porto

● Porto:

● identificador perante a pilha TCP/IP de um processo que pretende comunicar

com outro

● número de 16 bits, usado pelos protocolos host-to-host para identificar que

protocolo de nível superior ou que aplicação pretende estabelecer comunicação

com outra

● Existem dois tipos de portos:

● well-known (bem conhecidos)

● ephemeral (efémeros)

Engenharia Informática ESTiG/IPB

Serviços de Comunicações

5

3.1. Portos e Sockets - Conceito de Porto

● Portos well-known:

● são associados a servidores standard (p. e. o daemon servidor Telnetd usa o

porto 23)

● São identificados por números, que variam entre 1 e 1023

● Os portos well-known são controlados e atribuídos pela IANA, encontrando-se

definidos no STD 2 - Assigned Internet Numbers

Engenharia Informática ESTiG/IPB

Serviços de Comunicações

6

3.1. Portos e Sockets - Conceito de Porto

● Alguns dos portos standard mais utilizados:

● 20: ftp-data

● 21: ftp

● 23: telnet

● 25: smtp

● 53: domain

● 80: http

● 110: pop3

● 143: imap

Engenharia Informática ESTiG/IPB

Serviços de Comunicações

7

3.1. Portos e Sockets - Conceito de Porto

● Portos ephemeral:

● Os clientes não precisam de utilizar números de portos well-known, já que são

eles que iniciam a comunicação com os servidores, enviando assim o número

do seu porto nos datagramas

● valores desde o número 1024 até 65535

● Os clientes podem usar qualquer número que lhes seja alocado, desde que a

combinação <protocolo de transporte, endereço IP, porto> seja única

● Estes portos não são controlados pela IANA, podendo ser utilizados "livremente"

pelos utilizadores

Engenharia Informática ESTiG/IPB

Serviços de Comunicações

8

3.1. Portos e Sockets - Conceito de Porto

Engenharia Informática ESTiG/IPB

Serviços de Comunicações

9

3.1. Portos e Sockets - Conceito de Porto

Engenharia Informática ESTiG/IPB

Serviços de Comunicações

10

3.1. Portos e Sockets - Conceito de Porto

Engenharia Informática ESTiG/IPB

Serviços de Comunicações

11

3.1. Portos e Sockets - Conceito de Socket

● Interface de Sockets: application programming interface - (API) para protocolos de comunicação

● Socket: é um tipo especial de descritor de ficheiro (file handle), que é usado pelos

processos para requisitar serviços de rede ao sistema operativo

● O endereço de um socket é obtido através do triplo: <protocol, local-address,

local-process>

● Exemplo, para a arquitectura TCP/IP: <tcp, 193.136.195.221, 12549>

● Uma conversação é a ligação que permite comunicação entre dois processos

● O conjunto <protocol, local-address, local-process, foreign-address, foreign-process>

é denominado associação, especificando de forma completa dois processos com

uma ligação estabelecida

● Exemplo, na pilha TCP/IP: <tcp, 193.136.195.105, 1500, 193.136.195.221, 21>

Engenharia Informática ESTiG/IPB

Serviços de Comunicações

12

3.2. Protocolo UDP

● Protocolo UDP – User Datagram Protocol (RFC 768):

● protocolo que permite o estabelecimento de uma conexão fim-a-fim (ao nível

da camada de transporte do TCP/IP)

● funciona como um interface de aplicação do IP, NÃO adicionando fiabilidade,

controlo de fluxo ou recuperação de erros a este

● simplesmente serve como um multiplexador/desmultiplexador para envio e

recepção de datagramas, usando portos para os guiar

● fornece um mecanismo que permite a uma aplicação enviar datagramas para

outra

Engenharia Informática ESTiG/IPB

Serviços de Comunicações

13

3.2. Protocolo UDP – Multiplexador/Desmultiplexador

Engenharia Informática ESTiG/IPB

Serviços de Comunicações

14

3.2. Protocolo UDP

● O nível de actuação do UDP pode ser visto como extremamente leve, introduzindo pouco overhead

● Em contrapartida, exige às aplicações a responsabilidade pela recuperação de erros,

verificação da sequenciação, etc

● Cada datagrama UDP é enviado em simples datagramas IP, que podem ser

fragmentados pelo nível IP, e posteriormente reassemblados no destino, antes de ser

apresentados ao nível UDP

● Qualquer implementação IP tem de aceitar datagramas até 576 bytes

● Considerando um máximo de 60 bytes para o cabeçalho IP, restam 516 bytes para

tamanho mínimo de um segmento UDP

Engenharia Informática ESTiG/IPB

Serviços de Comunicações

15

3.2. Protocolo UDP – Formato do cabeçalho

Engenharia Informática ESTiG/IPB

Serviços de Comunicações

16

3.2. Protocolo UDP - Aplicações

● Algumas aplicações que usam tráfego UDP:

● Trivial file Transfer Protocol (TFTP)

● Domain Name System (DNS)

● Remote Procedure Call (RPC)

● Simple Network Management Protocol (SNMP)

● Lightweight Directory Access Protocol (LDAP)

Engenharia Informática ESTiG/IPB

Serviços de Comunicações

17

3.3. Protocolo TCP

● Protocolo TCP – Transmission Control Protocol (RFC 793):

● Tem como objectivo principal fornecer um canal de comunicação lógico fiável

entre pares de processos

● Não assume fiabilidade de comunicação nos protocolos de nível inferior (p.

e. IP), garantindo ele próprio essa fiabilidade

● Fornece às aplicações bastante mais facilidades que o UDP, nomeadamente

recuperação de erros, controlo de fluxo e fiabilidade

● Protocolo orientado à conexão, ao contrário do UDP, que é não orientado à

conexão

Engenharia Informática ESTiG/IPB

Serviços de Comunicações

18

3.3. Protocolo TCP

Engenharia Informática ESTiG/IPB

Serviços de Comunicações

19

3.3. Protocolo TCP - Características

● Transferência de Sequências de Dados:

● do ponto de vista das aplicações, o TCP transfere sequências contínuas de

bytes através da rede

● a aplicação não tem de se preocupar em agrupar os dados em blocos ou

datagramas, já que o TCP realiza esta tarefa, agrupando os bytes a transferir

em segmentos TCP, que são passados de seguida ao IP para serem

transmitidos

Engenharia Informática ESTiG/IPB

Serviços de Comunicações

20

3.3. Protocolo TCP - Características

● Transferência de Sequências de Dados (cont.):

Engenharia Informática ESTiG/IPB

Serviços de Comunicações

21

3.3. Protocolo TCP - Características

● Sequenciação:

● o TCP atribui um número de sequência a cada byte transmitido e espera uma

confirmação positiva (positive acknowledgement - ACK) do host de destino

● Se o ACK não é recebido durante um intervalo de timeout, os dados são

retransmitidos

● Se os dados forem transmitidos em blocos (segmentos TCP), é enviado apenas

o número de sequência do primeiro byte de dados

● O TCP de destino usa os números de sequência para reagrupar os segmentos,

quando estes chegam fora de ordem, bem como para eliminar segmentos

duplicados

Engenharia Informática ESTiG/IPB

Serviços de Comunicações

22

3.3. Protocolo TCP - Características

● Controlo de Fluxo:

● o TCP de destino, quando envia um ACK para a origem, indica também qual o

número de bytes que pode receber a seguir, sem causar congestionamento dos

seus buffers

● A informação de controlo de fluxo é enviada no ACK na forma do maior número

de sequência que pode receber sem problemas

● Este mecanismo é também conhecido como o princípio das Janelas

Deslizantes

Engenharia Informática ESTiG/IPB

Serviços de Comunicações

23

3.3. Protocolo TCP - Características

● Controlo de Fluxo – Princípio das Janelas Deslizantes

Engenharia Informática ESTiG/IPB

Serviços de Comunicações

24

3.3. Protocolo TCP - Características

● Multiplexagem: é fornecida recorrendo ao uso dos portos, da mesma forma que o UDP

● Conexões lógicas:

● A sequênciação e o controlo de fluxo necessitam que o TCP inicialize e

mantenha determinada informação de estado para cada sequência de dados

● O conjunto desta informação, que inclui os sockets usados, números de

sequência e tamanho das ”janelas” é denominado conexão lógica

● Cada conexão é identificada de forma unívoca por um par de sockets

● Full Duplex: o TCP fornece tranferência de sequências de dados, de forma

concorrente, em ambas as direcções

Engenharia Informática ESTiG/IPB

Serviços de Comunicações

25

3.3. Protocolo TCP - Cabeçalho

Engenharia Informática ESTiG/IPB

Serviços de Comunicações

26

3.3. Protocolo TCP – Abertura de Conexão

Engenharia Informática ESTiG/IPB

Serviços de Comunicações

27

3.3. Protocolo TCP – Confirmação e Retransmissões

Engenharia Informática ESTiG/IPB

Serviços de Comunicações

28

3.3. Protocolo TCP – Controlo de Congestão

● Uma das principais diferenças entre o TCP e o UDP está nos algoritmos de controlo de congestão

● O TCP pode adaptar o fluxo de dados do emissor à capacidade da rede, para

prevenir potenciais situações de congestão

● As modernas implementações do TCP contém quatro algoritmos standard para a

realização desta tarefa:

● Slow Start

● Congestion Avoidance

● Fast Retransmit

● Fast Recovery

Engenharia Informática ESTiG/IPB

Serviços de Comunicações

29

3.3. Protocolo TCP – Slow Start

● As implementações mais antigas do TCP costumavam iniciar uma conexão com o emissor a injectar múltiplos segmentos na rede, até atingir o limite imposto pelo window size anunciado pelo receptor

● Se este comportamento não levanta problemas de maior em LAN’s, já em WAN’s,

que incluem encaminhadores intermédios, e podem incluir ligações lentas pelo meio,

podem surgir problemas.

● Nesta situação os encaminhadores intermédios podem começar a descartar pacotes,

a partir do momento em que os seus buffers atingem um limite

Engenharia Informática ESTiG/IPB

Serviços de Comunicações

30

3.3. Protocolo TCP – Slow Start

● O algoritmo Slow Start previne esta situação, iniciando o envio dos dados a débitos baixos, e, conforme se vai apercebendo das capacidades do canal, vai aumentando progressivamente este débito, até ao máximo possível sem entrar em congestão

● O emissor começa por enviar um segmento e espera pelo seu ACK

● Quando este é recebido, incrementa a congestion window de um para dois, enviando

então de seguida dois segmentos sem esperar pelos respectivos ACK

● Quando estes chegarem incrementa novamente o congestion window para quatro, e

assim sucessivamente

● Este aumento exponencial termina quando o receptor começa a atrasar o envio

dos ACK, que é a forma deste regular o débito do emissor

Engenharia Informática ESTiG/IPB

Serviços de Comunicações

31

3.3. Protocolo TCP – Slow Start

Engenharia Informática ESTiG/IPB

Serviços de Comunicações

32

3.3. Protocolo TCP – Congestion Avoidance

● A perda de um pacote, indica que pode haver congestão algures na rede

● Existem duas indicações base de pacotes perdidos: quando ocorre um timeout e

quando são recebidos ACKs duplicados

● O algoritmo Congestion Avoidance, que funciona em conjunto com o Slow Start, permite recuperar de situações de congestão evitando reinicialização completa do estado do canal

Engenharia Informática ESTiG/IPB

Serviços de Comunicações

33

3.3. Protocolo TCP – Fast Retransmit

● O algoritmo Fast Retransmit evita que o TCP tenha de esperar pela ocorrência de um timeout para reenviar segmentos perdidos

● Quando um pacote chega fora de ordem, o TCP gera e envia imediatamente um

conjunto de ACK duplicados (do último segmento recebido dentro da ordem)

● Este ACK duplicado vai indicar ao emissor que foram recebidos segmentos fora de

ordem, e qual é a sequência correcta que o receptor espera

Engenharia Informática ESTiG/IPB

Serviços de Comunicações

34

3.3. Protocolo TCP – Fast Retransmit

Engenharia Informática ESTiG/IPB

Serviços de Comunicações

35

3.3. Protocolo TCP – Fast Recovery

● O algoritmo Fast Recovery é implementado em conjunto com o Fast Retransmit, permitindo acelerar o processo de recuperação de situações de congestão

● Nesta situação, após a aplicação do Fast Retransmit, aplica-se o algoritmo

Congestion Avoidance, em vez do Slow Start, permitindo uma recuperação mais

rápida

Engenharia Informática ESTiG/IPB