Ao usar o TCP, os dispositivos devem primeiro estabelecer uma conexão com um sistema peer antes que a transmissão de
dados possa ocorrer,
assim a sessão orientada à conexão será estabelecida entre o host A e
o host B Uma máquina iniciará a conexão que deverá ser aceita pela outra máquina.
Módulos de software de protocolos nos sistemas operacionais dos dispositivos host se comunicam
entre si enviando mensagens pela rede para verificar se a transferência está autorizada
e se ambos os lados estão
prontos para a transmissão de dados.
Para que isso aconteça, um handshake de três vias ocorre entre os dispositivos host usando TCP.
Portanto, o host que inicia a sessão configurará o sinalizador SYN ou o bit SYN no
cabeçalho TCP do segmento inicial enviado para o host B.
O host A também escolherá um número de seqüência inicial
que, neste exemplo, digamos 100.
Portanto, o sinalizador de controle SYN é definido e o
número de sequência é definido para um valor inicial de 100.
Isso é então usado para iniciar o processo de handshake.
Esse segmento de sincronização também especifica o número da porta à qual o remetente
deseja se conectar, por exemplo, a porta 80 ou HTTP.
O host no lado direito estará aguardando uma solicitação de conexão do cliente remoto,
nesse caso, o host A.
quando o SYN é recebido e aceito,
o host b envia de volta um segmento TCP com as flags SYN e ACK definidas.
Portanto, os sinalizadores de controle SYN e ACK são definidos
e usados ​​para negociar a conexão e confirmar o recebimento
do segmento de sincronização de iniciais do remetente.
B também define um número de seqüência inicial para indicar
o próximo número de seqüência do próximo byte de dados
que espera receber do host A.
O host B também define o sinalizador de confirmação para,
neste caso, 101 um sinalizador ACK indica, a próxima parte de dados, o host espera receber.
Então, o host A inicialmente enviou um número de sequência de 100
e host B, neste caso, assumindo que um tamanho de janela de 1 devolve um reconhecimento
de um 101.
A terceira etapa do handshake de três vias é quando o host inicial, neste
caso, hospeda A, recebe o SYN do host B e envia de volta um segmento TCP com o campo de controle configurado
para ACK, em outras palavras, reconhecimento. 36 O Host A está, portanto, reconhecendo o próximo segmento que espera
receber do host B neste caso 301, inicialmente o host B enviou um número de sequência de 300.
Então, o host A está esperando o próximo segmento 301.
O host A define seu número de sequência como 101.
O segmento inicial enviado foi 100 e o próximo neste caso é 101 porque o bit SYN ou o sinalizador
SYN não está definido, o que
confirma que o handshake de três vias foi concluído com êxito.
Apenas para reiterar, os bits ou flags de controle inicialmente A enviam um
segmento com o bit SYN ou o sinalizador SYN configurado.
Portanto, o sinalizador de controle SYN é definido como 1. 46 O host B na segunda etapa do handshake de
três vias define seus flags de controle ou bits como SYN ACK.
Em outras palavras, o bit SYN é definido como
1 e o bit ACK é definido como 1.
Na última etapa do handshake de três
vias, o Host A define o bit ACK como 1 ou o sinalizador ACK é ativado.
O bit SYN ou o sinalizador SYN é definido como 0 para indicar que
o handshake de três vias foi concluído com êxito.
Agora os números de sequência e os agradecimentos podem causar muita confusão. Então, vou explicá-los
com mais detalhes agora.
Estamos assumindo neste exemplo que um tamanho de janela de 1 é usado.
Agora, se você lembrar que o tamanho da janela é a quantidade máxima
de dados que o destinatário pode receber de um remetente e processá-lo corretamente. 59 Então, vamos supor que apenas um
segmento pode ser transmitido a qualquer momento antes que uma confirmação
seja recebida para confirmar o recebimento daquele segmento.
Então vamos supor que A começa com um número de sequência inicial
de 5 por causa de um tamanho de janela de 1, apenas 1 segmento pode ser enviado de A para B.
B recebe com sucesso o segmento de A
e reconhece o próximo segmento que deseja receber.
então, em vez de confirmar o recebimento do número de
sequência de 5, ele reconhece para o
número de sequência 6, o que implica que todos os números de sequência anteriores receberão corretamente.
Assim, B reconhece neste caso a sequência número 6, mas B pode começar
com um número de sequência inicial de 10. 71 Assim, no cabeçalho TCP, B informa A que seu número
de seqüência inicial é 10 e que seu número de sequência recebido com sucesso 5 de A
e está esperando o número de sequência 6 de A no próximo pacote.
Suponhamos que recebamos com sucesso esse segmento, de modo
que A envie agora o segmento 6 para B, em outras palavras,
o próximo número de sequência.
A também reconhece o recebimento do segmento 10 do host B.
Então A recebeu com sucesso o segmento com o número de seqüência 10.
Observe mais uma vez
que o host pode escolher aleatoriamente os
números de sequência inicial e, assim, no
handshake triplo inicial, as informações precisam ser comunicadas entre os dois
hosts, para que eles saibam quais são os números de sequência inicial. 84 Então, mais uma vez, A envia o número de sequência 6 para B e confirma a sequência 11.
Suponhamos que B receba com sucesso
esse segmento e, portanto, confirmará o segmento 7.
O próximo segmento que espera
receber novamente 7 no reconhecimento indica que o segmento anterior foi recebido com sucesso.
Então, o host B, configurando o número de sequência para 7, está dizendo ao host A que
o número de sequência 6 foi recebido com sucesso.
O host B envia o número de sequência 11 porque
esse é o próximo número de sequência que A espera receber.
O que devemos notar mais uma vez é que os números de sequência
inicial que o host espera receber e a seqüência de número de, por
exemplo, 11, implica que o número de sequência 10 e o número de sequência anterior foram recebidos com sucesso.
Agora, mais uma vez, o controle de fluxo impede um problema em que o remetente está enviando tantos
dados 99 que os buffers do receptor estão sobrecarregados.
Se esta é uma máquina muito poderosa e esta é uma máquina mais antiga que não é tão poderoso, é possível que A ultrapasse os buffers de B porque está enviando muitos dados. 103 Então, B precisa de um mecanismo para avisar a lentidão para que D possa
processar com êxito o tráfego que está recebendo. 105 Então, como exemplo, vamos supor que o tamanho da janela neste exemplo seja
3 em vez de 1. 107 Então, A pode enviar 3 segmentos de dados antes de obter uma confirmação. 108 A vantagem de aumentar o tamanho da janela é essa taxa de transferência pode aumentar drasticamente porque um host pode enviar mais dados com menos reconhecimentos e, portanto, os cronômetros de ida e volta diminuem drasticamente. 111 Portanto, neste exemplo, A envia 3 segmentos para B. 112 Suponhamos que o buffer
recebido de B esteja cheio e não possa lidar com essa quantidade de dados 114 B enviará um indicador não pronto para A 115 e faz isso definindo o tamanho da janela como 0.
Isso diz ao remetente para parar de enviar dados e aguarde o indicador pronto do receptor. 118 Assumindo que o host B agora foi capaz de processar os dados no buffer de recebimento e agora pode receber mais dados. 120 Ele pode enviar um indicador pronto para A, para que ele continue o envio de datagramas.
então A retoma a transmissão enviando por exemplo 3 segmentos para B. 122 Porque o tamanho da janela é 3. 123 Então, por favor note em segundo plano o host TCP envolvida na conversa pode negociar
vários parâmetros e um deles é o controle de fluxo 125 onde um receptor, pode dizer a um remetente para desacelerar ou parar de enviar dados 126 até que o receptor tenha espaço de buffer disponível para receber segmentos transmitidos.
Isto é permite a comunicação entre um muito poderoso ou máquina rápida e uma máquina mais lenta ou menos potente onde eles podem negociar a taxa de transmissão.