Conexão TCP
Como o protocolo TCP é orientado à conexão, uma conexão entre os dois hosts deve ser criada. Antes de começar toda a comunicação e transmissão de pacotes entre eles, os dois lados precisam necessariamente aceitar esta conexão.
Quando um host deseja abrir uma conexão com outro, dá início ao chamado handshaking (cumprimento) de três vias. O host que envia a primeira mensagem desejando estabelecer uma conexão realiza uma abertura ativa, enquanto o host que recebe e aceita a conexão realiza uma abertura passiva.
Pergunta 2: Por que é importante a troca dos números de sequência iniciais na abertura da conexão?
A troca de números de sequência de início durante a sequência de conexão assegura que dados perdidos possam ser recuperados.
Pergunta 3: Como é realizado o fechamento de uma conexão? Quais flags são setadas no cabeçalho das mensagens?
As conexões no TCP são full-duplex. Desta maneira, cada host deve encerrar o seu lado da conexão, não sendo necessário o encerramento dos dois lados simultaneamente. Quando a aplicação que utiliza o protocolo TCP não possui mais nenhum dado para enviar para a aplicação do outro host, ela inicia o processo de encerramento do seu lado da conexão. Para que o host A finalize seu lado da conexão, ele envia um pacote com o bit FIN setado. O host B recebe este pacote e confirma o recebimento com um ACK. Entretanto, isto significa que o host A não deseja mais enviar dados para o host B, mas o contrário não é verdade. O host B, então, pode continuar enviando dados para o host A, que somente envia pacotes de confirmação. Quando o host B deseja finalizar o seu lado da conexão, ele envia uma mensagem de finalização (com o bit FIN setado) e o host A confirma com o ACK final. Neste momento, a conexão está completamente encerrada.
Pergunta 4: O que é a síndrome da janela boba? Como este problema é resolvido?
Quando a