Baixe o app para aproveitar ainda mais
Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
7 - * Protocolos TCP/UDP 7 - * Objetivos descrever as funções do protocolo TCP entender as diferenças entre os protocolos TCP e UDP identificar o trânsito de um pacote pelas camadas do protocolo TCP/IP 7 - * TCP Transmission Control Protocol é orientado à conexão realiza comunicação fim-a-fim possui controle de fluxo através de janelamento conexão é definida pelos processos origem e destino aplicações mais comuns: TELNET, FTP, SMTP,HTTP 7 - * Estabelecimento de sessão SYN 7 - * Estabelecimento de sessão SYN SYN, ACK 7 - * Estabelecimento de sessão SYN ACK SYN, ACK 7 - * Estabelecimento de sessão SYN ACK dados SYN, ACK 7 - * Término de sessão de modo ordeiro dados dados de modo abrupto 7 - * Término de sessão de modo ordeiro dados FIN dados de modo abrupto 7 - * Término de sessão de modo ordeiro dados FIN ACK,FIN dados de modo abrupto ACK 7 - * Término de sessão de modo ordeiro dados FIN ACK,FIN dados RESET de modo abrupto ACK 7 - * Endereço TCP Telnet 10.0.0.1 10.0.0.1 A SP DP source port destination port ... 1028 23 ... 7 - * Well-Known TCP Port F T P S M T P TCP nível Aplicação nível Transporte port numbers TELNET 21 23 25 7 - * Sequenciamento dos pacotes SP DP SEQ ACK 1028 23 10 1 ... 7 - * Sequenciamento dos pacotes SP DP SEQ ACK 23 1028 1 11 ... SP DP SEQ ACK 1028 23 10 1 ... 7 - * Sequenciamento dos pacotes SP DP SEQ ACK 23 1028 1 11 ... SP DP SEQ ACK 1028 23 10 1 ... SP DP SEQ ACK 1028 23 11 2 ... 7 - * Sequenciamento TCP orientado a byte SEQ=1 NBYTES=100 7 - * Sequenciamento TCP orientado a byte SEQ=1 NBYTES=100 SEQ=101 NBYTES=50 7 - * Sequenciamento TCP orientado a byte SEQ=1 NBYTES=100 SEQ=101 NBYTES=50 SEQ=151 NBYTES=200 SEQ SEQ ANTERIOR NBYTES TX = + 7 - * Acknowledgement do TCP SEQ=1 NBYTES=100 7 - * Acknowledgement do TCP SEQ=1 NBYTES=100 ACK = 101 7 - * Acknowledgement do TCP SEQ=1 NBYTES=100 ACK = 101 SEQ=101 NBYTES=50 7 - * Acknowledgement do TCP SEQ=1 NBYTES=100 ACK = 101 SEQ=101 NBYTES=50 ACK = 151 ACK SEQ ANTERIOR NBYTES RX = + 7 - * Acknowledgement cumulativo SEQ=1 NBYTES=100 7 - * Acknowledgement cumulativo SEQ=1 NBYTES=100 SEQ=101 NBYTES=50 7 - * Acknowledgement cumulativo SEQ=1 NBYTES=100 SEQ=101 NBYTES=50 SEQ=151 NBYTES=200 7 - * Acknowledgement cumulativo SEQ=1 NBYTES=100 SEQ=101 NBYTES=50 SEQ=151 NBYTES=200 ACK=351 7 - * Janela do TCP SEQ=1 NBYTES=500 janela TCP de 1500 bytes janela TCP de 2000 bytes 7 - * Janela do TCP SEQ=1 NBYTES=500 SEQ=501 NBYTES=200 janela TCP de 1500 bytes janela TCP de 2000 bytes 7 - * Janela do TCP SEQ=1 NBYTES=500 SEQ=501 NBYTES=200 SEQ=701 NBYTES=1000 janela TCP de 1500 bytes janela TCP de 2000 bytes 7 - * Janela do TCP SEQ=1 NBYTES=500 SEQ=501 NBYTES=200 SEQ=701 NBYTES=1000 SEQ=1701 NBYTES=? janela TCP de 1500 bytes janela TCP de 2000 bytes 7 - * Confiabilidade do TCP 101 201 301 401 501 601 Janela = 300 bytes 7 - * Confiabilidade do TCP envia 101 envia 201 envia 301 101 201 301 401 501 601 101 201 301 Janela = 300 bytes 7 - * Confiabilidade do TCP ack 401 101 201 301 401 501 601 101 201 301 envia 101 envia 201 envia 301 Janela = 300 bytes 7 - * Confiabilidade do TCP envia 401 envia 501 envia 601 ack 401 101 201 301 401 501 601 101 201 301 envia 101 envia 201 envia 301 Janela = 300 bytes 7 - * Confiabilidade do TCP ack 501 envia 401 envia 501 envia 601 ack 401 101 201 301 401 501 601 101 201 301 envia 101 envia 201 envia 301 401 601 Janela = 300 bytes 7 - * Confiabilidade do TCP envia 501 ack 501 envia 401 envia 501 envia 601 ack 401 101 201 301 401 501 601 101 201 301 envia 101 envia 201 envia 301 401 601 Janela = 300 bytes 7 - * Confiabilidade do TCP ack 701 envia 501 ack 501 envia 401 envia 501 envia 601 ack 401 101 201 301 401 501 601 101 201 301 envia 101 envia 201 envia 301 401 601 501 Janela = 300 bytes 7 - * Retransmissão do TCP não possui pacote NACK retransmite após timeout intervalo de retransmissão é adaptativo e próximo ao round-trip time (RTT) médio 7 - * Técnicas de retransmissão retransmite apenas o primeiro pacote B A 1º pacote 2º pacote 1º pacote B A 1º pacote 2º pacote 1º pacote 2º pacote retransmite todos os pacotes 7 - * Formato do cabeçalho TCP source port destination port sequence number acknowledgement number hlen window header checksum urgent pointer options padding reserved F I N S Y N R S T P S H A C K U R G 7 - * UDP User Datagram Protocol não realiza confirmação fim-a-fim não possui controle de fluxo formato do cabeçalho: aplicações: SNMP, TFTP, DNS UDP source port UDP destination port UDP message length UDP checksum 7 - * Well-known UDP port DNS UDP nível Aplicação nível Transporte port numbers TFTP 53 69 161 S N M P 7 - * Transição do pacote TCP/IP T E L N E T F T P D N S T F T P endereço MAC TCP UDP IP Enlace Físico 23 21 53 69 6 17 7 - * Transição do pacote TCP/IP T E L N E T F T P D N S T F T P type, SAP ou Protocol endereço MAC TCP UDP IP Enlace Físico 23 21 53 69 6 17 7 - * Transição do pacote TCP/IP T E L N E T F T P D N S T F T P protocol endereço MAC TCP UDP IP Enlace Físico 23 21 53 69 6 17 type, SAP ou Protocol 7 - * Transição do pacote TCP/IP port numbers T E L N E T F T P D N S T F T P protocol endereço MAC TCP UDP IP Enlace Físico 23 21 53 69 6 17 type, SAP ou Protocol 7 - * Resumo o protocolo TCP realiza controle de fluxo fim-a-fim através de janelas o sequenciamento do TCP é orientado a byte, e não a pacote o intervalo de retransmissão do TCP é adaptativo o UDP não implementa controle de fluxo nem sequenciamento de pacotes O estabelecimento da conexão TCP é feito através de um segmento TCP que possui a indicação de tentativa de conexão, denominado SYN. Este segmento não possui dados, sendo reconhecido por possuir o bit SYN do campo flag do cabeçalho TCP “ligado”. Neste segmento são informados o tamanho da janela TCP e o tamanho máximo do campo de dados TCP, chamado de MSS (Maximum Segment Size). A resposta do segmento TCP SYN é o segmento SYN-ACK, que também não possui dados e é reconhecido por ter os bits SYN e ACK do campo flag do cabeçalho TCP “ligados”. Neste segmento de aceite de pedido de conexão são também informadas a janela TCP e o MSS. A conexão estará estabelecida após o envio de um segmento ACK, completando o handshake TCP. A recusa no estabelecimento da sessão TCP (através de um segmento TCP RST) normalmente indica um dos seguintes problemas: o número de conexões no servidor ultrapassou o limite máximo, a aplicação servidora não está ativa a aplicação não está definida. Após o envio dos dados, a sessão TCP pode ser encerrada por qualquer uma das partes (cliente ou servidor) elegantemente através de um segmento FIN. Este segmento não possui dados, sendo reconhecido por ter o bit FIN do campo flag do cabeçalho TCP “ligado”. Em caso de falhas, a sessão TCP é encerrada de forma abrupta com um segmento RST (Reset). Este também não possui dados, sendo reconhecido por possuir o bit RST do campo flag “ligado”. Os campos source port e destination port do cabeçalho TCP indicam respectivamente os endereços dos processos origem e destino. Quando a estação de trabalho A, por exemplo, solicita uma sessão de emulação de terminal TELNET com o nó 10.0.0.1, ela envia um segmento de início de estabelecimento de sessão SYN com os campos source port e destination port preenchidos da seguinte forma: destination port identifica o processo servidor; estes endereços estão definidos na última RFC que descreve o padrão 2 (documento STD 2) do IETF source port contém um endereço gerado randomicamente que identifica o processo cliente O nó 10.0.0.1, ao receber este segmento, irá verificar se a aplicação está ativa antes de dar o aceite do pedido de estabelecimento de sessão através do segmento SYN-ACK. Os endereços dos ports TCP estão definidos no padrão 2 (documento STD 2) do IETF. Os números dos ports estão divididos nos seguintes grupos: de 0 a 254: reservados para aplicações de domínio público de 255 a 1023: reservados para aplicações comerciais cadastradas acima de 1023: desregulamentado São chamados de well-known ports os ports situados na faixa de 1 a 1023. Cada segmento TCP enviado tem um número de sequência para que o módulo TCP no nó destino possa reordena-los na chegada. Quando o nó destino recebe um segmento, envia uma confirmação através de um segmento TCP com o campo Acknowlege preenchido. Neste campo está o número de sequência do próximo segmento esperado, indicando para o nó origem o correto recebimento, pelo nó destino, dos pacotes anteriores. O sequenciamento dos pacotes TCP é orientado a byte. O número de sequência do segmento é sempre igual ao número de sequência do segmento anteriormente transmitido, somado ao número de bytes transmitidos. O primeiro número de sequência é gerado randomicamente, e é determinado no estabelecimento da conexão TCP. A confirmação de entrega dos segmentos TCP é também orientada a byte. O valor do campo acknowledgement de um segmento é sempre igual ao número de sequência do segmento que está sendo confirmado somado ao número de bytes recebidos. Este valor indica para o nó origem o número de sequência do próximo segmento que o nó destino espera receber. O ACK pode ser cumulativo, sendo enviado após o recebimento de todos os segmentos. Neste caso, o valor do campo acknowledgement será a soma do último número de sequência confirmado com o número de bytes recebidos. O segmento ACK poderá estar acompanhado de dados, sendo denominado ack piggybacking. O controle de fluxo do TCP é implementado através de um mecanismo de janela. A janela define quantos bytes podem ser enviados sem a necessidade do recebimento de uma confirmação. Esta janela está relacionada ao tamanho do buffer de recepção do destinatário, e o seu valor inicial é informado quando do estabelecimento da sessão TCP. No diagrama acima, a estação de trabalho só poderá enviar até 2.000 bytes de dados ao servidor sem que haja recebimento de confirmação dos pacotes enviados. No entanto, o tamanho da janela do TCP é ajustado dinamicamente de acordo com a disponibilidade de buffers no receptor. Este mecanismo implementa o controle de fluxo fim-a-fim: se o servidor detectar que a estação está enviando um número de pacotes maior do que sua capacidade de recepção, ele sinalizará no segmento de ACK ou de dados um valor menor para a janela TCP, forçando uma diminuição na taxa de transferência de pacotes. A confiabilidade do TCP garante que os segmentos serão entregues ao seu destino sem que haja duplicação ou perda de pacotes. A técnica denominada positive acknowledgement with retransmission (confirmação positiva com retransmissão) assegura tal confiabilidade. A estação de origem mantém um registro dos segmentos enviados que esperam confirmação. Toda vez que é enviado um segmento, é inicializado um temporizador. Se o temporizador expirar antes que a confirmação tenha chegado, ocorrerá uma retransmissão. No diagrama acima, a estação origem enviou inicialmente os segmentos com número de sequência 101, 201 e 301. O destino confirmou a chegada de todos os segmentos com um ACK de número 401. A origem, ao receber esta confirmação, enviou mais três segmentos. Entretanto, devido a erros na rede, o segmento com número de sequência 501 chegou corrompido ao destino e foi descartado. Neste ponto entrou em ação o mecanismo de confiabilidade do TCP. Para cada pacote enviado existe um temporizador. A estação origem ficou à espera da confirmação dos segmentos enviados. Chegou um ACK de número 501, confirmando o segmento 401. Os temporizadores dos segmentos pendentes continuaram decrementando. Após expirar o tempo de retransmissão, a estação origem retransmitiu o segmento 501. A estação destino, após receber corretamente este pacote enviou um ACK de número 701 (ACK acumulativo), confirmando a recepção dos segmentos 501 e 601. A estação destino deve, através do número de sequência, ordenar os segmentos recebidos e passar o dados para a aplicação. A retransmissão dos segmentos TCP ocorre por timeout, evitando pacotes desnecessários e reduzindo ao mínimo o overhead de protocolo. Não existe pacote de NACK. O intervalo de retransmissão é adaptativo, sendo ajustado dinamicamente em função do meio de transmissão e do tráfego na rede. Este intervalo de retransmissão é denominado RTT (Round-trip Time). A RFC que define o TCP não faz nenhuma restrição quanto à forma de retransmissão dos pacotes TCP. É permitido retransmitir apenas o primeiro pacote que não obteve confirmação ou retransmitir todos os pacotes. Os campos source port e destination port do cabeçalho TCP contém respectivamente os endereços dos processos origem e destino. Cada segmento tem um número de sequência (sequence number) para que o módulo TCP destino possa ordenar a mensagem na chegada. No campo acknowledgement number tem-se o número do segmento esperado, que servirá para o nó origem identificar os segmentos anteriores que foram enviados com sucesso. O campo hlen indica o tamanho, em palavras de 32 bits, do cabeçalho TCP. Os seguintes bits, quando ligados, indicam o tipo de segmento: URG - sinaliza eventos assíncronos ACK - indica que é um segmento de ACK PSH - indica que este segmento requer urgência RST - indica segmento de término de sessão TCP de forma abrupta RESET SYN - indica segmento de pedido de estabelecimento de sessão TCP FIN - indica segmento de término de sessão TCP de forma natural FIN O campo header checksum contém o resultado do cálculo do checksum do cabeçalho TCP. O campo window define o tamanho, em bytes, da janela. O campo urgent pointer é usado para sinalizar eventos assíncronos através do envio de caracteres de controle ou de outros comandos de interrupção. O UDP é um protocolo de transporte não orientado à conexão. Possui um cabeçalho menor que o TCP (8 bytes) e não faz sequenciamento dos pacotes, deixando esta tarefa a cargo da aplicação. Os endereços dos ports UDP estão definidos no padrão 2 (documento STD 2) do IETF. Os números dos ports estão divididos nos seguintes grupos: de 0 a 254: reservados para aplicações de domínio público de 255 a 1023: reservados para aplicações comerciais cadastradas acima de 1023: desregulamentado São chamados de well-known ports os ports situados na faixa de 1 a 1023. A transição de um pacote entre os níveis do modelo OSI é feita através da identificação do valor de um campo no cabeçalho que apontará de forma única para o nível imediatamente superior. Quando um pacote TCP/IP chega na interface de comunicação, esta identificará se o pacote é seu lendo o endereço MAC. Se o endereço destino MAC do pacote coincidir com o endereço MAC gravado na placa de comunicação, o pacote é entregue para o nível de enlace. O nível de enlace analisará o campo type (Ethernet II), SAP (LLC 802.2) ou Protocol (SNAP) de modo a entregar o pacote para o protocolo de rede correto (IP, IPX, DECnet). No caso do IP, será analisado o campo protocol para que o protocolo de transporte (TCP ou UDP) seja identificado. O transporte, por sua vez, consultará o valor contido no campo port do seu cabeçalho para saber a aplicação destino.
Compartilhar