Вы находитесь на странице: 1из 124

O Protocolo TCP

O Nvel de Transporte
 Implementa um servio de comunicao fim-
a-fim:
 Protocolos de transporte rodam nos sistemas finais
e permitem que aplicaes em uma mquina
enviem mensagens individuais para aplicaes
parceiras, localizadas em qualquer outra mquina
da internet.
 Prov uma comunicao lgica entre processos
de aplicao rodando em diferentes hosts.
Comunicao Fim-a-Fim
application
transport
network
data link network
physical data link
network physical
data link
physical
network
data link
physical network
data link
physical

network
data link
physical

application
transport
network
data link
physical
Servios de Transporte na Internet
 A arquitetura TCP/IP implementa dois protocolos de
transporte com caractersticas distintas: o TDP e o UCP.
 TCP (Transmission Control Protocol ):
 Protocolo de transporte fim-a-fim, orientado a conexo, que
fornece um servio de transferncia confivel de dados entre
aplicaes parceiras.
 Garante que os dados so entregues livres de erro, em
seqncia e sem perdas ou duplicao.
 UDP (User Datagram Protocol ):
 Protocolo do nvel de transporte que implementa um servio do
tipo best-effort (no confivel, sem garantia de entrega dos
dados).
 Servios no fornecidos no TCP/UDP:
 Tempo real, garantia de banda passante e multicast confivel.
TCP - Transmission Control Protocol
 Especificao original: RFC 793 [Postel 1981].
 Outras RFCs: 1122, 1323, 2018 e 2581
 Protocolo de transporte fim-a-fim, orientado a
conexo, que fornece um servio de transferncia
confivel de dados entre aplicaes parceiras.
 Garante que os dados so entregues livres de
erro, em seqncia e sem perdas ou duplicao.
Localizao e Principais Clientes
Encapsulamento
Caractersticas Gerais
 Usa o conceito de sockets para caracterizar uma
conexo.
 Socket = endereo IP + porta
 Permite estabelecer uma conexo entre um par de
sockets de acordo com parmetros de qualidade
de servio e segurana previamente especificados.
 Uma conexo definida univocamente por um par de
sockets.
 Prov comunicao do tipo full-duplex entre os
dois sockets da conexo. Esta comunicao
sempre unicast e ponto-a-ponto.
Caractersticas Gerais (cont.)

 O estabecimento de conexes negociado (uso


do mecanismo de three-way handshaking).
 Handshaking = troca de mensagens de controle.
 Admite o trmino negociado ou abrupto de
conexes.
 Implementa temporizao na entrega de dados.
 Realiza a entrega ordenada de dados.
 Permite a sinalizao de dados urgentes.
 Permite o relato de falha de servio.
 Permite a entrega obrigatria de dados (flag
push).
Caractersticas Gerais (cont.)

 Controle de fluxo baseado no uso de janelas


deslizantes com alocao de crditos.
 Controle de erros atravs do uso de nmeros de
seqncia e do clculo do checksum para todo o
segmento.
 Recuperao de erros para dados perdidos e
duplicados.
 Demultiplexao entre mltiplas aplicaes em um
dado host destino.
 Segmentao de dados para aumentar a eficincia
da transmisso.
O Conceito de Porta
 Para cada nvel da arquitetura existe um campo no
protocolo da camada que indica para quem os dados
encapsulados devem ser entregues.
 No nvel de enlace, o campo Type indica qual o protocolo que
est encapsulado no frame Ethernet (p.ex., um valor igual a
0x0800 indica que os dados devem ser passados para o IP).
 No nvel de rede, o campo Protocol no cabealho do IP identifica o
protocolo para o qual o datagrama deve ser repassado (p.ex., 17
para o UDP e 6 para o TCP).
 De maneira similar, para distinguir dentre as vrias
aplicaes, o nvel de transporte associa um identificador a
cada processo de aplicao. Esse identificador chamado
de Porta (port number).
Porta (cont.)
Porta (cont.)

 Uma porta um objeto abstrato, codificado por um


nmero inteiro de 16 bits, usado para identificar processos
de aplicao.
 Para uma aplicao poder falar com uma outra numa
mquina remota, preciso conhecer no apenas o
endereo IP da mquina destino mas tambm a porta
associada aplicao parceira.
 O UDP e o TCP fornecem um conjunto de portas que
permite a mltiplos processos dentro de uma nica
mquina usarem os servios de comunicao providos pelo
UDP e TCP simultaneamente.
Portas (cont.)

32 bits
 Nmeros de portas
source port # dest port #
origem e destino so
includos no cabealho other header fields
do TCP e do UDP.
application
data
(message)

TCP/UDP segment format


Well-Known Ports
 Nmeros de portas referentes a servios
especficos, pblicos e globais, conhecidos de
todas as aplicaes.
Modelo de Comunicao do TCP
 O TCP opera segundo o modelo cliente-servidor.
 A aplicao servidora espera por pedidos de conexo
das aplicaes clientes.
 A comunicao entre aplicaes modelada como
um stream ordenado de bytes, fluindo em direo
aplicao destino.
 No existe o conceito de registro ou de qualquer
message boundary.
 Quando o TCP recebe dados da aplicao ele os
armazena (adiciona) em um buffer de
transmisso.
Modelo de Comunicao (cont.)

 O TCP retira ento parte desses dados do


buffer e adiciona um cabealho, formando
um segmento.
 O segmento constitui a PDU da camada de
transporte.
Modelo de Comunicao (cont.)

Buffer de transmisso

Dados recebidos Vazio

TCP
Data
Header

Segmento
Segmento
 A unidade de dados trocada entre as entidades de
transporte denominada de Segmento.
 O segmento a unidade bsica de transferncia de
dados do TCP.
 Cada segmento entregue ao IP para
transmisso em um nico datagrama. Entretanto,
a fragmentao pode ser necessria no nvel de
rede.
 Como um protocolo orientado a byte o TCP
livre para dividir o stream de bytes em segmentos
de qualquer tamanho para transmisso.
Segmento (cont.)

receiver
P3 P4
application-layer M M
data
application
segment P1 transport P2
header M
M network
application application
Ht M transport transport
network
Hn segment network
Segmento (cont.)

 O tamanho de cada segmento independente dos


blocos de dados que a aplicao fornece.
 Normalmente, o TCP espera juntar uma
quantidade razovel de dados no buffer antes de
formar um segmento.
 Segmentos de tamanho grande permitem um uso
mais eficiente das facilidades de transmisso.
Entretanto, no so adequados para certas
aplicaes, como as interativas.
Segmento (cont.)
Nmeros de Seqncia

 Cada byte de um segmento de dados


enviado em uma conexo TCP visto como
tendo um nmero de seqncia.
 O cabealho do TCP contm o nmero de
seqncia do primeiro byte do segmento.
 Cada lado de uma conexo TCP possui o
seu prprio conjunto de nmeros de
seqncia.
Nmeros de Seqncia (cont.)

[205] [204] [203] [202] [201] [200]

[400] [401] [402] [403] [404] [405]


Nmero de Seqncia (cont.)

 O primeiro nmero de seqncia para cada


lado de uma conexo especificado no
estabelecimento da conexo.
 Para que uma conexo seja estabelecida os
dois lados devem se sincronizar (concordar)
com o nmero de seqncia inicial de cada
lado.
Portas TCP
 O TCP usa o conceito de porta para identificar a
aplicao destino.
 Os nmeros das portas TCP variam de 0 a 65535.
Portas de 0 a 1023 so reservadas para o acesso
a servios padro, como FTP e Telnet (well-known
ports).
 As portas permitem que vrios processos dentro
de uma estao utilizem simultaneamente as
facilidades de transmisso do TCP.
 A associao de portas aos processos tratada
independentemente em cada estao.
Decimal Description
1 TCP Multiplexer
5 Remote Job Entry

Well-Known 7
9
Echo
Discard
Ports do TCP 11 Active Users
13 Daytime
15 Who is up?
17 Quote of the Day
19 Character Generator
20 File Transfer Protocol (data)
21 File Transfer Protocol (control)
23 Telnet
25 Simple Mail Transport Protocol
37 Time
39 Resource Location Protocol
42 Host Name Server
43 Who Is
53 Domain Name Server
Well-Known Decimal Description

Ports do TCP 67 Bootstrap Protocol Server


68 Bootstrap Protocol Client
(cont.)
69 Trivial Filter Transfer
75 Any Private Dial-out Server
77 Any Private RJE Service
79 Who is on System
101 NIC Host Name Server
102 ISO-TSAP
103 X.400 Mail Service
104 X.400 Mail Sending
111 SUN Remote Procedure Call
113 Authentication Service
139 Net Bios Session Service
Sockets
 Um socket definido pela combinao de um
endereo IP e uma porta, sendo escrito sob a
forma nmero IP.nmero da porta
 Ex: 128.1.50.30.23 130.2.15.8.2219
 Um socket prov toda a informao de
endereamento que um cliente ou um servidor
necessita para identificar seu parceiro na
comunicao.
 Uma conexo TCP caracterizada univocamente
por dois sockets, um em cada lado da conexo.
Sockets (cont.)

 O exemplo abaixo mostra uma sesso TCP


de um cliente, identificado pela porta
2219 e endereo IP 130.2.15.8, para a
porta padro Telnet (23), na mquina
128.1.50.30.
> netstat -na
Active Internet connections (including servers)
Proto .......... Local Address Foreing Address (state)

tcp .......... 128.1.50.30.23 130.2.15.8.2219 Established

Sockets (cont.)

 Sockets permitem diferenciar entre mltiplas conexes.

TCP Connection of Two Hosts


Connection Source IP Address TCP Port Destination IP Address TCP Port
1 192.9.218.97 1234 192.9.218.96 23 Telnet
2 192.9.218.97 1235 192.9.218.96 23 Telnet
Sockets (cont.)

source port: x Web client


host A dest. port: 23 server B host C

source port:23
dest. port: x
Source IP: C Source IP: C
Dest IP: B Dest IP: B
source port: y source port: x
port use: simple telnet app dest. port: 80 dest. port: 80

Source IP: A
Dest IP: B Web
Web client source port: x server B
host A dest. port: 80
port use: Web server
Controle de Fluxo
 Tcnica usada para garantir que a estao transmissora
no envia mais dados do que a estao receptora pode
processar.
 Quando dados so recebidos, a estao gasta um certo
tempo com o seu processamento e somente depois que
libera o buffer e fica apta a receber mais dados.
 Na ausncia do controle de fluxo, os buffers de recepo
poderiam encher enquanto ainda se estivesse
processando dados antigos no buffer.
 Tcnicas de controle de fluxo:
 Pra-e-Espera (Stop-and-Wait)
 Janelas Deslizantes (Sliding Windows)
Stop-and-Wait
 a forma mais simples de controle de fluxo (no o
esquema usado no TCP!).
 Os blocos de dados so numerados, alternadamente,
como 0 e 1. Inicialmente, a entidade origem transmite o
bloco de dados 0.
 Aps a recepo, a entidade destino indica o seu desejo
de aceitar um outro bloco enviando de volta uma
confirmao de recebimento (Ack) do bloco 0.
 Geralmente, Ack1 confirma o recebimento do bloco 0 e solicita a
transmisso do bloco de nmero 1, e Ack0 confirma o recebimento
do bloco 1 e solicita a transmisso de um bloco de nmero 0.
 A entidade origem sempre aguarda a recepo do Ack
correspondente antes de enviar o prximo bloco.
 Desta forma, a estao destino pode controlar o fluxo de
dados simplesmente retardando o envio do Ack.
Janela Deslizante (Sliding Window)
 A essncia do problema do controle de fluxo oferecido
pelo protocolo Stop-and-Wait que apenas um bloco de
dados pode transmitido por vez (baixo desempenho).
 A soluo bvia permitir mltiplos blocos estarem em
trnsito num dado momento.
 O nmero de blocos que podem ser transmitidos sem
esperar pelo recebimento de um ACK define o tamanho da
janela.
 Agora, a estao receptora aloca N buffers, ao invs de apenas
um, podendo assim aceitar N blocos. A estao transmissora, por
sua vez, pode enviar N frames sem esperar por um Ack.
 Mecanismo empregado no TCP.
Janela Deslizante (Sliding Window) (cont.)
Janela Deslizante (Sliding Window) (cont.)
Janela Deslizante (Sliding Window) (cont.)
Controle de Erros
 Refere-se aos mecanismos usados para detectar e corrigir
erros que ocorrem em uma transmisso de dados.
 Normalmente so considerados dois tipos de erro:
 Bloco danificado: o bloco chega estao destino mas alguns dos
seus bits possuem erros (foram alterados durante a transmisso).
 Bloco perdido: o bloco no chega estao destino. Pode ter sido
descartado em um roteador ou um rudo pode t-lo danificado
numa extenso tal que o receptor no est ciente de que ele tenha
sido enviado.
 As tcnicas mais comuns para so baseadas em alguns ou
em todos os seguintes ingredientes:
 Deteco de erros: tipicamente usada a tcnica de CRC.
 Ack positivo: a estao destino retorna um Ack positivo para
indicar um bloco recebido com sucesso, livre de erros.
Controle de Erros (cont.)

 Retransmisso aps timeout: a estao origem retransmite um


bloco que no tenha sido confirmado aps certo tempo.
 Ack negativo com retransmisso: a estao destino retorna um Ack
negativo para aqueles blocos onde erros foram detectados. A
estao origem ento retransmite-os.
 Coletivamente, esses mecanismos so referidos como
tcnicas ARQ (Automatic Repeat Request).
 As trs verses mais comuns dessas tcnicas so:
 Stop-and-wait ARQ
 Go-back-N ARQ
 Selective-reject ARQ
 Todas essas tcnicas so baseadas no uso dos esquemas
de controle de fluxo anteriormente descritos (Stop-and-
Wait e Sliding Windows).
Stop-and-Wait ARQ
Stop-and-Wait ARQ (cont.)
Go-Back-n ARQ
 Mecanismo usado no TCP, em conjunto com o esquema de
janelas deslizantes.
 A janela possui tamanho N, significando que at N blocos
consecutivos so permitidos na janela.
 Os blocos de dados so numerados em seqncia mod N
 Ex: 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 ... (para N=8)
 Ack(n):
 Reconhece todos os blocos at o de nmero de seqncia n-1.
 Existe um timer associado a cada bloco em trnsito.
 Na ocorrncia de timeout(n):
 Retransmite o bloco n e todos os outros com nmero de
seqncia maior que n na janela.
Go-Back-N em Ao
Formato do Segmento TCP
32 bits
URG: urgent data counting
(generally not used) source port # dest port #
by bytes
sequence number of data
ACK: ACK #
valid acknowledgement number (not segments!)
head not
PSH: push data now len used
UA P R S F rcvr window size
(generally not used) # bytes
checksum ptr urgent data
rcvr willing
RST, SYN, FIN: to accept
Options (variable length)
connection estab
(setup, teardown
commands)
application
Internet data
checksum (variable length)
(as in UDP)
Nmero das Portas Origem e Destino
 Identificam a aplicao transmissora e
receptora, cada uma delas associada a um
ponto da conexo.
 Esses dois valores, juntamente com os
endereos IP de origem e destino,
presentes no cabealho IP, identificam
univocamente a conexo.
 Conexo = par de sockets.
Nmero de Seqncia

 Identifica o nmero do primeiro byte


dentro do stream de bytes que est
sendo transmitido naquele segmento.
 Assume valores entre 0 e 232-1.
Nmero do Acknowledgement
 Como cada byte numerado, esse campo
identifica o prximo nmero de sequncia
(prximo byte) que se espera receber do
host remoto.
 Esse valor igual ao nmero do ltimo byte
recebido + 1.
 O campo vlido somente se o flag de ACK
estiver ligado.
Nmero do Acknowledgement (cont.)

 Alguns segmentos carregam somente Ack


enquanto outros carregam dados ou solicitaes
para estabelecer ou encerrar uma conexo.
 Uma vez estabelecida a conexo, este campo ter
sempre algum valor e o flag de ACK estar
sempre ligado.
 Observao:
 O TCP no faz Ack Seletivo nem tampouco Ack
Negativo de bytes.
Tamanho do Cabealho
 Informa o tamanho do cabealho do
segmento, medido em palavras de 32 bits.
 A informao de tamanho necessria
porque o campo de Options do TCP possui
tamanho varivel.
 Com 4 bits, o tamanho do cabealho
limitado a 60 bytes. Sem opes, o
tamanho default de 20 bytes.
Campo de Flags

 Os flags identificam o propsito e o


contedo de cada segmento.
 Existem seis flags:
 URG, ACK, PSH, RST, SYN e FIN.
 Um ou mais podem podem estar ligados
num certo momento.
Bit Significado
URG Indica a presena de dados urgentes no segmento
(urgent pointer vlido).

ACK Vale 1 para todos os segmentos, exceto p/ segmento


SYN inicial (aknowledgement number vlido).

PSH Transmissor notifica ao receptor para que ele passe


todos os dados que possui no seu buffer para o
processo de aplicao.
RST Resseta a conexo.

SYN Sincroniza os nmeros de seqncia no setup da


conexo.

FIN Transmissor solicita trmino normal da conexo


(parou de enviar dados).
Tamanho da Janela
 Para implementao do seu mecanismo de
controle de fluxo (sliding window), o TCP requer
que cada um dos lados anuncie o tamanho da sua
janela de recepo.
 O tamanho da janela determina o nmero de
bytes que se est disposto a aceitar, iniciando-se
com o valor definido no campo ack number.
 limitado ao valor 65.535 (0 a 216-1).
Checksum e Urgent Pointer
 O campo de checksum cobre todo o segmento
TCP (cabealho + dados).
 Emprega um esquema de clculo semelhante ao
do UDP, que inclui um pseudo-header extrado do
cabealho do IP.
 Urgent pointer um offset positivo que deve ser
adicionado ao campo de nmero de seqncia,
para indicar a posio do ltimo byte dos dados
urgentes.
 a maneira que o transmissor tem para transmitir
dados de emergncia .
TCP Options e a Opo MSS
 A especificao original do TCP (RFC 793) define
cinco opes. As RFCs mais novas (por exemplo, a
RFC 1323) definem opes adicionais.
 A opo mais comum o MSS (Maximum
Segment Size).
 O valor do MSS especifica o maior tamanho de
segmento que o n est disposto a receber.
 Normalmente, cada lado da conexo especifica o
valor do MSS no estabelecimento da conexo (na
troca de segmentos SYN).
Lista de TCP Options
Estabelecimento de Conexo

 Passive Open no especificada


 Aguarda tentativa de conexo de qualquer
estao remota, com nveis de segurana e
precedncia especificados.
 Passive Open completamente especificada
 Aguarda tentativa de conexo de uma estao
remota especfica, com nveis de segurana e
precedncia especificados.
Estabelecimento de Conexo (cont.)

 Active Open
 Solicita conexo a uma estao remota
especfica, com nveis de segurana e
precedncia especificados.
 Active Open com dados
 Solicita conexo a uma estao remota
especfica, com nveis de segurana e
precedncia especificados.
 Contm dados do usurio.
Estabelecimento de Conexo (cont.)

 As conexes podem ser estabelecidas no modo


passivo ou ativo.
 No modo passivo, o usurio solicita ao TCP que
aguarde pedidos de conexo (via primitiva Passive
Open).
 Na Passive Open completamente especificada o
usurio especifica um socket remoto do qual ele
aceitar conexes.
 Uma conexo ento estabelecida quando uma
Active Open executada na porta remota.
Estabelecimento de Conexo (cont.)

 Na Passive Open no especificada o usurio


declara o seu desejo de estabelecer conexo com
qualquer outro usurio.
 No modo ativo, usando a primitiva Active Open, o
usurio solicita uma conexo com um socket
especfico.
 A conexo pode ser aberta se existir uma
primitiva Passive Open no socket remoto ou se o
socket remoto tiver emitido um Active Open.
Estabelecimento de Conexo (cont.)

Primitivas Requisitos p/ a abertura da conexo

Active Open, Active Open Os endereos de destino em cada primitiva


referem-se ao outro socket. Parmetros de
segurana so idnticos.
Active Open, Passive Os endereos de destino em cada primitiva
Open completamente referem-se ao outro socket. Parmetro de
especificada segurana na Active Open est dentro da faixa
especificada pela Passive Open.

Active Open, Passive O parmetro de segurana na Active Open est


Open no especificada dentro da faixa especificada pela Passive Open.
Primitivas de Resposta de Servio

 Um pedido de estabelecimento de conexo pode


receber as seguintes respostas:
 Open ID
 Informa ao usurio o nome atribudo conexo solicitada
atravs da primitiva Open.
 Open Failure
 Relata falha de um pedido de Active Open.
 Open Success
 Relata a concluso de um pedido de Active Open ou Passive
Open pendente.
Relacionamento entre as Primitivas
Passive Open

Open ID
Active Open

Open ID
Mecanismo
Three-Way
Handshaking

Open Success
Open Success
Three-Way Handshake
 O TCP se utiliza do mecanismo de three-way
handshake para estabelecer uma conexo.
 Este mecanismo garante a correta sincronizao
entre os usurios da conexo de transporte.
 O three-way handshake envolve a troca de trs
segmentos (isto , o mecanismo possui trs
passos).
Three-Way Handshake (cont.)

A B
Passive Open

Active Open Open ID


SYN(x)

Open ID
SYN(y), ACK(x+1)
Open Success
ACK(y+1)

Open Success
Handshake #1
 Quando um socket local estabelecido, o TCP
envia um segmento SYN inicial para o TCP
remoto, seta um timer de retransmisso e
espera at que o timer expire ou que receba um
ACK do socket remoto.
 O segmento de handshake #1 identificado pelo
bit SYN no campo de Flag e carrega o nmero de
seqncia inicial (x).
Handshake #1 (cont.)
Handshake #2 (cont.)

 O segmento de handshake #2 tem tanto o bit


SYN quanto o bit ACK ligados, confirmando o
recebimento do segmento de handshake #1 e
indicando a continuao do processo de
handshaking.
 Quando o segmento chega ao socket remoto, o
TCP verifica se o flag SYN est presente e se o
checksum est ok.
 O TCP do lado passivo (servidor) guarda o
nmero de seqncia inicial do lado ativo e envia
um segmento SYN+ACK.
 Um timer de retransmisso tambm ligado.
Handshake #2 (cont.)
Handshake #3
 O segmento de handshake #3 possui somente o
bit ACK ligado, podendo ou no conter dados.
 usado para informar ao destino que ambos os
lados concordam que uma conexo foi
estabelecida.
 Quando o TCP recebe o segmento SYN+ACK do
lado servidor (passivo), ele confirma o
recebimento enviando um segmento ACK.
 Somente quando o lado servidor recebe este
segmento de ACK a conexo estabelecida.
Handshake #3 (cont.)

 Caso o timer de retransmisso estoure


antes do recebimento do segmento
SYN+ACK, o TCP retransmite o segmento
inicial SYN e reinicia o timer.
 O TCP abandona a conexo aps um
nmero pr-definido de retransmisses.
 Nesse caso, o TCP envia mensagem ao seu
usurio e libera os recursos alocados.
Handshake #3 (cont.)
Encerramento de Conexo

 O encerramento de conexo no TCP pode


ser feito de uma das duas formas:
 Normal, para encerramento negociado.
 Abrupta, para encerramento unilateral, no
negociado.
Encerramento de Conexo

 As primitivas de pedido de servio de


encerramento de conexo so:
 Close
 Fecha a conexo normalmente, de forma negociada.
 Abort
 Fecha a conexo de forma abrupta, sem qualquer
negociao.
Encerramento de Conexo (cont.)

 As primitivas de resposta de servio de


encerramento de conexo so:
 Closing
 Informa ao processo de aplicao remoto que a
aplicao cliente, usuria do TCP, emitiu um pedido
de trmino normal de conexo (Close) e que todos
os dados enviados por esta aplicao j foram
entregues.
 Terminate
 Informa que a conexo foi encerrada, sendo
fornecida uma descrio da razo do encerramento.
Close / Closing
client server

Close
Dados pendentes
de A para B

Closing
Close / Terminate
client server

Close
Dados pendentes
de B para A
Terminate
Terminate
Encerramento Negociado de Conexo

 A primitiva Close informa que o lado


cliente completou a transferncia dos
dados.
 Implicitamente, obriga a execuo da
funo push, isto , o envio de todos
os dados armazenados no buffer de
transmisso.
Encerramento Negociado de Conexo (cont.)

 A primitiva Close dispara a seguinte seqncia


de eventos:
 O TCP local (lado cliente, ativo) transmite todos os
dados do buffer e sinaliza ao TCP remoto (lado
servidor, passivo) que est fechando a conexo.
 O TCP remoto entrega todos os dados disponveis
aplicao remota e a informa do pedido de Close
emtindo a primitiva Closing.
 Se desejar, a aplicao remota pode enviar dados
pendentes e, ento, emitir a primitiva Close.
Encerramento Negociado de Conexo (cont.)

 O TCP remoto transmite todos os dados pendentes e


sinaliza ao TCP cliente que est pronto para encerrar a
conexo.
 O TCP cliente entrega os dados pendentes aplicao
local e emite para esta uma primitiva Terminate,
informando-a que encerrou a conexo no lado cliente.
 O TCP cliente tambm sinaliza ao TCP remoto que
encerrou a conexo. Para isso, envia-lhe um segmento
especfico.
 Ao receber esse ltimo segmento, o TCP remoto emite
para a aplicao remota a primitiva Terminate,
encerrando a conexo no lado servidor.
Encerramento Negociado de Conexo (cont.)

 Observe que, num esquema de


encerramento de conexo negociado, aps
a emisso da primitiva Close, o usurio do
TCP local obrigado a continuar recebendo
dados pela conexo at que o TCP remoto
termine de enviar todos os seus dados e,
posteriormente, tambm decida encerrar a
conexo.
client server

Close
Dados pendentes
Encerramento de A para B
Negociado de
Conexo (cont.) Closing

Close
Dados pendentes
de B para A
Terminate
Terminate
Encerramento Abrupto de Conexo
 Ocasionalmente, podem ocorrer condies anormais que
forcem uma aplicao ou o TCP a terminar abruptamente
a conexo.
 O processo de aplicao encerra a conexo de forma
abrupta emitindo a primitiva de pedido de servio Abort.
 A partir desse ponto, a aplicao no aceita mais dados
pela conexo e, portanto, dados em trnsito sero
perdidos.
 Quando a aplicao solicita o trmino abrupto da conexo
o TCP local sinaliza ao TCP remoto que a conexo foi
abortada enviando um segmento especfico (com o bit RST
ligado) para o TCP do lado remoto.
Encerramento Abrupto de Conexo (cont.)

 O TCP remoto informa esse fato aplicao


destino atravs da primitiva Terminate. Ele
responde imediatamente abortando a conexo.
 O TCP tambm informa aplicao local sobre tal
ocorrncia, emitindo uma primitiva Terminate.
 Os recursos alocados, tais como buffers, so
liberados.
Troca de Segmentos no Encerramento da Conexo

 O encerramento normal da conexo envolve a


troca de 4 segmentos.
 Atravs desse mecanismo, o TCP permite que um
lado sinalize o trmino da sua transmisso,
enquanto ainda permite que ele receba dados do
outro lado da conexo.
 Uma vez encerrada a conexo em uma certa
direo, o TCP no aceita mais dados naquele
sentido.
 Esse mecanismo conhecido como Half-Close.
Troca de Segmentos no Encerramento da Conexo
(cont.)

 Ao receber a primitiva de encerramento de


conexo do usurio local, o TCP finaliza a
transmisso enviando os dados pendentes e
espera receber os correspondentes acks.
 Em seguida, o TCP envia um segmento FIN.
 O TCP remoto responde com um ACK do
segmento FIN e informa aplicao do seu
lado que no h mais dados disponveis.
Troca de Segmentos no Encerramento da Conexo
(cont.)
Troca de Segmentos no Encerramento da Conexo
(cont.)
client server

Close
Troca de Dados pendentes

Segmentos no de A para B

Encerramento da FIN(x)
Conexo (cont.) ACK(x+1) Closing

Dados pendentes
Close

de B para A

Terminate FIN(y), ACK(x+1)

ACK(y+1)
Terminate
Transferncia de Dados

 Se inicia aps o trmino do Three-way


handshake.
 Cada segmento contm no campo Ack o
nmero de seqncia do prximo byte
esperado do parceiro.
Transferncia de Dados (cont.)

client
data 100, ack 301 server

data 301, ack 201

data 201, ack 401


data 301, ack 401

data 401, ack 401

no data, ack 501


Transferncia de Dados (cont.)

client
data 501, ack 401 server

data 601, ack 401

data 501, ack 401


Timeout!

no data, ack 701


Delayed Ack
 Normalmente, o TCP no envia o Ack no
instante em que ele recebe dados.
 Ao contrrio, ele retarda o envio do Ack
esperando que tenha dados para enviar
na mesma direo.
 Esse mecanismo conhecido como
Piggyback (confirmao por carona).
 A maioria das implementaes usa um
delay de 200ms.
Transferncia de Dados

 Primitivas de pedido de servio:


 Send
 Transfere dados atravs da conexo identificada
pelo parmetro nome da conexo local (retorno da
primitiva OpenId).
 Allocate
 Solicita ao TCP aumento da rea alocada para a
recepo dos dados (negociada no estabelecimento
da conexo).
Transferncia de Dados (cont.)

 Send usada pelo processo de aplicao para


enviar dados atravs de uma conexo TCP/IP.
 Por meio da primitiva Send , os blocos de dados
da aplicao so entregues ao TCP, que os coloca
no buffer de transmisso.
 Se o push flag estiver ligado na primitiva
Send, todos os dados contidos no buffer so
enviados imediatamente, em um ou mais
segmentos; seno, tenta-se maior eficincia.
Transferncia de Dados (cont.)

 Dados que chegam atravs da conexo so


armazenados no buffer de recepo.
 Na recepo, se o push flag estiver ligado os
dados do buffer so imediatamente entregues ao
usurio, atravs da primitiva Deliver.
 Deliver: relata a chegada de dados.
 Se o push flag no estiver ligado, tenta-se
minimizar as interrupes do sistema.
Transferncia de Dados (cont.)

 Aos dados tambm pode estar associado um


urgent flag, existente na primitiva Send.
 Nesse caso, o usurio destino recebe um
indicador urgent junto com os dados, sendo sua
responsabilidade process-los to rpido quanto
possvel.
 A primitiva Allocate utilizada para informar ao
TCP sobre a quantidade de bytes que o usurio
espera receber.
Estado da Conexo
 Primitiva de Servio: Status
 Solicita o estado atual da conexo.
 Parmetros: nome (Id) da conexo local.
 Primitiva de resposta de servio: Status
Response
 Relata o estado atual da conexo.
 Parmetros: nome da conexo local, porta origem e
destino, end. origem e destino, estado da conexo,
janela de recepo e transmisso, nmero de acks
aguardando, nmero de recepes aguardando, estado
de urgncia, etc.
Relatrio de Erros da Conexo
 Primitiva de Resposta de Servio: Error
 Relata erros de pedidos de servio ou erros

internos.
 Usada para informar ao usurio TCP sobre os

pedidos ilegais de servios relativos conexo


ou sobre os erros relacionados s estaes
envolvidas na conexo.
Active Open Simultneo: FSM
Close Simultneo: FSM
Mquina de
Estados do TCP
Stevens - Fig.18.2
O Estado 2MSL (Time_Wait)
 MSL (Maximum Segment Lifetime) a maior
quantidade de tempo que um segmento pode
existir na rede antes de ser descartado.
 Recorde que segmentos so trasmitidos como
datagramas IP e que estes possuem um valor de
TTL que limita o tempo de vida dos datagramas.
 A RFC 793 especifica um valor de MSL de 2
minutos. Valores comuns implementados so: 30
segundos, 1 minuto e 2 minutos.
O Estado 2MSL (Time_Wait) (cont.)

 Quando o TCP executa um Close e envia


o Ack final, a conexo deve permanecer
no estado Time_Wait por um tempo igual
a 2xMSL.
 Isso permite ao TCP reenviar o Ack final
no caso desse Ack se perder (em cujo
caso ocorre timeout e outro lado da
conexo retransmite o segmento final FIN).
Tamanho da Janela (Window Size)
Tamanho da Janela (Window Size) (cont.)

 O tamanho da janela de recepo definido por


cada um dos lados no estabelecimento da
conexo.
 Um anncio de alterao deste valor pode ser
feito a qualquer momento, por qualquer um dos
lados. O resultado um mecanismo simples de
controle de fluxo.
 O valor do tamanho da janela relativo (tem
como byte inicial) ao acknowledge sequence
number.
A Janela Deslizante (Sliding Window)
 A janela vai se fechando medida que dados vo
sendo enviados e reconhecidos (chegam os acks
correspondentes).
 A janela vai se abrindo, permitindo que mais
dados sejam enviados, medida que o processo
receptor no lado remoto l os dados j
reconhecidos (que j foi dado ack), liberando
espao no buffer de recepo do TCP.
O Valor do MSS (Maximum Segment Size)
 O tamanho do MSS tambm informado no
estabelecimento da conexo.
 Ele especifica o maior tamanho de segmento que
se est disposto a receber.
 Mesmo que uma interface de rede de um dos
lados tenha uma MTU maior do que o valor do
MSS informado pelo lado remoto, o valor do
MSS que limita o tamanho do segmento que pode
sair (atravessar) por aquela interface.
Controle de
Fluxo no TCP:
Exemplo
Stevens - Fig.20.1

 Transferncia
de 8192 bytes
da mquina
svr4, porta
1056, para a
mquina bsdi,
porta 7777,
em oito blocos
de 1024
bytes.
Controle de Fluxo no TCP: Um Exemplo (cont.)

 No exemplo da figura anterior:


 Os valores da janela de recepo anunciados (win 4096) so
iguais, bem como os valores do maximum segment size (<mss
1024>), do transmissor e receptor.
 Como visto anteriormente, o valor do mss indica que no se quer
receber segmentos maior do que esse limite.
 Os valores 1305814529 e 1367249409 vistos nos Segmentos 1 e 2
indicam o nmero de seqncia inicial do lado svr4 e bsdi,
respectivamente.
 Os valores entre parnteses indicam o nmero de bytes no campo
de dados. Assim, 1305814529:1305814529 (0) indica que o
nmero de seqncia do segmento 1305814529 e que o nmero
de bytes no segmento zero.
Controle de Fluxo no TCP: Um Exemplo (cont.)

 No exemplo da figura anterior:


 No Segmento 3, Ack 1 indica que a mquina svr4
espera agora receber o byte 1 de dados.
 Nos segmentos 4, 5 e 6, PSH 1:1025(1024) indica a
transmisso de um segmento de tamanho 1024,
comeando no byte 1 e terminando no byte 1025.
 O segmento 7 reconhece dois segmentos apenas (Ack
2049). Observe que o mecanismo de delayed
ackest sendo usado no exemplo.
 Observe que no anncio de tamanho da janela do
Segmento 8, est refletido o fato de que 1024 bytes
ainda esto no buffer de recepo para serem lidos
pelo processo de aplicao na mquina bsdi.
Controle
de Fluxo
no TCP:
Um
Exemplo
(cont.)
Controle
de Fluxo
no TCP:
Fast
Sender,
Slow
Receiver
O Flag PUSH
 uma notificao enviada pelo TCP transmissor para o TCP receptor
para que este passe imediatamente todos os dados que tiver no seu
buffer para o processo receptor.
 Na especificao original do TCP, era assumido que a interface de
programao permitiria ao processo transmissor dizer ao TCP quando
setar o bit de PUSH. Permitir que a aplicao cliente diga ao TCP
transmissor que ligue seu flag PUSH significa:
 Uma notificao de que o processo cliente no quer que o seu TCP fique
esperando pela chegada de dados adicionais da aplicao no seu buffer
para ento enviar segmentos para o lado remoto (servidor).
 Uma notificao ao TCP remoto (lado servidor) para que, se ele receber
um segmento com o PUSH flag ligado, passar imediatamente os dados
existentes no seu buffer para o processo servidor e no ficar esperando
que mais dados cheguem ao seu buffer ento para isso acontecer.
 Atualmente, a maioria das APIs no fornece uma maneira da aplicao
dizer ao TCP quando setar o flag PUSH. assumido que uma boa
implementao do TCP sabe determinar quando setar este bit por si
mesma.
O Mecanismo
Slow Start
O Protocolo UDP [RFC 768]
 Ao contrrio do TCP, o UDP prov um servio de transao
simples, com um mnimo de overhead.
 Oferece um servio de entrega best-effort:
 Segmentos de dados podem ser perdidos
 Segmentos de dados podem ser entregues fora de ordem
 um protocolo no orientado a conexo (connectionless):
 No existe nenhum handshaking entre origem e destino.
 Cada segmento UDP completamente independente dos outros.
 No existe o envio ou recebimento acknowledgments,
mecanismo usado quando se deseja garantir a
confiabilidade do servio.
Caractersticas
 rpido
 No existe estabelecimento de conexo (que uma
fonte de delay).
 simples
 No mantm o estado da conexo na origem e no
destino.
 Apresenta um pequeno cabealho.
 No implementa nenhum mecanismo de controle de
congestionamento, de fluxo ou de erros.
 Transferncia confivel sobre o UDP
 Permite adio de confiabilidade com a introduo de
mecanismos de recuperao de erros especficos da
aplicao (o que pode ser visto como uma vantagem).
Caractersticas Adicionais ao IP
 Possui a habilidade de demultiplexar dados para
um processo de aplicao baseado no nmero da
porta destino.
 Permite que os datagramas sejam direcionados para a
aplicao apropriada na camada superior.
 Apresenta um checksum que permite detectar
erros que porventura ocorram quando dados so
transmitidos de uma fonte a um destino.
Aplicaes UDP
 O UDP ideal para aplicaes de monitoramento,
gerncia, debugging e testes.
 tambm adequado para aplicaes de broadcast e
multicast.
 freqentemente usado em aplicaes multimdia, que
so tolerante a erros e sensveis taxa de transmisso.
 Principais usurios:
 NFS - sistema de arquivos
 SNMP - gerncia de redes
 TFTP - transferncia de arquivos
 DNS - servio de nomes
Nmeros de Portas UDP
 Portas de 0 a 1023 so reservadas para servios
padro (well-known ports).
 Os nmeros dos well-known-ports so atribudos pelo
IANA.
 Portas acima de 1023 so alocadas para as
aplicaes de rede dos clientes.
 O uso de well-known-ports permite ao cliente
identificar servios gerais que ele quer acessar.
 DNS: 53, FTP: 21, Telnet: 23, HTTP: 80
 Os nmeros das portas UDP e TCP so
independentes.
Select UDP Port Numbers

Nmeros de Decimal
5
Description
Remote Job Entry

Portas UDP (cont.) 7


9
Echo
Discard
11 Active Users
13 Daytime
15 Who is up or NETSTAT
17 Quote of the Day
19 Character Generator
37 Time
39 Resource Location Protocol
42 Host Name Server
43 Who Is
53 Domain Name Server
67 Bootstrap Protocol Server
68 Bootstrap Protocol Client
69 Trivial Filter Transfer
79 Finger
111 Sun Microsystems' RPC
123 Network Time Protocol
161 SNMP Message
Formato do Cabealho UDP
Formato do Cabealho
 Source Port
 Identifica a porta associada ao processo remetente.
 Destination Port
 Identifica a porta do processo destino.
 Campo que permite demultiplexar segmentos entre os processos
de aplicao da mquina destino.
 Length
 Indica o tamanho (nmero de bytes) da mensagem UDP,
incluindo o cabealho.
 Checksum
 Cobre cabealho e dados, sendo opcional (no TCP mandatrio).
Observaes
 O IP s faz o checksum do cabealho. Logo, o
checksum do UDP pode ser a nica forma de
garantir a integridade dos dados.
 Para evitar problemas com um possvel valor de
checksum igual a zero, o UDP checksum usa o
complemento de um.
 Nesse caso, existem dois valores para zero (todos
os bits zero e todos os bits 1). O valor com todos
os bits 1 usado se o checksum for realmente
Zero.

Вам также может понравиться