Protocolos TCP

Revisão de 18h51min de 30 de outubro de 2017 por Adelson (discussão | contribs) (Criou página com 'O Protocolo de Controle de Transmissão (TCP) é um protocolo de rede que define como os dados são trocados entre os componentes da rede. Quase todos os sistemas operacionais...')
(dif) ← Edição anterior | Revisão atual (dif) | Versão posterior → (dif)

O Protocolo de Controle de Transmissão (TCP) é um protocolo de rede que define como os dados são trocados entre os componentes da rede. Quase todos os sistemas operacionais atuais de computadores modernos dominam TCP e usá-lo para troca de dados com outros computadores. O protocolo é um protocolo de transporte confiável, orientado para conexão, com comutação de pacotes em redes de computadores.

Ao contrário do UDP sem conexão (User Datagram Protocol), TCP estabelece uma conexão entre dois pontos finais de uma conexão de rede (sockets). Os dados podem ser transmitidos em ambas as direções nesta conexão. Na maioria dos casos, o TCP depende do IP (Protocolo de Internet), e é por isso que frequentemente (e muitas vezes não muito corretamente) falamos sobre o "protocolo TCP / IP". Nas pilhas de protocolo, como o modelo OSI , TCP e IP não estão na mesma camada. O TCP é uma implementação da camada de transporte.

Devido aos seus muitos recursos agradáveis ​​(a perda de dados é detectada e corrigida automaticamente, a transferência de dados é possível em ambos os sentidos, o congestionamento da rede é evitado, etc.), o TCP é um protocolo amplamente utilizado para a transmissão de dados. Por exemplo, o TCP é usado como o meio de transporte quase exclusivo para a www, e-mail e muitos outros serviços de rede populares.

Funcionamento Geral

Em princípio, o TCP é uma conexão full -to-end full duplex que permite a transmissão de informações em ambas as direções, análogo a uma chamada telefônica. Essa conexão também pode ser considerada como dois links half-duplex , onde informações podem fluir em ambas as direções (mas não simultaneamente). Os dados na direção oposta podem conter informações de controle adicionais. A administração desta conexão, bem como a transferência de dados, são assumidas pelo software TCP. 

Cada conexão TCP é identificada de maneira exclusiva por dois pontos finais. Um ponto final representa um par ordenado consistindo de endereço IP e porta. Esse par forma uma interface de software bidirecional e também é referido como um soquete . Assim, uma conexão TCP é identificada por quatro valores (um quadruplo):

 (Máquina local, porta x, máquina remota, porta y)

Tudo depende de todo o quádruplo. Por exemplo, dois processos diferentes no mesmo computador podem usar a mesma porta local e até mesmo se comunicar com o mesmo computador no lado oposto, desde que os processos envolvidos usem portas diferentes do outro lado. Nesse caso, seriam dois compostos diferentes cujos quadros diferem-se em apenas um dos quatro valores: a porta do lado oposto.

 Conexão 1: (computador local, porta x, computador remoto, porta y)
 Conexão 2: (computador local, porta x, computador remoto, porta z)

Por exemplo, um processo de servidor cria um socket (socket, bind) na porta 80, o marca para conexões de entrada e solicita ao sistema operacional que "aceita" a próxima conexão pendente. Esse pedido primeiro bloqueia o processo do servidor porque ainda não existe conexão. Então, quando o primeiro pedido de conexão por um cliente chega, ele é aceito pelo sistema operacional para que a conexão seja feita. De agora em diante, essa conexão é identificada pelo quadro descrito acima.

Finalmente, o processo do servidor é despertado e forneceu um identificador para essa conexão. Normalmente, o processo do servidor inicia um processo filho ao qual delega o tratamento da conexão. Ele continua seu trabalho com outro pedido de "aceitação" para o sistema operacional. Isso permite que um servidor web aceite várias conexões de diferentes computadores. Nenhuma listagem na mesma porta não é possível. Geralmente, o programa do lado do cliente não determina a porta, mas permite que seja atribuído pelo sistema operacional.

As portas são números de 16 bits (números de porta) e variam de 0 a 65535. As portas de 0 a 1023 são reservadas e atribuídas pela IANA. Por exemplo, a porta 80 é reservada para o HTTP usado na www. Usar as portas predefinidas não é vinculativo. Por exemplo, cada administrador pode executar um servidor FTP (geralmente porta 21) em qualquer outra porta.

Instalação e desmantelamento de conexão

O receptor também cria o cabeçalho fofo e, em seguida, executa o mesmo cálculo sem configurar o campo checksum para zero. Isso deve resultar em FFFF (hexadecimal). Se este não for o caso, o segmento TCP é descartado sem uma mensagem. Como resultado, o temporizador RTT expira no remetente e o segmento TCP é enviado novamente.

O motivo desse procedimento complicado é que as partes da mudança de cabeçalho IP durante o roteamento na rede IP. O campo TTL é diminuído por um para cada salto de IP. Se o campo TTL fosse incluído no cálculo da soma de verificação, o IP destruiria a segurança do transporte através do TCP. Portanto, apenas parte do cabeçalho IP está incluída no cálculo da soma de verificação. A soma de verificação é suscetível a erros irreconhecíveis devido ao seu comprimento de apenas 16 bits e devido à simples regra de cálculo. Métodos melhores como o CRC-32 foram considerados muito caros no momento da definição.