Como a transferência de dados é iniciada no TCP?

0

Conceitualmente, penso em uma conexão TCP como tendo dois aspectos.

  1. A "conexão" - isto é, um arranjo em que os dois hosts "concordam" em se comunicar uns com os outros. vagamente análogo a telefonar para alguém e, quando eles atendem no outro lado, você tem uma "conexão".
  2. A transferência de dados

O aspecto de conexão do TCP é bem abordado em documentos na web, os hosts negociam a conexão via handshake de 3 vias etc, mas neste momento você só tem uma conexão ociosa - novamente análoga a alguém atendendo o telefone na outra extremidade e tendo "ar morto"

Minha pergunta é que, quando essa conexão for estabelecida, como são os dados, por exemplo, uma transferência de arquivos iniciada? Eu imagino que algo parecido com o remetente delineando o que vai enviar, ou seja, "Estou indo te enviar ...., e você saberá que a transferência está completa quando você tem um arquivo de X bytes, ou você recebe um trailer de mim". Como uma transferência de dados / arquivos TCP é iniciada?

    
por the_velour_fog 24.04.2018 / 09:12

1 resposta

1

TCP é um protocolo de transmissão orientado por fluxo; Ele só se preocupa em obter bytes na ordem correta de um host para outro, não se importa com o conteúdo desses bytes ou qualquer mensagem que eles possam formar. Uma vez que uma conexão é estabelecida, o final da conexão pode enviar bytes para o outro.

Para dar significado a uma mensagem, você precisa concordar com um protocolo em cima do TCP. É esse protocolo que determina quais mensagens devem ser enviadas e como interpretar mensagens recebidas; isso inclui determinar quando uma mensagem é concluída. Por exemplo, em HTTP, se o cabeçalho “Content-Length” estiver presente, o receptor pode usá-lo para descobrir se recebeu todos os dados; se não for, outros métodos são usados (veja o RFC para detalhes), até simplesmente esperando que o servidor feche a conexão (que, de alguma forma, está usando o TCP para determinar o tamanho da mensagem, embora de maneira bastante cara).

Se você quiser enviar mensagens individuais usando um protocolo de transporte orientado a mensagens, use UDP ou SCTP em vez de TCP.

    
por 24.04.2018 / 09:24