sexta-feira, 7 de novembro de 2014

HTTP e HTTPS

HTTPS (HyperText Transfer Protocol Secure - protocolo de transferência de hipertexto seguro) é uma implementação do protocolo HTTP sobre uma camada adicional de segurança que utiliza o protocolo SSL/TLS. Essa camada adicional permite que os dados sejam transmitidos por meio de uma conexão criptografada e que se verifique a autenticidade do servidor e do cliente por meio de certificados digitais. A porta TCP usada por norma para o protocolo HTTPS é a 443.

O protocolo HTTPS é utilizado, em regra, quando se deseja evitar que a informação transmitida entre o cliente e o servidor seja visualizada por terceiros, como por exemplo no caso de compras online. A existência na barra de tarefas de um cadeado (que pode ficar do lado esquerdo ou direito, dependendo do navegador utilizado) demonstra a certificação de página segura (SSL). A existência desse certificado indica o uso do protocolo HTTPS e que a comunicação entre o browser e o servidor se dará de forma segura. Para verificar a identidade do servidor é necessário abrir esse certificado com um duplo clique no cadeado para exibição do certificado.

Nas URLs dos sites o início ficaria 'https://'. Consulte a ajuda do seu navegador para mais informações de como ele avisa sobre sites seguros.

Um exemplo de conexão via HTTPS são os próprios sites da Wikimedia Foundation, em que é possível acessar e editar o conteúdo dos sites através de uma conexão segura. Através da URL https://secure.wikimedia.org/wikipedia/pt/wiki/Página_principal é possível editar a wikipédia em língua portuguesa.

Conexões HTTPS são frequentemente usadas para transações de pagamentos na World Wide Web e para transações sensíveis em sistemas de informação corporativos. Porém, o HTTPS não deve ser confundido com o menos utilizado protocolo "Secure HTTP" (S-HTTP), especificado na RFC 2660.

Diferenças para o HTTP 
As URLs HTTPS começam com "https://" e utilizam a porta 443 como padrão, enquanto as URLs HTTP começam com "http://" e utilizam a porta 80 como padrão. HTTP é inseguro e sujeito a ataques de homem-no-meio e escutas ilegais, que podem levar a atacantes ganharem acesso a contas de páginas na web e a informações sensíveis. O HTTPS foi projetado para proteger contra esses ataques e é considerado seguro contra eles (com exceção de versões mais antigas e obsoletas do SSL).

Camadas de rede 
HTTP opera na camada superior do Modelo OSI, a camada de aplicação, mas o protocolo de segurança opera em uma sub-camada inferior, criptografando uma mensagem HTTP antes de sua transmissão e decriptando a mensagem assim que ela chega. Estritamente falando, HTTPS não é um protocolo separado, mas se refere ao uso do HTTP sobre uma camada encriptada de conexão SSL/TLS.

Tudo na mensagem HTTPS é criptografado, incluindo os cabeçalhos, as requisições e respostas. Com a exceção de possíveis ataques criptográficos CCA descritos na seção de limitações abaixo, o atacante pode apenas conhecer o fato de que a conexão está sendo feita entre duas partes já conhecidas por ele, o nome do domínio e o endereço IP.

Configuração do Servidor 
Para preparar uma página web de modo a aceitar conexões HTTPS, o administrador deve criar um certificado de chave pública para o servidor web. Esse certificado deve ser assinado por uma autoridade de certificação confiável para que o navegador aceite a conexão e não exiba avisos. A autoridade certifica que o proprietário do certificado é o operador do servidor web que o apresenta. Os navegadores web são geralmente distribuídos com uma lista de autoridades de certificação de assinatura para que elas possam verificar certificados assinados por eles.

Adquirindo certificados 
Certificados assinados por autoridades podem ser de graça 3 4 ou custar entre 13 5 dólares e 1.500 6 dólares por ano.

Organizações podem também ter sua própria autoridade de certificação, particularmente se são responsáveis por configurar navegadores para acessar suas próprias páginas (por exemplo, páginas de uma rede interna ou de uma grande universidade). Elas podem facilmente adicionar cópias de seus próprios certificados na lista de certificados distribuída no navegador.

Existe também uma autoridade de certificação ponto-a-ponto, a CACert   .

Uso como controle de acesso 
O sistema pode também ser utilizado para autenticação de clientes, com o objetivo de limitar o acesso a servidores web a usuários autorizados. Para fazê-lo, o administrador da página tipicamente cria um certificado para cada usuário, que é carregado em seu navegador. Normalmente, o certificado contém o nome e endereço de e-mail do usuário autorizado e é automaticamente verificado pelo servidor em cada reconexão para verificar a identidade do usuário, muitas vezes sem a necessidade de utilização de senhas.

Caso uma chave privada tenha sido comprometida[editar | editar código-fonte]
O certificado pode ser revogado antes de expirar, por exemplo por conta da chave privada ter sido comprometida. Versões mais novas de navegadores populares como o Google Chrome, Firefox 8 , Opera 9 , e o Internet Explorer no Windows Vista implementam o OCSP (Protocolo de Certificação Online de Estado) para verificar essa possível falha. O navegador envia, então, o número de série do certificado a uma autoridade de certificação via OCSP e a autoridade responde, informando ao navegador se o certificado ainda é válido. 10

Limitações 
O SSL se apresenta em duas versões: simples e mútua. A versão mútua é mais segura, porém requer que o usuário instale um certificado pessoal em seu navegador para que possa se autenticar. Independente da estratégia utilizada (simples ou mútua), o nível de proteção depende fortemente da corretude da implementação do navegador, da implementação do servidor e dos algoritmos critográficos suportados.

O SSL não previne a página inteira de ser indexada utilizando um web crawler e, em alguns casos, a URI do recurso criptografado pode ser inferida sabendo-se apenas o tamanho da requisição ou da resposta   . Isso permite a um atacante ter acesso ao texto plano (o conteúdo propriamente dito) e ao texto encriptado (a versão criptografada do texto plano), permitindo um ataque criptográfico.

Por conta do SSL operar abaixo do HTTP e não ter conhecimento de protocolos de níveis superiores, servidores SSL podem apenas apresentar um certificado para uma combinação particular de IP/porta 12 . Isto significa que, na maioria dos casos, não é factível usar Hospedagem Virtual Baseada em Nome com HTTPS. Existe uma solução denominada Indicação de Nomes para Servidores (SNI), que envia o nome do host ao servidor antes de encriptar a conexão, embora muitos navegadores mais antigos não suportem essa extensão. Suporte para o SNI está disponível desde o Firefox 2, Opera 8, Safari 2.1, Google Chrome 6 e Internet Explorer 7 no Windows Vista.

Se controles parentais são ativados no Mac OS X, páginas HTTPS devem ser explicitamente permitidas utilizando a lista Always Allow (Sempre Permitir).

De um ponto de vista arquitetural:

Uma conexão SSL/TLS é gerenciada pela máquina que inicializa a conexão SSL. Se. por algum motivo (roteamento, otimização de tráfego etc), essa máquina não é a aplicação do servidor e ela tem que decifrar dados, soluções têm de ser encontradas para propagar as informações de autenticação - ou certificado - do usuário para a aplicação do servidor, que necessita saber quem irá se conectar.
Para um SSL com autenticação mútua, a sessão SSL/TLS é gerenciada pelo primeiro servidor que inicializa a conexão. Em situações em que encriptação necessita ser propagada por servidores em cadeia, se torna mais difícil gerenciar o timeOut da sessão.
Com SSL/TLS com autenticação mútua, a segurança é maximal, mas no lado do cliente não há uma maneira de finalizar apropriadamente a conexão SSL e se desconectar. É preciso esperar que a sessão SSL expire ou finalize todas as aplicações do cliente.
Por motivos de desempenho, conteúdo estático que não é específico ao usuário ou à transação e, por isso, não privado, é normalmente entregue a um servidor não encriptado ou a uma outra instância sem SSL do servidor. Como consequência, esse conteúdo não fica protegido. Muitos navegadores alertam o usuário quando uma página misturou recursos criptografados e não criptografados.
Um ataque sofisticado de homem-no-meio foi apresentado na Blackhat Conference 2009. Esse tipo de ataque derrota a segurança fornecida pelo HTTPS modificando um link https: para um link http:, tirando proveito do fato de que poucos usuários da Internet digitam "https" nos seus navegadores. Os usuários normalmente alcançam páginas seguras clicando em um link, podendo ser, assim, levados a pensar que estão usando HTTPS quando de fato estão usando HTTP. O atacante, então, consegue se comunicar de modo não criptografado com o cliente. 17

História 
A Netscape Communication criou o HTTPS em 1994 para seu navegador Netscape. 18 Originalmente, o HTTPS foi utilizado com o protocolo SSL. À medida que o SSL evoluiu para o TLS (Protocolo de Segurança de Transporte), a versão atual do HTTPS foi especificada formalmente pela RFC 2818 em maio de 2000.

SSH - "Secure Shell".

SSH significa "Secure Shell".

SSH normalmente usa a porta 22 para conectar seu computador para outro computador na Internet. É mais freqüentemente usado por administradores de rede como um login maneira de controle remoto / remoto para gerenciar seus servidores empresariais. Exemplos seriam: o administrador de e-mail precisa reiniciar o servidor de email da empresa a partir de sua casa, ou seu administrador de rede precisa redefinir sua senha escritório enquanto ela está longe em uma conferência.

SSL = Secure Socket Layer


Geralmente usa a porta 443 e permite a troca de informações entre dois computadores, de modo seguro. SSL fornece 3 coisas:
Privacidade: Impossível espionar as informações trocadas. 
Integridade: Impossível falsificar as informações trocadas.
Autenticação: Ele garante a identidade do programa, da pessoa ou empresa com a qual nos comunicamos.

SSL é um complemento ao TCP / IP e pode (potencialmente) proteger qualquer protocolo ou programa usando TCP/IP. 
O SSL foi criado e desenvolvido pela empresa Netscape e RSA Segurança. Agora há versões de código aberto (Open Source), assim como um protocolo livre semelhante: TLS (ver mais abaixo). 
Por que usar o SSL em vez de outro sistema?

Por que usar o OpenSSL?

SSL é padronizado.Existe uma versão livre do SSL: OpenSSL que você pode usar nos seus programas, sem pagar direitos autorais.OpenSSL é Open Source: todo mundo pode controlar e verificar o código-fonte (O segredo fica nas chaves de criptografia, não no algoritmo em si).SSL foi criptoanalizado: este sistema foi mais analisado do que todos os seus concorrentes. O SSL foi revisado por inúmeros especialistas em criptografia. Portanto, pode ser considerado seguro.Ele é muito conhecido: é fácil criar programas que interagirão com outros programas usando o SSL.

Muito cuidadocom os sistemas proprietários: ao contrário do que se poderia pensar, a segurança de um sistema de criptografia não se baseia no segredo do algoritmo de criptografia, mas no segredo da chave. Devemos confiar apenas em sistemas que foram publicados e analisados. 
Como funciona o SSL?

SSL é composto de dois protocolos:SSL Handshake protocol: antes de comunicar, os dois programas SSL negociam chaves e protocolos de criptografia em comum.SSL Record protocol: Uma vez negociados, eles criptografam todas as informações trocadas e realizam vários testes.
O aperto de mão SSL ("handshake")
No início da comunicação o cliente e o servidor trocam:A versão SSL com a qual eles querem trabalhar,A lista de métodos de criptografia (simétrico e assimétrico) e de assinatura que todo mundo conhece (com comprimentos de chaves),Métodos de compressão que todo mundo conheceNúmeros aleatórios,Certificados.

Cliente e servidor tentam usar o melhor protocolo de criptografia e diminuem até encontrar um protocolo comum para ambos. Depois de feito isso, eles podem começar a troca de dados. 
A comunicação SSL ("record")
Com o SSL, o remetente de dados:Corta os dados em pacotes,Comprime os dados,assina criptograficamente os dados,Criptografa os dados,Envia os dados.

Aquele que recebe os dados:Desencriptografa os dados,Verifica a assinatura dos dados,Descompacta os dados,Remonta os pacotes de dados.
Como o SSL protege as comunicações?
O SSL usa:um sistema de criptografia assimétrico (como o RSA ou o Diffie-Hellman). Saiba mais aqui: ele é utilizado para criar a "master key" (chave principal), que criará chaves de sessão.um sistema de criptografia simétrico (DES, 3DES, IDEA, RC4...) usando as chaves de sessão para criptografar os dados.um sistema de assinatura criptográfico das mensagens (HMAC, utilizando o MD5, SHA...) para ter certeza de que as mensagens não estão corrompidas.

É durante o "handshake" SSL que o cliente e o servidor escolhem os sistemas comuns (criptografia assimétrica, simétrica, assinatura e comprimento de chave). 
No seu navegador, você pode ver a lista dos sistemas utilizados, colocando o cursor sobre o cadeadinho, quando você está em uma página HTTPS. 
Para que servem os certificados?
Durante uma negociação (handshake) SSL, verifique a identidade da pessoa com quem você está se comunicando. Como ter certeza de que o servidor com quem você está falando é quem ele diz ser? É aí que entram os certificados. Na hora de se conectar a um servidor web seguro, este enviará um certificado com o nome da empresa, endereço, etc. É uma espécie de carteira de identidade. 
Como verificar a autenticidade desta carteira de identidade? São as PKI (Public Key Infrastructure), das empresas externas (às quais você faz, implicitamente, confiança), que vão verificar a autenticidade do certificado. (A lista destas PKI está incluída no seu navegador. Geralmente tem a VeriSign, a Thawte, etc.) Estas PKI assinam criptograficamente os certificados das empresas (e elas são pagas por isso). O uso do SSL: HTTPS, SSH, FTPS, POPS... O SSL pode ser usado para proteger praticamente qualquer protocolo usando TCP / IP. Alguns protocolos foram especialmente modificados para suportar o SSL:HTTPS: é HTTP+SSL. Este protocolo está incluído em praticamente todos os navegadores, e permite que você (por exemplo) consulte suas contas bancárias na web de forma segura.FTPS é uma extensão do FTP (File Transfer Protocol) usando SSL.SSH (Secure Shell) é uma espécie de telnet (ou rlogin) seguro. Isso permite que você se conecte a um computador remoto com segurança e ter uma linha de comando. O SSH tem extensões para proteger outros protocolos (FTP, POP3, ou mesmo X Windows).
É possível tornar seguros os protocolos, criando túneis SSL. Depois de criar o túnel, você pode fazer passar qualquer protocolo por ele (SMTP, POP3, HTTP, NNTP, etc). Todos os dados trocados são criptografados automaticamente. Isto pode ser feito com ferramentas como o STunnel ou o SSH . Veja este exemplo com o protocolo POP3:
Com o protocolo POP3 que, normalmente, você usa para ler os seus e-mails, as senhas e as mensagens transitam claramente na Internet. Suas senhas e mensagens podem ser roubadas.

Com o túnel SSL, e sem alterar os softwares cliente e servidor , você pode garantir a recuperação de seus e-mails: ninguém pode roubar suas senhas ou e-mails, pois tudo que passa pelo túnel SSL é criptografado. Mas isso requer a instalação do STunnel no cliente e no servidor. Alguns provedores de acesso oferecem este serviço, mas ainda é muito raro. Pergunte ao seu provedor de acesso se ele tem este tipo serviço instalado. O STunnel permite assim a proteção da maioria dos protocolos baseados no TCP/IP, sem alterar os softwares . Ele é muito fácil de instalar. Quais são as diferentes versões do SSL? O SSL versão 3.0 é muito semelhante ao SSL versão 2.0 , mas o SSL v2.0 tem menos algoritmos de criptografia que o SSL V3.0. TLS v1.0 é um protocolo semelhante com base no SSL. As aplicações usando o TLS v1.0 pode se comunicar facilmente com as aplicações utilizando o SSL v3.0. Então, quando vejo o cadeado, estou protegido? O cadeado te indica se as comunicações entre o seu browser e o site são seguras: ninguém pode espiá-los, e ninguém pode mexer nas comunicações. Mas ele não garante nada mais Para tirar uma foto: HTTPS (o cadeado), é como um carro blindado: ele garante a segurança do transporte. Mas realmente só transporte. O carro blindado não garante que o banco usa bons cofres e que eles fecham bem. O carro blindado também não garante que o banco não desfalque ninguém. O carro blindado realmente só garante o transporte. É a mesma coisa para o HTTPS (o cadeadinho do browser). Da mesma forma que criminosos podem contratar um carro blindado, piratas e bandidos podem muito bem criar um site seguro (com o cadeadinho). Tenha cuidado e não confie em qualquer informação em qualquer site, com ou sem cadeado.

Ping


Ping ou latência como podemos chamar, é um utilitário que usa o protocolo ICMP para testar a conectividade entre equipamentos. É um comando disponível praticamente em todos os sistemas operacionais. Seu funcionamento consiste no envio de pacotes para o equipamento de destino e na "escuta" das respostas. Se o equipamento de destino estiver ativo, uma "resposta" (o "pong", uma analogia ao famoso jogo de ping-pong) é devolvida ao computador solicitante.

O autor da ferramenta, Mike Muuss, deu a ele este nome pois lembrava o som que o sonar emitia.1 (Depois Dave Mills arrumou um significado para a sigla, "Packet Internet Grouper (Groper)", algo como "Procurador de Pacotes da Internet")

A utilidade do ping para ajudar a diagnosticar problemas de conectividade na Internet foi enfraquecida no final de 2003, quando muitos Provedores de Internet ativaram filtros para o ICMP Tipo 8 (echo request) nos seus roteadores. Esses filtros foram ativados para proteger os computadores de Worms como o Welchia, que inundaram a Internet com requisições de ping, com o objetivo de localizar novos equipamentos para infectar, causando problemas em roteadores ao redor do mundo todo.

Outra ferramenta de rede que utiliza o ICMP de maneira semelhante ao ping é o Traceroute.

A saída do ping, e seus primos, geralmente consiste no tamanho do pacote utilizado, o nome do equipamento "pingado", o número de seqüência do pacote ICMP, o tempo de vida e a latência, com todos os tempos dados em milissegundos.

Abaixo um exemplo de saída quando pingamos o servidor wikipedia.com:

$ ping -c 5 wikipedia.com
PING wikipedia.com (130.94.122.195): 56 data bytes
64 bytes from 130.94.122.195: icmp_seq=0 ttl=235 time=284.3 ms
64 bytes from 130.94.122.195: icmp_seq=1 ttl=235 time=292.9 ms
64 bytes from 130.94.122.195: icmp_seq=2 ttl=235 time=289.7 ms
64 bytes from 130.94.122.195: icmp_seq=3 ttl=235 time=282.4 ms
64 bytes from 130.94.122.195: icmp_seq=4 ttl=235 time=272.0 ms

--- wikipedia.com ping statistics ---
5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max = 272.0/284.2/292.9 ms

ICMP - Internet Control Message Protocol

ICMP, sigla para o inglês Internet Control Message Protocol, é um protocolo integrante do Protocolo IP, definido pelo RFC 792, e utilizado para fornecer relatórios de erros à fonte original. Qualquer computador que utilize IP precisa aceitar as mensagens ICMP e alterar o seu comportamento de acordo com o erro relatado. Os gateways devem estar programados para enviar mensagens ICMP quando receberem datagramas que provoquem algum erro.

As mensagens ICMP geralmente são enviadas automaticamente em uma das seguintes situações:

Um pacote IP não consegue chegar ao seu destino (i.e. Tempo de vida do pacote expirado)
O Gateway não consegue retransmitir os pacotes na frequência adequada (i.e. Gateway congestionado)
O Roteador ou Encaminhador indica uma rota melhor para a máquina a enviar pacotes.
Ferramentas comumente usadas em Windows baseadas nesse protocolo são: Ping e Traceroute.

Alguns firewalls, geralmente instalados em servidores Windows ou Unix, bloqueiam as respostas (ICMP Reply), dificultando o Ping e o Traceroute (tracert). Isto por diversas razões. Uma delas é para bloquear os ataques de hackers, que consiste na sobrecarga da memória, enviando dados (em ping) até o sistema não ter a capacidade de administrar suas próprias funções. Esse ataque é significativo, principalmente contra usuários do Microsoft Windows 95.

Tramas ICMP
Echo Request / Reply
Mensagens para funções de teste e controle da rede, caso a maquina esteja ligada ira responder com um reply e se estiver inalcançavel request;
Usadas pelo comando PING
Destination Unreachable
Enviado por um router que deixa fora um Datagrama;
Tipo de mensagem que é obtida quando não se consegue localizar o equipamento alvo;
(nem todos os datagramas perdidos são detectados)

CODE - Indica a razão da perda do datagrama
Timestamp Request / Reply
Mensagens para sincronização dos relógios das máquinas

Data Over Cable Service Interface Specification (DOCSIS)


A partir de meados dos anos 90, o desenvolvimento de tecnologia digital com baixo custo e o crescente interesse por serviços digitais interactivos veio trazer algumas experiências que deram origem a alguns protocolos proprietários.
O DOCSIS (Data Over Cable Service Interface Specifications) é um padrão técnico
internacional desenvolvido por CableLabs em conjunto com empresas fornecedoras do sector e define os requisitos de interface dos cable modems para a transferência de dados a alto débito sobre redes de TV por cabo.
As diversas versões do DOCSIS encontram na seguinte tabela:

Como a alocação dos planos de frequência difere entre sistemas de TV por cabo nos Estados Unidos e na Europa, as normas DOCSIS tiveram que ser modificados para uso na Europa. Estas modificações foram publicadas com a denominação "EuroDOCSIS".
O plano de espectro de frequências para a transmissão de dados e sinal TV no cabo é constituído por dois grupos, upstream (sentido Terminal-Headend) e downstream (sentido Headend -Terminal), sendo este último constituído por sinal de TV analógica, sinal de dados e vídeo digital.
A gama de frequências para a transmissão upstream situa-se entre os 5MHz e os 25 a 65MHz, dependendo da implementação. Para a transmissão downstream é usada a gama de frequência tem como valor mínimo 47MHz, indo até 862 MHz, sendo que a partir dos 136 MHz é para o envio de dados e vídeo digital para serviços de televisão interactiva e outros. A ocupação de banda de canais analógicos de televisão, e no caso europeu, varia entre 7 e 8 MHz por canal, sendo que para dados este valor é de 8 MHz. Nos EUA a ocupação de espectro por parte dos canais de TV analógica é de 6 MHz.

A versão 3 da norma DOCSIS permite a combinação de vários canais para possibilitar velocidades de acesso banda larga acima de 100 Mbit/s.
Conforme os utilizadores de TV por cabo recebem um número maior de canais personalizados, utilizam serviços como vídeo a pedido (VOD) e serviço de acesso banda larga, o número de utilizadores que podem compartilhar o mesmo tronco coaxial se reduz. Isto faz com que o cabo tronco tenha que ser dividido em partes que são interligadas a outros nós ópticos (referido por ‘node-splitting’ ou ‘cell-splitting’) resultando que os nós ópticos que podiam servir milhares de alojamentos cablados passem a servir centenas destes alojamentos.
As redes híbridas bidireccionais disponibilizam diversos serviços interactivos:
– Vídeo-a-pedido
– Telefonia digital
– Telefonia sobre IP
– Acesso à internet a alta velocidade

CMTS – Cable Modem Termination System
Equipamento responsável em empacotar pacotes IP em
frames DOCSIS e coordenar o parque de cable modems;
CABLE MODEM (CM)
Modulador/Demodulador responsável em prover a
finalização da comunicação IP ao assinante CATV;

Principais características do DOCSIS 1.1

Quality of Service – QoS
Múltiplos ( e dinâmicos) “Services Flows” e classificadores;
Cada “Service Flow” pode ter um QoS diferente;
Novos tipos de schedules para o Upstream
UGS – Unsolicited Grant Service
(non) Real-Time Pooling
Best Effort
Fragmentação;
Suporte a IP Multicast;



Principais portas TCP e UDP

Portas TCP e portas UDP

Agora que você já conhece algumas características dos protocolos TCP e UDP, já está apto a entender o conceito de portas. Para uma compreensão mais fácil, usaremos o seguinte exemplo: suponha que, neste momento, você esteja usando um navegador de internet, um cliente de e-mail e um software de comunicação instantânea. Todas essas aplicações fazem uso da sua conexão à internet, mas como o computador faz para saber quais os dados que pertencem a cada programa? Simples, pelo número da porta que cada um utiliza. Por exemplo, se você está usando um programa de FTP (File Transfer Protocol), a conexão à internet é feita pela porta TCP 21, que é uma porta convencionada a este protocolo. Se estiver baixando arquivos pelo BitTorrent, uma das portas que vão de 6881 à 6889 estará sendo utilizada para tal atividade.
Compare seu computador a um prédio. Ao chegar uma correspondência, é necessário saber a qual apartamento entregá-la. Se no envelope estiver escrito que o destino é o apartamento número 123, onde reside Fulano, basta fazer a entrega. Em seu computador, o conceito é o mesmo: basta substituir a correspondência pelo pacote de dados, o apartamento pela porta e o Fulano pelo programa. No entanto, é importante frisar que um aplicativo pode utilizar mais de uma porta.
Ilustração de uso de portas TCP
Ao todo, é possível usar 65536 portas TCP e UDP, começando em 1. Tanto no protocolo TCP como no UDP, é comum o uso das portas de 1 a 1024, já que a aplicação destas é padronizada pela IANA (Internet Assigned Numbers Authority). De acordo com essa entidade, eis algumas das portas TCP mais utilizadas:
:: 21 - FTP;
:: 23 - Telnet;
:: 25 - SMTP;
:: 80 - HTTP;
:: 110 - POP3;
:: 143 - IMAP;
:: 443 - HTTPS.
A IANA disponibiliza uma lista completa e atualizada da utilização das portas TCP e UDP nesta página.
Dependendo do caso, uma aplicação não precisa, necessariamente, estar restrita a um dado conjunto de portas. É possível utilizar outras, mas é necessário que isso seja especificado. É por isso, por exemplo, que há determinados endereços na internet que são disponibilizados assim: http://www.site.com:abcd, onde abcd é o número da porta. Neste caso, seu computador está sendo orientado a acessar o endereço pela porta abcd.

20/TCPFTP (File Transfer protocol)(Protocolo de transferência de arquivo) - data portOficial
21/TCPFTP (File Transfer protocol)(Protocolo de transferência de arquivo) - control (command) portOficial
22/TCP,UDPSSH (Secure Shell) (Shell seguro) - usada para logins seguros, transferência de arquivos e redirecionamento de portaOficial
23/TCP,UDPTelnet protocol - comunicação de texto sem encriptaçãoOficial
25/TCP,UDPSMTP (Simple Mail Transfer Protocol) (Protocolo simples de envio de e-mail) - usada para roteamento de e-mail entre servidoresOficial

43/TCPWHOIS (protocolo de consulta de informações de contato e DNSprotocol)Oficial
49/TCP,UDPTACACS Login Host protocol(Protocolo de Login no Host)Oficial
53/TCP,UDPDNS (Sistema de nome de domínio)Oficial
57/TCPMTP, Mail Transfer Protocol (Protocolo de transferência de e-mail)
67/UDPBOOTP (BootStrap Protocol) server; também utilizada por DHCP (Protocolo de configuração dinâmica do Host)Oficial
68/UDPBOOTP client; também utilizada por DHCPOficial
69/UDPTFTP(Trivial File Transfer Protocol) (Protocolo de transferência de arquivo trivial )Oficial
79/TCPFinger protocolOficial
80/TCPHTTP (HyperText Transfer Protocol)(Procolo de transferência de HiperTexto) - usada para transferir páginas WWWOficial
80/TCPSkype protocolNão-Oficial
81/TCPHTTP Alternate (HyperText Transfer Protocol) (Protocolo de transferência de HiperTexto)Oficial

TCP e UDP diferenças entre Protocolos

TCP (Transmission Control Protocol)

 comunicação pela internet é feita, basicamente, através de protocolos, sendo o TCP (Transmission Control Protocol) um dos mais importantes deles. Isso porque o TCP está incluído no conjunto de protocolos que formam o TCP/IP, a base de comunicação via dados de toda a internet. De acordo com a definição dada por Júlio Battisti neste artigo, as principais características do TCP são:
:: Garantir a entrega de datagramas IP: esta talvez seja a principal função do TCP, ou seja, garantir que os pacotes sejam entregues sem alterações, sem terem sido corrompidos e na ordem correta. O TCP tem uma série de mecanismos para garantir esta entrega;
:: Executar a segmentação e o reagrupamento de grandes blocos de dados enviados pelos programas, garantir o seqüenciamento adequado e a entrega ordenada de dados segmentados:esta característica refere-se ao recurso de dividir grandes arquivos em pacotes de dados menores e transmitir cada pacote separadamente. Os pacotes podem ser enviados por caminhos diferentes e chegar fora de ordem. O TCP tem mecanismos para garantir que, no destino, os pacotes sejam ordenados corretamente, antes de serem entregues ao programa de destino.
:: Verificar a integridade dos dados transmitidos usando cálculos de soma de verificação: o TCP faz verificações para garantir que os dados não foram alterados ou corrompidos durante o transporte entre a origem e o destino.
:: Enviar mensagens positivas dependendo do recebimento bem-sucedido dos dados. Ao usar confirmações seletivas, também são enviadas confirmações negativas para os dados que não foram recebidos: no destino, o TCP recebe os pacotes de dados, verifica se estão ok e, em caso afirmativo, envia uma mensagem para a origem, confirmando cada pacote que foi recebido corretamente. Caso um pacote não tenha sido recebido ou tenha sido recebido com problemas, o TCP envia uma mensagem ao computador de origem, solicitando uma retransmissão do pacote. Com esse mecanismo, apenas pacotes com problemas terão que ser reenviados, o que reduz o tráfego na rede e agiliza o envio dos pacotes.
:: Oferecer um método preferencial de transporte de programas que devem usar transmissão confiável de dados baseada em sessões, como bancos de dados cliente/servidor e programas de correio eletrônico: o TCP é muito mais confiável do que protocolos como o UDP (explicado adiante) e é indicado para programas e serviços que dependam de uma entrega confiável de dados.
O funcionamento do TCP é baseado em conexões. Assim, para um computador cliente iniciar uma "conversa" com um servidor, é necessário enviar um sinal denominado SYN para este último. O servidor então responde enviando um sinal SYN combinado com um sinal de nome ACK para confirmar a conexão. O cliente responde com outro sinal ACK, fazendo com que a conexão esteja estabelecida e pronta para a troca de dados. Por ser feita em três transmissões, esse processo é conhecimento como three-way handshake (algo como triplo aperto de mãos).
Processo three-way handshake
Confiança/Segurança: Orientado à conexão. Entrega Garantida;
Ordenação dos pedidos: É garantida a ordem de recebimento das mensagens;
Peso do Protocolo: Pesado, devido à elevada informação no cabeçalho das mensagens;
Pacotes: Os dados são transmitidos do forma sequêncial, sem distinção de início e fim do pacote. Podem existir multiplos pacotes por chamada.
Protocolos que usam TCP: HTTP, FTP e SMTP
Aplicações: Servidor Web, p2p

UDP (User Datagram Protocol)
Protocolo UDP
O UDP (User Datagram Protocol) é tido como um protocolo "irmão" do TCP, mas é mais simples e também menos confiável. Isso acontece porque o funcionamento do TCP é, como já dito, baseado em conexões, o que não ocorre com o UDP. Como conseqüência, não há procedimentos de verificação no envio e recebimento de dados (todavia, pode haver checagem de integridade) e se algum pacote não for recebido, o computador de destino não faz uma nova solicitação, como acontece com o TCP. Tudo isso faz do UDP um pouco mais rápido, porém inutilizável em certas aplicações.
Por essas características, pode parecer que o UDP é inútil, mas não é. Há aplicações em que é preferível entregar os dados o mais rapidamente possível, mesmo que algumas informações se percam no caminho. É o caso, por exemplo, das transmissões de vídeo pela internet (streaming), onde a perda de um pacote de dados não interromperá a transmissão. Por outro lado, se os pacotes não chegarem ou demorarem a chegar, haverá congelamentos na imagem, causando irritação no usuário.
Confiança/Segurança: Sem conexão. Entrega não garantida;
Ordenação dos pedidos: Não é garantida a ordem de recebimento das mensagens;
Peso do Protocolo: Leve, devido à pouca informação no cabeçalho das mensagens;
Pacotes: Datagramas, um pacote por uma chamada de leitura.
Protocolos que usam UDP: DNS, DHCP e TFTP
Aplicações: Usado para aplicações do tipo streaming de vídeo ou outras onde se possa perder alguns dados sem comprometer a recepção da informação. Utilizado em aplicações p2p. O UDP é mais rápido e eficiente para aplicações que não necessitem de entrega garantida.


Protocolo TCP vs Protocolo UDP



Certamente que já ouviram falar em serviços/aplicações que usam o protocolo TCP ou UDP.  Os protocolos TCP e UDP pertencem à camada 4 do modelo OSI (camada de transporte) e em traços gerais, em conjunto com o porto/porta e IP da máquina, definem como uma determinada informação é transmitida na rede.
Numa máquina existem (teoricamente) 65.536 portas TCP que podem ser usadas pelas mais diversas aplicações/serviços, o que (teoricamente) poderíamos ter 65.536 aplicações/serviços distintos a correr em simultâneo na nossa máquina. Relembrando o que foi referido em artigos anteriores: o IP identifica a máquina e o porto identifica a aplicação/serviço. Além das portas TCP temos também 65.536 portas UDP(teoricamente).

Protocolo TCP

O TCP é o protocolo mais usado isto porque fornece garantia na entrega de todos os pacotes entre um PC emissor e um PC receptor. No estabelecimento de ligação entre emissor e receptor existe um “pré-acordo” denominado de Three Way Handshake (SYN, SYN-ACK, ACK).
Exemplo
Considerem por exemplo que querem transmitir um filme ou um arquivo com um jogo que ocupa 800 MB. Esse arquivo  terá de ser partidos em partes mais pequenas (fragmentação), para que seja viável a  sua transferência para outro PC. Recorrendo ao protocolo TCP existe a garantia que todos os pacotes serão entregues e reordenados do outro lado (uma vez que podem ir por caminhos diferentes). Além disso, por cada pacote ou conjunto de pacotes (previamente definido), a máquina de destino confirma que recebeu essa informação ao emissor e no caso de falha de algum pacote, a máquina de destino procede ao emissor o pedido de retransmissão do(s) pacote(S) em falta.
Já pensaram se na transmissão do ficheiro do filme ou jogo de (800 MB) faltassem por exemplo apenas 2 k???? …bem, o receptor simplesmente não iria conseguir abrir esse ficheiro recebendo provavelmente a mensagem “arquivo corrompido”.
Então e o UDP?
O UDP é um protocolo mais simples e por si só não fornece garantia na entrega dos pacotes. No entanto, esse processo de garantia de dados pode ser simplesmente realizado pela aplicação em si (que usa o protocolo UDP) e não pelo protocolo. Basicamente, usando UDP, uma máquina emissor envia uma determinada informação e a máquina receptor recebe essa informação, não existindo qualquer confirmação dos pacotes recebidos. Se um pacote se perder não existe normalmente solicitação de reenvio, simplesmente não existe.

Exemplo
Vamos a um exemplo comum. Imaginem que vão usar streaming de vídeo e áudio através da Internet e usam por exemplo o Skype como aplicação. Se estabelecerem uma ligação com um amigo vosso, vão notar que existem muitos pacotes na transmissão que se perdem…ouvem aquele barulho normal aquando das transmissões…”bluuup” ou a perda/bloqueio de imagem por alguns ms (milisegundos), o que é perfeitamente aceitável. Não teria muita lógica que a meio dessa transmissão a vossa aplicação parasse o streaming e fosse solicitar ao receptor pacotes perdidos…simplesmente começávamos uma conversa e a meio iríamos receber informações provavelmente daquilo que falamos no início.
Não é muito normal encontrar aplicações que usem exclusivamente o protocolo UDP, usando o exemplo do streaming existe sempre o recurso ao TCP para trocar informações de controlo, libertando o UDP apenas para o envio da informação.
Nota final: Tentou-se explicar de forma simples e abreviada as principais características do UDP e TCP. Contamos com os vossos comentários de forma a analisarem o mesmo e a darem dicas para novos artigos.

Roteadores, Switches e Hubs no modelo OSI

Imagem Postada
Enquanto a maioria dos switches opera na camada de enlace de dados (camada 2) do Modelo de referência OSI, alguns incorporam funções de um roteador e também operam na camada de rede (camada 3). Na verdade, um switch de camada 3 é muito parecido com um roteador. 

Os switches da camada 3 operam na camada de rede 



Quando um roteador recebe um pacote, ele observa os endereços da fonte e do destino da camada 3 para determinar o caminho que o pacote deve tomar. Um switch padrão utiliza os endereços MAC para determinar a fonte e o destino do pacote. Este procedimento é feito na camada 2 (enlace de dados) da rede. 


A principal diferença entre um roteador e um switch de camada 3 é que os switches têm hardwareotimizado para transmitir dados tão rapidamente quanto os switches de camada 2. Entretanto, eles ainda decidem como transmitir o tráfego na camada 3, exatamente como um roteador faria. Dentro de um ambiente LAN, um switch de camada 3 é geralmente mais rápido do que um roteador porque é construído para ser um hardware de comutação. Muitos switches de camada 3 da Cisco são, na verdade, roteadores que operam mais rapidamente porque são construídos com pastilhas personalizadas de comutação. 


O reconhecimento de padrões (pattern matching) e a memória cache em switches de camada 3 funcionam de maneira semelhante a um roteador. Ambos utilizam um protocolo e uma tabela de roteamento para determinar o melhor caminho. Entretanto, um switch de camada 3 tem a capacidade de reprogramar dinamicamente um hardware com as informações atuais de roteamento da camada 3. Por isso o processamento dos pacotes é mais rápido. 


Nos switches de camada 3 atuais, as informações recebidas pelos protocolos de roteamento são utilizadas para atualizar a memória cache das tabelas do hardware.