Conceitos de Redes Linux HOWTO <author>Rusty Russell - Tradução de César A. K. Grossmann <date>18/07/2002 (tradução da versão 1.13, de 29/07/2001) <abstract> Este documente descreve o que uma rede (como a Internet) é, e os conceitos básicos de como ela funciona. </abstract> <toc> <sect>Introdução <p>Bem vindo, gentil leitor. <p>Eu já escrevi um certo número de HOWTOs sobre redes no passado, e ocorreu-me que há muito jargão em cada um. Eu tinha três escolhas: minhas outras duas eram ignorar o problema e explicar os termos onde eles aparecessem. Nenhuma era atraente. <p>O <bf>ponto</bf> do Free Software é que você deve ter a lbierdade de explorar e brincar com os sistemas e softwares que você usa. Eu acredito que ajudar as pessoas a experimentar esta liberdade é um objetivo nobre - não só as pessoas sentem-se fortalecidas pelo desafio (como a reconstrução de um motor de automóvel), mas a natureza da Internet poderna e do Free Software permite que você compartilhe esta experiência com milhões. <p>Mas você tem que iniciar em algum ponto, e aqui estamos nós. <p>(C) 2000 Paul `Rusty' Russel. Licenciado sob a GNU GPL. <p>(C) 2002 César A. K. Grossmann. <sect> O que é uma `rede de computadores'?<label id="definition-computer-network"> <p> <label id="definition-node"> Uma rede de computador é um conjunto de coisas para que os nós conversem uns com os outros (por `nós' eu quero dizer computadores, impressoras, máquinas de Coca-Cola e qualquer coisa que você queira). Realmente não importa <bf>como</bf> eles estão conectados: podem usar cabos de fibra ótica ou pombos-correio. Obviamente, algumas escolhas são melhores que outras (especialmente se você tem um gato). <label id="definition-sub-network"> <p>Normalmente, se você conectar apenas dois computadores, isto não é chamado de rede, você precisa de três ou mais para que isto se torne uma rede. É quase como a palavra `grupo': duas pessoas são apenas um par de pessoas, mas três podem ser um `grupo'. Além disto, as redes geralmente são conectadas, para criar redes maiores. Cada pequena rede (geralmente chamada de `sub-rede') pode ser parte de uma rede maior. <label id="definition-network-link"> <p>A conexão real entre dois computadores é geralmente chamada de `link de rede'. Se houver algum cabo saindo da parte de trás do seu cmputador para outras máquinas, aquele é o seu link de rede. <p>Existem outras quatro coisas que geralmente nós nos preocupamos quando falamos sobre uma rede de computadores: <descrip> <tag>Tamanho</tag> <label id="definition-LAN"> Se você simplesmente conecta quatro computadores em casa, você tem o que é chamado de LAN (Local Area Network, ou Rede Local). Se tudo está a uma caminhada de distância, então é geralmente chamado de LAN, não importando quantas máquinas estão conectadas, ou como você montou a rede. <label id="definition-WAN"> <p>No outro lado do espector temos a WAN (Wide Area Network, ou rede de longa distância). Se você tem um computador em Lahore, no Paquistão, um em Birmingham, Reino Unido, e um em Santiago, Chile, e você conecta eles, você tem uma WAN. <tag>Topologia: A Forma</tag> <label id="definition-topology"> Desenhe um mapa da rede: as linhas são os <ref id="definition-network-link" name="links de rede">, e cada nó é um ponto. Pode ser que cada linha leve a um nó central, como uma grande estrela, significando que todo mundo fala através de um ponto (uma <label id="definition-star-topology"> `topologia em estrela'): <tscreen><verb> o o o \_ | _/ \|/ o-----o-----o _/|\_ / | \ o o o </verb></tscreen> <p>Talvez todo mundo se fale em uma linha, assim: <tscreen><verb> o------o------o------o------o | | | | | o | | o | o </verb></tscreen> <p>Ou talvez você tenha três sub-redes conectadas através de um nó: <tscreen><verb> o o | o--o--o | | | o--o--o--o--o o \ | o------o / | o--o--o--o--o o | | | o | o--o o </verb></tscreen> <p>Você verá muitas topologias como estas na vida real, e muitas muito mais complicadas. <tag>Física: Do Quê é Feita</tag> <label id="definition-sneakernet"> A segunda coisa a se preocupar é o quê você usou para fazer a rede. A mais barata é a `rede tênis', onde pessoas mal vestidas carregam disquetes de uma máquina para outra. As `redes tênis' são quase sempre uma <ref id="definition-LAN" name="LAN">. Os disquetes custam menos de US$1, e um sólido par de tênis pode ser obtido por cerca de US$20. <p><label id="definition-modem"> O sistema mais comum usado para conectar redes domésticas em redes bem maiores é chamado de `modem' (de MOdulador/DEModulador), que transforma uma conexão telefôncia em um link de rede. Ele transforma o que o computador envia em sons, e fica ouvindo os sons vindo do outro lado para transformá-los novamente em coisas para o computador. Como você pode imaginar, não é muito eficiente, e as linhas telefônicas não foram projetadas para este uso, mas é um meio bastante popular por que as linhas telefônicas são bastante comuns e baratas, os modems podem ser adquiridos por menos de US$50, e as linhas de telefone geralmente custam um par de centenas de dólares por ano. <p> <label id="definition-ethernet"> <label id="definition-UTP"> <label id="definition-10base2"> <label id="definition-10baseT"> <label id="definition-100baseT"> <label id="definition-coax"> <label id="definition-gigabit-ethernet"> <label id="definition-terminator"> <label id="definition-hub"> O modo mais comum de conectar máquinas em uma LAN é usar Ethernet. O Ethernet vem nestes sabores principais (listados do mais velho para o mais novo): Thinwire/Coax/10base2, UTP (Unshielded Twisted Pair - Par Trançado Não Blindado)/10BaseT e UTP/100baseT. A Gigabit ethernet (o nome 1000baseT estava começando a parecer bobo) está começando a ser utilizado, também. O cabo 10base2 é geralmente um cabo coaxial preto, com conectores T para conectar o mesmo aos equipamentos: todo mundo fica conectado em uma linha enorme, com `terminadores' nas duas pontas. O UTP é geralmente um fio azul, com conectores claros parecidos com os telefônicos que são plugados em soquetes para fazer a conexão: cada fio conecta um nó a um `hub' central. O cabo custa alguns dólares o metro, e as placas 10BaseT/10Base2 (muitas placas possuem os dois tipos de plugs) são difíceis de conseguir. Placas 100baseT, que também podem ser usadas em 10baseT, são dez vezes mais rápidas, e custam cerca de US$30. <p><label id="definition-fiber">Na outra ponta do expectro está a Fibra, um fino filamento contínuo de vidro com uma cobertura de proteção que pode ser usada para conectar continentes. Geralmente o cabo de fibra pode custar milhares de dólares. <p><label id="definition-network-interface">Usualmente chamamos cada conexão a um nó de `interface de rede', ou simplesmente `interface'. O linux dá nomes como `eth0' para a primeira interface ethernet, e `fddi0' para a primeira interface de fibra. O comando `/sbin/ifconfig' lista as interfaces. <tag>Protocolo: O que a rede está Falando</tag> <label id="definition-protocol"> A última coisa com a qual nos preocupamos é a linguagem que as pontas estão falando. Quando dois <ref id="definition-modem" name="modems"> estão falando em uma linha telefônica, eles precisam concordar sober o que os diferentes sons significam, ou a conexão não irá funcionar. Esta convenção é chamada de `protocolo'. Conforme as pessoas descobriam novas formas de codificar o que o computador fala em sons menores, novos protocolos foram inventados; existe pelo menos uma dúzia de diferentes protocolos de modem, e a maioria dos modems irá experimentar vários deles até encontar um que a outra ponta entenda. <p>Outro exemplo é a rede <ref id="definition-100baseT" name="100baseT"> mencionada acima: ela usa os mesmos <ref id="definition-network-link" name="links de rede"> <ref id="definition-UTP" name="UTP"> do <ref id="definition-10baseT" name="10baseT"> acima, mas fala dez vezes mais rápido. <label id="definition-link-level-protocol"> <label id="definition-hop"> <p>Estes dois protocolos são o que chamamos de protocolos de `nível de link', ou `link-level', a forma que as coisas são tratadas pelos links individutais da rede, ou `um hop'. A palavra `protocolo' também refere-se a outras convenções que são seguidas, como iremos ver a seguir. </descrip> <sect>O que é a `Internet'?<label id="definition-internet"> <p>A Internt é uma <ref id="definition-WAN" name="WAN"> que abranje o globo inteiro: é a maior rede de computadores existente. A expressão `internetworking' refere-se à conexão de redes separadas para montar uma rede maior, assim `A Internet' é a conexão de um monte de subredes. <p>Agora vamos ver a lista acima e nos perguntar: qual é o tamanho da Internet, detalhes físicos e protocolos? <p>O tamanho já foi dito acima: é global. <p>Os detalhes físicos são variados, entretanto: cada pequena sub-rede é conectada diferente, com um layout e natureza física diferentes. Tentativas de mapear a mesma de uma forma útil geralmente terminam em fracasso. <p>Os protocolos falados por cada link também são diferentes: cada um dos <ref id="definition-link-level-protocol" name="protocolos de nível de link"> listados acima são usados, e muitos mais. <sect1>Como a Internet funciona? <p>A questão então é levantada: como cada nó na Internet consegue falar com os outros, se todos eles usam diferentes protocolos de nível de link para falar entre si? <label id="definition-network-protocol"> <p>A resposta é bastante simples: precisamos de outro protocolo que controla como as coisas fluem pela rede. O protocolo de nível de link descreve como passar de um nó para outro se eles estão conectados diretamente. O `protocolo de rede' informa como ir de um ponto na rede para qualquer outro ponto, passando por outros links se necessário. <label id="definition-internet-protocol"> <label id="definition-IP"> <label id="definition-IPv4"> <label id="definition-IPv6"> <p>Para a Internet, o protocolo de rede é o Internet Protocol (versão 4), ou `IP'. Ele não é o único protocolo existente (existem outros, como o AppleTalk da Apple, IPX da Novell, DECNet da Digital e o NetBEUI da Microsoft) mas é o mais amplamente adotado. Existe uma nova versão do IP chamada IPv6, mas esta ainda não é comum. <label id="definition-router"> <p>Assim, para mandar uma mensagem de um lado do globo com outro, seu computador escreve um pedaço de Internet Protocol, envia ele para o seu modem, que usa algum protocolo de nível de link para enviar o mesmo para o modem que foi discado, que provavelmente está plugado em um servidor de terminal (basicamente uma grande caixa de modems), que envia ele para um nó dentro da rede do provedor, que geralmente envia para um nó maior, que manda para o próximo nó, e assim por diante. Um nó que conecta duas ou mais redes é chamado de `roteador': ele tem uma <ref id="definition-network-interface" name="interface"> para cada rede. <label id="definition-protocol-stack"> <p>Chamamos este conjunto de protocolos de `pilha de protocolos', usualmente desenhado assim: <tscreen><verb> [ Application: Handles Porn ] [ Application Layer: Serves Porn ] | ^ v | [ TCP: Handles Retransmission ] [ TCP: Handles Retransmission ] | ^ v | [ IP: Handles Routing ] [ IP: Handles Routing ] | ^ v | [ Link: Handles A Single Hop ] [ Link: Handles A Single Hop ] | | +------------------------------------------+ </verb></tscreen> <label id="definition-transmission-control-protocol"> <label id="definition-TCP"> Assim, no diagrama, vemos o Netscape (a `Application' na extremidade superior esquerda) recuperando uma página web de um servidor web (a `Application' na extremidade superior direita). Para fazer isto será usado o `Transmission Control Protocol' (Protocolo de Controle de Transmissão) ou `TCP': mais de 90% do tráfego de Internet atual é TCP, e é usado para Web e EMail. <p>Desta forma, o Netscape faz a solicitação por uma conexão TCP ao servidor web remoto: esta é passada para a camada TCP, que passa esta para a camada IP, que descobre em que direção tem que ir, passa para a camada de link apropriada, que transmite para a outra ponta do link. <p>Na outra ponta, a camada de link passa a solicitação para a camada IP, que verifica se esta é destinada para este hot (se não, ela pode passar a mesma novamente para baixo, para outra camada de link para que a mesma saia para o próximo nó), passa ela para a camada TCP, que por sua vez a passa para o servidor. <p>Assim temos as seguintes divisões: <enum> <item>A aplicação (Netscape, ou o servidor web na outra penet) decide com quem ele quer falar, e o que ele quer enviar. <label id="definition-packets"> <item>A camada TCP envia pacotes especiais para iniciar uma conversação com a outra ponta, eentão empacota os dados em um `pacote' TCP: um pacote é somente um termo que designa uma porção de dados que passa pela rede. A camada TCP passa este pacote para <label id="definition-retransmission"> a camada IP: esta fica passando a mesma para a camada IP até que a camada TCP na outra ponta responda para dizer que já recebeu o pacote. Isto é chamado de `retransmissão', e possui um conjunto completo de regras complexas que controlam quando fazer uma retransmissão, quanto tempo esperar, etc. Também dá a cada pacote um conjunto de números, o que significa que a outra ponta pode colocar os mesmos na ordem correta. <label id="definition-routing"> <item>A camada IP procura o destino do pacote, e determina qual o próximo nó para o qual o pacote deve ser enviado. Esta atividade simples é chamada de `roteamento', e varia de realmente simples (se você tem somnte um motem, e nenhuma outra interface de rede, todos os pacotes devem ir por aquela interface) para realmente complexa (se você tem 15 redes principais conectadas diretamente a você). </enum> <sect>Este tal de IP <label id="definition-route"> <label id="definition-ip-address"> <p>Assim a função da camada IP é descobrir como `rotear' os pacotes para seu destino final. Para tornar isto possível, cada interface na rede precisa de um `endereço IP'. Um endereço IP consiste de quatro números separados por pontos, como `167.216.245.249'. Cada número está entre zero e 255. <p>Interfaces na mesma rede tendem a ter endereços IP vizinhos. Por exemplo, `167.216.245.250' fica ao lado da máquina com endereço IP `167.216.245.249'. Lembre também que um roteador é um nó com interfaces em mais de uma rede, assim o roteador terá um endereço IP para cada interface. <label id="definition-default-route"> <p>Assim, a camada IP do kernel do Linux mantém uma tabela de diferentes `rotas', descrevendo como chegar aos diferentes grupos de endereços IP. O mais simples destes é chamado de `rota default' ou `rota padrão': se a camada IP não sabe o que fazer, esta é a rota para a qual enviar os pacotes. Você pode ver uma lista de rotas usando `/sbin/route'. <p>As rotas podem ou apontar para um link, ou um nó em particular que é conectado a outra rede. Por exemplo, quando você disca para o provedor de Internet, a tua rota default irá apontar para o link do modem, por que é lá onde o mundo inteiro está. <tscreen><verb> Rusty's ISP's ~~~~~~~~~~~~ Modem Modem { } o------------------o { The Internet } { } ~~~~~~~~~~~~ </verb></tscreen> Mas se você tem uma máquina permanente em sua rede que conecta ao mundo exterior, é um pouco mais complicado. No diagrama abaixo, minha máquina pode falar diretamente às máquinas de Tridge e Paul, e para o firewall, mas precisa saber que os pacotes destinados para o resto do mundo vão para o firewall, que irá então passar os mesmos adiante. Isto significa que você tem duas rotas> uma que diz `se está em minha rede, mande diretamente para ela' e uma rota default que diz `caso contrário, mande para o firewall'. <tscreen><verb> o Tridge's | Work Machine ~~~~~~~~~~~~ Rusty's | { } Work Machine o--------+-----------------o--{ The Internet } | Firewall { } | ~~~~~~~~~~~~ o Paul's Work Machine </verb></tscreen> <sect1>Grupos de Endereços IP: Máscaras de Rede <p><label id="definition-network-address">Existe mais um último detalhe: existe uma notação padrão para abrupar endereços IP, algumas vezes chamada de `endereço de rede' ou `network address'. Exatamente como um número de telefone pode ser dividido em código de área e o resto, podemos dividir um endereço IP em um prefixo de rede e o resto. <p>É comum as pessoas falar sobre `a rede 1.2.3', significando todos os 256 endereços de 1.2.3.0 a 1.2.3.255. Ou se esta não for uma rede grande o suficiente, eles podem chamar ela de `rede 1.2', o que significa todos os endereços de 1.2.0.0 a 1.2.255.255. <label id="definition-network-mask"> <label id="definition-netmask"> <p>Normalmente nós não escrevemos `1.2.0.0 - 1.2.255.255'. Em vez disto, nós abreviamos isto para `1.2.0.0/16'. Esta notação esquisita `/16' (que é chamada de `netmask' ou `máscara de rede') pede uma pequena explicação. <p>Cada número entre os pontos em um endereço IP é na verdade um número de 8 dígitos binários (00000000 a 11111111): escrevemos o mesmo na forma decimal para tornar o mesmo mais legível para humanos. O `/16' significa que os 16 primeiros dígitos binários são o endereço de rede. Em outras palavras, a parte `1.2.' é a rede (lembre: cada dígito representa 8 dígitos binários). Isto significa que qualquer endereço IP começando com `1.2.' é parte da rede: `1.2.3.4' e `1.2.3.50' são, enquanto `1.3.1.1' não. <p>Para tornar a vida mais fácil, geralmente usamos redes terminando em `/8', `/16' e `/24'. Por exemplo, `10.0.0.0/8' é uma grande rede contendo qualquer endereço de 10.0.0.0 a 10.255.255.255 (mais de 16 milhões de endereços!). 10.0.0.0/16 é menor, contendo somente endereços IP de 10.0.0.0 a 10.0.255.55. 10.0.0.0/24 é ainda menor, contendo endereços de 10.0.0.0 a 10.0.0.255. <p>Para aumentar a confusão, existe outra forma de escrever netmasks. Podemos escrever elas como endereços IP: <tscreen><verb> 10.0.0.0/255.0.0.0 </verb></tscreen> <label id="definition-broadcast-address"> <p>Finalmente, é importante notar que o endereço IP mais alto em qualquer rede é reservado como sendo o `endereço de broadcast', que pode ser usado para mandar uma mensagem a todos na rede ao mesmo tempo. <p>Aqui temos uma tabela de máscaras de rede: <tscreen><verb> Short Full Maximum Comment Form Form #Machines /8 /255.0.0.0 16,777,215 Used to be called an `A-class' /16 /255.255.0.0 65,535 Used to be called an `B-class' /17 /255.255.128.0 32,767 /18 /255.255.192.0 16,383 /19 /255.255.224.0 8,191 /20 /255.255.240.0 4,095 /21 /255.255.248.0 2,047 /22 /255.255.252.0 1,023 /23 /255.255.254.0 511 /24 /255.255.255.0 255 Used to be called a `C-class' /25 /255.255.255.128 127 /26 /255.255.255.192 63 /27 /255.255.255.224 31 /28 /255.255.255.240 15 /29 /255.255.255.248 7 /30 /255.255.255.252 3 </verb></tscreen> <sect>Nomes de Máquinas e Endereços IP <p>Assim, toda interface em todos os nós tem um endereço IP. Logo se descobriu que os humanos são bem ruins para lembrar números, e foi decidido (como nos números de telefone) ter um diretório de nomes. Mas desde que estamos uando computadores de qualquer forma, é melhor deixar para o computador encontrar os nomes para nós automaticamente. <label id="definition-DNS"> <p>Assim nós temos o Domain Name System (DNS). Existem nós com endereços IP de conhecimento geral os quais os programas pode perguntar por nomes, e receber de volta endereços IP. Quase todos os programas que você vai usar são capazes de fazer isto, o que é a razão pela qual você pode colocar `www.linuxcare.com' no Netscape, em vez de `167.216.245.249'. <label id="definition-name-server"> <p>Obviamente você vai precisar saber o endereço IP de pelo menos um destes `servidores de nomes': geralmente eles são mantidos no arquivo `/etc/resolv.conf'. <label id="definition-UDP"> <label id="definition-user-datagram-protocol"> <p>Uma vez que as consultas e respostas DNS são bem pequenas (um pacote cada uma), o protocolo TCP geralmente não é usado: ele fornece retransmissão automática, ordenamento e controle de confiabilidade genérico, mas ao custo do envio de pacotes extra pela rede. Em vez, usamos o `User Datagram Protocol', mais simples, que não oferece nenhuma das funcionalidades legais do TCP que nós não precisamos. <sect>Serviços Diferentes: Email, Web, FTP, Serviço de Nomes <p>No exmeplo anteriori, mostramos o Netscape enviando uma solicitação TCP para um servidor Web que está sendo executado em outro nó. Mas imagine que o nó com o servidor web também esteja rodando um servidor de Email, um servidor FTP, e um servidor de nomes: como ele sabe para qual servidor a conexão TCP é? <label id="definition-port"> <label id="definition-destination-port"> <p>Esta é a razão pela qual o TCP e o UDP tem o conceito de `portas'. Todos os pacotes possuem um espaço para uma `porta destino', que informa para qual serviço é o pacote. Por exmeplo, a porta TCP 25 é o servidor de correio, e a porta TCP 80 é o servidor de web (apesar de você às vezes encontrar servidores web em portas diferentes). Uma lista de portas pode ser encontrada em `/etc/services'. <p>além disto, se duas janelas Netscape estão ambas acessando diferentes partes do mesmo web site, como a máquina Linux que está rodando o Netscape mantém em ordem os pacotes TCP que vem do servidor web? <label id="definition-source-port"> <p>É aqui que entra a `porta de origem': toda conexão TCP nova recebe uma porta de origem diferente, assim todas as conexões são mantidas separadas, mesmo se estão indo para o mesmo endereço IP e a mesma porta de destino. Geralmente a primeira porta de origem fornecida é 1024, e este número é aumentado com o tempo. <sect>Interfaces Discadas: PPP <p> <label id="definition-ppp"> <label id="definition-point-to-point-protocol"> <label id="definition-ppp-daemon"> Quando você disca seu modem para um provedor de Internet, e ele faz a conexão ao modem do mesmo, o kernel não fica simplesmente empurrando pacotes IP pela conexão. Existe um protocolo chamado de `Protocolo Ponto-a-Ponto', ou `PPP', que é usado para negociar com o outro lado antes que qualquer pacotes sejam enviados. Este protocolo é usado pelo ISP para identificar quem discou: no seu computador Linux, um programa chamado `PPP daemon' trata o seu lado da negociação. <label id="definition-dynamic-ip-address"> <label id="definition-static-ip-address"> <p>Como existem muitos usuários discados no mundo, eles geralmente não tem o seu próprio endereço IP: a maioria dos ISPs irá atribuir um dos endereços dele temporariamente para você quando você faz a discagem (o daemon PPP irá negociar isto). Isto geralmente é chamado de `enderço IP dinâmico', para separar de `endereço IP estático', que é o caso normal quando você tem o seu próprio endereço permanente. Geralmente eles são atribuídos por modem: da próxima vez que você discar, provavelmente será atendido por um modem diferenet na pilha de modems, e irá receber um endereço IP diferente. <sect>Como se Parecem os Pacotes <label id="definition-packet-sniffer"> <p>Para os excepcionalmente curiosos (e os curiosamente excepcionais), há aqui uma explicação de como se parece um pacote. Existem várias ferramentas que podem examinar quais pacotes estão entrando ou saindo de sua máquina Linux: a mais comum é o `tcpdump' (que entende mais que o TCP atualmente), mas uma mais legal é o `ethereal'. Estes programas são conhecidos como `packet sniffers'. <label id="definition-packet-header"> <label id="definition-packet-body"> <p>O início de cada pacote diz onde ele está indo, de onde ele vem, o tipo de pacote, e outros detalhes administrativos. Esta parte é chamada de `packet header', ou `cabeçalho do pacote'. O resto do pacote, contendo os dados que estão sendo transmitidos, é chamado geralmente de `packet body' ou `corpo do pacote'. <label id="definition-IP-header"> <p>Assim qualquer pacote começa com um `cabeçalho IP': pelo menos 20 bytes de comprimento. Ele se parece com isto (este diagrama foi copiado sem nenhuma vergonha da RFC 791): <tscreen><verb> .-------+-------+---------------+-------------------------------. |Version| IHL |Type of Service| Total Length | |-------+-------+---------------+-------------------------------| | Identification |Flags| Fragment Offset | |---------------+---------------+-------------------------------| | Time to Live | Protocol | Header Checksum | |---------------+---------------+-------------------------------| | Source Address | |---------------------------------------------------------------| | Destination Address | `---------------------------------------------------------------' </verb></tscreen> Os campos importantes são o Protocolo, que indica se é um pacote TCP (número 6), um pacote UDP (número 17), ou outra coisa, o endereço IP de Origem, e o endereço IP de Destino. <label id="definition-TCP-header"> <p>Agora, se o campo do protocolo diz que é um pacote TCP, então um cabeçalho TCP deve segir imediatamente este cabeçalho IP: o cabeçalho TCP tem também pelo menos 20 bytes: <tscreen><verb> .-------------------------------+-------------------------------. | Source Port | Destination Port | |-------------------------------+-------------------------------| | Sequence Number | |---------------------------------------------------------------| | Acknowledgment Number | |-------------------+-+-+-+-+-+-+-------------------------------| | Data | |U|A|P|R|S|F| | | Offset| Reserved |R|C|S|S|Y|I| Window | | | |G|K|H|T|N|N| | |-------+-----------+-+-+-+-+-+-+-------------------------------| | Checksum | Urgent Pointer | `---------------------------------------------------------------' </verb></tscreen> Os campos mais importantes aqui são a porta de origem, e a porta de destino, que diz a qual serviço o pacote está indo (ou vindo, no caso de pacotes de resposta). Os números de seqüência e reconhecimento são usados para manter os pacotes em ordem, e dizem ao outro lado quais pacotes já foram recebidos. As flags ACK, SYN, RST e FIN (escritas de cima para baixo) são bits simples que são usados para negociar a abertura (SYN) e fechamento (RST ou FIN) das conexões. <p>Seguindo este cabeçalho vem a verdadeira mensagem que a aplicação está enviando (o corpo do pacote). Um pacote normal tem até 1500 bytes: isto significa que o maior espaço que um dado por tomar é 1460 bytes (20 bytes para o cabeçalho IP, e 20 para o cabeçalho TCP): pouco mais de 97%. <sect>Resumo <p>A Internet moderna usa pacotes IP para fazer a comunicação, e a maior parte destes pacotes IP usam o TCP dentro de si. Nós especiais chamados `roteadores' conectam todas as pequenas redes juntas em redes maiores, e repassam estes pacotes para o seu destino. A maior parte das máquinas normais só está conectada a uma rede (ou seja, tem somente uma interface), e assim não são roteadores. <p>Toda interface tem um único endereço IP, que se parece com `1.2.3.4': interfaces na mesma rede terão endereços IP relacionados, com o mesmo início, da mesma forma que conexões telefônicas na mesma área tem o mesmo prefixo. Estes endereços de rede parecem com endereços IP, com uma `/' para dizer quanto dela é o prefixo, como por exemplo `1.2.0.0/16', significando que os dois primeiros dígitos são o endereço de rede: cada dígito representa 8 bits. <p>As máquinas recebem nomes pelo Domain Name Service: programas pedem aos servidores de nome que informem o endereço IP, dando um nome como `www.linuxcare.com'. Este endereço IP é então ussado como endereço de IP de destino para falar com aquele nó. <p>O rusty é realmente ruim escrevendo documentação, especialmente para novatos. <p>Bom proveito! <p>Rusty. <sect>Agradecimentos <p>Obrigado à Alison, por examinar o terrível rascunho original, e informar-me como ele era ruim, da melhor forma possível. <sect>Índice <p> <itemize> <item> <ref id="definition-100baseT" name="100baseT"> <item> <ref id="definition-10base2" name="10base2"> <item> <ref id="definition-10baseT" name="10baseT"> <item> <ref id="definition-packet-header" name="Cabeçalho do Pacote"> <item> <ref id="definition-IP-header" name="Cabeçalho IP"> <item> <ref id="definition-TCP-header" name="Cabeçalho TCP"> <item> <ref id="definition-coax" name="Coax, Cabo Coaxial"> <item> <ref id="definition-packet-body" name="Corpo do Pacote"> <item> <ref id="definition-DNS" name="DNS, Domain Name Service"> <item> <ref id="definition-broadcast-address" name="Endereço broadcast"> <item> <ref id="definition-network-address" name="Endereço de Rede, Máscara de Rede"> <item> <ref id="definition-ip-address" name="Endereço IP"> <item> <ref id="definition-dynamic-ip-address" name="Endereço IP Dinâmico"> <item> <ref id="definition-static-ip-address" name="Endereço IP Estático"> <item> <ref id="definition-ethernet" name="Ethernet"> <item> <ref id="definition-gigabit-ethernet" name="Ethernet Gigabit"> <item> <ref id="definition-fiber" name="Fibra"> <item> <ref id="definition-hop" name="Hop"> <item> <ref id="definition-hub" name="Hub"> <item> <ref id="definition-network-interface" name="Interface de Rede, Interface"> <item> <ref id="definition-internet" name="Internet"> <item> <ref id="definition-IP" name="IP, Protocolo Internet"> <item> <ref id="definition-IPv4" name="IPv4, IP versão 4"> <item> <ref id="definition-IPv6" name="IPv6, IP versão 6"> <item> <ref id="definition-LAN" name="LAN, Rede Local"> <item> <ref id="definition-network-link" name="Link de Rede"> <item> <ref id="definition-modem" name="Modem"> <item> <ref id="definition-netmask" name="Máscara de Rede"> <item> <ref id="definition-node" name="Nó"> <item> <ref id="definition-packet-sniffer" name="Packet Sniffer"> <item> <ref id="definition-packets" name="Pacote"> <item> <ref id="definition-protocol-stack" name="Pilha de Protocolos"> <item> <ref id="definition-destination-port" name="Porta de Destino"> <item> <ref id="definition-source-port" name="Porta de Origem"> <item> <ref id="definition-link-level-protocol" name="Protocolo de Nível de Link"> <item> <ref id="definition-network-protocol" name="Protocolo de Rede, Protocolo"> <item> <ref id="definition-port" name="Porta, Porta TCP, Porta UDP"> <item> <ref id="definition-ppp-daemon" name="PPP daemon"> <item> <ref id="definition-ppp" name="PPP, Protocolo Ponto-a-Ponto"> <item> <ref id="definition-computer-network" name="Rede de Computadores"> <item> <ref id="definition-sneakernet" name="Rede-Tênis"> <item> <ref id="definition-retransmission" name="Retransmissão"> <item> <ref id="definition-route" name="Rota"> <item> <ref id="definition-router" name="Roteador"> <item> <ref id="definition-routing" name="Roteamento"> <item> <ref id="definition-default-route" name="Rota Default"> <item> <ref id="definition-name-server" name="Servidor de Nomes"> <item> <ref id="definition-sub-network" name="Sub-rede"> <item> <ref id="definition-TCP" name="TCP, Transmission Control Protocol"> <item> <ref id="definition-terminator" name="Terminador"> <item> <ref id="definition-topology" name="Topologia"> <item> <ref id="definition-star-topology" name="Topologia de Estrela"> <item> <ref id="definition-UDP" name="UDP, User Datagram Protocol"> <item> <ref id="definition-UTP" name="UTP, Par Trançado Não Blindado"> <item> <ref id="definition-WAN" name="WAN, Rede de Longa Distância"> </itemize> </article>