Uma conexão TCP tem dois pontos de extremidade

Estabelecendo uma conexão

Enviando e recebendo dados

O cliente envia um segmento com um número de série do 101, um número de confirmação de 501, um bit ACK de 1, um bit de SYN de zero, e oito bytes de dados na parte de dados do segmento. Os bits ACK e SYN não mudam para o restante da ligação. O servidor reconhece que recebeu a 8 bytes de dados através do envio de um segmento com um número de série do 501 e um número de confirmação de 109. A parte de dados deste segmento também pode incluir novos dados a serem enviados para o cliente, o que o cliente reconhece no outro segmento. Os segmentos enviados ao estabelecer uma conexão de dados pode incluir também. Quando isso ocorre, o destino deve conter os dados recebidos até que a conexão é estabelecida.

Um aperto de mão bem sucedido informa o computador de origem que os dados chegaram na camada do computador de destino TCP. Ainda há espaço para erros, entretanto, porque o aperto de mão não pode garantir que o processo designado no computador de destino recebeu os dados da camada TCP. Então, para ter certeza absoluta de que a aplicação do destino recebeu os dados, você precisa de um protocolo na camada de aplicação para proporcionar o reconhecimento.

Fechando uma conexão

Fechando conexão também exige um aperto de mão. Para fechar uma conexão completamente, cada computador envia um segmento com o bit FIN controle definido como 1 para indicar que o computador não tem mais dados para enviar. Cada destino deve acusar a recepção da FIN. Rede artigo 5-5 mostra um exemplo:

  

1. O cliente envia um segmento com o bit FIN controle definido como 1. Isso indica que o cliente irá enviar mais dados sobre esta ligação. O cliente pode continuar a receber a partir do servidor.

2. O servidor envia um segmento FIN reconhecendo o recebeu. Se o servidor não tem mais dados para enviar, ele define o bit FIN a 1. Caso contrário, o servidor continuará a enviar dados e define o bit FIN para 1 quando todos os dados foram enviados.

3. O cliente envia um segmento FIN reconhecendo o recebeu. A ligação é encerrada.

Naturalmente, é possível que um dos computadores vai falhar ou ser retirado da rede antes de fechar o aperto de mão é concluída. Neste caso, o outro computador poderá decidir depois de um tempo para analisar a conexão fechada e sem os recursos alocados para a conexão.

Controle de Fluxo

Um processo de envio pode ter vários segmentos pronto para enviar para um destino. Antes de enviar a cada segmento, o processo de envio pode esperar por uma confirmação para o segmento anterior. Mas esta não é a maneira mais eficiente de transferência de dados se o destino tem espaço para armazenar os dados em mais de um segmento.

Para obter mais transferências eficientes, o processo de envio pode usar um campo de cabeçalho recebido na janela para ajudar a determinar a quantidade de dados para enviar sem esperar por uma confirmação. O destino pode ajustar o tamanho de acordo com seu estado atual, alterando o conteúdo do campo Window, conforme necessário, os cabeçalhos que envia. Um número de reconhecimento recebido o remetente diz que o destino recebeu todos os dados com os números até um segmento inferior o número de confirmação. Se o remetente não recebe nenhum aviso, ele pode reenviar os dados. Normalmente, sobre o envio de um segmento, a fonte armazena temporariamente os dados do segmento em uma fila de retransmissão e inicia um temporizador. Ao receber um aviso, a fonte exclui os dados da fila de retransmissão. Se a fonte não recebe um reconhecimento pelo tempo que o timer tempo limite, a fonte assume que o destino não recebe o segmento e reenvia-lo, usando os dados na fila de retransmissão. A quantidade de tempo a aguardar antes de reenviar pode variar de acordo com a rede. Hosts freqüentemente usam a média de ida-tempo de viagem para uma transmissão em determinar um valor de tempo limite.

Melhorar a Performance

Ao longo do tempo, vários métodos têm se tornado de uso popular para ajudar a fazer transferências de dados TCP mais eficiente. Os métodos de limitar a quantidade de dados que um remetente pode enviar em algumas situações, e também pode eliminar a necessidade de aguardar um tempo de espera antes de retransmitir. Os métodos são Slow Start, Congestion Avoidance, Fast retransmitir e rápida recuperação. RFC2581: documentos TCP Congestion Control métodos. Os métodos têm a ver com a especificação do número de segmentos de uma fonte pode transmitir antes de receber uma confirmação. Se uma fonte aguarda o reconhecimento do segmento anterior, antes de enviar o próximo segmento, a fonte está em conformidade com os requisitos das normas propostas e aprovadas. Um sistema embutido que as transferências de dados com pouca freqüência pode usar este simples, se menos eficiente, a abordagem.

TCP Apoio em Sistemas Embarcados

Suporte TCP em um sistema embutido é mais complicado do que apoiar UDP. Além de adicionar e remover cabeçalhos e apoiar o IP, o computador deve executar o 3-way handshake para se conectar a um servidor remoto, manter a seqüência e números de confirmação quando a troca de dados, aperto de mão ao fechar uma conexão, e responder a erros detectados. Para enviar uma mensagem usando o TCP, um computador em uma rede Ethernet deve fazer o seguinte:

• Estabelecer uma ligação utilizando o 3-way handshake.

• Utilize o tamanho da janela recebidos para determinar a quantidade de dados a um computador remoto pode aceitar.

• Coloque os números de porta origem e destino, número de série, número de reconhecimento, o comprimento do cabeçalho, o tamanho da janela de origem, quantidade e nos locais apropriados no cabeçalho TCP. Calculando a quantidade exige saber a origem eo destino de endereços IP.

• Coloque os dados para enviar na parte de dados do segmento.

• Coloque o segmento TCP na parte de dados de um datagrama IP. O datagrama IP requer endereços IP de origem e de destino e de computação uma soma de verificação no cabeçalho.

• Passe o datagrama IP para o driver do controlador Ethernet para o envio na rede e iniciar um temporizador de timeout.

• Aguarde para receber um número de confirmação que indica que o computador remoto recebeu os dados. Se a confirmação não chegar antes do tempo limite, reenviar o segmento. Para receber um datagrama usando TCP, um computador em uma rede Ethernet deve fazer o seguinte:

• Estabelecer uma ligação utilizando o 3-way handshake.

• Receber um datagrama IP do controlador do controlador Ethernet.

• Faixa de cabeçalho IP do datagrama. Calcular o checksum e comparar com o valor recebido.

• Se as somas de jogo, tira o cabeçalho do segmento TCP. Calcular o checksum e compará-lo com o valor recebido.

• Examine o número recebido reconhecimento para descobrir se o segmento está a acusar a recepção dos dados enviados anteriormente e, nesse caso, excluir os dados da fila reconheceu retransmissão.

• Compare o número de seqüência recebido o valor esperado. Se o jogo números, definir o número de confirmação para retornar ao remetente em um segmento TCP.

• Utilize o número da porta de destino para decidir onde passar os dados. Além disso, a qualquer tempo, qualquer computador pode pedir para fechar ou reiniciar a conexão e outro computador deve conhecer o pedido e pode pedir para fechar ou reiniciar a conexão do outro extremo, se necessário.

Como os exemplos no início do tutorial mostrou em rede, se você estiver usando um módulo com suporte a TCP, os detalhes da criação dos segmentos e lidar com as somas de verificação e de seqüência e números de confirmação é feita para você.

um artigo submetido por Daniel R.


Isenção de responsabilidade:O nosso site não se responsabiliza pelo conteúdo deste artigo. Webarticles é uma fonte de informação livre.
Importante: Este artigo "Uma conexão TCP tem dois pontos finais" foi traduzida por um software automático. Nós sentimos muito por quaisquer erros de ortografia que pode ter ocorrido. Obrigado pela sua compreensão.


Online: 194 users browsing the articles directory   


  

|