Jason: Nesta lição,
discutiremos os tipos de protocolo IP,
incluindo TCP, UDP e os conceitos de
métodos sem conexão versus métodos
orientados à conexão.
Agora, o que é TCP?
TCP é um protocolo de controle de transmissão.
É um protocolo orientado à conexão, o
que significa que é uma maneira
confiável de transportar segmentos em nossa rede.
Agora, se um segmento for descartado,
o protocolo solicitará o reconhecimento todas
as vezes.
E se não receber essa confirmação,
ele reenviará a informação.
É por isso que chamamos esse protocolo de conexão completa, porque
ele tem esse tipo de informação bidirecional em que estou
enviando informações e estou
verificando se você realmente as recebeu,
ouvindo que você as recebeu e me dando uma resposta.
Agora vamos dar uma olhada neste pequeno
diagrama aqui na tela por um segundo.
Você verá que tenho um cliente à esquerda
e um servidor à direita.
Agora, o cliente enviará o que é chamado de pacote syn,
ou pacote de sincronização,
para o servidor.
Agora, quando o servidor receber
isso, ele enviará de
volta uma confirmação de sincronização para o cliente,
conhecida como syn ack.
Agora, quando o cliente receber essa confirmação,
ele enviará de volta sua própria confirmação para o servidor.
Isso é conhecido como ack.
Agora, quando fazemos esse syn, syn ack, ack,
isso é o que chamamos de handshake de três vias.
Essencialmente, o cliente diz: "Ei, servidor,
você está pronto para obter algumas informações? E então o servidor diz: "Claro.
Por que não?
"Envie-me algumas informações. E o cliente diz:
"Ok, aqui vai. E, então, a transmissão começará porque
estabelecemos esse aperto de mão
de três vias e sabemos que ambos os lados
estão prontos para se comunicar.
"Agora, você está pronto? "Sim, estou.
"Aí
vem. Agora, toda vez que esses dados,
que chamamos de segmento, forem enviados
pela rede, haverá uma confirmação
de que foram recebidos e isso nos diz que houve
uma comunicação bidirecional bem-sucedida.
Agora, se esse servidor estiver
esperando receber 100 informações,
mas só tiver recebido 98 delas, ele dirá
ao cliente: "Ei, você
me disse que ia me enviar 100 coisas", mas só me enviou
98.
"Envie-me as duas coisas que estão faltando. Em seguida, ocorre uma
retransmissão.
Dessa forma, a comunicação
pode ser feita por nós e sempre podemos
ter certeza de que estamos
recebendo o que deveríamos,
pois temos esse reenvio dos pacotes pela
rede.
Agora, ele é usado para todos os dados de rede
que precisam ser assegurados para chegar ao destino final.
Gosto de pensar nisso como uma correspondência certificada.
Se eu quiser enviar uma mensagem para o IRS, por exemplo, quero ter
certeza de que eles a receberão e que
ela não se perderá no correio.
Portanto, talvez eu pague um pouco mais para obter
um recibo certificado que, quando chegar
lá, eles tenham que assinar e que seja enviado
de volta para mim pelo correio.
Dessa forma, quando
eu receber o recibo de volta,
saberei que o IRS recebeu meu pacote postal.
É assim que o TCP funciona.
Agora, por outro lado,
temos outro protocolo conhecido como UDP.
O UDP é o que chamamos de protocolo sem conexão, o que significa
que ele não precisa esperar por conexões.
UDP significa User Datagram Protocol (Protocolo de Datagrama do Usuário).
E o motivo pelo qual o chamamos de
datagrama é que, se você estiver usando UDP,
estará usando esse tipo de dados.
Ele é chamado de datagrama.
Agora, quando falamos de UDP, o UDP
não é confiável e transmite
segmentos chamados datagramas.
E se forem descartados,
o remetente nunca saberá que isso aconteceu.
Agora, por que eu gostaria de enviar coisas para
as quais o remetente não tem conhecimento
e eu não recebo nenhum tipo de recibo?
Bem, o UDP é realmente bom para streaming de áudio e vídeo porque
você envia muitos dados e há muito menos
sobrecarga quando você usa o UDP, porque não temos
aquele constante handshake de três vias
para estabelecê-lo
e não temos todas as verificações
e balanços associados ao uso do TCP.
Portanto, ao usar o UDP, você
pode realmente aumentar o desempenho da sua
rede porque não haverá retransmissões.
Você acabará descartando informações.
Isso não é uma coisa ruim?
Por que gostaríamos de descartar informações?
Bem, para determinados aplicativos,
isso realmente não importa.
Por exemplo, você está transmitindo este vídeo agora mesmo.
E se eu me afastasse por 1/100 de segundo,
você perceberia?
Bem, provavelmente não,
e é por isso que o UDP é tão bom,
pois podemos perder 1/100 do tempo aqui e você
nem vai perceber, e não haverá
retransmissão.
Mas, com o TCP, haverá muito mais
buffering, porque você terá
que esperar, receber
o arquivo de volta, colocá-lo
no lugar certo e reproduzi-lo.
Assim, devido a esse reconhecimento e a essa sobrecarga,
para cada segundo desse vídeo, ele acabará
se tornando muito maior e usando muito
mais largura de banda.
E esse é um dos principais motivos
pelos quais usamos o UDP para streaming de vídeo e streaming de áudio.
Agora, vamos fazer um pequeno resumo sobre TCP e UDP.
Porque esse é um conceito muito, muito importante.
Na verdade, se você estiver com suas anotações
em mãos, eu anotaria este gráfico
que vou lhe contar agora, quando
falarmos sobre TCP versus UDP.
Porque é realmente muito importante.
Agora, primeiro, o TCP é confiável, ele tem um
handshake de três vias, enquanto
o UDP não é muito confiável.
É um protocolo não confiável
porque não há handshake de três vias.
O TCP é o que chamamos de orientado à conexão
ou um protocolo cheio de conexões porque
temos esse handshake de
três vias nas confirmações,
mas o UDP não tem conexão.
É um método do tipo "dispare e esqueça".
Eu simplesmente começo a enviar
informações e espero que você as receba.
O TCP usa a retransmissão de segmentos e o controle de fluxo que está sendo
tratado por meio do janelamento.
O UDP, por outro lado,
não há retransmissão nem janelamento.
Com o TCP, temos a segmentação
de nosso sequenciamento de todos os nossos
diferentes segmentos.
Com o UDP, não há sequenciamento.
Agora, o que isso significa é que, quando
eu enviar tudo, vou enviar na ordem correta,
de 1 a 100.
Farei isso tanto para TCP quanto para UDP.
Agora, se você perder algumas dessas peças,
ou se elas chegarem em uma ordem diferente
porque seguem um caminho diferente na rede, com o
TCP, elas são sequenciadas, de modo que ele sabe
que você tem uma para 1.000 e as coloca
de volta na sequência correta.
Com o UDP, seja qual
for a forma de entrada, é
assim que ele a transmitirá.
Portanto, ele pode
vir em um, 50, dois,
500, três, quatro, cinco,
seis, 20, em qualquer ordem aleatória como
essa.
E é assim que você vai ouvir.
Portanto, com o vídeo, você pode ouvir um pouco
de saltos ou chiados agudos, ou algo
assim, porque um desses
quadros pode ter saído de ordem.
Agora, quando voltarmos
ao TCP, ele reconhecerá cada um desses segmentos.
E assim temos o reconhecimento.
Se eu não receber a mensagem,
sei que não a recebi e posso
fazer com que ela seja retransmitida para mim e depois recebê-la
novamente.
Com o UDP, não há confirmação.
Portanto, novamente, o UDP tem muito menos sobrecarga
porque não há conexão,
janelamento, retransmissão, sequenciamento
e confirmação.
Agora, se você precisa enviar algo para
lá e quer ter certeza de que a pessoa o recebeu,
você realmente precisa usar o TCP como protocolo de escolha.
E é por isso que realmente usaremos o TCP para
serviços bancários, sites, comércio eletrônico
e coisas do gênero.
Mas se tivermos algo que contenha muitos dados,
como streaming de áudio ou vídeo,
o UDP se sairá muito bem com isso, pois não
precisaremos obter
cada parte do arquivo.
Podemos pular um pouco
aqui e ali, e tudo bem.
-: [Outro instrutor] Agora, no que diz respeito
ao TCP e ao UDP, falamos sobre o fato de que esses são protocolos
com conexão completa ou orientados à conexão
e protocolos sem conexão.
Então, vou lhe dar alguns exemplos
de protocolos que usam TCP ou UDP para que você possa entender
por que usamos cada um deles.
Primeiro, vamos dar
uma olhada no TCP e em
nossos protocolos orientados à conexão ou cheios de conexão.
Isso inclui coisas como SSH e HTTP ou HTTPS.
Por que precisaríamos de orientação para conexão nesses casos?
Bem, no caso de usar algo como o SSH, estou fazendo
comunicação bidirecional e controle do
servidor remoto ou da estação de trabalho remota,
e posso fazer isso pela porta 22.
Quero ter certeza de que estou fazendo
isso de uma maneira orientada para a conexão ou completa.
Dessa forma, quando eu enviar um comando e disser "reiniciar
o servidor", saberei que
esse comando realmente chegou lá e a reinicialização
do servidor ocorrerá.
Da mesma forma, quando estamos lidando com HTTPS, queremos
ter certeza de que estamos usando um protocolo
de conexão completa ou orientado para conexão usando TCP.
A razão para isso é que, novamente,
queremos ter certeza de que o que
estamos enviando é realmente recebido lá.
E isso pode incluir coisas como autenticação
quando tentamos fazer login em um site
usando nosso nome de usuário e senha,
ou talvez sejam as informações
que recebemos desse site, como
saldos de contas e informações bancárias.
Por outro lado, se
estivermos usando o UDP como protocolo,
estaremos lidando de maneira sem conexão.
Já mencionei o fato de que
usamos isso o tempo todo para
coisas como streaming de áudio e vídeo.
Mas, além disso,
também o usamos para coisas como DHCP e
o Trivial File Transfer Protocol, conhecido como TFTP.
Agora, se você
se lembra, o DHCP é usado como Dynamic Host Control
Protocol e opera nas portas 67 e 68.
Agora, quando você entra em uma rede,
seu dispositivo, se estiver
configurado para uma atribuição dinâmica de
seu endereço IP, enviará uma mensagem de difusão nessa
rede procurando um servidor DHCP.
E é por isso que o usamos como um protocolo sem conexão.
Porque se essa informação for enviada e ninguém responder, seu cliente
simplesmente a enviará novamente na esperança
de que outra pessoa esteja presente.
É assim que o DHCP funciona.
Ele permitirá que uma mensagem de transmissão seja enviada
e, em seguida, aguardará o retorno de uma resposta.
Se não obtiver essa resposta
em um determinado período
de tempo, ele simplesmente retransmitirá sua mensagem
e, novamente, procurará um novo servidor DHCP.
Da mesma forma, quando temos o TFTP
ou o Trivial File Transfer Protocol,
que opera na porta 69, ele funcionará
sem conexão usando o UDP como transporte.
O motivo disso é que
o TFTP é o Trivial File Transfer Protocol e, portanto, não precisamos
ter a garantia de que cada pacote foi enviado
e recebido com essas confirmações,
o que gera muito mais sobrecarga
se usarmos o TCP.
Portanto, ao usar o UDP, podemos
ter uma transferência de arquivos mais
rápida quando estivermos usando algo como
TFTP, em vez de usar um protocolo mais cheio de conexões, como o FTP.