Você está na página 1de 69

Notas de Aula de TCPjIP

(ltimc ctuclizco: 11 dc chril dc 2001)


sIas so noIas de auIa de TCP/!P, redigidas por Ricardo Ueda Karpischek, e
podem ser enconIradas no endereo hIIp://www.ime.usp.br/~ueda
/Idoc/noIasIcp.hImI. Ias Iem um carIer prIico, e Irazem
aproximadamenIe o conIedo gue de hbiIo seguimos ao dar cursos. A
apresenIao despo|ada preIende IaciIiIar uma rpida assimiIao. As noIas
esIo enIreIaadas com exempIos prIicos baseados em comandos
habiIuaImenIe enconIrados em pIaIaIormas Unix-Iike (como o Linux) e
Iambem no Windows. Recomendamos gue esses exempIos se|am repeIidos
muiIas vezes aIe gue o uso dos comandos Iorne-se habiIuaI.
sIas noIas podem ser IivremenIe consuIIadas. Ias podem Iambem ser
IivremenIe reproduzidas eIeIrnicamenIe ou aIraves de impresso em
papeI, desde gue manIida a inIegridade do documenIo. OporIunamenIe
disponibiIizaremos esIas noIas sob os Iermos precisos de aIguma Iicena
apropriada para documenIao Iivre.
Obs. Nos cxcmplos prticos, rcclcmos o tcxto digitcdo coloccndo-o cm
ncgrito. No Unix, clguns dos comcndos utilizcdos por vczcs rcsidcm cm
dirctrios quc no constcm do PATH dcjcult (tipiccmcntc /shin ou /usr/shin).
Sees
Cada seo e composIa por um sumrio seguido de noIas e evenIuaImenIe guesIes. As noIas
escIarecem e compIeIam o sumrio, mas no so exausIivas.
1. !nIroduo ao !P
2. !nIroduo ao TCP
3. DNS
4. O AIgoriImo de roIeamenIo !P
S. O Icpdump
6. NeIwork Programming
7. sIudo de caso: RS-232
8. TCP/!P e segurana
9. UDP
10. Redes privadas
11. sIudo de caso: eIherneI
12. Noes sobre roIeadores
13. MuIIidomInio
14. NoIas breves sobre hardware
1S. ReperIrio de comandos
NoIas de AuIa de TCP/!P hIIp://www.ime.usp.br/~ueda/Idoc/noIasIcp.hImI
1 de 69 22-08-2013 17:S4
16. Os RCs
17. 8ibIiograIia breve
Notas
1.1 O TCP/!P
1.2 ndereos !P
1.3 PacoIes !P
1.4 O comando ping
1.S O Comando IracerouIe
1.6 RTT e banda
2.1 O ProIocoIo TCP
2.2 O comando IeIneI
2.3 TCP, mecanismo de IransporIe generico
2.4 O conceiIo de conexo
2.S As porIas TCP
2.6 A porIa TCP do cIienIe
2.7 O comando neIsIaI
2.8 Um panorama breve dos servios TCP
2.9 CIienIes TCP popuIares
2.10 Servidores TCP IargamenIe uIiIizados
3.1 O DNS
3.2 As raIzes do DNS
3.3 ProcedimenIos para regisIro de nomes
3.4 O comando nsIookup
3.S O cache do DNS
3.6 Descrio breve dos Iipos de regisIros
4.1 RoIas !P
4.2 OuIorga de !Ps e cIasses de endereos
S.1 O Icpdump
6.1 Um servidor TCP minimaI
6.2 Um cIienIe TCP minimaI
6.3 Um cIienIe/servidor UDP minimaI
6.4 AIendimenIo baseado em seIecI
6.S AIendimenIo baseado em Iork
6.6 AIendimenIo baseado em Ihreads mIIipIos
6.7 SMTP e SPAM
6.8 NoIa sobre arguivos aIachados
6.9 Servios sIandaIone e servios ineId
7.1 !P em comunicao seriaI
8.1 Observaes gerais sobre segurana em TCP/!P
8.2 iIIragem de pacoIes
8.3 AuIenIicao
8.4 TrIego de senhas in-cIear
9.1 O ProIocoIo UDP
9.2 UDP e muIIicasI
10.1 !nIerneI, inIerneIs, inIraneIs e exIraneIs
10.2 Redes Privadas
NoIas de AuIa de TCP/!P hIIp://www.ime.usp.br/~ueda/Idoc/noIasIcp.hImI
2 de 69 22-08-2013 17:S4
10.3 ndereos reservados para redes Privadas
10.4 NAT - NeIwork Address TransIaIion (mascaramenIo)
10.S Proxies e HTTP
10.6 VPNs
11.1 !P impIemenIado em eIherneI: ARP
13.1 MuIIidomInio
13.2 !P AIiasing
14.1 Hardwares e SO's de uso comum na !nIerneI
14.2 Um caso simpIes de um servidor !nIerneI
1. Introduo ao IP
Lndereos IPv4
So inIeiros de 32 biIs escriIos na Iorma de guaIro ocIeIos
xaminando endereos com iIconIig, ipconIig ou winipcIg
xperimenIando o ping com argumenIo numerico
xperimenIando o ping com nomes
ConceiIo de RTT
Cabealho (Header) IP
O comparIiIhado do meio IIsico: LAN e Iinks WAN
A necessidade do uso de pacoIes peguenos
O PacoIe !P: cabeaIho e rea de dados
Os campos do cabeaIho !P
Distribuio mundial dos IPs
xperimenIando o IracerouIe
A Iuno do !P e roIear os pacoIes ao seus desIinos
Modo com gue a !nIerneI cresce e os !Ps so disIribuIdos
xempIos de redes (200, 143.107, eIc)
ConceiIo de TTL
sgoIamenIo do espao !Pv4 e o !Pv6
Notas
1.1 O TCPjIP
O TCP/!P e a coIeo de proIocoIos desenvoIvida para e uIiIizada peIa !nIerneI. O TCP/!P pode
Iambem ser uIiIizado como padro de rede por inIraesIruIruras desconecIadas da !nIerneI
mundiaI, como por exempIo uma peguena rede IocaI domesIica, a LAN de uma peguena
empresa ou ainda uma grande WAN corporaIiva.
O TCP/!P e independenIe de pIaIaIorma, e Ioi impIemenIado em inmeros Iipos diIerenIes de
compuIadores e sisIemas operacionais, desde handheIds aIe mainIrames. O TCP/!P vem se
aIirmando como o padro de IaIo de comunicao digiIaI no mundo Iodo, em deIrimenIo de
ouIros padres gue em maior ou menor grau apresenIam eguivaIencia IuncionaI com eIe.
NoIas de AuIa de TCP/!P hIIp://www.ime.usp.br/~ueda/Idoc/noIasIcp.hImI
3 de 69 22-08-2013 17:S4
NesIas noIas esIaremos nos reIerindo verso 4 do !P (!nIerneI ProIocoI), Iambem chamado
!Pv4. As exigencias da !nIerneI Ievaram ao desenvoIvimenIo de uma nova verso do !P, gue
esI sendo uIiIizado na !nIerneI 2. ssa nova verso e o !Pv6 (ou !Png). aIaremos do !Pv4
em Iodas as suas "camadas", desde os meios IIsicos mais comuns ("Iink": eIherneI, RS-232,
SL!P, PPP) aIe os proIocoIos de apIicao ("appIicaIion": HTTP, SMTP, POP, eIc), passando
Iambem peIas camadas de rede ("neIwork": !P) e de IransporIe ("IransporI": TCP e UDP).
1.2 Lndereos IP
O !Pv4 uIiIiza endereos numericos de 32 biIs gue para maior comodidade so escriIos na
Iorma de 4 ocIeIos, como por exempIo 200.231.191.10. Um endereo !Pv4 e muiIo
IreguenIemenIe chamado de Iambem de nmcro |P ou simpIesmenIe de |P. Cada ocIeIo
corresponde a 8 biIs do endereo, e pode porIanIo variar de 0 a 2SS.
O endereo permiIe gue um parIicipanIe de uma rede !P possa ser idenIiIicado peranIe os
demais, enviar ou receber dados. O endereo de um parIicipanIe pode ser manuaImenIe
consuIIado aIraves do comando iIconIig (winipcjg no Windows x, ou ipconjig no NT). Por
exempIo:
$ 1iconi1
elh0 L1nk encap.Elhernel RWaddr 00.80.48.EB.06.C0
1nel addr.192.168.0.1 Bcasl.192.168.0.255 Mask.255.255.255.0
uP BR0A0CAST RuNNTN0 MuLTTCAST MTu.1500 Melr1c.1
RX packels.0 errors.0 dropped.0 overruns.0 irame.0
TX packels.53 errors.0 dropped.0 overruns.0 carr1er.0
coll1s1ons.0 lxqueuelen.100
Tnlerrupl.11 Base address.0xii80
lo L1nk encap.Local Loopback
1nel addr.127.0.0.1 Mask.255.0.0.0
uP L00PBACK RuNNTN0 MTu.3924 Melr1c.1
RX packels.2189 errors.0 dropped.0 overruns.0 irame.0
TX packels.2189 errors.0 dropped.0 overruns.0 carr1er.0
coll1s1ons.0 lxqueuelen.0
Observe gue o endereo e um aIribuIo da inIerIace. No exempIo Iemos duas inIerIaces numa
mesma mguina, a saber, a eth0 (pIaca de rede eIherneI) com endereo 192.168.0.1, e a lo
(Ioopback, uma inIerIace gue no corresponde a um disposiIivo IIsico e gue pode servir para
a comunicao !P inIerna da mguina, isIo e, guando o cIienIe e o servidor esIo na mesma
mguina), com endereo 127.0.0.1.
No exempIo o comando iIconIig esI Iambem inIormando o Iamanho mximo de pacoIes
conIigurado para cada inIerIace (MTU, ou Maximum TransIer UniI), o endereo de broadcasI
e a mscara. Para o conceiIo de mscara, ve|a as noIas sobre roIeamenIo !P. O conceiIo de
endereo de broadcasI Ioi criado para apIicaes gue necessiIassem aIingir Iodas as
mguinas de uma deIerminada rede. nIreIanIo, ao nIveI do TCP/!P, apIicaes desse Iipo
so inexisIenIes (ou guase). imporIanIe no conIundir broadcasI !P com ouIros broadcasIs,
aIguns deIes muiIo usados, como por exempIo agueIe impIemenIado peIo ARP ou por
servios de resoIuo de nomes do neIbios. sses ouIros broadcasIs no Iem guaIguer
reIao com o endereo de broadcasI indicado acima.
Uma inIerIace passa a Ier um endereo !P a parIir do momenIo em gue aIguem aIribui um
endereo !P a eIa. !sso via de regra e reaIizado peIos procedimenIos de booI da mguina, gue
consuIIam os arguivos de conIigurao do sisIema ou soIiciIam um endereo a aIgum
servidor especiaIizado da rede IocaI. m conexes PPP discadas, o endereo e obIido como
NoIas de AuIa de TCP/!P hIIp://www.ime.usp.br/~ueda/Idoc/noIasIcp.hImI
4 de 69 22-08-2013 17:S4
IruIo da negociao com o servidor do provedor de acesso.
O comando iIconIig permiIe aIribuir manuaImenIe um endereo a uma dada inIerIace (no
windows c ctrihuio do cndcrco intcrjccc dcvc scr jcitc ncs propricdcdcs do TCP/|P
cssocicdc quclc intcrjccc). No dois exempIos gue seguem aIribuImos o endereo 192.168.0.2
inIerIace eIh0, sendo gue no segundo caso expIiciIamos guaI e a mscara. uando a
mscara e omiIida, eIa e deduzida da cIasse do endereo da rede (ve|a a noIa Dutorgc dc |Ps
c clcsscs dc cndcrcos).
# 1iconi1 elh0 192.168.0.2
# 1iconi1 elh0 192.168.0.2 nelmask 255.255.255.0
O endereo !P gue se aIribui a uma inIerIace no pode ser escoIhido ao acaso. m virIude do
modo com gue o !P e roIeado, s se podem uIiIizar endereos !P com o mesmo endereo de
rede da rede IocaI guaI o compuIador esIiver IisicamenIe conecIado. AIem disso, o mesmo
endereo no pode esIar sendo uIiIizado ao mesmo Iempo em duas inIerIaces, cada uma
numa mguina diIerenIe.
AIem do endereo !P, a inIerIace normaImenIe necessiIar de roIas associadas a eIa para
poder operar, por isso o comando iIconIig acima em geraI seria seguido de um ou mais
comandos de criao de roIas, como os exempIos gue seguem abaixo, e gue sero meIhor
compreendidos em con|unIo com as noIas sobre roIas !P.
# roule add -nel 192.168.0.0 nelmask 255.255.255.0 elh0
# roule add deiaull W 192.168.0.1
1.3 Pacotes IP
A comunicao numa rede !P e reaIizada aIraves do envio e recebimenIo de pacoIes. Um
pacoIe e uma seguencia de byIes, dos guais os 20 primeiros compe o cabeaIho (header) !P.
No !Pv4 o Iamanho mximo de um pacoIe e 6SS3S byIes, mas em geraI eIes so bem menores
(um vaIor IIpico e 1S00).
version
(4)
header
IengIh
(4)
TOS (8) IoIaI IengIh (16)
idenIiIicaIion (16) IIags (3) IragmenI oIIseI (13)
TTL (8) proIocoI (8) header checksum (16)
source address (32)
desIinaIion address (32)
opIions (iI any)
O cabealho IP
Um mesmo e nico meio IIsico (por exempIo o cabo seriaI gue Iiga o seu handheId ao
deskIop, ou um cabo coaxiaI inIerIigando as pIacas de rede de 1S mguinas de uma rede
IocaI de um pegueno escriIrio, ou aIIernaIivamenIe os cabos "par Iranado" e o hub
inIerIigando essas mesmas pIacas) pode ser comparIiIhado por vrios parIicipanIes de uma
NoIas de AuIa de TCP/!P hIIp://www.ime.usp.br/~ueda/Idoc/noIasIcp.hImI
S de 69 22-08-2013 17:S4
rede !P porgue cada um, ao reaIizar a Iransmisso de um pacoIe, aIoca esse meio IIsico com
excIusividade por apenas aIguns insIanIes (por exempIo aIguns miIissegundos), Iiberando-o
em seguida para poder ser usado por ouIros parIicipanIes.
A IIIuIo de iIusIrao, ve|amos um exempIo reaI de um cabeaIho !P, obIido aIraves do
programa tcpdump. A cada dIgiIo hexadecimaI correspondem 4 biIs. Assim, o primeiro
dIgiIo 4 indica gue os primeiros 4 biIs do cabeaIho (campo Version) so 0100, o dIgiIo S
seguinIe indica gue o 4 biIs seguinIes (campo Header length) so 0101, e assim por dianIe:
# lcpdump -1 elh0 -l -n -x porl 25
lcpdump. l1slen1n on elh0
14.17.51.950111 192.168.0.9.1100 > 192.168.0.1.25. P 1043394526.1043394554{28}...
4500 0044 9481 0000 4006 64d8 c0a8 0009
c0a8 0001 044c 0019 3e30 eide 679c eea4
5018 37ii 03b9 0000 7263 7074 2074 6i3a
203c 7565 6461
O cabeaIho e porIanIo "4S00 0044 9481 0000 4006 64d8 c0a8 0009 c0a8 0001". AnaIisemos
cada um dos campos:
Version: "4", ou se|a, IraIa-se de um pacoIe ipv4.
Header length: "S", ou se|a, S paIavras de 4 byIes cada (20 byIes ao Iodo).
TOS (Type oI Service): "00". O campo TOS permiIe aos roIeadores Iomar decises sobre
o envio de cada pacoIe dependendo do esIado de 4 IIags presenIes neIe: minimizc dclcy,
mcximizc throughput, mcximizc rclizhility e minimizc monctcry cost. ssas IIags
enIreIanIo so ignoradas por muiIas impIemenIaes de TCP/!P, e porIanIo o seu uso
pode no aIIerar a guaIidade dos servios.
Total length: "0044", ou se|a, 4"164=68 byIes, dos guais os 20 primeiros so os gue
esIamos anaIisando.
Identification: "9481" e um idenIiIicador de pacoIes. TraIa-se de um conIador circuIar
dos pacoIes gerados numa mguina, e imporIanIe para o mbiIo da IragmenIao de
pacoIes.
Flags e Fragment Offset: "00", usados para a remonIagem de pacoIes IragmenIados
(divididos em vrias parIes, ao aIingir um meio IIsico om MTU menor do gue o
Iamanho do pacoIe) ao Iongo da Iransmisso.
TTL: "40", Iime Io Iive.
Protocol: "06", ou se|a, TCP.
Header checksum: "64d8", uIiIizado para veriIicar a inIegridade do cabeaIho !P.
Source address: "c0a80009", ou se|a, 192.168.0.9.
Destination address: "c0a80001", ou se|a, 192.168.0.1.
1.4 O comando ping
O comando ping envia para um endereo indicado pacoIes !CMP do Iipo CHO RUST,
gue ao serem recebidos peIo desIinaIrio so respondidos com pacoIes !CMP do Iipo CHO
RPLY:
$ p1n 200.231.191.10
PTN0 200.231.191.10 {200.231.191.10}. 56 dala byles
64 byles irom 200.231.191.10. 1cmp_seq=0 lll=64 l1me=2.0 ms
64 byles irom 200.231.191.10. 1cmp_seq=1 lll=64 l1me=0.9 ms
64 byles irom 200.231.191.10. 1cmp_seq=2 lll=64 l1me=0.9 ms
64 byles irom 200.231.191.10. 1cmp_seq=3 lll=64 l1me=0.8 ms
64 byles irom 200.231.191.10. 1cmp_seq=4 lll=64 l1me=0.9 ms
NoIas de AuIa de TCP/!P hIIp://www.ime.usp.br/~ueda/Idoc/noIasIcp.hImI
6 de 69 22-08-2013 17:S4
O ping e a primeira IerramenIa a ser uIiIizada para se consIaIar a exisIencia ou no de
conecIividade IIsica com uma ouIra mguina. Por exempIo: ao no conseguirmos consuIIar
no browser as pginas de um siIe deIerminado (vamos supor, hIIp://www.ieII.org), uma
primeira providencia poderia ser "pingar" o respecIivo servidor:
$ p1n WWW.1eli.or
NoIe gue no indicamos ao ping um endereo !P numerico, mas sim um nome. Como
veremos nas noIas reIerenIes a DNS, nesIe caso o ping reaIiza previamenIe a consuIIa do
regisIro "A" associado ao nome.
1.5 O Comando traceroute
Na !nIerneI, guando enviamos um pacoIe a um servidor IongInguo, esse pacoIe percorrer
uma seguencia de gaIeways anIes de aIingir o seu desIino. Cada gaIeway e um parIicipanIe
da !nIerneI, e suas inIerIaces possuem endereos !P a eIas aIribuIdos. Podemos IisIar a
seguencia de gaIeways gue inIermediam a nossa comunicao (envio de pacoIes) a uma
dada mguina aIraves do comando IracerouIe (no windows o comcndo trcccroutc tcvc o scu
nomc cltcrcdo pcrc trcccrt):
# lraceroule WWW.kernel.or
lraceroule lo zeus.kernel.or {209.10.41.242}, 30 hops max, 40 byle packels
1 c1sco1.1bp1nelsp.com.br {200.231.191.1} 160.938 ms
2 1bp1nelsp-S9-1-0-2-d1sl01.spomb.embralel.nel.br {200.228.255.153} 338.660 ms
3 ebl-A1-2-1-d1sl05.spo.embralel.nel.br {200.246.244.230} 398.733 ms
4 ebl-P10-0-core03.spo.embralel.nel.br {200.230.0.138} 398.722 ms
5 ebl-P12-0-0-1nll02.spo.embralel.nel.br {200.230.0.101} 298.678 ms
6 Rss19-1-0.SR1.BLM1.ALTER.NET {157.130.22.89} 1218.773 ms
7 502.ATM2-0.XR2.EWR1.ALTER.NET {152.63.22.22} 1248.486 ms
8 192.al-1-1-0.TR2.NYC8.ALTER.NET {152.63.20.238} 1179.730 ms
9 124.al-6-0-0.TR2.SAC1.ALTER.NET {152.63.6.14} 1259.654 ms
10 296.ATM7-0.XR2.SJC1.ALTER.NET {152.63.51.53} 1339.775 ms
11 192.ATM5-0.0W9.SJC2.ALTER.NET {152.63.52.237} 1369.743 ms
12 lob1x-oc3.cuslomer.aller.nel {157.130.204.190} 1239.730 ms
13 pos1-2-core2.sc1.lob1x.nel {209.10.12.53} 1229.761 ms
14 pos5-0-0-ar1.sc1.lob1x.nel {209.10.3.30} 1119.753 ms
15 zeus.kernel.or {209.10.41.242} 1179.713 ms
Assim, os pacoIes iniciaImenIe aIingiram o 200.231.191.1. sIe, por no ser o desIino IinaI,
repassou-os para o 200.228.2SS.1S3, esIe para o 200.246.244.230 e assim por dianIe. sse
repasse e em geraI denominado jorwcrd.
A Iecnica uIiIizada peIo IracerouIe baseia-se em Iazer variar o TTL dos pacoIes. No cabeaIho
!P h um campo TTL (Time To Live). Toda vez gue um pacoIe aIravessa um gaIeway
inIermedirio, o seu TTL e decremenIado de uma unidade. Se nessa operao o TTL zerar,
enIo o pacoIe e descarIado e agueIe gaIeway gera um pacoIe desIinado ao originador do
pacoIe descarIado noIiIicando o ocorrido. Nesse pacoIe noIiIicador consIa no campo do !P do
remeIenIe o !P do gaIeway onde o descarIe ocorreu. Assim, o procedimenIo do IracerouIe
consisIe em gerar pacoIes com o TTLs 1, 2, 3, e assim por dianIe, gue provocaro o
recebimenIo de noIiIicaes de descarIe do primeiro, segundo, Ierceiro gaIeways, e assim
por dianIe, aIe ser aIingido o desIino indicado como argumenIo do IracerouIe.
O IracerouIe permiIe descobrir a IopoIogia de uma rede disIanIe. Como isso pode ser uma
inIormao imporIanIe para reaIizar aIagues, muiIos adminisIradores de redes eviIam gue
esses pacoIes de noIiIicao se|am gerados ou saiam da inIraesIruIura IocaI para a !nIerneI.
Se IenIarmos rodar o IracerouIe indicando como argumenIo uma mguina de uma
NoIas de AuIa de TCP/!P hIIp://www.ime.usp.br/~ueda/Idoc/noIasIcp.hImI
7 de 69 22-08-2013 17:S4
inIraesIruIura gue siga esse criIerio adminisIraIivo (e gue e recomendveI do ponIo de visIa
de segurana), conseguiremos Iraar apenas um Irecho iniciaI da roIa.
1.6 RTT e banda
Os Iempos apresenIados peIo ping e peIo IracerouIe so chamados RTT (round Irip Iime).
sses Iempos esIo associados banda dos Iinks de comunicao, e em aIguns casos e
possIveI inIerir a capacidade de um Iink a parIir do RTT. ssa inIerencia e reaIizada peIo
comando bing. Ie no cosIuma esIar presenIe naIivamenIe na maior parIe dos sisIemas
operacionais, mas pode ser obIido na !nIerneI. NoIe gue se subIrairmos os RTTs de dois
gaIeways ad|acenIes mas disIanIes vrios "hops" de ns obIeremos o RTT do Iink aIraves do
guaI esIo conecIados. Dessa maneira, o bing e capaz de inIerir a capacidade de um Iink do
guaI esIamos separados por vrios gaIeways. O bing pode ser enconIrado em
hIIp://web.cnam.Ir/reseau/bing.hImI.
Questes
1.1 Suponha gue voce esIe|a em casa conecIado ao seu provedor de acesso, e no esIe|a
conseguindo Ier no browser uma pgina web. uais IesIes voce reaIizaria para IenIar
diagnosIicar uma ausencia de conecIividade IIsica enIre voce e o servidor remoIo?
1.2 ue IesIe voce reaIizaria na sua casa no seu micro domesIico para IenIar conIirmar guaI
e a capacidade do Iink gue o seu provedor de acesso diz Ier com a mbraIeI?
1.3 RecenIemenIe Ioi anunciado o IanamenIo do primeiro hoIeI Iunar para o ano 2008.
uais aIIeraes num primeiro momenIo voce sugeriria ao nIveI do mecanismo de
reIransmisso e de |aneIas do TCP a Iim de viabiIizar o acesso !nIerneI para os hspedes
(sugesIo: a parIir da veIocidade da Iuz, caIcuIe o Iempo necessrio para a Terra enviar o ack
de um pacoIe enviado peIa Lua). AvaIie se o mesmo probIema ocorre com saIeIiIes
geoesIacionrios ou com saIeIiIes de baixa aIIiIude, como os previsIos peIo pro|eIo Cuerra
nas sIreIas.
1.4 Como voce Iaria para descobrir guaI e o TTL (Iime Io Iive) dos pacoIes gerados peIo seu
compuIador e enviados para a !nIerneI? (sugesIo: chegue a documenIao do Icpdump).
2. Introduo ao TCP
Canal TCP
DiIicuIdades: reordenao, reconsIruo, reenvio
O conceiIo de canaI virIuaI
A camada (Iayer) TCP impIemenIa canais virIuais
O IeIneI como cIienIe TCP generico
xempIo de SMTP via IeIneI
xempIo de HTTP via IeIneI
Os campos do cabeaIho TCP
Seguence numbers e |aneIas
PorIas e servios
NoIas de AuIa de TCP/!P hIIp://www.ime.usp.br/~ueda/Idoc/noIasIcp.hImI
8 de 69 22-08-2013 17:S4
Aplicaes TCP populares
udora, OuIIook (cIienIe); sendmaiI (servidor) NeIscape (cIienIe); apache (servidor) IIp
(cIienIe); IIpd (servidor) X cIienIs e X server
Notas
2.1 O Protocolo TCP
Na sua grande maioria, os servios uIiIizados na !nIerneI baseiam-se num proIocoIo de
IransporIe consIruIdo sobre o !P, gue se chama TCP (TransIer ConIroI ProIocoI).
Suponha gue usemos o NeIscape (por exempIo) para visiIar o URL
hIIp://aIIavisIa.digiIaI.com. O NeIscape receber enIo do AIIavisIa uma pgina HTML, ou
se|a, um IexIo (seguencia de caracIeres) evenIuaImenIe iniciado assim:
<hlml><head><base hrei="hllp.11ump.allav1sla.com1" larel="_lop">
<mela hllp-equ1v=Reiresh conlenl=300>
<l1lle> Allav1sla - Search<1l1lle>
<META name="descr1pl1on"
conlenl="Allav1sla.com prov1des lhe mosl comprehens1ve search
exper1ence on lhe Web.">
<META name="keyWords" conlenl="search, searches, ...
...
ssa pgina Ier IipicamenIe vrios kiIobyIes e a sua IranIerencia do AIIavisIa para o
NeIscape ser IeiIa aIraves do envio de vrios pacoIes, cada um carregando uma parIe
(scgmcnto) da pgina. Assim, no servidor e necessrio "picoIar" a pgina, e, no cIienIe,
reordenar os segmenIos no IexIo originaI. Todo esse IrabaIho e IeiIo peIo TCP.
Cada pacoIe carrega nesIe caso as inIormaes necessrias remonIagem. Ias esIo
presenIes no cabeaIho TCP, gue Iem 20 byIes e segue imediaIamenIe o cabeaIho !P.
source porI (16) desIinaIion porI (16)
seguence number (32)
acknowIedgmenI number (32)
header
IengIh
(4)
reserved (6) IIags (6) window size (16)
TCP checksum (16) urgenI poinIer (16)
opIions (iI any)
O cabealho TCP
VoIIemos ao exempIo dado acima ao anaIisarmos o cabeaIho !P, e compIeIemos a exposio
anaIisando agora o cabeaIho TCP:
# lcpdump -1 elh0 -l -n -x porl 25
lcpdump. l1slen1n on elh0
14.17.51.950111 192.168.0.9.1100 > 192.168.0.1.25. P 1043394526.1043394554{28}...
4500 0044 9481 0000 4006 64d8 c0a8 0009
c0a8 0001 044c 0019 3e30 eide 679c eea4
NoIas de AuIa de TCP/!P hIIp://www.ime.usp.br/~ueda/Idoc/noIasIcp.hImI
9 de 69 22-08-2013 17:S4
5018 37ii 03b9 0000 7263 7074 2074 6i3a
203c 7565 6461
O cabeaIho TCP e "044c 0019 3e30 eIde 679c eea4 S018 37II 03b9 0000". AnaIisemos cada um
dos campos:
Source port: "044c", ou se|a, 1100. imporIanIe observar gue o vaIor da porIa de
origem e maior do gue 1024. sse e o caso IIpico de porIa "de cIienIe", ou "no
priviIegiada".
Destination port: "0019", ou se|a, 2S, gue e a porIa associada ao servio SMTP e e a gue
Ioi indicada ao Icpdump.
Seguence number: "3e30 eIde". A posio reIaIiva, denIro do strccm de byIes em envio
peIa seguencia de pacoIes TCP dessa conexo, do primeiro byIe de dados desse pacoIe.
Acknowledgement number: "679c eea4". O prximo seguence number gue o
compuIador gue originou esse pacoIe espera receber do ouIro compuIador.
Header length: "S", ou se|a, S paIavras de 4 byIes, ou 20 byIes ao Iodo.
Flags: "18" (na verdade, apenas os seis biIs menos signiIicaIivos do 18, ou se|a, 011000).
So, nessa ordem, as IIags URG (urgenI poinIer is vaIid), ACK (vaIid acknowIedgemenI
number), PUSH (repasse os dados para a apIicao o mais rpido possIveI), RST (reseI),
SYN (synchronize, ou sincronizao dos seguence numbers, aIiva no primeiro pacoIe
da conexo) e FIN (Iinish). No nosso caso, esIo aIivas as IIags ACK e PUSH. NoIe gue a
saIda do Icpdump esI acusando aIraves da IeIra P o IaIo da IIag PUSH esIar aIiva (a
IIag PUSH na verdade e ignorada por muiIas impIemenIaes de TCP/!P).
Window size: "37II", ou se|a, 14207. A guanIidade de byIes, iniciando no
acknowIedgmenI number, gue o compuIador gue gerou esse pacoIe admiIe receber
para esIa conexo. TraIa-se de um mecanismo de conIroIe de IIuxo, para reguIar a
veIocidade de envio a Iim de eviIar coIapsos.
TCP checksum: "03b9", uIiIizado para veriIicar a inIegridade do cabeaIho TCP e dos
dados.
Urgent pointer: "0000". uando a IIag URC esI aIiva, esIe campo inIorma guanIos
byIes de dados "urgenIes" h a parIir do seguence number inIormado nesIe pacoIe.
2.2 O comando telnet
O comando IeIneI esIabeIece uma conexo TCP com um servidor dado numa porIa dada. Ie
pode ser visIo como um cIienIe TCP generico, aIraves do guaI e possIveI esIabeIecer um
"diIogo" (envio e recebimenIo de byIes no IormaIo do proIocoIo de apIicao por eIe
impIemenIado, como HTTP ou SMTP) com um servidor TCP.
MuiIos proIocoIos TCP assemeIham-se ao "diIogo" gue se esIabeIece enIre um operador e
uma inIerIace de Iinha de comandos como os sheIIs do Unix. !sso permiIe gue os servios
gue impIemenIam esses proIocoIos possam ser IesIados manuaImenIe aIraves de um cIienIe
como o IeIneI. Ve|amos como uIiIiz-Io IeIneI para Iazer o downIoad de uma pgina web da
mesma Iorma gue o NeIscape Iaria:
$ lelnel allav1sla.d11lal.com 80
Try1n 204.152.190.65...
Connecled lo allav1sla.d11lal.com.
Escape characler 1s `^]`.
0ET 1 1.0
NoIas de AuIa de TCP/!P hIIp://www.ime.usp.br/~ueda/Idoc/noIasIcp.hImI
10 de 69 22-08-2013 17:S4
<hlml><head><l1lle>Allav1sla - Search<1l1lle> ...
...
O AIIavisIa responde ao nosso comando GLT (repare gue e necessrio pressionar NTR
duas vezes ao Ierminar a Iinha GLT j 1.0) enviando a pgina HTML deIauII do servidor. O
caracIere "/" corresponde ao paIh ("caminho") da raiz do servidor. NormaImenIe os URLs
conIem um paIh expIIciIo, por exempIo hIIp://www.inIernic.neI/regisI.hImI. NesIe caso, o
comando GLT, gue e deIinido peIo proIocoIo HTTP, Ieria gue indicar o paIh /regisI.hImI:
$ lelnel WWW.1nlern1c.nel 80
Try1n ...
Connecled lo WWW.1nlern1c.nel.
Escape characler 1s `^]`.
0ET 1re1sl.hlml 1.0
<hlml>
<head>
<mela hllp-equ1v="Conlenl-Type" conlenl="lexl1hlml, ...
...
medida em gue o servidor remoIo envia o IexIo HTML aos pedaos (cada um num pacoIe),
o Iayer de TCP/!P IocaI vai reordenando-os e enIregando a seguencia de byIes assim obIida
apIicao gue soIiciIou a conexo, e gue no nosso caso e o IeIneI. O IeIneI exibe enIo na sua
saIda aguiIo gue recebeu, e vemos o IexIo HTML roIar nossa IrenIe, compIeIo e InIegro da
pgina. No Linux, o Iayer de TCP/!P esI presenIe no kerneI do sisIema operacionaI. No
windows eIe compe uma DLL separada, a winsock (ou wsock32).
2.3 TCP, mecanismo de transporte genrico
Uma vez gue o TCP cria um mecanismo de envio e recebimenIo de seguencias de byIes
(chamadas strccms), eIe pode ser uIiIizado por guaisguer servios gue se possam
impIemenIar dessa maneira: envio e recebimenIo de emaiIs, comparIiIhamenIo de discos e
impressoras, IransIerencia de arguivos, baIe-papo ("chaI"), acesso a bancos de dados SL,
eIc. De IaIo, sobre o mecanismo bsico oIerecido peIo TCP, Ioram sendo deIinidos inmeros
proIocoIos de apIicao para a impIanIao desses servios e ouIros ainda.
A Iim de iIusIrar isso, ve|amos como o TCP e uIiIizado para envio (deIiver) de emaiIs de
Iorma anIoga gueIa usada para o downIoad de uma pgina web. Nesse caso esIaremos
uIiIizando o IeIneI para criar uma conexo TCP e, esIa, para reaIizar uma Iransao SMTP:
$ lelnel 200.231.191.10 25
Try1n 200.231.191.10...
Connecled lo 200.231.191.10.
Escape characler 1s `^]`.
220 ma1lhosl.1bp1nelsp.com.br ESMTP Sendma1l 8.9.3...
REL0 bah1a@1bp1nelsp.com.br
250 bah1a@1bp1nelsp.com.br, pleased lo meel you
ma1l irom. <ueda@1bp1nel.nel>
250 <ueda@1bp1nel.nel>... Sender ok
rcpl lo. <imar1nho@1bp1nel.nel>
250 <imar1nho@1bp1nel.nel>... Rec1p1enl ok
NoIas de AuIa de TCP/!P hIIp://www.ime.usp.br/~ueda/Idoc/noIasIcp.hImI
11 de 69 22-08-2013 17:S4
dala
354 Enler ma1l, end W1lh "." on a l1ne by 1lseli
Subecl. lesle, por iavor 1nore
Tesle, por iavor 1nore.
.
250 RAA00951 Messae accepled ior del1very
qu1l
As Iinhas enviadas peIo servidor iniciam-se com aIgum nmero (220, 2S0, eIc), gue Iunciona
como diagnsIico para o cIienIe anaIisar se o comando Ioi bem-sucedido ou no. Truncamos
aIgumas das Iinhas ao Iranscreve-Ias para simpIiIicar a sua IeiIura. A Iransao acima e
idenIica gueIa gue e reaIizada por guaIguer cIienIe SMTP (udora, OuIIook, eIc), exceIo
IaIvez por no Iermos incIuIdo um cabeaIho compIeIo para o emaiI. De IaIo, aIguns
servidores SMTP recusariam esIe emaiI em virIude da ausencia do cabeaIho. O "cabeaIho"
no caso e o do emaiI, e no o dos pacoIes. Um IaI cabeaIho poderia ser (as Iinhas gue
Ierminam com ... Ioram Iruncadas):
Irom domre@mls2.1nlern1c.nel Sal Jun 24 00.59.37 2000
Relurn-Palh.
Rece1ved. irom localhosl by hal.home.unel {8.9.311.34}
1d AAA00887, Sal, 24 Jun 2000 00.59.36 0MT
0el1vered-To. uE0A@TME.uSP.BR
Rece1ved. irom 143.107.45.12
by localhosl W1lh P0P3 {ielchma1l-5.0.0}
ior ueda@home.unel {s1nle-drop}, Ir1, 23 Jun 2000 ...
Rece1ved. {qma1l 28680 1nvoked irom nelWork}, 23 Jun 2000 ...
Rece1ved. irom mls2.1nlern1c.nel {198.41.1.234}
by b1du.1me.usp.br W1lh SMTP, 23 Jun 2000 04.10.08 -0000
Rece1ved. {irom domre@localhosl}
by mls2.1nlern1c.nel {8.9.318.9.1} 1d AAA17405,
Ir1, 23 Jun 2000 00.09.40 -0400 {E0T}
Irom. 0oma1n Re1slral1on Role Accounl
Messae-Td. <200006230409.AAA17405@mls2.1nlern1c.nel>
Subecl. Re. ...
0ale. Ir1, 23 Jun 2000 00.09.40 -0400 {E0T}
Reply-To. hoslmasler@1nlern1c.nel
To. uE0A@TME.uSP.BR
X-Ma1ler. iaslma1l |vers1on 2.4 PL24]
Slalus. 0
X-Slalus.
X-KeyWords.
X-uT0. 1494
NoIe gue as Iinhas "Received:" regisIram a roIa (no a roIa !P, mas a roIa dos servidores
SMTP) gue o emaiI seguiu desde a sua criao. No caso, eIe Ioi iniciaImenIe recebido peIo
mIs2.inIernic.neI a parIir de um cIienIe da prpria mguina. m seguida o mIs2 IransIeriu-o
ao compuIador bidu.ime.usp.br (porgue eIe e o servidor MX do domInio ime.usp.br, ve|a as
noIas sobre DNS). m seguida eIe Ioi baixado via POP peIo IeIchmaiI e IransIerido para uma
caixa posIaI.
2.4 O conceito de conexo
TanIo no exempIo do downIoad de uma pgina web aIraves do cIienIe IeIneI guanIo no
exempIo do envio de um emaiI, criamos aguiIo gue se chama de concxo TCP, ou Iambem
ccncl virtucl TCP, ou circuito virtucl TCP.
A conexo TCP pode ser visIa como sendo anIoga a um pipe enIre dois processos
conecIando a saIda do primeiro enIrada do segundo. Pipes desse Iipo so IamiIiares s
NoIas de AuIa de TCP/!P hIIp://www.ime.usp.br/~ueda/Idoc/noIasIcp.hImI
12 de 69 22-08-2013 17:S4
pessoas gue | uIiIizaram aIgum sheII Unix ou o COMMAND.COM do MS-DOS. Seguem dois
exempIos, o primeiro para um sheII Unix, e o segundo para o MS-DOS:
$ ps ax ] rep nelscape
C.\> TYPE AuT0EXEC.BAT ] M0RE
A conexo TCP gue criamos para envio de um emaiI Iiga por assim dizer a "saIda" do IeIneI
com a "enIrada" do sendmaiI (gue e um programa gue esI rodando no servidor smIp
200.231.191.10). Ia conecIa Iambem a "saIda" do sendmaiI "enIrada" do IeIneI. Dessa
Iorma, uma diIerena da conexo TCP com os pipes acima e o IaIo deIa ser bidirecionaI.
A conexo TCP cria para as apIicaes nas duas ponIas a iIuso de gue exisIe um meio IIsico
excIusivo para o diIogo enIre eIas, um "canaI" ou "circuiIo" excIusivo. sse canaI ou circuiIo,
como vimos anIeriormenIe, e na verdade simuIado aIraves de pacoIes gue comparIiIham o
meio IIsico com ouIras mguinas e ouIras apIicaes, e e por esIe moIivo gue a conexo TCP
e chamada de canaI ou circuiIo virtucl.
NoIe gue naguiIo gue eIa possui de concreIo, a "conexo" TCP reduz-se s esIruIuras de
dados gue so manIidas em cada uma das ponIas, e gue servem para o Iayer TCP de cada
mguina gerar e enviar os pacoIes a parIir dos dados gue a apIicao repassa a eIa, e a
reconsIruir a seguencia de byIes enviadas peIa ouIra ponIa e a parIir do conIedo dos
pacoIes gue vo sendo recebidos. Assim, se, por exempIo, um gaIeway inIermedirio enIre o
cIienIe e o servidor Ior desIigado e Iigado novamenIe em seguida, nenhum pre|uIzo ocorrer
para a conexo exceIo IaIvez um aIraso no envio de pacoIes, pois agueIe gaIeway
inIermedirio no armazenava nenhuma inIormao de esIado sobre a conexo.
2.5 As portas TCP
No exempIo em gue Iizemos o downIoad de uma pgina aIraves do cIienIe IeIneI, indicamos
a eIe o nmero 80 como parmeIro. No exempIo do envio de emaiI, indicamos 2S ao inves de
80. sses nmeros so chamados de "porIas", e nesses casos (80 e 2S) IraIam-se das porIas
deIauII em gue os servios HTTP e SMTP aIendem.
Um mesmo compuIador numa rede !P pode aIender simuIIneamenIe vrios servios
diIerenIes (por exempIo pode ser ao mesmo Iempo servidor HTTP e SMTP). uando um
pacoIe de um cIienIe aIinge-o soIiciIando uma conexo, e necessrio gue esse pacoIe
carregue a inIormao de a guaI servio conecIar. !sso esI especiIicado no campo
dcstinction port do cabeaIho !P. sse campo possui 16 biIs.
Assim, o Iermo "porIa" nesse conIexIo no reIere um disposiIivo IIsico como uma porIa
seriaI, mas um nmero presenIe no header TCP, e gue orienIa o Iayer de TCP/!P a respeiIo da
apIicao guaI agueIe pacoIe se desIina.
MuiIos dos nmeros de porIas esIo | associados a servios. AIem dos dois visIos Iemos por
exempIo o POP3 (110), TLNT (23), NNTP (119), e vrias ouIras dezenas. ssa associao e
imporIanIe porgue o cIienIe ao gerar os pacoIes necessiIa saber de anIemo guaI e a porIa
em gue o servio aIende. No obsIanIe, em muiIas impIemenIaes de cIienIes e servidores
TCP e possIveI aIIerar a porIa deIauII. Nesse caso, enIreIanIo, o cIienIe conIinua necessiIando
saber de anIemo a porIa em gue o servidor aIende agueIe servio.
NoIas de AuIa de TCP/!P hIIp://www.ime.usp.br/~ueda/Idoc/noIasIcp.hImI
13 de 69 22-08-2013 17:S4
2.6 A porta TCP do cliente
Uma inspeo no IormaIo do cabeaIho TCP nos mosIra gue aIem do nmero da porIa do
desIinaIrio gue, como vimos, no servidor esI associado ao servio, exisIe Iambem um
campo de nmero da porIa do remeIenIe do pacoIe. Assim, guando um cIienIe Ioma a
iniciaIiva de abrir uma conexo TCP com, digamos, um servidor web, eIe Ier gue suprir
nesse campo um nmero de porIa IocaI. Para gue servir eIe?
Um mesmo compuIador pode esIar sendo, ao mesmo Iempo, cIienIe de vrios servidores
TCP. Assim, os pacoIes de reIorno precisam carregar inIormao suIicienIe para idenIiIicar
em cada caso a guaI conexo os dados gue eIe carrega se reIerem. !sso s e possIveI se
houver Iambem uma porIa aIocada no cIienIe, porgue no caso de um mesmo cIienIe criar
duas conexes diIerenIes num mesmo servio de um mesmo servidor (por exempIo duas
insIncias do NeIscape, cada uma carregando uma pgina diIerenIe do Yahoo) nem os !Ps e
nem a porIa do servidor (80) seriam suIicienIes para disIinguir a guaI insIncia do NeIscape
se reIere cada um dos pacoIes gue chegassem.
De IaIo, anIes de um cIienIe TCP iniciar uma conexo, eIe soIiciIa ao Iayer TCP/!P aIgum
nmero de porIa TCP IocaI gue esIe|a disponIveI, e gue duranIe a exisIencia dagueIa
conexo esIar associado gueIa conexo de Iorma nica. Assim, Ioda conexo TCP e
idenIiIicada, IanIo no cIienIe guanIo no servidor por uma nica gudrupIa de parmeIros:
!P de origem, !P de desIino, porIa de origem, porIa de desIino. Para esses pedidos de porIas
dinmicas, o Iayer de de TCP/!P sempre aIoca porIas "aIIas" (acima de 1024). Os servios TCP
por sua vez uIiIizam sempre porIas "baixas" (abaixo de 1024), exceIo o Xwindows (6000) e
evenIuaImenIe ouIros servios no sIandard, como por exempIo muiIos servidores SL.
2.7 O comando netstat
O comando neIsIaI exibe uma serie de inIormaes de esIado reIaIivas ao TCP/!P. m
parIicuIar, eIe exibe as conexes TCP em curso, caracIerizando-as aIraves da gudrupIa !P de
origem, !P de desIino, porIa de origem, porIa de desIino:
$ nelslal -n -l
Acl1ve Tnlernel connecl1ons {W1o servers}
Prolo Recv- Send- Local Address Iore1n Address Slale
lcp 0 0 200.231.191.110.1023 143.107.45.19.22 ESTABLTSRE0
lcp 0 0 192.168.0.1.2345 192.168.0.1.1056 ESTABLTSRE0
lcp 0 0 192.168.0.1.1056 192.168.0.1.2345 ESTABLTSRE0
Obs. cm muitos comcndos oriundos dc plctcjormcs Unix-likc, c opo -n podc scr utilizcdc
pcrc cvitcr c rcsoluo rcvcrsc dc cndcrcos no displcy dc rcspostc.
A coIuna SIaIe exibe o esIado da conexo. Com a opo -a, o comando neIsIaI exibe Iambem
as porIas TCP Iocais gue esIo aceiIando conexes (esIado L!STN):
$ nelslal -n -l -a
NoIe gue a conexo TCP Iem sempre uma parIe passiva (agueIa onde a porIa associada ao
servio Ioi aIocada por uma apIIicao como um servidor web gue a coIocou em modo
IisIen) e uma parIe aIiva (gue aIocou uma porIa IocaI dinmica e Iomou a iniciaIiva de
conecIar na porIa remoIa coIocada em IisIen). A parIe passiva e guem oIerece o servio e,
porIanIo, o scrvidor. A parIe aIiva e guem usa o servio e, porIanIo, o clicntc. AIem dos
NoIas de AuIa de TCP/!P hIIp://www.ime.usp.br/~ueda/Idoc/noIasIcp.hImI
14 de 69 22-08-2013 17:S4
esIados LSTABLISHLD e LISTLN, vrios ouIros podem ocorrer. Os mais reIevanIes so:
SYN_SLNT enviado pedido de sincronizao (a IIag SYN), ou, em ouIras paIavras, |
Iomamos a iniciaIiva de criar a conexo enviando um primeiro pacoIe, mas eIa ainda
no Ioi esIabeIecida. A IIag SYN e a IIag !N (ciIada a seguir) so biIs especiais do
cabeaIho TCP. Um esIado SYN_SNT gue perdura em geraI indica gue a ouIra parIe
esI inacessIveI.
FIN_WAIT | Iomamos a iniciaIiva de encerrar a conexo enviando a IIag !N, agora
esIamos aguardando gue a ouIra parIe receba nosso !N e em resposIa envie para ns o
!N. NoIe gue esse esIado ocorre apenas na parIe gue Iomou a iniciaIiva de encerrar a
conexo.
TIML_WAIT recebemos o pedido de encerramenIo de conexo (!N) e respondemos
enviando de nossa parIe a IIag !N. Agora esIamos aguardando um Iempo
predeIerminado pois, se o nosso !N no chegar na ouIra parIe (isIo e, se por uma
evenIuaIidade o pacoIe gue enviamos Ior descarIado num ponIo inIermedirio), enIo
a ouIra parIe soIiciIar novamenIe nosso !N aIraves de uma reIransmisso do !N
deIa. NoIe gue esse esIado ocorre apenas na parIe gue no Iomou a iniciaIiva de
encerrar a conexo.
2.8 Um panorama breve dos servios TCP
xisIe uma grande guanIidade de proIocoIos de apIicao TCP, e ouIros novos vo sendo
criados medida em gue se vo Iornando necessrios. Ao Iongo dos anos, aIguns proIocoIos
Iirmaram-se como padres IargamenIe uIiIizados no mundo Iodo, o gue no impediu gue
aIguns deIes Iossem sendo IenIamenIe subsIiIuIdos por ouIros mais apropriados s
necessidades das pessoas e chegassem mesmo a ser abandonados. Seguem aIguns desses
proIocoIos com rpidos comenIrios:
SMTP SimpIe MaiI TransporI ProIocoI. O proIocoIo para envio de emaiIs na !nIerneI,
cu|o uso exempIiIicamos acima.
TLLNLT Vimos anIeriormenIe gue exisIe um comando IeIneI gue pode ser uIiIizado
como cIienIe TCP generico. nIreIanIo Iambem exisIe o proIocoIo IeIneI, cu|a IinaIidade
e abrir uma seo num compuIador remoIo. sse proIocoIo Ioi IargamenIe uIiIizado na
!nIerneI, mas nos IIimos anos vem sendo abandonado em deIrimenIo de ouIros gue
oIerecem cripIograIao dos dados de auIenIicao e de conexo (principaImenIe o
ssh).
FTP iIe TransIer ProIocoI, uIiIizado para downIoad ou upIoad de arguivos, com ou
sem Iraduo de charseIs. O TP Ioi um dos proIocoIos mais imporIanIes para a
massiva disIribuio de soIIwares e de inIormao gue a !nIerneI viabiIizou, sendo
uIiIizado IanIo de Iorma inIeraIiva guanIo auIomaIizada, aIraves de soIIwares de
espeIhamenIo. O surgimenIo e popuIarizao do HTTP Ianou o TP na sombra, aIem
do gue em muiIas siIuaes eIe vem sendo subsIiIuIdo por proIocoIos gue oIerecem
cripIograIao dos dados de auIenIicao e de conexo (principaImenIe o hIIps e o scp).
No obsIanIe, conIinua sendo basIanIe uIiIizado.
NoIas de AuIa de TCP/!P hIIp://www.ime.usp.br/~ueda/Idoc/noIasIcp.hImI
1S de 69 22-08-2013 17:S4
Servios "r" O Unix de 8erkeIey (8SD) criou e popuIarizou os servios "r" (rsh, rIogin,
rcp, rexec, eIc). PermiIem execuIar comandos numa mguina remoIa, abrir uma seo
numa mguina remoIa ou copiar arguivos de/para uma mguina remoIa. oram e so
imporIanIes por impIemenIarem um mecanismo de auIenIicao baseado no endereo
de origem da conexo e no em checagem de senhas, o gue e muiIo prIico para
auIomaIizao de processos envoIvendo vrias mguinas. Com essa IinaIidade
conIinua sendo uIiIizado a nIveI inIerno em corporaes ou organizaes, enIreIanIo
para uso generaIizado na !nIerneI so preIeridas ho|e aIIernaIivas gue oIerecem
cripIograIao dos dados de auIenIicao e de conexo (principaImenIe o ssh).
POP e IMAP ProIocoIos uIiIizados para downIoad de emaiIs. VasIamenIe uIiIizados na
!nIerneI, mas necessiIam ser subsIiIuIdos por ouIros gue impIemenIem ao menos a
cripIograIao dos dados de auIenIicao.
X Protocol O proIocoIo uIiIizado peIo Xwindows para dispIay das |aneIas das
apIicaes. O Xwindows (sisIema grIico muIIipIaIaIorma, mas uIiIizado
principaImenIe em mguinas Unix) e um sisIema cIienIe-servidor onde o servidor
oIerece o servio de dispIay e o cIienIe reguisiIa operaes como aIIerar a cor de um
pixeI, desenhar uma Iinha, eIc. CIienIe e servidor podem operar na mesma mguina ou
em mguinas diIerenIes (dispIay remoIo). O Xwindows e IargamenIe uIiIizado no
mundo Iodo, e a recenIe popuIarizao do Linux aumenIou signiIicaIivamenIe a sua
base insIaIada.
NNTP NeIwork News TransIer ProIocoI. O "news" e um giganIesca coIeo de grupos de
discusso, cobrindo os mais variados assunIos. ] Ioi um dos servios mais popuIares
da !nIerneI, mas a sua imporIncia diminuiu muiIo aps o advenIo do HTTP, a ponIo da
maior parIe dos usurios mais novos da !nIerneI nunca Ier ouvido IaIar deIe.
LPD ProIocoIo de impresso remoIa.
GOPHLR O gopher pode ser visIo como um predecessor do HTTP. PermiIia a criao de
servidores de inIormao com direIrios e IexIos. PossuIa mecanismos de busca de
paIavras-chave. Com o advenIo do HTTP, o uso do gopher Ioi IiIeraImenIe abandonado.
HTTP HyperIexI TransIer ProIocoI. O proIocoIo uIiIizado peIos cIienIes e servidores da
Teia MundiaI WWW. Ao Iado do SMTP, e o proIocoIo mais uIiIizado e popuIar
aIuaImenIe na !nIerneI, a ponIo da maior parIe das pessoas conIundir "!nIerneI" e a
Teia MundiaI, achando gue so a mesma coisa.
SSH Secure SheII. UIiIizado para sesses remoIas e IransIerencias de arguivo com
cripIograIao dos dados de auIenIicao e da conexo. DenIre as muiIas IerramenIas
criadas para essas IinaIidades, emergiu como um padro muiIo IorIe e possui vrias
impIemenIaes.
Obs. D protocolo SSH possui ducs vcrscs (vcrso 1 c vcrso 2). xistcm vrics
implcmcntccs indcpcndcntcs dc vcrso 1, mcs c vcrso 2 cst implcmcntcdc cpcncs
pclos cricdorcs do protocolo, c c suc liccnc dc uso c mcis rcstritc do quc c dc vcrso 1.
LDAP Um proIocoIo para criao de direIrios de inIormao disIribuIdos (por
exempIo a IisIa IeIeInica de uma corporao). Vem IenIando esIabeIecer-se como um
NoIas de AuIa de TCP/!P hIIp://www.ime.usp.br/~ueda/Idoc/noIasIcp.hImI
16 de 69 22-08-2013 17:S4
padro IorIe na !nIerneI h aIguns anos.
de se noIar Iambem gue servios muiIo popuIares e gue no Ioram originaImenIe
impIemenIados para uIiIizar o TCP como mecanismo de IransporIe acabaram migrando para
o TCP/!P. Os casos mais noIveis so os servios de comparIiIhamenIo de recursos da NoveII
e da MicrosoII.
2.9 Clientes TCP populares
Como vimos, um cIienIe TCP e um soIIware (um "programa"). Ve|amos aIguns exempIos de
cIienIes TCP de Iargo uso, de ho|e e de onIem...
Clientes TCP do BSD Uma poro considerveI (se no a guase IoIaIidade) dos cIienIes
TCP de Iinha de comandos (IeIneI, IIp, rsh, eIc) presenIes nos diversos sisIemas
Unix-Iike provem das impIemenIaes desses cIienIes IeiIas para o Unix de 8erkeIey
(8SD).
Browsers web Os browsers web so cIienIes muIIiproIocoIo. m geraI impIemenIam,
aIem do HTTP, o TP e o COPHR. AIguns impIemenIam Iambem SMTP e POP/!MAP. O
primeiro a ganhar excepcionaI popuIaridade Ioi o NCSA Mosaic. Os mais conhecidos
aIuaImenIe so o MoziIIa (NeIscape) e o ! (!nIerneI xpIorer).
Clientes SMTPjPOPjIMAP H uma vasIa guanIidade de cIienIes TCP para uso de
correio eIeIrnico: eudora, pine, muII, ouIIook, e muiIos, muiIos ouIros.
Aplicaes do Xwindows uaIguer apIicao IeiIa para Xwindows e (Iambem) um
cIienIe TCP: Iwm, Ivwm, xIerm, xcIock, xemacs, apIicaes IeiIas para o gnome ou para
o kde, eIc.
NCSA Telnet oi uma apIicao muiIo popuIar. eiIo para MS-DOS, incIui no apenas a
impIemenIao do cIienIe IeIneI, mas Iambem de Iodo o Iayer de TCP/!P (visIo gue esse
Iayer no exisIia naIivamenIe no MS-DOS). !ncIui um cIienIe TP, um servidor TP e um
cIienIe LPD.
2.10 Servidores TCP largamente utilizados
Como vimos, um servidor TCP e um soIIware (um "programa"). m sisIemas Unix-Iike, esses
programas s vezes so chamados "daemons", e por causa disso os seus nomes com cerIa
Ireguencia so o nome do proIocoIo com a IeIra "d" acrescenIada (e.g. hIIpd, IIpd, IaIkd, eIc).
Ve|amos aIguns exempIos de cIienIes TCP de Iargo uso, de ho|e e de onIem...
sendmail scriIo por ric AIIman, e o servidor SMTP mais uIiIizado do mundo
aIuaImenIe. Tem a m Iama de Ier sido um dos soIIwares mais expIorados por crackers,
gue Iiraram proveiIo das suas IaIhas de segurana para aIacar servidores na !nIerneI.
No obsIanIe, IraIa-se de um soIIware seguro e conIiveI, sedimenIado por muiIos anos
de uso e desenvoIvimenIo. Apesar de muiIos consider-Io diIicIIimo de conIigurar e um
verdadeiro dinossauro da !nIerneI, conIinua Iirme na sua Iiderana. Maiores
inIormaes podem ser obIidas em hIIp://www.sendmaiI.org.
NoIas de AuIa de TCP/!P hIIp://www.ime.usp.br/~ueda/Idoc/noIasIcp.hImI
17 de 69 22-08-2013 17:S4
Servidores do BSD MuiIos servidores TCP presenIes em sisIemas Unix-Iike (por
exempIo os dos servios "r") provem das impIemenIaes IeiIas para o Unix de
8erkeIey (8SD).
Apache o servidor HTTP mais uIiIizado do mundo. eiIo com base no NCSA hIIpd,
gue |unIamenIe com o Cern hIIp e o NCSA Mosaic, Ioi uma das aIavancas da
disseminao da Teia MundiaI WWW.
Xservers uaIguer Xserver e um servidor TCP. xisIem muiIos Xservers no mercado,
mas os mais uIiIizados provaveImenIe so os do Xree86, gue e um porIe do M!T X11
para a arguiIeIura !nIeI.
gmail Servidor SMTP escriIo por DanieI 8ernsIein, cosIuma ser considerado
excepcionaImenIe seguro e capaz de aIender uma aIIa demanda. O seu auIor oIerece
uma recompensa de US$1.000,00 para guem conseguir enconIrar uma IaIha de
segurana no soIIware. uIiIizado em aIgumas insIaIaes muiIo grandes, como o
HoImaiI, o NeI@ddress e o Yahoo. Criou um novo padro muiIo robusIo de
armazenamenIo de emaiIs em sisIemas unix-Iike, saIvando cada emaiI num arguivo
separado com um nome especiaImenIe consIruIdo. Maiores inIormaes em
hIIp://www.gmaiI.org.
IIS !nIerneI !nIormaIion Server, da MicrosoII. !mpIemenIa HTTP, TP e COPHR. O
Lxchange, Iambem da MicrosoII, impIemenIa SMTP e POP, aIem de ouIros proIocoIos.
Samba scriIo por Andrew TridgeII, impIemenIa os servios de comparIiIhamenIo de
recursos enconIrados em mguinas Windows.
wu-ftpd A universidade de WashingIon desenvoIveu e desenvoIve muiIos soIIwares de
comunicao Iivres. Um deIes e o wu-IIpd, um servidor IIp ("wu" so as iniciais de
"WashingIon UniversiIy").
Questes
2.1 LevanIe guais so os comandos do proIocoIo POP3, indicando guaI Ioi o documenIo gue
voce consuIIou (de preIerencia o RC com a verso mais recenIe do proIocoIo).
2.2 Dois web servers diIerenIes (por web server enIendemos agui um produIo de soIware
como o !!S ou o Apache) podem rodar num mesmo compuIador de Iorma simuIInea?
2.3 Porgue um mesmo compuIador pode oIerecer vrios servios TCP diIerenIes (hIIp, IIp,
pop, eIc) de Iorma simuIInea? Descubra na !nIerneI um compuIador aIendendo conexes
em mais de uma porIa.
2.4 uais so os comandos previsIos peIo HTTP e peIo TP para reiniciar o downIoad de um
arguivo | parciaImenIe baixado?
2.S Suponha gue a sua caixa posIaI no provedor conIenha um emaiI de 2S megabyIes gue
voce no consegue baixar no cIienIe de emaiI porgue a Iigao IeIeInica cai anIes da
IransIerencia se compIeIar. xpIigue como voce Iaria usando o cIienIe IeIneI para deIeIar
esse emaiI da caixa posIaI a Iim de conseguir baixar os ouIros.
NoIas de AuIa de TCP/!P hIIp://www.ime.usp.br/~ueda/Idoc/noIasIcp.hImI
18 de 69 22-08-2013 17:S4
2.6 O gue e um URL? uais proIocoIos podem ser especiIicados aIraves de um URL? guais
porIas?
2.7 xpIigue o conceiIo de |aneIa TCP. Voce sabe guaI e o Iamanho mximo de uma |aneIa na
impIemenIao de TCP/!P da pIaIaIorma gue voce usa?
2.8 MosIre como a parIir da banda hIIp e possIveI esIimar o IoIaI de hiIs e o mximo de
usurios aIivos de um sisIema de webmaiI Iree como o neIaddress.
2.9 xpIigue o gue aconIeceria se voce conIigurasse o seu cIienIe de emaiI (udora, OuIIook)
para usar o servidor smIp de um provedor diIerenIe dagueIe em gue voce esI conecIando.
2.10 xpIigue porgue e convenienIe gue o seu cIienIe de emaiI (udora, OuIIook, eIc) use o
reIay do provedor ao inves de reaIizar o deIiver do emaiI direIamenIe para o desIinaIrio
IinaI.
2.11 sIime a banda necessria para o cIienIe de um sisIema cenIraIizado de vigiIncia gue
IransIira para a cenIraI um guadro por minuIo, obIido aIraves de uma cmera convencionaI
uIiIizada em PCs.
3. DNS
DNS como tabela
Comparao com um gerenciador de banco de dados
Linhas e coIunas da IabeIa DNS
Prtica no uso do nslookup
speciIicando o servidor de nomes
ConsuIIa do regisIro NS
ConsuIIa do regisIro A
ConsuIIa do regisIro MX
O DNS uma base distribuida
TransIerencia da auIoridade de um subdomInio
A disIribuio da IabeIa por miIhares de servidores
As raIzes do DNS
Como se processa a incIuso de mais um domInio
Relao entre os protocolos TCP mais usados e o DNS
SMTP e DNS (regisIro MX)
HTTP e DNS (regisIro A)
Procedimentos para o registro de nomes
ConIigurao de um nameserver
O sisIema de regisIro de nomes da apesp
NoIas de AuIa de TCP/!P hIIp://www.ime.usp.br/~ueda/Idoc/noIasIcp.hImI
19 de 69 22-08-2013 17:S4
Os RegisIrars do !nIernic
Resoluo reversa
TesIes de resoIuo reversa usando o nsIookup
Uso do reverso para auIenIicao (obsoIeIo)
Uso do reverso para IevanIamenIo esIaIIsIico
O porgue da inverso dos ocIeIos
O cache do DNS
Como Iunciona o cache do DNS
Cache e desempenho. ComparIiIhamenIo.
O cache na mudana de hospedagem
DNS dinmico
Notas
3.1 O DNS
A idenIiIicao de cada parIicipanIe numa rede !P e o roIeamenIo de pacoIes para eIe
baseia-se como vimos nos endereos !P numericos de 32 biIs. nIreIanIo, e mais cmodo
uIiIizarmos nomes (e.g. aIIavisIa.digiIaI.com) para idenIiIicar endereos na !nIerneI do gue
nmeros, mas para isso ser possIveI e necessrio exisIir um mecanismo de Iraduo de
nomes para endereos numericos. sse mecanismo e o DNS (Domain Name SysIem).
O DNS pode ser enIendido de Iorma basIanIe simpIes como sendo uma IabeIa muiIo, muiIo
grande, mas simiIar s gue esIamos acosIumados a Iidar guando compomos uma pIaniIha ou
guando Iidamos com bases reIacionais. O IormaIo dessa IabeIa seria aIgo semeIhanIe ao gue
segue:
name NS MX A
ibm.com
ns.waIson.ibm.com,
ns.aImaden.ibm.com
ns.waIson.ibm.com
204.146.81.99,
198.133.16.99,
198.133.17.99,
204.146.80.99
IinuxIoday.com
NS1.!NTRNT.COM
NS3.!NTRNT.COM
maiI.IinuxIoday.com 63.236.72.248
www.IinuxIoday.com 63.236.72.248
overdrive.iworId.com 63.236.72.248
AIem das coIunas indicadas, h ouIras gue omiIimos para IaciIiIar a visuaIizao. A IabeIa
na sua IoIaIidade no esI IisicamenIe presenIe em nenhum compuIador do mundo, mas
sim subdividida por muiIos e muiIos miIhares de scrvidorcs dc nomcs. uando uma
enIidade, uma empresa, ou uma pessoa regisIra um domInio na !nIerneI (por exempIo
"gIobo.com", "usp.br", Iinux.org", eIc), eIa Iorna-se a "auIoridade" responsveI por Iodas os
Iinhas da IabeIa DNS derivadas desse domInio (isIo e, agueIas onde o nome reIere esse
NoIas de AuIa de TCP/!P hIIp://www.ime.usp.br/~ueda/Idoc/noIasIcp.hImI
20 de 69 22-08-2013 17:S4
domInio, como por exempIo "www.Iinux.org" no caso do domInio Iinux.org).
importcntc ohscrvcr quc o cdministrcdor dc um domnio podc dcjinir c suc prpric polticc
dc crico dc nomcs pcrc cssc domnio. hhito quc todo domnio (c.g. linuxtodcy.com)
possuc um nomc "www" cssocicdo co cndcrco do scrvidor wch (c.g. "www.linuxtodcy.com"),
mcs c cssocico do nomc "www" co scrvio HTTP c convcncioncl c no compulsric. Sc sc
dcscjcr cssocicr co nomc jtp.linuxtodcy.com um rcgistro A cpontcndo pcrc o cndcrco |P do
scrvidor wch, cnto o URL http://jtp.linuxtodcy.com podcr scr uscdo pcrc cccsscr cs pgincs
do sitc linuxtodcy. Dutros nomcs comumcntc utilizcdos (clcm do "www") so "jtp", "mcil",
"mcilhost", "ns", "smtp", "pop", ctc
Assim, vemos no exempIo acima gue a !8M esIabeIeceu na !nIerneI dois servidores de
nomes (o ns.waIson.ibm.com, ns.aImaden.ibm.com) gue so os responsveis por Iodos os
nomes Ierminados em "ibm.com". De Iorma anIoga, os servidores de nomes do domInio
IinuxIoday.com so NS1.!NTRNT.COM e NS3.!NTRNT.COM. No momenIo em gue aIguem
preenche o campo de endereo do NeIscape com o URL hIIp://www.IinuxIoday.com, um
guery Ier gue ser IeiIo a um desses dois servidores a Iim de se obIer o endereo !P
associado ao nome www.IinuxIoday.com. sse endereo e o regisIro A, gue na nossa IabeIa
esIo na coIuna A, e no caso ciIado e 63.236.72.248.
3.2 As raizes do DNS
De gue maneira aIguem Iica sabendo gue os servidores de nomes responsveis peIo domInio
ibm.com so os ciIados acima? O DNS e um sisIema hierrguico, gue redisIribui a
responsabiIidade peIos nomes, e gue parIe de uma deIerminada rciz. Todo guery de nomes
comea nessa raiz e vai descendo na hierarguia. Assim, e necessrio conhecer de anIemo
guem e a raiz ou, na verdade guem so as raIzes, pois a raiz esI espeIhada em vrios
compuIadores diIerenIes. As raIzes so indicadas no arguivo named.rooI, do guaI segue um
Irecho iniciaI:
, Th1s i1le holds lhe 1niormal1on on rool name servers needed lo
, 1n1l1al1ze cache oi Tnlernel doma1n name servers
, {e.. reierence lh1s i1le 1n lhe "cache . "
, coni1ural1on i1le oi BTN0 doma1n name servers}.
,
, Th1s i1le 1s made ava1lable by TnlerNTC re1slral1on serv1ces
, under anonymous ITP as
, i1le 1doma1n1named.rool
, on server ITP.RS.TNTERNTC.NET
, -0R- under 0opher al RS.TNTERNTC.NET
, under menu TnlerNTC Re1slral1on Serv1ces {NST}
, submenu TnlerNTC Re1slral1on Arch1ves
, i1le named.rool
,
, lasl updale. Au 22, 1997
, relaled vers1on oi rool zone. 1997082200
,
,
, iormerly NS.TNTERNTC.NET
,
. 3600000 TN NS A.R00T-SERvERS.NET.
A.R00T-SERvERS.NET. 3600000 A 198.41.0.4
,
, iormerly NS1.TST.E0u
,
. 3600000 NS B.R00T-SERvERS.NET.
B.R00T-SERvERS.NET. 3600000 A 128.9.0.107
,
Vemos neIe os endereos das raIzes do DNS (no Irecho consIam o 198.41.0.4 e o 128.0.9.107)
NoIas de AuIa de TCP/!P hIIp://www.ime.usp.br/~ueda/Idoc/noIasIcp.hImI
21 de 69 22-08-2013 17:S4
ou, mais precisamenIe, dos hints, ou se|a, das mguinas para as guais os servidores de
nomes do mundo Iodo soIiciIaro a IisIa aIuaI das raIzes do DNS Ioda vez gue Iorem
reiniciaIizados. As raIzes repassam a auIoridade dos nomes para ouIros servidores, e esses
para ouIros, e assim por dianIe. Por exempIo: as raIzes repassam a auIoridade sobre o
domInio .br para a APSP. Assim, se aIguem na !nIerneI guiser saber guaI e o regisIro A
associado ao nome www.usp.br, Ier gue obIer |unIo s raIzes guem e o responsveI peIo
.br, |unIo a esse responsveI (isIo e, os nameservers da APSP) Ier gue obIer guem e o
responsveI peIo domInio .usp.br e, IinaImenIe, |unIo a esse IIimo responsveI (isIo e, os
nameservers da USP), obIer o endereo associado ao nome www.usp.br.
NoIe gue no h nada gue priviIegie as aIuais raIzes do DNS aIem do IaIo de gue, por um
consenso hisIrico, Iodos os servidores de nomes uIiIizem exaIamenIe essas raIzes.
TecnicamenIe nada impede aIguem de criar uma raiz independepende gue deIegue a
auIoridade sobre os diIerenIes domInios (.br, .com, eIc) para compuIadores diIerenIes
dagueIes gue so aIuaImenIe os gue recebem essa deIegao. , de IaIo, Iem surgido na
!nIerneI aIgumas iniciaIivas para criar raIzes independenIes, como o "Super RooI"
(hIIp://www.superrooI.neI/).
3.3 Procedimentos para registro de nomes
A esIruIura hierrguica do DNS Iaz com gue o regisIro de um domInio (isIo e, a incIuso de
mais um domInio na IabeIa DNS gIobaI) s pode ser IeiIo |unIo enIidade responsveI peIo
domInio hierarguicamenIe acima do gue se dese|a regisIrar. O domInio .br esI sob a
responsabiIidade da APSP (undao de Amparo Pesguisa do sIado de So PauIo), e por
isso o regisIro de nomes gue Ierminem em .br como .com.br ou .org.br deve ser IeiIo |unIo a
eIa. HisIoricamenIe o regisIro de nomes Ioi sempre IeiIo aIraves do envio de IormuIrios
peIo correio eIeIrnico, mas recenIemenIe a APSP criou uma inIerIace web para o regisIro
e a manuIeno de nomes (hIIp://regisIro.br).
mpresas, enIidades e pessoas |urIdicas no 8rasiI via de regra regisIram nomes .br ou
aIIernaIivamenIe .com ou .org ou .neI. Os domInio .com, .org e .neI no esIo sob a
auIoridade da APSP, e o regisIro de domInios nesse caso deve ser IeiIo |unIo !nIernic
(hIIp://www.inIernic.neI) ou mais precisamenIe |unIo aos "regisIrars" gue eIa credenciou.
sses regisIrars oIerecem inIerIaces web aIraves das guais o domInio pode ser regisIrado.
uais so as exigencias para o regisIro de um domInio? !sso depende da enIidade
responsveI, e em geraI envoIve o pagamenIo de Iaxas. No 8rasiI, as normas para regisIro de
domInios so deIerminadas peIo ComiIe CesIor (hIIp://www.cg.org). AIem disso, Iodo
domInio precisa Ier um contcto cdministrctivo e um contcto tccnico (isIo e pessoas gue
respondam por esse domInio).
3.4 O comando nslookup
As apIicaes TCP/!P como o ping ou o IIp cosIumam Iazem gueries DNS aIraves de servios
de AP! disponibiIizados peIo sisIema operacionaI ou por bibIioIecas do sisIema. Assim, um
comando como ping altavista.digital.com envoIve uma eIapa previa, e gue corresponde ao
guery do endereo !P associado ao nome aIIavisIa.digiIaI.com. O comando nslookup por sua
vez e um cIienIe sIandaIone do DNS, gue pode ser uIiIizado para reaIizar gueries
NoIas de AuIa de TCP/!P hIIp://www.ime.usp.br/~ueda/Idoc/noIasIcp.hImI
22 de 69 22-08-2013 17:S4
manuaImenIe. A IamiIiaridade com o nsIookup e imporIanIe para as pessoas gue necessiIam
diagnosIicar probIemas de rede ou Iazer regisIro e manuIeno de domInios.
Seguem vrios exempIos de uso no modo "no-inIeraIivo" (o nsIookup possui Iambem um
modo de operao "inIeraIivo" gue oIerece maiores recursos). No primeiro exempIo
incIuImos a resposIa compIeIa do nsIookup, gue inicia-se com a idenIiIicao do nameserver
consuIIado. Nas demais, omiIimos essa idenIiIicao para despoIuir o IexIo.
ucl c o cndcrco cssocicdo co nomc www.ihm.com?
$ nslookup WWW.1bm.com
Server. hal.home.unel
Address. 192.168.0.1
Name. WWW.1bm.com
Addresses. 204.146.81.99, 198.133.16.99, 198.133.17.99, 204.146.80.99
ucl c o nomc cssocicdo co cndcrco 204.146.81.?
$ nslookup 204.146.81.99
Name. WWW.1bm.com
Address. 204.146.81.99
ucl c o ncmcscrvcr do domnio 146.204.in-cddr.crpc? (cssc c um domnio crtijicicl utilizcdo
pcrc ccdcstrcr no DNS os rcvcrsos dos |Ps inicicdos com 204.146).
$ nslookup -query=ns 146.204.1n-addr.arpa
Non-aulhor1lal1ve ansWer.
146.204.1n-addr.arpa nameserver = NS1.uS.PRSERv.NET
146.204.1n-addr.arpa nameserver = NS01.CA.uS.TBM.NET
Aulhor1lal1ve ansWers can be iound irom.
NS1.uS.PRSERv.NET 1nlernel address = 165.87.194.244
NS01.CA.uS.TBM.NET 1nlernel address = 165.87.201.244
ucl c o scrvidor MX (rcsponsvcl pclo rccchimcnto dc cmcil) do domnio ihm.com?
$ nslookup -query=mx 1bm.com
1bm.com preierence = 0, ma1l exchaner = ns.Walson.1bm.com
1bm.com nameserver = ns.Walson.1bm.com
1bm.com nameserver = ns.almaden.1bm.com
ns.Walson.1bm.com 1nlernel address = 198.81.209.2
ns.almaden.1bm.com 1nlernel address = 198.4.83.35
ucis so os scrvidorcs dc nomc do domnio .hr?
$ nslookup -query=ns br
Non-aulhor1lal1ve ansWer.
br nameserver = NS.0NS.br
br nameserver = NS-EXT.vTX.C0M
br nameserver = NS3.NTC.IR
br nameserver = NS2.0NS.br
br nameserver = NS1.0NS.br
Aulhor1lal1ve ansWers can be iound irom.
NS.0NS.br 1nlernel address = 143.108.23.2
NS-EXT.vTX.C0M 1nlernel address = 204.152.184.64
NS3.NTC.IR 1nlernel address = 192.134.0.49
NS2.0NS.br 1nlernel address = 200.19.119.99
NS1.0NS.br 1nlernel address = 200.255.253.234
ucl c o contcdo do rcgistro SDA do domnio intcrnic.nct?
NoIas de AuIa de TCP/!P hIIp://www.ime.usp.br/~ueda/Idoc/noIasIcp.hImI
23 de 69 22-08-2013 17:S4
$ nslookup -query=soa 1nlern1c.nel
1nlern1c.nel
or11n = ops.1nlern1c.nel
ma1l addr = markk.1nlern1c.nel
ser1al = 2000051000
reiresh = 3600 {1R}
relry = 3600 {1R}
exp1re = 432000 {50}
m1n1mum lll = 86400 {10}
ucl c o cndcrco cssocicdo co nomc www.intcrnic.nct?
$ nslookup -query=a WWW.1nlern1c.nel
Name. rs.1nlern1c.nel
Address. 198.41.0.6
Al1ases. WWW.1nlern1c.nel
ucl c o cndcrco cssocicdo co nomc www.ictj.org?
$ nslookup -query=a WWW.1eli.or
Name. WWW2.1eli.or
Address. 4.17.168.6
Al1ases. WWW.1eli.or
3.5 O cache do DNS
O nsIookup no Iar Iodas as eIapas do guery descriIas anIeriormenIe (guery iniciaI raiz e
passos subseguenIes descendo na hierarguia de nomes aIe aIingir o ponIo dese|ado). Ie
uIiIizar o servio de um servidor especiaIizado, gue reaIizar Iodos agueIas eIapas. Por
vezes guando se conIigura manuaImenIe os parmeIros de TCP/!P de um compuIador,
indica-se a eIe um ou mais "servidores de nomes". Por exempIo, guando se assina um
conIraIo de acesso discado !nIerneI, o provedor pode soIiciIar gue essa conIigurao se|a
IeiIa manuaImenIe (muiIas vezes eIa e reaIizada de Iorma auIomIica a cada conexo
IeIeInica). m sisIemas Unix-Iike, esse(s) servidor(es) especiaIizados consIam no arguivo
/eIc/resoIv.conI (no Windows, eIe(s) esI(o) nas propriedades do TCP/!P, Iab "DNS").
sse servidor especiaIizado cacheia na sua memria as resposIas dos gueries DNS reaIizados
peIos cIienIes (como o nsIookup, ou cIienIes TCP como soIIwares de correio eIeIrnico ou
browsers). A exisIencia desse cache e IundamenIaI para diminuir o IrIego provocado peIa
consuIIa de nomes na !nIerneI, e Iambem para aceIerar a comunicao, gue dessa Iorma no
depender, a cada momenIo em gue um guery de nomes e IeiIo, de um processo gue
acrescenIa um deIay iniciaI na comunicao.
Por ouIro Iado, isso cria uma diIicuIdade reIaIiva reconIigurao dos nameservers
responsveis peIos domInios. Suponha por exempIo gue se preIenda aIIerar o endereo
63.236.72.248 associado ao nome www.IinuxIoday.com. O adminisIrador dos nameservers
NS1.!NTRNT.COM NS3.!NTRNT.COM pode aIIerar o regisIro A associado a esse nome
nesses servidores, mas no pode aIIerar aguiIo gue esI cacheado em dezenas ou cenIenas
de servidores de nomes ao Iongo do mundo.
por esse moIivo gue se associa a cada regisIro DNS um tcmpo dc cxpirco conIigurveI.
Ie deIermina o Iempo aps o guaI um regisIro expira num cache DNS. uaIguer guery
subseguenIe gueIe regisIro provocar um novo acesso ao servidor responsveI por agueIe
regisIro (no nosso exempIo um dos servidores NS1.!NTRNT.COM NS3.!NTRNT.COM).
NoIas de AuIa de TCP/!P hIIp://www.ime.usp.br/~ueda/Idoc/noIasIcp.hImI
24 de 69 22-08-2013 17:S4
Dessa Iorma, a aIIerao das IabeIas de um servidor de nomes deve ser precedida de uma
reconIigurao dos Iempos de expirao dos respecIivos regisIros. Se o Iempo de expirao
de um regisIro Ior, digamos, uma semana, enIo uma semana anIes da aIIerao das IabeIas
o Iempo de expirao desse regisIro deve ser reconIigurado para, digamos, uma hora.
Vencido o prazo de uma semana, pode-se proceder aIIerao das IabeIas pois guaisguer
cpias desse regisIro cacheadas em servidores de nomes ao Iongo do mundo expirar nos
prximos 60 minuIos e no provocar maIIuncionamenIos por um perIodo proIongado.
Veremos mais sobre esse Iempo de expirao ao comenIarmos o regisIro SOA.
3.6 Descrio breve dos tipos de registros
Ve|amos agora de Iorma um pouco mais deIaIhada o papeI dos regisIros principais do DNS:
SOA (SIarI OI AuIhoriIy). O regisIro SOA esI associado ao domInio, e incIui
inIormaes crIIicas para o espeIhamenIo das inIormaes de DNS desse domInio, e
para a expirao dos seus regisIros nos servidores de nome ao Iongo do mundo.
NS !ndica os servidores de nomes associados ao domInio. cIaro gue as enIidades gue
regisIram domInios necessiIam IundamenIaImenIe do endereo !P dos servidores de
nomes dos domInios por eIas regisIrados, no obsIanIe eIas em geraI cadasIram IanIo
os !Ps guanIo os nomes desses servidores, e em geraI so os nomes gue vemos como
conIedo dos regisIros NS.
A !ndica o endereo associado a um nome. uando visiIamos por exempIo o URL
hIIp://www.Ireebsd.org aIraves do NeIscape, o browser (NeIscape) precisa anIes obIer o
endereo associado ao nome. No exempIo de cIienIe TCP escriIo em PRL gue vimos
anIeriormenIe, isso e reaIizado aIraves da chamada do servio gethostbyname.
MX !ndica os servidores SMTP responsveis peIo recebimenIo de emaiI do domInio em
guesIo. Vimos no exempIo iniciaI gue o MX associado ao domInio ibm.com e
ns.waIson.ibm.com. Assim, Iodo emaiI enviado a um endereo eIeIrnico da Iorma
nome@ibm.com acabar sendo enviado ao ns.waIson.ibm.com aIraves de uma
Iransao SMTP como a gue exempIiIicamos na noIa TCP, mcccnismo dc trcnsportc
gcncrico.
PTR D o reverso de um endereo !P. Os endereos !P so cadasIrados no DNS com os
seus ocIeIos inverIidos, por exempIo 10.191.231.200.in-addr.arpa, e o regisIro PTR
associado a esse nome especiaI e o nome do compuIador cu|o !P e 200.231.191.10. A
inverso dos ocIeIos deve-se ao IaIo de gue nos endereos !P, os ocIeIos Iornam-se mais
especIIicos da esguerda para a direiIa, ao passo gue nos nomes isso ocorre da direiIa
para a esguerda. A enIidade responsveI por um deIerminado neIwork (e.g.
143.107.4S.X) e responsveI peIa incIuso dos reversos desse neIwork no seu
nameserver (experimenIe por exempIo consuIIar o NS associado ao nome
4S.107.143.in-addr.arpa). No obsIanIe, nem Iodos os !Ps em uso na !nIerneI esIo com
os seus reversos cadasIrados. NoIe gue guando se usa um servio da !nIerneI (e.g envio
de um emaiI), os pacoIes gerados carregam apenas os !Ps do cIienIe e do servidor (no
cabeaIho !P, como vimos), e no os seus nomes. o DNS reverso gue permiIe a
obIeno do nome. Assim, um servidor web IevanIa esIaIIsIicas de acesso por-domInio
usando o DNS reverso. o DNS reverso Iambem gue permiIe gue na saIda de muiIos
NoIas de AuIa de TCP/!P hIIp://www.ime.usp.br/~ueda/Idoc/noIasIcp.hImI
2S de 69 22-08-2013 17:S4
comandos (e.g. IracerouIe, Icpdump) possamos ver nomes ao inves de nmeros.
Obs. D comcndo nslookup costumc scr nctivo ncs plctcjormcs Unix-likc. D Windows no trcz
nctivcmcntc ncnhum cquivclcntc co nslookup.
Questes
3.1 xpIigue o gue e o domInio in-addr.arpa.
3.2 Como voce Iaria aIraves do cIienIe nsIookup para saber se um dado domInio | Ioi ou no
regisIrado por aIguem?
3.3 Ao nIveI do DNS, o gue e necessrio para (a) criar um novo domInio na !nIerneI e (b)
Irocar a hospedagem de um domInio | exisIenIe.
3.4 Suponha gue o nome da sua empresa | Ienha sido regisIrado na !nIerneI, mas no peIa
sua empresa. Como voce procederia para enIrar em conIaIo com a pessoa (IIsica ou |urIdica)
gue Iez o regisIro e possui a auIoridade sobre eIe?
3.S xpIigue o gue aconIeceria se voce conIigurasse o seu compuIador domesIico para usar o
servidor DNS de um provedor diIerenIe dagueIe em gue voce esI conecIando.
3.6 LocaIize na !nIerneI aIgum soIIware gue permiIa a voce rodar direIamenIe no seu micro
domesIico um servidor de nomes e dessa Iorma no necessiIar dagueIe oIerecido peIo
provedor de acesso.
3.7 Como voce Iaria para descobrir em gue Iugar do mundo esI hospedado o siIe de um seu
rivaI comerciaI?
3.8 Por gue aIraves do DNS e possIveI obIer o servidor smIp associado a um dado domInio
mas no o pop?
3.9 VisiIe as pginas do ComiIe CesIor da !nIerneI 8rasiI e IevanIe o gue e necessrio peIas
regras aIuais para o regisIro de domInios .com.br e .org.br. xpIigue o gue so domInios
pessoais.
3.9 uaI e a diIerena enIre DNS primrio e secundrio? (voce pode expIicar isso do ponIo
de visIa do N!C, gue somenIe ouIorga a auIoridade sobre um domInio aps a conIigurao
do primrio e do secundrio, ou do ponIo de visIa do bind, reIaIivo conIigurao de um
servidor primrio ou de um seu espeIho, o secundrio).
3.10 uando voce especiIica um URL como hIIp://aIIavisIa.digiIaI.com ao NeIscape e
pressiona o NTR, guaI ser o Iipo de consuIIa gue eIe Ier gue Iazer ao DNS (isIo e, guaI
Iipo de regisIro associado a guaI nome)? !dem para o caso do servidor SMTP do seu provedor
guando eIe vai Iazer o deIiver de um emaiI seu para o endereo Imarinho@ibpinerI.neI.
Diga guais sero nos dois casos as mguinas enIre as guais ser criado o canaI virIuaI TCP e
guais sero as porIas uIiIizadas.
3.11 O gue e WHO!S?
NoIas de AuIa de TCP/!P hIIp://www.ime.usp.br/~ueda/Idoc/noIasIcp.hImI
26 de 69 22-08-2013 17:S4
4. O Algoritmo de roteamento IP
RoIeamenIo na LAN eIherneI: ARP
Uso do comando arp
RoIeamenIo na WAN: o gaIeway para as ouIras redes
A TabeIa de roIas e o comando rouIe
O conceiIo de mscara (neImask)
As duas noIaes para mscaras
A roIa deIauII
xempIo simpIes de 2 redes inIerIigadas
xempIo de Iigao !nIerneI de uma LAN e mscara /24
O caso de pacoIes com endereos de origem incorreIos
ConceiIo de source rouIing
ProIocoIos de anncio de roIas
ARP como arIiIIcio para o roIeamenIo (proxy-arp)
ARP spooIing e cIusIers
ConceiIo de broadcasI !P
A inIerIace Ioopback
Notas
4.1 Rotas IP
De gue maneira um pacoIe aIinge o seu desIino na !nIerneI? A !nIerneI e a Iorma com gue
cada pacoIe e encaminhado ao seu desIino podem ser comparadas ao sisIema virio de uma
cidade ou de um paIs. m cada ponIo onde houver biIurcaes, sinaIiza-se guaI saIda deve
ser escoIhida a parIir do desIino gue se preIende aIingir: !birapuera esguerda, SanIos
direiIa, PonIe da reguesia do O em IrenIe, eIc.
De Iorma anIoga, cada parIicipanIe de uma rede !P possui uma IabeIa inIormando guaI
inIerIace deve ser uIiIizada para o envio do pacoIe, dependendo do seu desIino. No
Windows, podemos exibi-Ia com o comando ROUT PR!NT. Nas pIaIaIormas Unix-Iike, o
comando poder ser netstat -r ou route.
$ roule -n
roule -n
Kernel TP roul1n lable
0esl1nal1on 0aleWay 0enmask Ilas Melr1c Rei use Tiace
200.231.191.1 0.0.0.0 255.255.255.255 uR 0 0 0 ppp0
192.168.0.1 0.0.0.0 255.255.255.255 uR 0 0 0 elh0
192.168.0.0 0.0.0.0 255.255.255.0 u 0 0 0 elh0
127.0.0.0 0.0.0.0 255.0.0.0 u 0 0 0 lo
0.0.0.0 200.231.191.1 0.0.0.0 u0 0 0 0 ppp0
Na IabeIa acima vemos gue se o desIino Ior 200.231.191.1, deve ser uIiIizada a inIerIace
ppp0, gue no caso corresponde IisicamenIe porIa seriaI onde o modem esI operando. Por
ouIro Iado, se o desIino Ior da Iorma 192.168.0.X onde X e guaIguer ocIeIo, enIo vemos peIa
Ierceira roIa gue dever ser uIiIizada a inIerIace eth0, ou se|a, a pIaca de rede eIherneI. A
diIerena enIre uma roIa para um desIino nico ou para mIIipIos desIinos e deIerminada
peIa mscara.
A mscara indica guais biIs so signiIicaIivos no respecIivo desIino. Na IabeIa acima, a
NoIas de AuIa de TCP/!P hIIp://www.ime.usp.br/~ueda/Idoc/noIasIcp.hImI
27 de 69 22-08-2013 17:S4
primeira roIa esI dizendo gue Iodos os biIs so signiIicaIivos e, a Ierceira, gue apenas os
primeiros Ires ocIeIos (os primeiros 24 biIs) so signiIicaIivos. Se, vamos supor, os primeiros
28 biIs Iossem signiIicaIivos, a mscara seria 2SS.2SS.2SS.240. A mscara 2SS.2SS.2SS.0 pode
aIIernaIivamenIe ser indicada na Iorma "/24" (e a mscara 2SS.2SS.2SS.240 na Iorma "/28",
eIc).
A poro signiIicaIiva do campo de desIino cosIuma ser chamada de "endereo da rede" e, o
resIanIe, "endereo do hosI". Assim, no exempIo acima Iemos gue o endereo da rede e
192.168.0.0 com mscara 2SS.2SS.2SS.0. A Ierceira roIa e diIa a roIa para a "rede IocaI". A
IIima roIa, com desIino 0.0.0.0 e mscara 0.0.0.0 e a chamada "roIa deIauII", porgue saIisIaz
guaIguer desIino, ou se|a, guaIguer pacoIe cu|o roIeamenIo no possa ser enguadrado nas
roIas anIeriores ir enguadrar-se na roIa deIauII.
No nosso exempIo a roIa deIauII indica um "gaIeway". xisIir um gaIeway sempre gue o
desIino no esIiver direIamenIe acessIveI. A IabeIa de roIas no indica um gaIeway para o
desIino 192.168.0.2. !sso signiIica gue esse !P e direIamenIe acessIveI no segmenIo eIherneI
IocaI, e porIanIo podemos gerar um pacoIe com um cabeaIho eIherneI (MAC) indicando
como desIinaIrio o endereo de hardware do 192.168.0.2 (ver as noIas sobre ARP). Se
exisIisse uma roIa para o neIwork 192.168.1.0/24 indicando como gaIeway o !P 192.168.0.1,
enIo Iodo pacoIe dirigido para, vamos supor, 192.168.1.1, Iraria no seu cabeaIho !P o
desIino 192.168.1.1 mas no cabeaIho eIherneI indicaria como desIinaIrio o endereo de
hardware associado ao 192.168.0.2.
!sso reIora um IaIo imporIanIe, e gue e gue, no !P, cada parIicipanIe conhece apenas o
"caminho" para os parIicipanIes gue Ihe so imediaIamenIe acessIveis. AIguns desses
parIicipanIes gue so imediaIamenIe acessIveis Iuncionam como gaIeways para ouIras
redes, mas o caminho gue os pacoIes reaIizam a parIir desses gaIeways e-nos desconhecido.
A IabeIa de roIas e consIruIda auIomaIicamenIe peIos procedimenIos de booI da mguina.
Ia pode Iambem ser dinamicamenIe aIIerada peIo recebimenIo de pacoIes de cnncios dc
rotcs nas diversas inIerIaces da mguina. sse Iema perIence a um capIIuIo ampIo do
TCP/!P, o dos proIocoIos de roIeamenIo, gue no so coberIos por esIas noIas, e gue so mais
perIinenIes aos Iecnicos responsveis por backbones de medio e grande porIe.
4.2 Outorga de IPs e classes de endereos
O princIpio de IuncionamenIo do roIeamenIo !P Iaz com gue os endereos !Pv4 se|am
disIribuIdos aos bIocos. Por exempIo: a Universidade de So PauIo dispe dos endereos da
Iorma 143.107.X.Y. Ia repassou para o !nsIiIuIo de MaIemIica os endereos da Iorma
143.107.4S.X, para o !nsIiIuIo AsIronmico e CeoIIsico os endereos da Iorma 143.107.114.X,
e assim por dianIe. Cada inIerIace gue conecIe IisicamenIe uma unidade (como as ciIadas)
inIraesIruIura cenIraI da Universidade roIeia os !Ps dagueIa inIerIace, e porIanIo exisIe
aponIando para eIa uma roIa com mscara 2SS.2SS.2SS.0.
sse exempIo IocaIizado esIende-se para Ioda a !nIerneI. Ao Iongo do esIabeIecimenIo da
!nIerneI, o inIervaIo IoIaI de endereos !Pv4 Ioi sendo dividido em bIocos e concedido aos
pedaos a insIiIuies e a empresas, sendo gue em aIguns casos, essa insIiIuio ou empresa
podia ser a responsveI peIo backbone principaI da !nIerneI de um paIs inIeiro. oi dessa
Iorma gue o 8rasiI recebeu parIe da rede 200 (!Ps da Iorma 200.X.Y.Z), e esIes so os
NoIas de AuIa de TCP/!P hIIp://www.ime.usp.br/~ueda/Idoc/noIasIcp.hImI
28 de 69 22-08-2013 17:S4
endereos uIiIizados peIa maior parIe da !nIerneI brasiIeira aIuaImenIe.
NoIe gue isso Iaz com gue no se|a possIveI conIigurar o endereo !P de uma inIerIace com
um nmero escoIhido ao acaso. Uma pessoa na uropa (por exempIo) no pode conIigurar
um seu compuIador com um endereo !P como 143.107.4S.12, porgue as roIas ao Iongo da
!nIerneI conduzem para o 8rasiI os pacoIes cu|o desIino e 143.107.4S.12. AgueIa pessoa gue
na uropa uIiIizou esse endereo ser capaz de enviar pacoIes para guaIguer servidor web
da !nIerneI (por exempIo) mas os pacoIes de resposIa gerados peIo servidor |amais aIingiro
o compuIador gue iniciou a comunicao.
A ouIorga de endereos em bIocos Iaz com gue parIe dos endereos Iiguem ociosos, e agrava
o aIuaI probIema do escasseamenIo dos endereos !P. sse escasseamenIo, gue e reIIexo da
impossibiIidade do uso de endereos de 32 biIs para uma rede eIeIivamenIe mundiaI, Ioi um
dos moIivos gue Ievou ao desenvoIvimenIo da verso 6 do proIocoIo !P (!Pv6 ou !Png), onde
Ioram adoIados endereos de 128 biIs. RecenIemenIe a Universidade de SIanIord "devoIveu"
os 16 miIhes de endereos gue haviam sido ouIorgados a eIa anos aIrs, numa epoca em
gue a !nIerneI era muiIo menor, e em gue Ioram concedidos endereos "cIasse A" para vrias
universidades e empresas.
Obs. (1) o intcrvclo dc cndcrcos |P cst suhdividido cm cinco clcsscs:
ndcrcos clusse A so cquclcs cujo primciro hit c 0. Ds nctworks dc clcssc A vo do
1.0.0.0 ctc o 127.0.0.0, com msccrc 255.0.0.0.
ndcrcos clusse so cquclcs cujos primciros dois hits so 10. Ds nctworks dc clcssc
vo do 128.0.0.0 ctc o 11.255.0.0, com msccrc 255.255.0.0.
ndcrcos clusse C so cquclcs cujos trcs primciros hits so 110. Ds nctworks dc clcssc C
vo do 12.0.0.0 ctc o 22J.255.255.0, com msccrc 255.255.255.0.
ndcrcos clusse D so cquclcs cujos primciros 4 hits so 1110, c jorcm prcvistos pcrc
multiccst.
ndcrcos clusse L so cquclcs cujos primciros 5 hits so 11110, c so "rcscrvcdos pcrc
uso juturo".
Obs. (Z) A suhdiviso dos nctworks cxigidc pclo csccssccmcnto do intcrvclo dc cndcrcos |P
tornou muito rclctivc c importncic prticc do conccito dc clcssc. Nc prticc chcgc c scr
comum o uso dos tcrmos "clcssc " ou "clcssc C" no pcrc indiccr clgum dos nctworks citcdos
ccimc, mcs sim nctworks qucisqucr quc uscm cs rcspcctivcs msccrcs (255.255.0.0 c
255.255.255.0).
Questes
4.1 xpIigue o conceiIo de neImask e ciIe as duas Iormas IIpicas com gue se cosIuma
especiIicar neImasks.
4.2 screva usando guaIguer Iinguagem de programao (ou pseudo-cdigo) o aIgoriImo de
roIeamenIo !P, pressupondo gue a IabeIa de roIas esIe|a devidamenIe represenIada numa
esIruIura de dados convenienIe.
NoIas de AuIa de TCP/!P hIIp://www.ime.usp.br/~ueda/Idoc/noIasIcp.hImI
29 de 69 22-08-2013 17:S4
S. De exempIos de neIworks das cIasses A, 8 e C. Diga guais so os nemasks associados a eIes
e guanIos endereos cada um comporIa. xpIigue porgue e aIgoriImicamenIe IciI de
idenIiIicar a cIasse de um neIwork.
5. O tcpdump
!nsIaIao do windump
xempIos de uso
Os exempIos da man page
iIIragem de porIa
iIIragem de !P
iIIragem de conexo
xibio do endereo de hardware
xibio do campo de dados
xempIo de capIura de senha via Icpdump
SugesIo de uso domesIico
Notas
5.1 O tcpdump
O tcpdump e uma IerramenIa imporIanIe para a adminisIrao de redes e para uma maior
IamiIiarizao com o TCPjIP. Ie Ioi desenvoIvido originaImenIe para sisIemas Unix-Iike,
mas possui um porIe para Windows, chamado windump. A IinaIidade do tcpdump e
capIurar os pacoIes gue passam por uma inIerIace. Os cabeaIhos desses pacoIes so
exibidos no consoIe, um por Iinha:
$ lcpdump -1 elh0 -l -n
13.57.56.876424 192.168.0.1.1044 > 192.168.0.2.23. S 3767238723.3767238723{0} W1n 32120 {0I}
13.57.56.878184 192.168.0.2.23 > 192.168.0.1.1044. S 1049035122.1049035122{0} ack 3767238724 W1n 32736
13.57.56.878370 192.168.0.1.1044 > 192.168.0.2.23. . ack 1 W1n 32120 {0I}
13.57.56.881182 192.168.0.1.1044 > 192.168.0.2.23. P 1.28{27} ack 1 W1n 32120 {0I}
13.57.56.900704 192.168.0.2.23 > 192.168.0.1.1044. . ack 28 W1n 32709 {0I}
13.57.57.115026 192.168.0.2.23 > 192.168.0.1.1044. P 1.13{12} ack 28 W1n 32709 {0I}
Os pacoIes acima reIerem-se a uma conexo TLNT. Observe gue a mguina 192.168.0.1
enviou (primeira Iinha) um pacoIe para a mguina 192.168.0.2. As porIas envoIvidas so
1044 (cIienIe) e 23 (servidor). O caracIere "P" gue vemos na guarIa Iinha signiIica gue nesse
pacoIe a IIag PUSH do cabeaIho TCP esI aIiva. OuIras IIags comuns so "S" (como vemos
nas duas primeiras Iinhas), "" (IIag YN, sinaIizadora do IinaI da conexo) ou "R" (reseI). A
IIag PUSH Ioi previsIa para eviIar deIays de buIIerizao no envio ou repasse dos dados
recebidos para a apIicao, no enIanIo as impIemenIaes de TCP/!P ou ignoram essa IIag ou
seIam-na sempre.
O "S" signiIica gue a IIag SYN esI aIiva, isIo e IraIa-se de um pedido de sincronizao, o gue
indica inIcio de uma conexo. A sincronizao signiIica o inIorme do scqucncc numhcr
iniciaI. aIraves do seguence number (um inIeiro de 32 biIs como podemos ver no
cabeaIho TCP) gue o TCP/!P sabe a posio de cada segmenIo denIro do sIream. O seguence
number iniciaI no e zero, mas cosIuma ser uma Iuno do reIgio da mguina, a Iim de
diminuir a probabiIidade de na reuIiIizao de uma porIa | desaIocada o recebimenIo
acidenIaI de pacoIes reIerenIes a uma conexo anIerior gue uIiIizou agueIa porIa provogue
NoIas de AuIa de TCP/!P hIIp://www.ime.usp.br/~ueda/Idoc/noIasIcp.hImI
30 de 69 22-08-2013 17:S4
erros.
O par de nmeros separados por dois ponIos (":") inIorma o Irecho do sIream ao guaI
corresponde o segmenIo carregado peIo pacoIe. Assim, vemos gue a guarIa Iinha
corresponde a um segmenIo de 27 byIes. A rigor o Icpdump no consegue inIerir a posio
desse segmenIo denIro do sIream |usIamenIe porgue o seguence number iniciaI e
desconhecido, exceIo, e cIaro, no caso em gue o Icpdump capIurou os pacoIes de
sincronizao dessa conexo e memorizou esses seguence numbers (ve|a esses nmeros
iniciais na primeira e segunda Iinhas).
Cada pacoIe TCP carrega ainda um ccknowlcdgc inIormando aIe guaI posio o sIrem
provenienIe da ouIra ponIa | Ioi recebido. a ausencia desse acknowIedge gue provoca no
TCP a reIransmisso de pacoIes em inIervaIos de Iempo exponenciaImenIe crescenIes. Na
Iinha S vemos um "28", gue indica o acknowIedge dos 27 byIes recebidos.
inaImenIe, cada segmenIo inIorma ao ouIro Iado o tcmcnho dc jcnclc admiIido nagueIe
ponIo da comunicao. Assim, vemos na guinIa Iinha gue o parIicipanIe inIorma Ier |
recebido 27 byIes e sinaIiza gue podero ser enviados mais 32709 anIes gue a apIicao se|a
bIocada peIo aguardo de um acknowIedge dos segmenIos enviados ou ao menos de uma
parIe deIes.
O tcpdump e a IerramenIa uIiIizada para anaIisar e esIudar as principais caracIerIsIicas e
proIocoIos do TCP/!P peIo Iivro TCPjIP Illustrated de W. R. SIevens, gue em geraI e
considerado a principaI reIerencia da rea aIuaImenIe. O IIIuIo Illustrated deve-se
|usIamenIe ao IaIo do tcpdump apresenIar como gue uma imagem dos proIocoIos em
IuncionamenIo. Ao Iongo desIas noIas esIaremos uIiIizando-o aIgumas vezes com essa
IinaIidade.
Na medida em gue eIe reaIiza capIura de pacoIes e dos seus dados, o tcpdump pode Iambem
ser uIiIizado Iambem para espionar IrIego aIheio. No obsIanIe, a sua IinaIidade principaI e
adminisIraIiva, mesmo porgue os recursos do tcpdump so IimiIados. Ie no e capaz, por
exempIo, de reaIizar a monIagem dos pacoIes TCP a Iim consIruir a seguencia de byIes
gerada peIo cIienIe e/ou peIo servidor, e a sua capacidade para exIrair o conIedo da rea de
dados dos pacoIes e reIaIivamenIe IimiIada.
6. Network Programming
Prtica com NP
xempIo de cIienIe TCP Comparao com !/O de arguivos Os servios uIiIizados da
winsock xempIo 1 de servidor TCP xempIo 2 de servidor TCP Como escrevendo um
servidor web minimaI
Mtodos para atendimento a mltiplas conexes
Threads mIIipIos MIIipIos processos ("Iork-exec") Loop de aIendimenIo
Tour pela implementao de TCPjIP do Linux
LeiIura do pacoIe scriIa do pacoIe
NoIas de AuIa de TCP/!P hIIp://www.ime.usp.br/~ueda/Idoc/noIasIcp.hImI
31 de 69 22-08-2013 17:S4
Lxercicio prtico: Mala direta
uncionamenIo do scripI TesIe do scripI A diviso em enveIopes O gue e SPAM?
Notas
6.1 Um servidor TCP minimal
Um meIhor conhecimenIo do TCP/!P depende de aIguma experiencia com programao. O
cdigo gue segue corresponde a um servidor TCP escriIo na Iinguagem PRL. Ie pode ser
rodado em pIaIaIormas Unix-Iike ou Windows sem aIIeraes (desde gue se|a uIiIizado o
inIerpreIador PRL originaI, escriIo por Larry WaII). Os nmeros de Iinha no Iazem parIe
do programa. As Iinhas gue se iniciam com o caracIere '#' so comenIrios. A AP!s de
programao TCP/!P do PRL reproduz a AP! de 8erkeIey, gue e seguida por muiIas
impIemenIaes de TCP/!P e muiIas Iinguagens de programao, e por isso esses exempIos
podero ser IransporIados com IaciIidade para ouIros ambienIes.
Na Iinha 16 e aIocado um descriIor de comunicao (sockeI). Ie e iniciaIizado para operar
com TCP (ouIra aIIernaIiva seria UDP) ouvindo conexes na porIa 34S6. Por simpIicidade
no esIamos consisIindo os vaIores de reIorno das chamadas da AP! de sockeIs. Ias
poderiam sinaIizar erros (por exempIo no caso da porIa 34S6 | esIar aIocada por ouIra
apIicao).
A Iinha 21 apresenIar uma mensagem de sIarI-up no consoIe e o Ioop inIiniIo das Iinhas
23-49 iniciaImenIe aguarda um pedido de conexo (Iinha 2S), e em seguida apresenIa no
consoIe o pedido aceiIo (Iinha 29). No Ioop 38-46 o servidor Ie o sockeI associado ao cIienIe e
execuIa os comandos time e guit. NoIe gue duranIe a execuo do Ioop 38-46 o servidor
esIar impossibiIiIado de aceiIar uma segunda conexo simuIInea (para isso seria
necessrio Iazer um novo chamado do servio accept).
Uma vez disparado esse servidor, e necessrio conecI-Io aIraves de um cIienIe TCP, gue
poder ser o telnet, o cIienIe dado Iogo a seguir ou mesmo um browser web (nesIe caso guaI
seria o URL a ser uIiIizado?).
01 #!1usr1b1n1perl
02 #
03 # lcpsrv2. s1mple TCP server W1lh command loop
04 # usae. perl lcpsrv2
05 #
06
07 use Sockel,
08
09 sub loms {
10 pr1nl "$0. @_ al ", scalar locall1me, "\n",
11 )
12
13 $porl = 3456,
14 $prolo = elprolobyname{`lcp`},
15
16 sockel{Server, PI_TNET, S0CK_STREAM, $prolo},
17 selsockopl{Server, S0L_S0CKET, S0_REuSEA00R,pack{"l", 1}},
18 b1nd{Server, sockaddr_1n{$porl, TNA00R_ANY}},
19 l1slen{Server,S0MAXC0NN},
20
21 loms "server slarled on porl $porl",
22
23 Wh1le {1} {
24
25 $paddr = accepl{Cl1enl,Server},
NoIas de AuIa de TCP/!P hIIp://www.ime.usp.br/~ueda/Idoc/noIasIcp.hImI
32 de 69 22-08-2013 17:S4
26 {$porl,$1addr} = sockaddr_1n{$paddr},
27 $name = elhoslbyaddr{$1addr,AI_TNET},
28
29 loms "connecl1on irom $name |",
30 1nel_nloa{$1addr}, "]
31 al porl $porl",
32
33 selecl{Cl1enl},
34 $] = 1,
35 pr1nl Cl1enl "Rello lhere, $name\r\n",
36
37 $i = 0,
38 Wh1le {$i == 0} {
39 $_ = ,
40 1i {$_ =~ 1l1me1} {
41 pr1nl Cl1enl { scalar locall1me } . "\r\n",
42 )
43 els1i {$_ =~ 1qu1l1} {
44 $i = 1,
45 )
46 )
47
48 close{Cl1enl},
49 )
6.2 Um cliente TCP minimal
sse exempIo diIere do exempIo do servidor por no coIocar o sockeI em "IisIen". No
obsIanIe, assim como no caso do servidor, o sockeI e conIigurado para operar com TCP numa
porIa IocaI, gue no caso e deixada escoIha do Iayer de TCP/!P (ve|a o "0" na Iinha 2S). Na
Iinha 26 empacoIamos numa esIruIura binria o endereo e a porIa remoIos para, na Iinha
3S, conecIarmos. Na Iinha 41 enviamos o comando especiIicado na chamada do scripI, e no
Ioop seguinIe Iemos e enviamos para o consoIe a resposIa do servidor.
01 #!1usr1b1n1perl
02 #
03 # lcpcl - ener1c TCP cl1enl
04 # --------------------------
05 #
06 # usae. perl lcpcl hosl porl command
07 # example. perl lcpcl allav1sla.d11lal.com 80 "0ET 1"
08 #
09
10 use Sockel,
11 use Sys..Roslname,
12
13 $lhem = $AR0v|0],
14 $porl = $AR0v|1],
15
16 $AI_TNET = 2,
17 $S0CK_STREAM = 1,
18 $sockaddr = `S n a4 x8`,
19
20 $hoslname = hoslname{},
21 {$name,$al1ases,$prolo} = elprolobyname{`lcp`},
22 {$name,$al1ases,$porl} = elservbyname{$porl,`lcp`} unless $porl =~ 1^\d+$1,
23 {$name,$al1ases,$lype,$len,$lh1saddr} = elhoslbyname{$hoslname},
24 {$name,$al1ases,$lype,$len,$lhaladdr} = elhoslbyname{$lhem},
25 $lh1s = pack{$sockaddr, $AI_TNET, 0, $lh1saddr},
26 $lhal = pack{$sockaddr, $AI_TNET, $porl, $lhaladdr},
27
28 # Make lhe sockel i1lehandle.
29 sockel{S, $AI_TNET, $S0CK_STREAM, $prolo},
30
31 # 01ve lhe sockel an address.
32 b1nd{S, $lh1s},
33
34 # Call up lhe server.
35 connecl{S,$lhal},
36
37 # Sel sockel lo be command buiiered.
38 selecl{S}, $] = 1, selecl{ST00uT},
39
NoIas de AuIa de TCP/!P hIIp://www.ime.usp.br/~ueda/Idoc/noIasIcp.hImI
33 de 69 22-08-2013 17:S4
40 # send lhe command and read lhe oulpul
41 pr1nl{S "$AR0v|2]\r\n"},
42 sleep{1},
43 Wh1le {<S>} {
44 pr1nl,
45 )
46 close{S},
6.3 Um clientejservidor UDP minimal
O cdigo gue segue e ao mesmo Iempo um cIienIe e um servidor UDP, e Ioi pensado para ser
uIiIizado num IesIe em saIa de auIa. Nas Iinhas 10-1S um sockeI e aIocado e conIigurado para
operar com UDP na porIa IocaI 34S6. No Ioop das Iinhas 20-2S envia-se um pacoIe UDP para
cada um dos desIinos especiIicados na Iinha de comandos. NoIe gue em virIude de no UDP
no exisIir o conceiIo de conexo, o desIino dos pacoIes no esI impIIciIo no sockeI, mas
precisa ser expIiciIado a cada Iransmisso (Iinha 24).
No Ioop das Iinhas 31-39 aguarda-se aIgum pacoIe de guaIguer um dos parIicipanIes, aIe um
mximo iguaI ao nmero de desIinaIrios na Iinha de comandos. O "seIecI" usado na Iinha
31 aguarda um evenIo num con|unIo de descriIores (com um IimeouI de 10 segundos), e gue
no caso Ioi consIruIdo para conIer apenas o sockeI UDP gue esIamos uIiIizando. A cada
pacoIe UDP recebido, o seIecI reIornar e na Iinha 36 exibiremos a mensagem recebida
nagueIe pacoIe.
01 #!1usr1b1n1perl
02 #
03 # udpms. s1mple u0P cl1enl and server
04 # usae. udpms hosl1 hosl2 ...
05 #
06
07 use Sockel,
08 use Sys..Roslname,
09
10 $1addr = elhoslbyname{hoslname{}},
11 $prolo = elprolobyname{`udp`},
12 $porl = 3456,
13 $paddr = sockaddr_1n{3456, $1addr}, # 0 means lel kernel p1ck
14 sockel{S0CKET, PI_TNET, S0CK_00RAM, $prolo},
15 b1nd{S0CKET, $paddr},
16
17 sleep{3},
18 $] = 1,
19 $counl = 0,
20 ior $hosl {@AR0v} {
21 $counl++,
22 $h1s1addr = 1nel_alon{$hosl},
23 $h1spaddr = sockaddr_1n{$porl, $h1s1addr},
24 send{S0CKET, "hello", 0, $h1spaddr},
25 )
26
27 $r1n = ``,
28 vec{$r1n, i1leno{S0CKET}, 1} = 1,
29
30 # l1meoul ailer 10.0 seconds
31 Wh1le {$counl && selecl{$roul = $r1n, undei, undei, 10.0}} {
32
33 1i {dei1ned{$h1spaddr = recv{S0CKET, $ms, 10, 0}}} {
34 {$porl, $h1s1addr} = sockaddr_1n{$h1spaddr},
35 $hosl = elhoslbyaddr{$h1s1addr, AI_TNET},
36 pr1nli "7-12s $ms\n", $hosl,
37 $counl--,
38 )
39 )
6.4 Atendimento baseado em select
NoIas de AuIa de TCP/!P hIIp://www.ime.usp.br/~ueda/Idoc/noIasIcp.hImI
34 de 69 22-08-2013 17:S4
Os mecanismos principais de IuncionamenIo dos soIIwares de comunicao so eIemenIos
gue devem ser conhecido peIo proIissionaI de !nIerneI, mesmo gue no se|a um
desenvoIvedor de soIIware, pois isso e imporIanIe para a avaIiao de um produIo ou de
uma soIuo. Vimos nas noIas anIeriores a esIruIura geraI de um servidor TCP e de um
cIienIe TCP. Veremos agora de Iorma mais deIaIhada o modo aIraves do guaI um mesmo
servidor aIende mIIipIas conexes numa mesma porIa (vamos supor, a porIa deIauII do
servio HTTP, ou se|a, a 80).
Vimos no exempIo do servidor TCP gue aIraves da reIerencia a um descriIor, o servio
accept recebe uma conexo de um cIienIe e devoIve apIicao um segundo descriIor,
aIraves do guaI a comunicao com agueIe cIienIe e reaIizada. Assim, para ser capaz de
aIender mIIipIas conexes, um servidor (o Iermo scrvidor agui reIere um sojtwcrc como o
!!S ou o Apache, e no um compuIador) precisa manIer mIIipIos descriIores de
comunicao, um para cada cIienIe gue esIe|a sendo aIendido (ao mesmo Iempo em gue
manIem agueIe primeiro, para o ccccpt de novas conexes).
Nas Iormas mais simpIes de !/O, a escriIa ou a IeiIura de dados num descriIor e hloccntc, ou
se|a, paraIisa o processo se agueIe descriIor no esIiver apIo nagueIe momenIo para reaIizar
a operao. Por exempIo: numa escriIa, o processo bIoca se o buIIer de saIda | esIiver cheio
ou na IeiIura o processo bIoca se o buIIer de enIrada esIiver vazio. Numa modaIidade de
aIendimenIo mIIipIo, o !/O no pode ser bIocanIe porgue enguanIo se aguarda o
recebimenIo de dados num descriIor, o servidor poderia esIar processando os dados |
recebidos num ouIro descriIor.
As AP!s de programao oIerecem em geraI duas possIveis soIues para esse probIema:
uma e a possibiIidade da operao ser no hloccntc, e a ouIra e o recurso de sinaIizar
apIicao um deIerminado evenIo ou esIado em aIgum descriIor. No primeiro caso Ieriamos
por exempIo gue um servio de escriIa gue normaImenIe bIocaria reIorna com um
diagnsIico de IaIha gue a apIicao dever IraIar. No segundo, a apIicao e avisada gue
um deIerminado descriIor esI apIo para gue se|a reaIizada neIe uma operao de IeiIura ou
de escriIa. m ambienIe Unix, esse segundo caso e IradicionaImenIe impIemenIado de Iorma
sIncrona aIraves de um systcm ccll chamado select. O Winsock impIemenIou uma varianIe
assIncrona do select cu|a sinaIizao e reaIizada aIraves do recebimenIo peIa apIicao de
um evenIo (no senIido prprio gue esse Iermo possui no ambienIe windows).
01 $r1n = ``,
02 ior {$n=0,$1=0, $1<$MAXCL, ++$1} {
03 1i {$CL|$1] ne ""} {
04 ++$n,
05 vec{$r1n,i1leno{"CL$1"},1} = 1,
06 )
07 )
08 1i {$n > 0} {
09 $niound = selecl{$roul=$r1n,undei,undei,$TTCK},
10 )
11 else {
12 selecl{undei,undei,undei,$TTCK},
13 )
O exempIo acima e parIe do programa uplink (hIIp://www.ime.usp.br/~ueda/upIink/). Nas
Iinhas 1-10 e consIruIdo o "con|unIo" $rin de Iodos os descriIores de comunicao aIivos (um
para cada cIienIe conecIado). Ao IinaI deIe, a variveI $n conIem o IoIaI de cIienIes
conecIados. Se esse IoIaI Ior posiIivo, enIo na Iinha 9 execuIamos o seIecI, gue reIorna ou
avisando gue aIgum dos descriIores indicados possui dados para IeiIura ou, aps um IimeouI
NoIas de AuIa de TCP/!P hIIp://www.ime.usp.br/~ueda/Idoc/noIasIcp.hImI
3S de 69 22-08-2013 17:S4
indicado peIa variveI $T!CK.
Num ouIro ponIo do programa vemos como o select e uIiIizado para deIeIar um pedido de
conexo pendenIe. Nesse caso, o bIoco reIerenIe ao if dever execuIar o accept e incIuir o
descriIor obIido no veIor CL reIerido acima na Iinha 3.
$r1n = ``,
vec{$r1n,i1leno{Server},1} = 1,
1i {selecl{$roul=$r1n,undei,undei,0} > 0} {
Obs. A lingucgcm pcrl no c c mcis cpropricdc pcrc cntcndcr-sc o juncioncmcnto do select
porquc nclc cssc mcsmo nomc (sclcct) rcjcrc tcmhcm um outro scrvio quc tcm umc scmnticc
indcpcndcntc, o quc podc ccuscr clgumc conjuso.
6.5 Atendimento baseado em fork
A Iecnica gue vimos acima e no e de uso muiIo IreguenIe. m geraI, servidores gue
aIendem mIIipIas conexes Iazem-no aIraves do disparo de uma instncic para cada
cIienIe. ssa insIncia pode ser um subprocesso ou um Ihread. No Unix, a criao de um
subprocesso e IeiIa aIraves do systcm ccll fork. Os Iivros de neIwork programming Irazem
vrios exempIos de como isso pode ser IeiIo. Segue abaixo um exempIo simpIes adapIado de
um soIIware reaI:
01 1* ch1ld W1ll deal W1lh lhe neW connecl1on *1
02 1i {{ch1ld=iork{}} < 0}
03 llo{"iork error\n"},
04
05 1* lo avo1d zomb1es *1
06 else 1i {ch1ld == 0} {
07
08 1* makes an orphan *1
09 1i {{ch1ld=iork{}} < 0}
10 llo{"could nol make an orphan\n"},
11
12 1* ch1ld W1ll iorWard messaes *1
13 else 1i {ch1ld == 0} {
14 close{lsock},
15 iorWard{},
16 ex1l{0},
17 )
18
19 1* parenl 1s Wa1l-1n us *1
20 ex1l{0},
21 )
22
23 1* Wa1ls lhe i1rsl ch1ld d1e *1
24 else
25 Wa1l{NuLL},
No momenIo em gue o kerneI aIende a chamada do Iork na Iinha 2, passam a exisIir dois
processos ao inves de um. Os dois so idenIicos e esIo execuIando o mesmo cdigo no
mesmo ponIo (isIo e, em ambos acabamos de reIornar da chamada do Iork). No caso do
processo originaI, o Iork reIorna um vaIor maior gue zero, e gue e o P!D (process !D) do
subprocesso. No caso do subprocesso, o Iork reIorna o vaIor zero. O subprocesso possui uma
cpia exaIa da mesma rea de memria de dados gue o processo originaI, o gue incIui cpias
dos mesmos descriIores de comunicao gue o processo originaI esIava manIendo aberIos.
Nesse nosso exempIo so reaIizados na verdade dois disparos de subprocessos (nas Iinhas 6
e 9). !sso se Iaz para eviIar o surgimenIo de zumhis. O processo gue aIende a conexo ser na
verdade "neIo" do processo originaI e no "IiIho". O aIendimenIo da conexo ser IeiIo por
NoIas de AuIa de TCP/!P hIIp://www.ime.usp.br/~ueda/Idoc/noIasIcp.hImI
36 de 69 22-08-2013 17:S4
uma Iuno especiaIizada chamada na Iinha 1S, Iinda a guaI o processo ser encerrado. Se o
aIendimenIo Iosse IeiIo peIo "IiIho", na sua Ierminao o processo originaI seria sinaIizado e
Ieria gue reguisiIar o sIaIus de reIorno desse "IiIho" (enguanIo eIe no o Iizer o "IiIho" ser
um "zumbi"). Haveria ouIras maneiras menos dispendiosas de se eviIar zumbis, mas seriam
um pouco mais compIexas, e se o servio Ior de baixa demanda pode ser inIeressanIe opIar
peIa soIuo mais simpIes.
NoIe gue o Iork impIica no disparo de um processo, o gue via de regra e um procedimenIo
dispendioso para o sisIema operacionaI, pois impIica na aIuaIizao das esIruIuras de dados
de conIroIe de processos e de descriIores de comunicao, e na aIocao e cpia de reas de
memria para dados evenIuaImenIe grandes (a rea de memria usada para armazenar o
cdigo do programa e comparIiIhada enIre o processo e o subprocesso, mas as reas de
dados so independenIes). Assim, o aIendimenIo de conexes mIIipIas baseado no Iork
pode ser pouco recomendado em servios de aIIa demanda, a no ser guando o
desenvoIvedor opIa por Iazer com gue o subprocesso esIe|a | disparado anIes do pedido de
conexo ser recebido. ssa e a Iecnica impIemenIada (por exempIo) peIo Apache.
6.6 Atendimento baseado em threads mltiplos
Uma nova insIncia de um servidor poderia ser um Ihread ao inves de um processo. A
diIerena enIre um Ihread e um processo e gue os vrios Ihreads disparados por um mesmo
processo comparIiIham uma mesma e nica rea de dados, e porIanIo a criao de um
Ihread no impIica na aIocao e iniciaIizao da rea de dados do subprocesso, o gue Iorna
o disparo de um Ihread poIenciaImenIe mais baraIo para o sisIema operacionaI do gue o
disparo de um processo. O guo mais baraIo ser depende de IaIo do sisIema operacionaI
uIiIizado.
Um servidor TCP muIIiIhread ser dessa Iorma aIgo inIermedirio enIre as duas Iecnicas
exempIiIicadas nas noIas anIeriores. AssemeIha-se ao uso do seIecI por manIer Iodos os
descriIores de comunicao numa mesma rea de dados, e assemeIha-se ao Iork por criar
vrias insIncias do servidor. Ve|amos um exempIo eIemenIar baseado em pIhreads (Posix
Threads):
1*
S1mple mull1-lhreaded TCP server
*1
#1nclude <sld1o.h>
#1nclude <plhread.h>
#1nclude <sldl1b.h>
#1nclude <un1sld.h>
#1nclude <sys1sockel.h>
#1nclude <nel1nel11n.h>
#1nclude <un1sld.h>
#1nclude <slr1n.h>
1* sockels ior each cl1enl connecl1on *1
#dei1ne MAX 10
1nl cl|MAX],
vo1d *d1alo{vo1d *ar} {
1nl c,n,
char s|80],
c = *{{1nl *}ar},
*{{1nl *}ar} = -1,
spr1nli{s,"hello, T am lhread number 7d\n",c},
NoIas de AuIa de TCP/!P hIIp://www.ime.usp.br/~ueda/Idoc/noIasIcp.hImI
37 de 69 22-08-2013 17:S4
ior {n=0, n<5, ++n} {
Wr1le{cl|c],s,slrlen{s}},
sleep{1},
)
close{cl|c]},
cl|c] = -1,
relurn{NuLL},
)
1nl ma1n{vo1d} {
plhread_l lh|MAX],
1nl 1,l,neW,len,
slrucl sockaddr_1n laddr, cl1_addr,

1* 1n1l1al1ze sockels *1
ior {1=0, 1<MAX, ++1}
cl|1] = -1,
1* alloc l1slen sockel *1
1i {{l = sockel{AI_TNET, S0CK_STREAM, 0}} < 0} {
ipr1nli{slderr,"can`l alloc l1slen sockel\n"},
ex1l{1},
)

1* make l l1slen on porl 3456 *1
memsel{&laddr,0,s1zeoi{laddr}},
laddr.s1n_iam1ly = AI_TNET,
laddr.s1n_addr.s_addr = hlonl{TNA00R_ANY},
laddr.s1n_porl = hlons{3456},
1i {b1nd{l,{slrucl sockaddr *}&laddr,s1zeoi{laddr}}<0} {
ipr1nli{slderr,"can`l b1nd l1slen sockel\n"},
ex1l{1},
)
l1slen{l,5},
1* server loops iorever *1
Wh1le {1} {
1* locale iree cl1enl sockel *1
ior {neW=-1, neW<0, } {
ior {1=0, {1<MAX} && {cl|1]>=0}, ++1},
1i {1 < MAX}
neW = 1,
else
sleep{1},
)
1* Wa1l ior connecl1on *1
len = s1zeoi{cl1_addr},
cl|neW] = accepl{l,{slrucl sockaddr *}&cl1_addr,&len},
1i {cl|neW] < 0}
ipr1nli{slderr,"error Wh1le accepl-1n\n"},
1* i1re up lhread lo conlrol lhe neW cl1enl *1
else {
plhread_creale{lh+neW,NuLL,d1alo,{vo1d *}&neW},
plhread_delach{lh|neW]},
)
1* Wa1l lhread 1n1l1al1ze *1
Wh1le {neW >= 0}
sleep{1},
)
)
A Iuno dialog encarrega-se do aIendimenIo de cada cIienIe. A cada novo pedido de
conexo, um Ihread e criado aIraves da chamada do servio pIhread_creaIe. O Ihread
iniciaImenIe seIa a variveI new (recebida por reIerencia) para -1, em seguida envia cinco
vezes uma mensagem de boas-vindas para o cIienIe e encerra sua execuo. NoIe gue o
Iamanho do veIor cl (cu|as enIradas so os descriIores de comunicao comos cIienIes)
IimiIa o mximo de cIienIes aIivos. nguanIo nenhum descriIor esIiver Iivre, o Ioop de
IocaIizao de descriIores Iivres (agueIe idenIiIicado peIo comenIrio "IocaIe Iree cIienI
sockeI") no Iermina.
NoIas de AuIa de TCP/!P hIIp://www.ime.usp.br/~ueda/Idoc/noIasIcp.hImI
38 de 69 22-08-2013 17:S4
O cdigo acima esI compIeIo. Para rod-Io, basIa saIv-Io num arguivo (vamos supor:
mIs.c), compiI-Io e dispar-Io do sheII. Supondo gue a pIaIaIorma possua suporIe a Posix
Ihreads e gue a impIemenIao de Posix Ihreads esIe|a na bibIioIeca pIhread a compiIao e
o disparo do servidor seriam assim:
$ cc -o mls mls.c -lplhread
$ .1mls &
6.7 SMTP e SPAM
O correio eIeIrnico sempre Ioi e conIinua sendo um dos servios mais imporIanIes da
!nIerneI (IaIvez o mais imporIanIe). ssa sua imporIncia, aIiada sua inerenIe
compIexidade, Iornam o correio eIeIrnico um Ioco de aIenes imporIanIe para o
proIissionaI gue Iida com a !nIerneI. ] ciIamos ao Iongo desIas noIas gue o proIocoIo
uIiIizado para o despacho de emaiIs na !nIerneI e o SMTP. O SMTP, como Iivemos | a
oporIunidade de exempIiIicar (ve|a a noIa TCP, mcccnismo dc trcnsportc gcncrico), e de IaIo
um proIocoIo de roIeamenIo de emaiIs, gue Iaz com gue a parIir do seu remeIenIe, eIe se|a
IransIerido de um servidor para ouIro, aIe aIingir a caixa posIaI aIme|ada.
AnIes gue a !nIerneI se Iornasse uma rede comerciaI, a operao IIpica de um servidor SMTP
assemeIhava-se ao de uma agencia de correio, no senIido em gue guaIguer pessoa pode
deposiIar neIa correspondencia para ser despachada. Uma pessoa no 8rasiI podia iniciar o
envio de um emaiI para o ]apo IransIerindo-o para um servidor SMTP nos sIados Unidos
(por exempIo). sIe servidor por sua vez veriIicaria gue o desIinaIrio IinaI no era da
inIraesIruIura IocaI, e porIanIo re-roIearia o emaiI para o seu desIino IinaI. Dessa Iorma eIe
Iaria o papeI de inIermedirio (reIay) sem Ier nada a ver com agueIa mensagem (isIo e, sem
Ier parIe nem com o originador e nem com o desIinaIrio).
ssa Iorma de IuncionamenIo dos servidores SMTP IaciIiIou a ao dos chamados spcmmcrs,
ou se|a, as pessoas gue enviam cmcils no solicitcdos (via de regra maIas direIas para a
divuIgao de produIos ou servios). aciIiIava Iambem a IaIsiIicao de emaiIs, visIo gue o
SMTP no incIui nenhum mecanismo de auIenIicao (assim como o servio IradicionaI de
correio Iambem no incIui).
Por esses moIivos, a operao IIpica dos servidores SMTP da !nIerneI vem mudando nos
IIimos anos, e Iendendo sempre a IimiIar cada vez mais os cIienIes gue podem reaIizar
Iransaes SMTP num dado servidor, e os cabeaIhos gue eIes podem gerar. AIuaImenIe
(agosIo de 2000), os servidores SMTP operando no 8rasiI em geraI aceiIam conexes TCP
apenas de cIienIes da inIraesIruIura IocaI (idenIiIicados peIo !P de origem), caso em gue o
servidor opera como reIay (inIermedirio), ou desIinados a caixas posIais Iocais, caso em
gue o servidor opera como desIino IinaI da mensagem. No primeiro caso, aIIeraes recenIes
Iem proibido o cIienIe de gerar um header com um campo From indicando um endereo
eIeIrnico gue no corresponda aIguma caixa posIaI da inIraesIruIura IocaI.
6.8 Nota sobre arguivos atachados
Arguivos aIachados em emaiIs so codiIicados como IexIo e incIuIdos no corpo do emaiI com
marcas indicadoras do inIcio e IinaI do aIIachmenI, a Iim de gue o desIinaIrio se|a capaz de
exIrair o arguivo. Assim, o envio dos aIIachmenIs e reaIizado peIo prprio SMTP e Iaz parIe
NoIas de AuIa de TCP/!P hIIp://www.ime.usp.br/~ueda/Idoc/noIasIcp.hImI
39 de 69 22-08-2013 17:S4
da Iransao SMTP gue exempIiIicamos anIeriormenIe. Ve|amos um emaiI compIeIo, com
header e corpo incIuindo um arguivo aIachado pegueno chamado righI.giI (um Icone):
Irom ueda@1me.usp.br Tue Au 1 17.29.18 2000
Relurn-Palh.
Rece1ved. irom hal by hal.home.unel {8.9.311.34}
1d RAA00916, Tue, 1 Au 2000 17.29.18 0MT
0ale. Tue, 1 Au 2000 14.29.18 -0300 {EST}
Irom. R1cardo ueda Karp1schek
X-Sender. ueda@hal.home.unel
To. ueda@l1slas
Subecl. lesle com allachmenl
Messae-T0.
MTME-vers1on. 1.0
Conlenl-Type. MuLTTPART1MTXE0, B0uN0ARY="-1463811840-1193269629-965150958=.906"
Slalus. 0
X-Slalus.
X-KeyWords.
X-uT0. 1871
Th1s messae 1s 1n MTME iormal. The i1rsl parl should be readable lexl,
Wh1le lhe rema1n1n parls are l1kely unreadable W1lhoul MTME-aWare lools.
Send ma1l lo m1me@docserver.cac.Wash1nlon.edu ior more 1nio.
---1463811840-1193269629-965150958=.906
Conlenl-Type. TEXT1PLATN, charsel=uS-ASCTT
lesle
---1463811840-1193269629-965150958=.906
Conlenl-Type. TMA0E10TI, name="r1hl.1i"
Conlenl-Transier-Encod1n. BASE64
Conlenl-T0.
Conlenl-0escr1pl1on.
Conlenl-01spos1l1on. allachmenl, i1lename="r1hl.1i"
R0l000lhIAAWAKEAAP1118z11WAAAAAAACR+TlRoaXMYXJ0T0lzT0luTRRo
ZSBWdWJsaWMZ09lYWluL1BLZXZpb1BTdWdoZXMsT0lldmluaEBlaXuY29l
LCBTZXB0ZW11ZXTMTk5NAh+BAAABACWAAAAAIAAWAAACK4yPqcsd4pqA
uu1az8v58+h9ul1IomWeSKpqZvXCXvZsd03duI7zW1uIAA0W==
---1463811840-1193269629-965150958=.906--
Observe a Iinha gue marca o inIcio do arguivo aIachado, e gue se repeIe ao seu IinaI.
Observe gue eIa consIa Iambem do header do emaiI. Repare gue o aIIachmenI possui um
cabeaIho com inIormaes sobre o arguivo. inaImenIe, o arguivo e incIuIdo no corpo do
emaiI aps a sua converso para um IormaIo gue uIiIiza apenas caracIeres ASC "visIveis". No
caso, Ioi uIiIizada a converso 8AS64. Uma concIuso imporIanIe gue se pode Iirar dessa
descrio e gue prohlcmcs cnvolvcndo cttcchmcnts, por exempIo guando o desIinaIrio no
consegue exIrair os arguivos, so da aIada do soIIware gue gerou o aIIachmenI e do
soIIware gue IenIou exIrair o aIIachmenI. ProbIemas desse Iipo no so causados peIos
servidores SMTP inIermedirios, mas sim por IaIha de aIgum dos cIienIes de emaiI (o do
remeIenIe ou o do desIinaIrio).
6.9 Servios standalone e servios inetd
m pIaIaIormas Unix-Iike exisIe um servidor especiaI chamado inetd. Ie e responsveI peIo
aIendimenIo a mIIipIos servios, mas no peIa impIemenIao desses servios. A
impIemenIao precisa esIar presenIe em ouIros servidores (programas) especiaIizados gue
so disparados peIo ineId via Iork seguido de um exec. De IaIo, vimos numa noIa anIerior
gue o servio de disparo de um sobprocesso no Unix e o fork. nIreIanIo, nesse caso o
subprocesso e uma cpia do processo originaI, e roda o mesmo cdigo. Se o subprocesso
NoIas de AuIa de TCP/!P hIIp://www.ime.usp.br/~ueda/Idoc/noIasIcp.hImI
40 de 69 22-08-2013 17:S4
Iiver gue rodar um cdigo diIerenIe, obIido a parIir de um arguivo execuIveI no IiIesysIem,
a chamada do Iork, no cado do subprocesso, deve ser seguida da chamada do exec.
A IinaIidade do ineId e concenIrar o aIendimenIo de muiIos servios num nico servidor.
Com isso obIem-se aIguma economia de recursos, se os servios Iorem de baixa demanda.
ObIem-se Iambem um mecanismo comum de auIorizao baseada no endereo ou nomes
dos cIienIes, gue e acionado peIo ineId anIes do disparo do servidor especiaIizado. O mais
conhecido desses mecanismos e o Icp wrapper de WieIse Venema. Servios gue em geraI so
aIendidos peIo ineId so o TLNT, os servios "r" (RSH, RCP, eIc) e POP. Servios gue s
vezes so aIendidos peIo ineId so o TP e o SMTP. Os servios gue o ineId aIende e a
aIivao do wrapper para cada um deIes esIo reIacionados no arguivo /eIc/ineId.conI.
AIguns servidores (por exempIo o apache, ao menos nas suas verses mais anIigas) oIerecem
a aIIernaIiva do seu aIendimenIo poder ser IeiIo por eIe mesmo (nesse caso diz-se gue eIe e
um servidor "sIandaIone") ou via ineId. Do ponIo de visIa da arguiIeIura de um servidor ou
do aIendimenIo de um servio, o gue se deve Ier em visIa guando se usa ou no o ineId e
gue, aIem do | diIo (ou se|a, gue o ineId concenIra vrios servios num nico servidor gue
esI associado a um wrapper), e gue o Iork-exec Iaz com gue mIIipIas cpias de um mesmo
programa no comparIiIhem a mesma rea de memria para o cdigo, e porIanIo o
consumo IoIaI de recursos no caso de servios de demanda eIevada e maior.
Questes
6.1 LocaIize no servidor de IIp da MicrosoII a especiIicao da AP! Winsock.
6.2 screva usando guaIguer Iinguagem de programao um proxy web minimaI.
6.3 Suponha gue a sua empresa uIiIize um cIienIe TCP windows (por exempIo o cIienIe de
um sisIema adminisIraIivo) numa rede privada, e gue se preIenda agora uIiIiz-Io na
!nIerneI. uando esse soIIware Ioi desenvoIvido no se previu mecanismos de
cripIograIao, e voce no dese|a gue as inIormaes IraIeguem aberIas na !nIerneI. MosIre
como se pode Iazer com gue as chamadas dos servios da winsock.dII gue esse cIienIe
reaIiza se|am capIuradas por uma ouIra DLL gue cripIograIar as inIormaes enviadas e
descripIograIar as recebidas, evenIuaImenIe sem necessidade de aIIerar os IonIes do cIienIe
e/ou recompiI-Io.
6.4 uaI e a diIerena enIre o seIecI da AP! C do Unix e o seIecI oIerecido peIo Winsock?
6.S uaI e a diIerena enIre os espaos de nomes de descriIores da AP! de sockeIs do Unix e
do Winsock 1.1? ue conseguencias isso Iem para guem porIa soIIwares de Unix para
Windows?
6.6 uanIos sockeIs uma mesma apIicao pode aIocar na pIaIaIorma em gue voce IrabaIha?
6.7 Suponha gue voce esIe|a pro|eIando um compuIador de bordo para ser coIocado nas
viaIuras de uma IroIa. Suponha gue voce opIe por uIiIizar Linux neIes. uais componenIes
do Linux seriam necessrios para gue esse compuIador Iosse capaz de conecIar num
provedor !nIerneI aIraves de um IeIeIone ceIuIar e rodar um soIIware de apIicao para
enviar e/ou receber inIormaes para/de uma cenIraI de conIroIe? (nesIe caso naIuraImenIe
NoIas de AuIa de TCP/!P hIIp://www.ime.usp.br/~ueda/Idoc/noIasIcp.hImI
41 de 69 22-08-2013 17:S4
o dese|veI e minimizar o uso de memria, e porIanIo enconIrar o con|unIo mInimo de
componenIes de soIIware)
6.8 Voce conhece aIguma impIemenIao de TCP/!P para Windows verso 3? e para MS-DOS?
6.9 Descreva como operaria um programa gue se baseasse no comando VRY do SMTP para
IenIar checar se um dado endereo eIeIrnico exisIe, sem IenIar enviar um emaiI para eIe.
6.10 Descreva em Iinhas gerais como deve operar um soIIware gue se proponha a copiar
para o seu HD Iodas as pginas de um servidor web da !nIerneI. Descubra aIgum soIIware
na !nIerneI gue reaIize essa operao.
6.11 Descreva em Iinhas gerais como deve operar um soIIware gue se proponha a submeIer
um IormuIrio de Iorma auIomIica, sem necessidade de preenche-Io manuaImenIe aIraves
do browser.
7. Lstudo de caso: RS-232
A interface RS-232
Pinagem: TX, RX, CND
Conexo de duas seriais
8andas IIpicas
ComprimenIo mximo de cabo
DiIogo simpIes aIraves do emuIador de IerminaI
Uso excIusivo do meio IIsico
A apIicao comunica-se com o driver
ProIocoIos de IransIerencia de arguivos
CoIocando a camada !P no Iugar do IerminaI
Uso comparIiIhado do meio IIsico
A apIicao comunica-se com a camada TCP
A camada de enlace (Link Level)
Descrio do SL!P
LimiIaes do SL!P
Recursos adicionais do PPP
Modems
Comunicao seriaI de Ionga disIncia e moduIao
DiIogo com o modem aIraves do emuIador de IerminaI
AIguns comandos AT
TesIe de PSK
Notas
7.1 IP em comunicao serial
NoIas de AuIa de TCP/!P hIIp://www.ime.usp.br/~ueda/Idoc/noIasIcp.hImI
42 de 69 22-08-2013 17:S4
A comunicao seriaI e um paIco especiaImenIe inIeressanIe para esmiuarmos o
IuncionamenIo do TCP/!P em virIude da sua simpIicidade. Uma boa compreenso de como o
!P opera nesIe caso IaciIiIa o enIendimenIo de como uma VPN Iunciona.
m PCs enconIramos IipicamenIe porIas seriais RS-232 operando em veIocidades como 9600,
19200 ou 11S200 biIs por segundo. O proIocoIo RS-232 IransIere os biIs um a um aIraves do
pino TX. Ie apresenIar uma Ienso de -3 a -1S voIIs (conIra a Ierra) para codiIicar um biI 0
e uma Ienso de 3 a 1S voIIs para codiIicar um biI 1. uando a porIa no esI
IransmiIindo, o pino TX permanece no esIado Igico 0. A Iransmisso de um byIe comea
com a Iransmisso do sIarI biI (1), em seguida IransmiIem-se Iodos os biIs do byIe e aps eIes
a paridade e o sIop biI. O chaveamenIo enIre o IinaI da Iransmisso de um biI e o inIcio da
Iransmisso do biI seguinIe no e sinaIizado, mas e sincronizado peIo recepIor com base na
comum veIocidade conIigurada nas duas ponIas.
O papeI do hardware reduz-se ao esguema descriIo no pargraIo anIerior. 8em, como e gue
o conceiIo de pacoIe !P ir enIo encaixar-se denIro dessa modaIidade de comunio?
NaIuraImenIe e necessrio esIabeIecer aIguma conveno de sinaIizao de inIcio e/ou de
IinaI de pacoIe. A primeira dessas convenes a ser criada Ioi o SL!P (seriaI Iine !P).
O SL!P e basIanIe simpIes. Um byIe 0xC0 ("ND") indica IinaI de pacoIe. Se um pacoIe
conIiver o byIe 0xC0 no seu cabeaIho ou na rea de dados, enIo eIe e IransmiIido como o
par 0xD8 0xDC. , se um pacoIe conIiver o byIe 0xD8 ("SC"), enIo eIe e IransmiIido como o
par 0xD8 0xDD. sIa codiIicao e IeiIa peIo kerneI do Linux no mduIo drivers/neI/sIip.c.
Ve|amos o Irecho de cdigo C correspondenIe:
1* SLTP prolocol characlers. *1
#dei1ne EN0 0300 1* 1nd1cales end oi irame *1
#dei1ne ESC 0333 1* 1nd1cales byle sluii1n *1
#dei1ne ESC_EN0 0334 1* ESC ESC_EN0 means EN0 `dala` *1
#dei1ne ESC_ESC 0335 1* ESC ESC_ESC means ESC `dala` *1
curucteres esecus do SLIP (drvers/net/sl.h)
1nl
sl1p_esc{uns1ned char *s, uns1ned char *d, 1nl len}
{
uns1ned char *plr = d,
uns1ned char c,
1*
* Send an 1n1l1al EN0 characler lo ilush oul any
* dala lhal may have accumulaled 1n lhe rece1ver
* due lo l1ne no1se.
*1
*plr++ = EN0,
1*
* Ior each byle 1n lhe packel, send lhe appropr1ale
* characler sequence, accord1n lo lhe SLTP prolocol.
*1
Wh1le {len-- > 0} {
sW1lch{c = *s++} {
case EN0.
*plr++ = ESC,
*plr++ = ESC_EN0,
break,
case ESC.
*plr++ = ESC,
*plr++ = ESC_ESC,
break,
deiaull.
*plr++ = c,
NoIas de AuIa de TCP/!P hIIp://www.ime.usp.br/~ueda/Idoc/noIasIcp.hImI
43 de 69 22-08-2013 17:S4
break,
)
)
*plr++ = EN0,
relurn {plr - d},
)
reuruo do ucote uru trunsmsso SLIP (drvers/net/sl.c)
AIuaImenIe o SL!P e preIerido em Iavor do PPP. As vanIagens mais visIveis do PPP so o
suporIe auIenIicao e conIigurao auIomIica de aIguns parmeIros (no SL!P, os
endereos !P precisam ser previamenIe conhecidos peIo cIienIe), o suporIe a mIIipIos
proIocoIos (e no apenas ao !P). m conIraparIida, eIe provoca um maior consumo de banda
de conIroIe do gue o SL!P.
Questes
7.1 uais so os Iamanhos dos headers !P e TCP num Iink gue IraIega SL!P comprimido?
7.2 Crie um Iink SL!P enIre duas mguinas windows (ou uma windows e uma unix).
Descreva a pinagem do cabo gue voce uIiIizou, e se Ioi necessrio adicionar aIgum device
driver no windows. Descreva como voce criou as roIas em cada uma das mguinas.
7.3 Vimos gue um PC gue aIenda conexes discadas necessiIa para cada cIienIe simuIIneo
uma Iinha IeIeInica, um modem e uma porIa seriaI. uanIas seriais voce acha gue um PC
pode suporIar (evenIuaImenIe aIraves da adio de aIgum hardware exIra)?
7.4 Ao Iongo de uma conexo discada (por exempIo guando de casa voce uIiIiza o seu
provedor de acesso) os modems podem renegociar o proIocoIo de moduIao, e
evenIuaImenIe Iazendo cair a veIocidade de IransIerencia. CiIe um modo simpIes de se
saber duranIe o uso se ocorre renegociao enIre os modems.
7.S Na IIima Copa do Mundo praIicamenIe Iodas agencias de noIIcias recebiam IoIograIias
Iiradas no campo aIraves de cmaras IoIogrIicas digiIais, e enviadas imediaIamenIe por
meios eIeIrnicos. Suponha gue um repIer IoIogrIico disponha de uma cmara digiIaI
convencionaI, um noIebook e um IeIeIone ceIuIar. uanIo Iempo depois deIe Iirar uma
IoIograIia eIa poder esIar disponIveI na redao a Iim de ser disponibiIizada via web?
7.6 AIgumas pIaIaIormas podem uIiIizar uma porIa paraIeIa como disposiIivo de roIeamenIo
!P. uanIos byIes por segundo podem ser IranIeridos por um IaI disposiIivo?
7.7 Compare o consumo IIpico de recursos de comunicao (isIo e, Iempo de Iransmisso) da
Iransmisso de um documenIo por Iax, emaiI ou aIgum servio de impresso.
8. TCPjIP e segurana
Llementos bsicos
iIIragem de pacoIes e IirewaIIs
Segurana como IruIo do isoIamenIo
nvio de senhas in-cIear
AuIenIicao por nomes e os servios "r"
NoIas de AuIa de TCP/!P hIIp://www.ime.usp.br/~ueda/Idoc/noIasIcp.hImI
44 de 69 22-08-2013 17:S4
CripIograIao e aIgoriImos de chave pbIica
ARP SpooIing
Operao de um Iayer cripIograIador
AIagues gue procuram esgoIar recursos
Notas
8.1 Observaes gerais sobre segurana em TCPjIP
A segurana de redes e evidenIemenIe um Iema gue Iranscende o TCP/!P, e envoIve desde
guesIes reIacionados com os princIpios IIsicos, eIeIromagneIicos ou pIicos de
IuncionamenIo da comunicao, aIe a chamada "engenharia sociaI", gue esIuda (por
exempIo) o comporIamenIo das pessoas em reIao escoIha ou ao uso de senhas.
NaIuraImenIe no preIendemos agui abordar Iodas essas guesIes, mas apenas Iazer
aIgumas observaes prIicas no IocanIe Iorma com gue os Iemas da segurana e do
TCP/!P se enIreIaam. De IaIo, a anIise ou o pIane|amenIo de uma poIIIica de segurana em
redes !P dependem de um conhecimenIo sIido de TCP/!P.
Na prIica, muiIas ou IaIvez a maior parIe dos probIemas de segurana gue ocorrem na
!nIerneI (como invaso de mguinas com desIruio ou roubo de inIormaes), e
conseguencia direIa da exisIencia de bugs de soIIware gue so expIorados peIo aIacanIe.
Nesse senIido, Iodo conhecimenIo gue o proIissionaI puder Ier a nIveI de programao ser
IiI para a sua capaciIao. No obsIanIe, a aIiIude do proIissionaI de !nIerneI IrenIe a bugs
de soIIware e IundamenIaImenIe o esIar cienIe de Iodos os componenIes de soIIware em uso
(produIos e respecIivas verses), e aIenIo aos evenIos inesperados Iogados peIa mguina e
aos anncios de probIemas de segurana descoberIos nesses componenIes, a Iim de
rapidamenIe proceder ao upgrcdc deIes. !sso consIiIui naIuraImenIe um encargo especIIico
da adminisIrao de sisIemas, e por isso no iremos abord-Io.
No gue concerne direIamenIe ao TCP/!P (em Iodas as suas camadas), pode-se dizer gue a
segurana gira sempre em Iorno de dois eixos bsicos, gue so o isoIamenIo IIsico e o
suporIe a cripIograIao nos proIocoIos.
Assim, guando pensamos em uIiIizar um swiIch gue impea o broadcasI de pacoIes eIherneI
para Iodas as inIerIaces da LAN a Iim de precaver-nos conIra sniIIers, esIamos isolcndo.
uando impIanIamos um IirewaII para bIoguear as porIas ou os !Ps gue no oIerecem
servios !nIerneI, esIamos isolcndo. uando dividimos a rede privada em duas meIades,
uma excIusiva para uso inIerno e ouIra misIa, com mguinas gue oIerecem servios para a
rede inIerna e para a !nIerneI, esIamos isolcndo. uando bIogueamos a enIrada de emaiIs
com aIIachmenIs para eviIar a enIrada de viruses gue expIoram debiIidades de segurana de
aIguns cIienIes de correio eIeIrnico, esIamos isolcndo. uando dividimos os servios por
vrias mguinas a Iim de no somarmos as debiIidades de segurana de Iodos eIes num
nico ponIo, esIamos isolcndo.
Por ouIro Iado, guando uIiIizamos um servidor web seguro no Iugar de um no seguro num
siIe de comercio eIeIrnico, esIamos criptogrcjcndo. uando subsIiIuimos o IeIneI peIo ssh
como proIocoIo para abrir sesses remoIas, ou o IIp peIo ssh, esIamos criptogrcjcndo, assim
como guando impIanIamos uma VPN aIraves de um IneI TCP com cripIograIao nas duas
NoIas de AuIa de TCP/!P hIIp://www.ime.usp.br/~ueda/Idoc/noIasIcp.hImI
4S de 69 22-08-2013 17:S4
ponIas. A cripIograIao prescinde do isoIamenIo IIsico, e opIa por Iornar inIiI a capIura da
inIormao.
So especiaIizaes parIicuIarmenIe imporIanIes para a rea de segurana a IiIIragem de
pacoIes e Iodas as Iormas de auIenIicao. Iambem perIinenIe s guesIes de segurana os
proIocoIos para sincronizao de reIgios, como o NTP, para o guaI exisIe muiIos servidores
na !nIerneI. Sem eIes, Iorna-se compIicado rasIrear evenIos ao Iongo de vrias mguinas,
pois os Iogs gue eIas geram apresenIaro IimesIamps dessincronizados.
8.2 Filtragem de pacotes
A IiIIragem de pacoIes consisIe em apIicar ao roIeamenIo de pacoIes regras de descarIe gue
impeam a enIrada ou a saIda de pacoIes dirigidos ou provenienIes de deIerminados
endereos ou porIas. De IaIo, vimos ao comenIar o roIeamenIo !P gue esIe baseia-se na
apIicao de regras aos dados de cabeaIho de cada pacoIe !P. 8em, a IiIIragem consisIe em
adicionar regras gue ao inves de servirem para escoIher a inIerIace de envio de pacoIe,
presIam-se a deIerminar se um pacoIe ser eIeIivamenIe roIeado ou meramenIe descarIado.
NoIe gue no momenIo em gue o pacoIe vai ser roIeado, eIe e um buIIer na memria da
mguina. DescarIar esse pacoIe signiIica meramenIe Iiberar esse buIIer para ser reuIiIizado.
A IiIIragem de pacoIes pode ser reaIizada por um eguipamenIo especiaIizado (um
"IirewaII"), peIo roIeador gue opera como gaIeway da rede corporaIiva com a !nIerneI, ou
por aIguma mguina inIermediria. A IiIIragem de pacoIes IreguenIemenIe e IeiIa peIa
mesma mguina gue impIemenIa a Iraduo de endereos para possibiIiIar s mguinas da
rede inIerna o acesso aos servios da !nIerneI. Ve|amos um caso prIico baseado no Linux.
# 1piWadm -I -a accepl -m -S 192.168.0.0116
# 1piWadm -T -P lcp -a acc -S 0.0.0.010 -0 192.168.0.1132 80
# 1piWadm -T -P lcp -a acc -S 0.0.0.010 -0 192.168.0.1132 53
# 1piWadm -T -P lcp -a acc -S 0.0.0.010 -0 192.168.0.1132 25
# 1piWadm -T -P lcp -a re -S 0.0.0.010 -0 192.168.0.0116 1.1023
ssa seguencia de comandos incIui, nesIa ordem, cinco regras de IiIIragem de pacoIes. A
inIerIace de rede eIherneI esI conIigurada com o !P 192.168.0.1. A primeira regra reaIiza a
Iraduo de endereos (mascaramenIo, ou "naI") apIicando-a a Iodos os pacoIes
provenienIes do neIwork 192.168.0.0/16. A segunda Iaz com gue os pacoIes dirigidos para a
mguina IocaI na porIa TCP 80 (HTTP) se|am aceiIos. SimiIarmenIe, as duas seguinIes abrem
as porIas S3 (DNS) e 2S (SMTP). A guinIa Iaz com gue Iodos os pacoIes TCP dirigidos para a
rede IocaI em guaisguer porIas TCP de 1 a 1023 se|am re|eiIados. Assim, a um pacoIe dirigido
porIa 80 ser apIicada anIes a regra de aceiIe (a segunda), mas a um pacoIe dirigido porIa
110, ser apIicada a regra de re|eio (a guinIa).
NoIe gue essas regras no bIoguearo as porIas aIIas dos cIienIes (acima de 1024). !sso e
necessrio para gue os cIienIes da rede inIerna consigam abrir conexes com servidores da
!nIerneI.
Obs. m vcrscs rcccntcs do Linux o comcndo jwudm pcssou c scr chcmcdo jwudm-
wruer.
8.3 Autenticao
NoIas de AuIa de TCP/!P hIIp://www.ime.usp.br/~ueda/Idoc/noIasIcp.hImI
46 de 69 22-08-2013 17:S4
De modo geraI, auIenIicar consisIe em provcr c idcntidcdc. Assim, guando nos idenIiIicamos
peranIe um servidor dizendo gue somos o usurio IuIano, o servidor espera gue provemos
isso mosIrando gue conhecemos um segredo gue apenas o usurio IuIano conhece (uma
senha). ssa e a Iorma mais comum de auIenIicao, e esI presenIe em vrios proIocoIos
TCP, como por exempIo o TP, o POP e o TLNT:
$ lelnel 192.168.0.2
Try1n 192.168.0.2...
Connecled lo 192.168.0.2.
Escape characler 1s `^]`.
Red Ral L1nux release 4.2 {B1llmore}
Kernel 2.0.36 on an alpha
lo1n. ueda
PassWord.
|ueda@ali ueda]$
m muiIos casos, a auIenIicao Iaz uso de uma base de dados cenIraIizada gue possui a
IabeIa de Iodos os usurios e as suas senhas, ou enIo "assinaIuras" das suas senhas. NesIe
caso, Iaz-se necessrio exisIir um proIocoIo de auIenIicao gue deIina a Iorma da
comunicao enIre a mguina gue esI auIenIicando o usurio e a mguina gue conIem a
base de dados de auIenIicao. sses proIocoIos esIo impIemenIados na Iorma de servios
baseados em TCP/!P: o N!S, gue cenIraIiza as inIormaes de Iogin em redes Unix, o RAD!US,
uIiIizado para cenIraIizar inIormaes de auIenIicao PPP em provedores de acesso e
Iambem os servios de auIenIicao prprios do comparIiIhamenIo de recursos do
Windows, gue podem operar sobre TCP/!P.
Uma auIenIicao bem-sucedida provoca a concesso de priviIegios para agueIe gue
auIenIicou-se. sse priviIegio pode consisIir na capacidade de Ier uma caixa posIaI (no caso
do proIocoIo POP), ou de roIear pacoIes aIraves do provedor de acesso (no caso do PPP), ou
de abrir uma sesso de comandos num compuIador remoIo (no caso do TLNT ou do SSH),
ou de Iazer upIoad ou downIoad de arguivos (no caso do TP).
Assim, e IciI enIender a reIao direIa da auIenIicao nas suas diversas Iormas com a
segurana de redes. A obIeno de priviIegios pode ser um primero passo para uma ao
criminosa, e por isso a auIenIicao deve esIar cercada por muiIos cuidados na deIinio dos
proIocoIos. Ao Iongo da hisIria do TCP/!P os cuidados dispensados auIenIicao nos
diversos proIocoIos nem sempre previram os probIemas gue no IuIuro surgiriam (a !nIerneI
originaImenIe era uma rede academica uIiIizada por pesguisadores, e posIeriormenIe
Iornou-se uma rede comerciaI de uso generaIizado).
8.4 Trfego de senhas in-clear
Vrios proIocoIos gue uIiIizam o TCP como IransporIe incIuem mecanismos de auIenIicao
gue envoIvem o envio do cIienIe para o servidor de um username e de um password. Como
sabemos, o cIienIe envia dados ao servidor escrevendo-os no seu descriIor de comunicao
(sockeI), e o Iayer de TCP/!P do cIienIe envia esses dados seguenciaImenIe ao servidor na
rea de dados de um ou mais pacoIes.
No caso de no envio do username e do password no ser reaIizado nenhum Iipo de
cripIograIao (nesIe caso diz-se gue oo envio e IeiIo in-clccr), enIo eIes podero ser
NoIas de AuIa de TCP/!P hIIp://www.ime.usp.br/~ueda/Idoc/noIasIcp.hImI
47 de 69 22-08-2013 17:S4
capIurados em mguinas inIermedirias aIraves do uso de sniIIers. Ao Iongo da hisIria do
TCP/!P, vrios dos proIocoIos gue envoIvem auIenIicao Ioram criados sem nenhum
suporIe para a cripIograIao dos dados de auIenIicao. Os mais uIiIizados desses
proIocoIos so o POP3, o TP e o TLNT. O HTTP Iambem incIui um mecanismo de
auIenIicao com envio de dados in-cIear, mas eIe e muiIo pouco uIiIizado (os siIes gue
auIenIicam usurios, como por exempIo Io|as onIine, em geraI impIemenIam ouIros
mecanismos de auIenIicao, ao nIveI da apIicao).
O uso desIes proIocoIos deve preIerenciaImenIe ser IimiIado a inIraesIruIuras inIernas, a
Iim de gue dados de auIenIicao corram um risco menor de serem capIurados. Vrias
aIIernaIivas ao TLNT e ao TP Ioram sendo criadas nos IIimos anos. AgueIa gue vem aos
poucos esIabeIecendo-se como padro, principaImenIe para adminisIrao remoIa de
mguinas e siIes, e o SSH. No exisIe ho|e uma aIIernaIiva padronizada para o caso de
downIoad de emaiIs, enIreIanIo vrios sisIemas de webmaiI cripIograIam os dados enviados
e recebidos aIraves do HTTPS.
Questes
8.1 O gue e auIenIicao?
8.2 LocaIize na !nIerneI um soIIware gue rodando na sua mguina se|a capaz de capIurar o
sIream TCP de uma conexo (hIIp, smIp, pop, eIc) reaIizada por uma ouIra mguina da LAN.
xpIigue porgue um soIIware como esses e uma IerramenIa de IrabaIho para guem Iida com
neIwork prrogramming.
8.3 A pessoa gue IrabaIha na mesa ao Iado da sua e capaz de capIurar os dados do seu carIo
de crediIo guando voce reaIiza uma compra num servidor seguro?
8.4 Por gue a disIribuio dos diIerenIes servios TCP (web, IIp, emaiI) por vrias mguinas
pode conIribuir para Iornar uma rede mais segura?
8.S xpIigue de gue Iorma e possIveI a um wrapper UDP deIerminar o !P remoIo.
8.6 Suponha gue uma empresa muIIinacionaI dese|e gue Iodos os seus Iunicionrios uIiIizem
endereos eIeIrnicos com um nico domInio (por exempIo: empresa.com), ao inves de
domInios em hierarguias diIerenIes (ou se|a, empresa.com, empresa.com.br,
empresa.com.Iw, eIc). xpIigue o gue e preIerIveI ao nIveI de segurana: permiIir gue os
Iuncionrios ao Iongo do mundo acessem um servidor POP corporaIivo nico, ou reaIizar o
Iorward a parIir do servidor smIp cenIraI dos emaiIs para ouIros servidores smIp
disIribuIdos peIos vrios escriIrios mundo aIora.
8.7 O gue e um sniIIer?
8.8 Suponha gue voce se|a o responsveI na sua empresa peIa deIinio das normas de
segurana da rede corporaIiva. uais servios de inIormao da !nIerneI voce exigiria gue o
pessoaI Iecnico responsveI consuIIasse periodicamenIe?
8.9 8aixe da !nIerneI o SSLeay (impIemenIao Iree do SSL) e escreva uma apIicao com
um cIienIe e um servidor eIemenIares como os gue IesIamos em saIa de auIa (a prpria
NoIas de AuIa de TCP/!P hIIp://www.ime.usp.br/~ueda/Idoc/noIasIcp.hImI
48 de 69 22-08-2013 17:S4
disIribuio do SSLeay Iraz aIguns exempIos).
8.10 O gue e WORM?
9. UDP
Os protocolos de transporte IP
TCP
UDP
ConceiIo de reIiabiIiIy
ConceiIo de besI eIIorI
UDP
ApIicaes gue no exigem reIiabiIiIy
Audio e vIdeo
DNS
MuIIicasI
Tamanho mximo de um pacoIe UDP
O conceiIo de IragmenIao
TesIe do cIienIe/servidor UDP
Notas
9.1 O Protocolo UDP
m sua vasIa maioria, os servios disponIveis na !nIerneI baseiam-se em TCP, gue por incIuir
o suporIe reIransmisso e ordenao dos pacoIes recebidos, garanIe a enIrega da
seguencia de byIes enviada por cada uma das parIes, sem Iacunas e na mesma ordem. O TCP
e por esse moIivo diIo rclichlc.
m muiIas siIuaes prIicas, enIreIanIo, essa propriedade (a de ser rclichlc) pode ser
desnecessria ou mesmo indese|ada. O exempIo mais comum de Iais siIuaes e o broadcasI
de udio ou de vIdeo. Numa Iransmisso de rdio ou de TV, a reIransmisso de pacoIes
provocaria aIrasos cumuIaIivos indese|ados, pois a simuIIaneidade (por exempIo no caso de
evenIos esporIivos) e mais imporIanIe do gue a apresenIao escrupuIosa de Iodos e cada
um dos guadros.
No TCP/!P os servios gue no necessiIam ser rclichlc uIiIizam UDP. O UDP Iambem
baseia-se no roIeamenIo oIerecido peIo !P, ou se|a, o pacoIe !P pode carregar IanIo um
pacoIe TCP guanIo um pacoIe UDP (Iambem chamado daIagrama). Observe gue no
cabeaIho !P h um campo indicando o proIocoIo sub|acenIe, o cdigo do TCP e 6 e o do UDP
e 17.
source porI (16) desIinaIion porI (16)
IengIh (16) checksum (16)
NoIas de AuIa de TCP/!P hIIp://www.ime.usp.br/~ueda/Idoc/noIasIcp.hImI
49 de 69 22-08-2013 17:S4
O cabealho UDP
De Iorma semeIhanIe ao TCP, o UDP Iambem incIui o conceiIo de porIa. Cada servio UDP
esI associado a uma porIa Iixa, e o cIienIe ao enviar pacoIes para agueIa porIa necessiIa
aIocar uma porIa UDP IocaI. No obsIanIe, o UDP dispensa o conceiIo de concxo, havendo
apenas cnvios independenIes (cada um correspondenIe a uma mensagem de no mximo
6SS3S byIes) de uma origem UDP (!P e porIa) para um desIino UDP.
Obs. Sc o tcmcnho dc mcnscgcm UDP (ccrcscido dos cchcclhos UDP c |P) supcrcr o tcmcnho
mximo dc pccotcs (MTU) suportcdo pclc intcrjccc, cssc pccotc scr jrcgmcntcdo. D conccito
dc jrcgmcntco no cst scndo cohcrto ncstcs notcs, clc c um jccturc co nvcl do |P, c no
dcvc scr conjundido com c diviso jcitc pclo TCP dc um strccm dc hytcs numc scqucncic dc
scgmcntos. A jrcgmcntco do |P consistc cm quchrcr cm vrics pcrtcs um pccotc cujo
tcmcnho supcrc o MTU dc intcrjccc dc cnvio. lc podc ocorrcr cm quclqucr pccotc |P
sujicicntcmcntc grcndc, scjc clc UDP ou TCP.
O comando netstat pode exibir os descriIores UDP Iocais:
$ nelslal -n -u -a
Acl1ve Tnlernel connecl1ons {servers and eslabl1shed}
Prolo Recv- Send- Local Address Iore1n Address Slale
udp 0 0 192.168.0.1.53 0.0.0.0.*
udp 0 0 127.0.0.1.53 0.0.0.0.*
udp 0 0 0.0.0.0.37 0.0.0.0.*
No caso vemos as porIas 37 (servio time) e S3 (DNS). A mensagem "AcIive !nIerneI
ConnecIions" Iaz parIe da saIda dcjcult do neIsIaI, gue Iambem pode exibir conexes TCP.
Nesse nosso exempIo no se IraIam de conexes, mas apenas das porIas Iocais apIas para
recebimenIo de pacoIes UDP.
9.2 UDP e multicast
O UDP e Iambem uIiIizado para impIemenIar servios "muIIicasI". O TCP pressupe apenas
dois parIicipanIes. No caso de uma Iransmisso com uma origem e muiIos desIinos, um
mecanismo de IransporIe do Iipo um-para-muiIos e necessrio. O TCP/!P preve o conceiIo de
roIeamenIo um-para-muiIos, mas os recursos gue eIe oIerece para isso no chegaram a ser
um padro eIeIivamenIe usado na !nIerneI. m conIraparIida, e possiveI impIanIar servios
do Iipo um-para-muiIos ao nIveI da apIicao, e em casos assim uIiIiza-se UDP.
NesIe caso, a apIicao gue origina a mensagem envia-a para o n seguinIe, esIe (onde a
mesma apIicao esI rodando) expIode-a para ouIros, esIes ouIros para mais ouIros, e assim
por dianIe, a Iim de gue Iodos os desIinaIrios se|am aIingidos. NoIe gue o roIeamenIo nesse
caso s pode ser IeiIo em inIraesIruIuras privadas, por no se IraIar do roIeamenIo !P
sIandard, mas depender da exisIencia de uma apIicao especIIica rodando em cada um dos
ns inIermedirios.
O muIIicasI pode ser comparado ao SMTP. Uma nica Iransao SMTP pode IransIerir um
emaiI uma nica vez do seu remeIenIe para o servidor SMTP imediaIo, mas especiIicando
mIIipIos desIinaIrios. sse servidor gue a recebe por sua vez expIode-a em vrios
"enveIopes", cada um conIendo os Iodos desIinaIrios de um mesmo domInio, e reaIiza uma
nova Iransao de envio para cada enveIope, desIinada ao MX do domInio em guesIo. Cada
NoIas de AuIa de TCP/!P hIIp://www.ime.usp.br/~ueda/Idoc/noIasIcp.hImI
S0 de 69 22-08-2013 17:S4
enveIope por sua vez, ao ser recebido no SMTP deIiniIivo, Iaz com gue a mensagem se|a
expIodido por Iodas as caixas posIais neIe especiIicadas.
Questes
9.1 Por gue se diz gue TCP e "reIiabIe" e UDP e "besI-eIIorI"?
9.2 Use o Icpdump e o neIsIaI para saber se um servio de broadcasI da !nIerneI gue voce
conhece (esIao de rdio, TV, poinIcasI, eIc) uIiIiza UDP ou TCP.
9.3 Crie um proIocoIo UDP ou TCP minimaI para sincronizao de reIgios (isIo e, o cIienIe
obIem do servidor o horrio aIuaI e acerIa o seu reIgio a parIir desse dado obIido), e
impIemenIe o cIienIe e o servidor usando a pIaIaIorma e a Iinguagem de programao de
sua preIerencia.
9.4 O gue e muIIicasI? muIIicasI sobre !P e "reIiabIe"?
9.S sIime a banda do Iink de um cIienIe de um sisIema de broadcasI de inIormaes de
mercado, gue aIuaIize uma IeIa de 80 Iinhas e 24 coIunas com uma IabeIa de coIaes
razo de uma aIuaIizao a cada segundo.
10. Redes privadas
TCPjIP numa rede privada
ndereos !Pv4 para redes privadas
Um rooI nameserver privado
SMTP, POP e HTTP na rede privada
ConceiIos de !nIerneI, inIraneI, exIraneI
Conexo de uma rede privada Internet
MascaramenIo (NAT)
Proxy servers
ConceiIo de proxy server
!nIermediao
CacheamenIo
8usca
VPN
o conceiIo
mguinas endpoinI
roIas
Notas
10.1 Internet, internets, intranets e extranets
NoIas de AuIa de TCP/!P hIIp://www.ime.usp.br/~ueda/Idoc/noIasIcp.hImI
S1 de 69 22-08-2013 17:S4
O Iermo "inIerneI", ao mesmo Iempo gue denoIa a rede mundiaI gue esIamos acosIumados a
uIiIizar para enviar emaiIs, acessar o AIIavisIa, comprar Iivros, eIc, e Iambem um Iermo
generico gue signiIica "rede de redes !P". Se monIarmos por exempIo Ires peguenas LANs
corporaIivas, cada uma uIiIizando !P, e as inIerIigarmos com Iinhas IeIeInicas, Ieremos
criado uma rede de redes !P (ainda gue minscuIa), gue pode ser chamada de "inIerneI".
DougIas Comer cosIuma uIiIizar o Iermo "!nIerneI" (com "!" maiscuIo) para denoIar a rede
mundiaI, e o Iermo "inIerneI" (com "i" minscuIo) para denoIar genericamenIe uma rede de
redes !P. ssa conveno enIreIanIo no e necessariamenIe seguida por Iodas as pessoas.
O Iermo "inIraneI" denoIa uma rede !P, evenIuaImenIe com os mesmos servios oIerecidos
peIa "!nIerneI" (SMTP, HTTP, eIc), mas para Iins inIernos (por exempIo correio eIeIrnico
inIerno de uma empresa, sisIema de inIormaes inIerno, eIc). NoIe gue do ponIo de visIa de
TCP/!P, o Iermo "inIraneI" no acrescenIa nada, visIo gue eIe guer guaIiIicar apenas o
conIedo da comunicao, e no os mecanismos uIiIizados por eIa.
O Iermo "exIraneI" por sua vez denoIa uma "inIraneI" oIerecida para um pbIico exIerno
corporao, mas resIriIo. Seria o caso por exempIo onde uma empresa abre o acessa sua
inIraneI ou a parIe deIa para uma ouIra empresa. Assim como o Iermo "inIraneI", o Iermo
"exIraneI" Iambem no acrescenIa nada ao TCP/!P enIendido IecnicamenIe.
10.2 Redes Privadas
A siIuao IIpica para uma empresa ou organizao gue se conecIe !nIerneI e a de possuir
uma rede privada (gue chamaremos de "rede inIerna") oIerecendo servios inIernos (um
servidor de disco, um servidor de base de dados, eIc) e um Iink com a !nIerneI para gue a
parIir da rede inIerna se|a possIveI uIiIizar servios da !nIerneI (envio de emaiIs, acesso a
pginas web, eIc). ssa empresa ou organizao poder Iambem oIerecer servios para a
!nIerneI, como por exempIo um servidor de nomes respondendo peIos nomes da empresa ou
organizao (aIgo como www.empresa.com), um servidor SMTP operando como o MX para
os domInios da empresa ou organizao e um servidor web.
sse Iipo de siIuao cria uma cerIa guanIidade de probIemas IIpicos gue o proIissionaI gue
IrabaIha com !nIerneI deve conhecer. Os mais comuns so:
As mguinas da rede inIerna Iero gue Ier o TCP/!P conIigurado e, porIanIo, ser
necessrio escoIher os endereos gue sero uIiIizados.
Para as mguinas da rede inIerna Iazerem resoIuo de nomes, em geraI ser
convenienIe oIerecer a eIas um servidor de nomes gue cacheie os regisIros gue Iorem
sendo consuIIados a Iim de aceIerar as consuIIas de nomes.
Para as mguinas da rede inIerna Iazerem o despacho de emaiIs para a !nIerneI, via de
regra e convenienIe gue exisIa um servidor SMTP IocaI uIiIizado peIas mguinas
inIernas, e gue cuide do despacho para os desIinaIrios Iinais ou para um reIay.
Para as mguinas da rede inIerna Iazerem acesso web, em geraI ser convenienIe criar
um servidor proxy HTTP gue cacheie as pginas gue Iorem sendo acessadas a Iim de
eviIar o downIoad mIIipIo de pginas muiIo consuIIadas, e com isso obIer uma
economia de banda.
NoIas de AuIa de TCP/!P hIIp://www.ime.usp.br/~ueda/Idoc/noIasIcp.hImI
S2 de 69 22-08-2013 17:S4
O oIerecimenIo dos servios DNS, SMTP e HTTP !nIerneI cria a necessidade de se
impIanIar esses servios, o gue corresponde evenIuaI necessidade de um hardware
especIIico, e ao conhecimenIo dos soIIwares uIiIizados (SendmaiI, !!S, eIc). Se Ior
oIerecido SMTP, enIo um servio de downIoad de emaiIs como o POP Iambem Ier gue
ser impIanIado.
A conecIividade IIsica com a !nIerneI cria a possibiIidade de aIagues IanIo s mguinas
gue oIerecem servios para a !nIerneI guanIo para as mguinas desIinadas
excIusivamenIe para uso inIerno.
10.3 Lndereos reservados para redes Privadas
A exausIo do espao de endereamenIo !P da !nIerneI Iornou convenienIe a reserva de
aIguns endereos para uso em redes privadas. sses endereos so:
10.0.0.0 - 10.255.255.255
172.16.0.0 - 172.31.255.255
192.168.0.0 - 192.168.255.255
Como so eIes uIiIizados na prIica? suponha gue uma empresa impIanIe uma rede !P para
uso inIerno. Se essa rede esIiver IoIaImenIe isoIada da !nIerneI, enIo em princIpio eIa pode
uIiIizar guaisguer endereos !Pv4 para conIigurar as inIerIaces. m geraI enIreIanIo as
redes privadas no esIo IoIaImenIe isoIadas da !nIerneI, e dispe no mInimo de uma
conexo discada, e nesse caso no poderemos uIiIizar !Ps | ouIorgados para ouIros.
Como e diIIciI ou IaIvez impossIveI obIer para essa rede endereos !P "oIiciais" (roIeveis),
pode-se opIar peIo uso desses neIworks reservados para redes privadas, pois garanIe-se gue
esses endereos no esIo em uso na !nIerneI. Ou se|a, no exisIe na !nIerneI nenhum
servidor web conIigurado com !P 172.16.14 e nenhum servidor SMTP com endereo 10.S.6.7.
Assim, e imporIanIe nesses casos uIiIizar esses endereos reservados. Para dar um exempIo,
uma rede privada peguena poderia uIiIizar o endereo de rede 192.168.1.0 com mscara
2SS.2SS.2SS.0. O adminisIrador ir enIo conIigurar as inIerIaces das mguinas com !Ps da
Iorma 192.168.1.X. ssas mguinas podero esIar IisicamenIe conecIadas !nIerneI, mas
no podero ser aIingidas por pacoIes originados na !nIerneI. De IaIo, os roIeadores da
!nIerneI no sabero enconIrar endereos gue no Ioram oIiciaImenIe ouIorgados a
ninguem, e gue incIusive podem esIar sendo uIiIizados simuIIneamenIe em muiIas redes
privadas diIerenIes ao Iongo do mundo.
Se enIreIanIo a rede possuir ao menos um !P "oIiciaI", as mguinas conIiguradas com !Ps de
rede inIerna podero acessar a !nIerneI como cIienIes aIraves do mecanismo de
mascaramenIo (naI) indicando essa mguina gue possui o !P oIiciaI como gaIeway.
10.4 NAT - Network Address Translation (mascaramento)
Como vimos anIeriormenIe, uma mguina !P cu|as inIerIaces esIe|am conIiguradas com
endereos reservados para redes privadas no pode parIicipar da !nIerneI porgue no
exisIiro as roIas de reIorno. O mascaramenIo soIuciona parciaImenIe esIe probIema, desde
gue exisIa ao menos uma inIerIace (denIre Iodas as mguinas da rede privada, gue
NoIas de AuIa de TCP/!P hIIp://www.ime.usp.br/~ueda/Idoc/noIasIcp.hImI
S3 de 69 22-08-2013 17:S4
chamaremos de "rede inIerna") um !P "oIiciaI" (isIo e, roIeveI).
O mascaramenIo consisIe em uIiIizar a mguina com o !P oIiciaI como gaIeway para a
!nIerneI, conIigurando-a para subsIiIuir o endereo do remeIenIe no cabeaIho !P de cada
pacoIe por eIa repassado para a !nIerneI peIo seu prprio endereo oIiciaI. Dessa maneira,
os pacoIes gerados peIo servidor acessado podero ser reguIarmenIe roIeados de voIIa aIe
aIingir o gaIeway. uando isso aconIece, o gaIeway desIroca o endereo de desIino desses
pacoIes (gue nesIe momenIo e o seu prprio) coIocando no seu Iugar o endereo do
remeIenIe originaI. Assim, do ponIo de visIa do servidor exIerno, o acesso Ioi gerado peIo
gaIeway e no peIo cIienIe com o !P de rede inIerna.
Ao receber um pacoIe da !nIerneI, como procede o gaIeway para deIerminar se esse pacoIe e
dirigido para eIe mesmo ou se deve ser re-roIeado? !sso e IeiIo aIraves da aIocao, no
gaIeway, de uma porIa excIusiva para cada conexo TCP gerada por um cIienIe da rede
inIerna. Uma IabeIa e manIida associando essa porIa nica com o !P e a porIa de origem da
conexo. Assim, os pacoIes gerados peIo cIienIe ao passarem peIo gaIeway Iero IanIo o !P de
origem guanIo a porIa de origem Irocados. No momenIo em gue a conexo e encerrada
agueIa porIa aIocada no gaIeway Iica Iivre para ser reuIiIizada. Para eviIar um esgoIamenIo
das porIas no gaIeway, impIemenIa-se Iambem a Iiberao das porIas de conexes gue
Ienham permanecido sem aIividade por um cerIo Iempo (por exempIo dez minuIos).
O mascaramenIo Iem vrias IimiIaes. Uma deIas e gue o cIienIe da rede inIerna nunca
pode ser a parIe passiva da conexo (isIo e, agueIa gue manIem a porIa em IisIen) porgue o
seu !P no e roIeveI (isso aIe cerIo ponIo pode ser considerado bom do ponIo de visIa de
segurana). ssa deIiciencia pode evenIuaImenIe ser conIornada peIo uso de mapeadores de
porIas. Uma ouIra IimiIao e gue aIguns proIocoIos no operam correIamenIe com o
mascaramenIo, ou s operam correIamenIe se o gaIeway mascarador Iiver um suporIe
especIIico para esses proIocoIos. Um desses proIocoIos e o TP. O TP uIiIiza duas conexes
TCP, uma para comandos e ouIra para dados. A conexo de comandos e esIabeIecida
primeiro. aIraves deIa gue usamos os comandos PROMPT, ASC, eIc. Por vezes conseguimos
conecIar um servidor IIp e execuIar comandos como ASC mas no comandos como D!R ou
CT. sse sinIoma via de regra indica a exisIencia de um gaIeway mascarador onde o
suporIe para TP no exisIe ou no esI aIivado.
10.5 Proxies e HTTP
Um Proxy e aIguem (um compuIador) gue se Iaz passar por um ouIro (compuIador). O modo
mais simpIes de se enIender isso e no conIexIo de circuiIo virIuaI, gue no caso do TCP/!P so
circuiIos ou canais ou conexes TCP.
Um canaI TCP Iem sempre exaIamenIe duas exIremidades, uma aIiva, gue Iomou a iniciaIiva
(chamada cIienIe) e a ouIra passiva, gue aguardava a soIiciIao do cIienIe (o servidor).
H siIuaes onde o cIienIe no pode ou no dese|a idenIiIicar-se como IaI. !sso ocorre
guando eIe esI numa rede proIegida por um IirewaII, ou guando eIe no possui um
endereo !P "oIiciaI" da !nIerneI.
Pois bem, num caso como esse, o cIienIe soIiciIa a uma ouIra mguina gue se Iaa passar por
cIienIe. ssa ouIra mguina Iar porIanIo o papeI de inIermedirio. Ia abrir o canaI TCP
NoIas de AuIa de TCP/!P hIIp://www.ime.usp.br/~ueda/Idoc/noIasIcp.hImI
S4 de 69 22-08-2013 17:S4
com o servidor, mas redirecionar Iodo o IrIego provenienIe do servidor para o cIienIe
ocuIIo, e Iodo IrIego provenienIe do cIienIe ocuIIo ser redirecionado para o servidor.
O recurso de poder usar um proxy em geraI necessiIa esIar previsIo no cIienIe. Por exempIo,
os browsers web cosIumam Ier na sua conIigurao o servidor proxy como um IIem (no
NeIscape ve|a o menu OpIions/NeIwork PreIerences/Proxies).
Apesar de serem noes basIanIe diIerenIes, e diIIciI enIender porgue usar um Proxy e
diIerenIe de mascarar !P, pois a IuncionaIidade de ambos e semeIhanIe. Para se
compreender a disIino, e necessrio Ier uma boa noo de como e a impIemenIao do
TCP/!P numa mguina, e os vrios papeis gue IipicamenIe so desempenhados peIo "Iayer"
TCP/!P e peIas apIicaes.
No conIexIo de circuiIos virIuais, no caso do proxy exisIem eIeIivamenIe dois canais TCP, um
enIre cIienIe e proxy, e ouIro enIre proxy e servidor. No caso do mascaramenIo de !P, s h
um canaI TCP, e o gaIeway mascarador simpIesmenIe Iroca nos Irames os os endereos e as
porIas do remeIenIe ou do desIinaIrio, dependendo do caso, a Iim de gue o servidor pense
gue o cIienIe e o gaIeway.
!sso signiIica, por exempIo, gue no caso do mascaramenIo, o gaIeway comporIa-se apenas
como um roIeador de pacoIes, enguanIo no caso do proxy eIe remonIa (no caso de TCP) o
sIream gue o cIienIe envia anIes de reIransmiIi-Io ao servidor, e vice-versa, Iendo porIanIo
um overhead maior.
Proxies so comumenIe uIiIizados para HTTP e, nesIe caso, aIem de operar como
inIermedirio, o proxy Iambem pode cachear as pginas web obIidas no seu winchesIer.
Dessa Iorma, uma segunda reguisio de uma mesma pgina no ir baix-Ia novamenIe do
servidor remoIo, mas ir recuper-Ia do winchesIer. AIguns proxies adicionam recursos
muiIos Ieis, como por exempIo a possibiIidade de se reaIizar buscas nas pginas cacheadas.
10.6 VPNs
O enIendimenIo da operao do TCP/!P em comunicao seriaI e do conceiIo de canaI virIuaI
Iorna imediaIo o enIendimenIo da noo de VPN, ou ao menos de uma das suas
modaIidades.
Vimos nas noIas sobre comunicao seriaI gue para se Iazer com gue duas mguinas se
comunicassem via !P basIou exisIir um mecanismo gue IransporIasse byIes de uma para
ouIra. Sobre esse mecanismo podemos impIemenIar um soIIware gue reaIize o envio ou o
recebimenIo de pacoIes aIraves do SL!P ou do PPP. 8em, um canaI TCP e um mecanismo de
envio de byIes enIre dois compuIadores. Assim, um canaI TCP gue aIravesse parIe da
!nIerneI pode ser uIiIizado para encapsuIar SL!P ou PPP (por exempIo).
Nesse caso, os pacoIes reIerenIes ao canaI TCP uIiIizado para o encapsuIamenIo (e gue
chamaremos de tncl) IransporIam na sua rea de dados a mesma seguencia de byIes gue
seria Irocada num Iink SL!P ou PPP, e gue no caso incIuir os cabeaIhos dos pacoIes
encapsuIados. Assim, ser gerado um overhead de comunicao pois Ieremos cabeaIhos
dupIicados.
NoIas de AuIa de TCP/!P hIIp://www.ime.usp.br/~ueda/Idoc/noIasIcp.hImI
SS de 69 22-08-2013 17:S4
Por ouIro Iado, o encapsuIamenIo cria aIgumas vanIagens. Uma primeira vanIagem e gue as
apIicaes gue criam o IneI podem incIuir IiIIros gue cripIograIem e/ou comprimam os
dados gue esIo sendo enviados por eIe. Se repararmos nos exempIos dados de servidor e
cIienIe TCP minimais, veremos gue no h diIicuIdade nisso, pois basIa anIeceder a
chamada dos servios de envio ou de recebimenIo com a desses IiIIros. Dessa maneira
podemos adicionar cripIograIao ao nIveI do !P aIingindo dessa Iorma Iodos os servios de
rede uIiIizados, mesmo agueIes gue originaImenIe no previam suporIe para cripIograIao.
Uma segunda vanIagem e gue o roIeamenIo do IrIego encapsuIado independe do
roIeamenIo da !nIerneI (esIamos supondo gue o IneI uIiIiza a !nIerneI), visIo gue o
roIeamenIo da !nIerneI aIua sobre os cabeaIhos dos pacoIes da conexo TCP usada como
IneI, e no sobre os cabeaIhos encapsuIados. sIes so manipuIados apenas peIas
apIicaes gue Ieem e escrevem nas duas ponIas do IneI. ssas apIicaes criam inIerIaces
virIuais nas mguinas em gue esIo operando, associam a eIas !Ps, adicionam roIas nessas
mguinas aponIando para essas inIerIaces virIuais, e passam a operar como gaIeways nas
exIremidades do IneI. Dessa Iorma, e possIveI criar uma rede !P privada com uma
esIruIura de roIeamenIo independenIe da !nIerneI, mas uIiIizando a !nIerneI como ccrricr, o
gue e vanIa|oso em Iermos de cusIo operacionaI.
Questes
10.1 xpIigue porgue no e posIveI acessar da !nIerneI um servidor web de uma rede
inIerna gue usa !Ps do neIwork 10.0.0.0 e conecIa-se !nIerneI aIraves de um gaIeway
mascarador.
10.2 Descreva em Iinhas gerais como voce aIribuiria os nmeros !P e conIiguraria as roIas
dos gaIeways de uma WAN inIerIigando uma maIriz com duas IiIiais aIraves de LPCDs.
10.3 Descreva em Iinhas gerais como voce impIanIaria uma 88S oIerecendo um servio de
correio eIeIrnico a uma cidade peguena, sem dispor de uma conexo dedicada com a
!nIerneI (os seus cIienIes Iero gue poder enviar emaiIs para a !nIerneI e receber emaiIs da
!nIerneI).
10.4 xpIigue como uIiIizar DNS dinmico para impIanIar uma VPN inIerIigando duas LANs
aIraves da !nIerneI usando acesso discado (DNS dinmico e um servio para mapeamenIo
dinmico de um nome num !P, eIe e dinmico no senIido em gue o mapeamenIo pode mudar
rapidamenIe, sem depender da expirao IIpica de 24 horas dos caches DNS, na !nIerneI h
guem oIerea graIuiIamenIe o servio de DNS dinmico, como o www.|usIIinux.com, e
ouIros gue vendem o servio).
10.S uaI e o RC gue deIine os neIworks reservados para redes privadas? Termos
vuIgarmenIe uIiIizados como "!P IaIso" ou "!P invIido" so reIeridos por esse RC?
10.6 sIime por aIIo a ordem de grandeza dos Iinks de uma WAN para produo grIica, gue
precise IraIegar imagens em aIIa resoIuo dos seIores de produo (esIdios IoIogrIicos ou
arIIsIicos) aIe os seIores indusIriais (sugesIo: o Iamanho em byIes de uma IoIograIia e
Iuno da resoIuo e do nmero de cores. uando se IrabaIha com 16 miIhes de cores, por
exempIo, cada pixeI consome Ires byIes, porIanIo uma imagem de 2000x2000 pixeIs
consumiria 12.000.000 de byIes sem compresso).
NoIas de AuIa de TCP/!P hIIp://www.ime.usp.br/~ueda/Idoc/noIasIcp.hImI
S6 de 69 22-08-2013 17:S4
11. Lstudo de caso: ethernet
Lthernet
Pinagem UTP
PapeI do HU8
PapeI do swiIch
ARP
ComprimenIo mximo de cabo
Notas
11.1 IP implementado em ethernet: ARP
Cada pIaca de rede eIherneI exisIenIe no mundo possui um endereo de hardware nico de
48 biIs. sse endereo cosIuma-se escreve-Io na Iorma de 6 ocIeIos separados por ":", como
por exempIo 9:17:02:07:4S:84. NoIe gue os ocIeIos so represenIados na base 16, e no na
base 10, como no caso do !P. No Linux, pode-se exibir esse endereo aIraves do comando
ifconfig (no Windows 9x uIiIize o winipcfg).
$ 1iconi1 elh0
elh0 L1nk encap.Elhernel RWaddr 00.80.48.EB.06.C0
1nel addr.192.168.0.1 Bcasl.192.168.0.255 Mask.255.255.255.0
uP BR0A0CAST RuNNTN0 MuLTTCAST MTu.1500 Melr1c.1
RX packels.0 errors.0 dropped.0 overruns.0 irame.0
TX packels.53 errors.0 dropped.0 overruns.0 carr1er.0
coll1s1ons.0 lxqueuelen.100
Tnlerrupl.11 Base address.0xii80
Os parIicipanIes de uma LAN eIherneI comunicam-se uIiIizando esses endereos de
hardware. Os pacoIes gue um PC envia a um ouIro para por exempIo, reaIizar uma
impresso remoIa, so encabeados por um header eIherneI onde consIa o endereo de
hardware do desIinaIrio (nesIe caso, a mguina onde a impressora esI IisicamenIe
conecIada).
Dessa Iorma, a prpria pIaca de rede eIherneI e capaz de IiIIrar, denIre Iodos os pacoIes gue
circuIam no meio IIsico (cabo), agueIes a eIa desIinados. sIes eIa repassa ao sisIema
operacionaI para serem processados, os demais so descarIados.
!sso cria um probIema iniciaI na comunicao inIerna numa LAN, pois a idenIiIicao gue
Iemos do compuIador do guaI dese|amos uIiIizar aIgum servio (e.g. impresso) ser seu
nome ou o seu nmero !P. Dessa maneira, da mesma Iorma gue exisIe um servio para
resoIver nomes para !Ps (o DNS), e necessrio haver, apenas a nIveI IocaI, um mecanismo
gue resoIva !Ps para endereos de hardware. sse mecanismo e o ARP (address ResoIuIion
ProIocoI). O Icpdump permiIe-nos moniIorar o ARP em operao:
# lcpdump arp
lcpdump. l1slen1n on elh0
13.12.43.676371 arp Who-has 192.168.0.2 lell 192.168.0.1
13.12.43.677065 arp reply 192.168.0.2 1s-al 8.0.2b.e2.c4.ed
As Iinhas conIendo arp who-has so gueries ARP. Por exempIo, a mguina 192.168.0.1 guer
saber guaI e o endereo de hardware associado ao !P 192.168.0.2. Ia Iaz, enIo, um
broadcasI no eIherneI pergunIando guaI e esse endereo de hardware. sse broadcasI Ioi
NoIas de AuIa de TCP/!P hIIp://www.ime.usp.br/~ueda/Idoc/noIasIcp.hImI
S7 de 69 22-08-2013 17:S4
capIurado e apresenIado peIo Icpdump na Iinha arp who-has. Ie corresponde a um pacoIe
eIherneI gue no campo de endereo (de hardware) de desIino especiIica um vaIor especiaI
gue Iaz com gue Iodas as pIacas de rede repassem o pacoIe ao sisIema operacionaI. 8em,
agueIa nica mguina cu|a inIerIace possuir o endereo 192.168.0.2 ir, ao processar o
guery ARP, gerar um pacoIe de resposIa inIormando o seu endereo de hardware, gue no
caso e a Iinha is-at como vemos acima.
Obs. (1) A opo -c do tcpdump incluir cm ccdc dcscrio dc pccotc os cndcrcos dc
hcrdwcrc cnvolvidos.
Obs. (Z) Um computcdor podc scr progrcmcdo pcrc rcspondcr rcqucsts ARP rcjcrcntcs c
cndcrcos |P quc no csto mcpccdos ncs sucs intcrjcccs. ssc tccnicc chcmc-sc proxy-crp c c
utilizcdc como um crtijcio simplcs pcrc cricr gctcwcys pcrc mquincs quc sc concctcm numc
LAN cthcrnct (vcmos supor: um notchook) ctrcvcs dc portc scricl dc clgum dos pcrticipcntcs.
Ncssc ccso, cssc notchook rccchcric um cndcrco |P com o mcsmo nctwork numhcr dos
cndcrcos utilizcdos nc LAN. Assim, qucndo clgucm nc LAN quiscr cnvicr pccotcs pcrc o
notchook, jcr um hrocdccst ARP mcs o notchook no o podcr rcspondcr, visto quc o
hrocdccst no o ctingc. D gctcwcy no cntcnto rcspondc o rcqucst ARP nc quclidcdc dc proxy,
rccchc o pccotc nc suc intcrjccc cthcrnct, cplicc c tchclc dc rotcs c rcclizc o jorwcrd do
pccotc pcrc c portc scricl, cnccminhcndo-o dcssc jormc pcrc o notchook.
Questes
11.1 xpIigue como usar proxy-arp para incIuir um IiIIro de pacoIes numa rede !P
pre-exisIenIe com um nico gaIeway para a !nIerneI cu|a porIa eIherneI esI direIamenIe
pIugada ao nico hub da LAN, sem aIIerar a conIigurao TCP-!P nem das mguinas da LAN
e nem do gaIeway.
11.2 Suponha gue uma audiIoria Iecnica concIuiu gue voce e responsveI por um aIague
reaIizado conIra o servidor da !nIraneI da empresa, em virIude de Ierem sido enconIrados
nos Iogs do servidor regisIros de IenIaIivas de invaso indicando como origem o nmero !P
do compuIador gue Iica na sua mesa, e gue somenIe voce uIiIiza. 8aseado no IuncionamenIo
do ARP, expIigue como voce argumenIaria, em sua deIesa, gue os regisIros enconIrados nos
Iogs no so prova concIusiva de gue voce Ioi o auIor do aIague.
11.3 possIveI criar uma rede domesIica para IesIes, composIa por apenas duas mguinas
com inIerIaces TP sem uIiIizar um hub? uaI e a diIerena enIre o cabo gue voce uIiIizaria
nesse caso e um cabo normaI para conecIar uma mguina ao hub?
11.4 O gue e CSMA?
12. Noes sobre roteadores
Finalidades do roteador
CaIeway enIre meios IIsicos diIerenIes
ncapsuIador de proIocoIos
Uso dos proIocoIos de roIeamenIo em redes muiIo grandes
Diviso de um Ironco em mIIipIos Iinks
NoIas de AuIa de TCP/!P hIIp://www.ime.usp.br/~ueda/Idoc/noIasIcp.hImI
S8 de 69 22-08-2013 17:S4
venIuaI IiIIragem de pacoIes
13. Multidominio
Modos de se determinar o dominio de destino
AIraves do !P de desIino AIraves do proIocoIo de apIicao
Modo com gue o multidominio opera em cada protocolo
dns hIIp smIp IIp pop
Hospedagem e alocao de IPs
Hospedar no signiIica aIocar !P xempIos reais de !Ps comparIiIhados
Notas
13.1 Multidominio
Um mesmo compuIador pode hospedar vrios domInios diIerenIes. !sso e IundamenIaI para
a economia de recursos na !nIerneI. Vrios siIes peguenos (muiIas dezenas) podem esIar
hospedados numa nica mguina. !sso signiIica gue essa mguina ir responsabiIizar-se
peIo servio de nomes desses domInios e/ou peIo recebimenIo de emaiIs das caixas posIais
desses domInios e/ou peIa hospedagem das caixas posIais desses domInios (gue sero
disponibiIizadas via POP) e/ou peIa hospedagem de pginas web ou de arguivos
disponibiIizados por IIp por esses domInios.
A possibiIidade Iecnica de se poder comparIiIhar um mesmo hardware por vrios domInios
depende de uma previso ao nIveI dos proIocoIos de apIicao. 8asicamenIe, o proIocoIo de
apIicao deve deIinir gue a soIiciIao de um deIerminado servio deva vir acompanhada
de uma idenIiIicao do domInio no guaI o cIienIe esI inIeressado.
Assim, vemos por exempIo gue o SMTP possui essa previso. De IaIo, na Iransao SMTP o
cIienIe inIorma o endereo eIeIrnico compIeIo do desIinaIrio (e.g. ueda@ime.usp.br).
Assim, se uIiIizarmos um mesmo compuIador para o recebimenIo de emaiIs de mais de um
domInio diIerenIe, basIar gue o programador Ienha IeiIo o soIIware (o servidor SMTP) de
Iorma a organizar as caixas posIais no disco da mguina dividindo-as por domInio, a Iim de
no conIundir a caixa posIaI de usurios homnimos de domInios diIerenIes.
SemeIhanIemenIe, o DNS Iambem possui essa previso, visIo gue o guery DNS carrega o
nome reIaIivamenIe ao guaI esIamos inIeressados, e porIanIo um mesmo compuIador pode
ser o servidor de nomes de muiIos domInios diIerenIes.
AIuaImenIe o HTTP possui suporIe para muIIidomInio. Nos exempIos simpIes gue inicamos
nesIas noIas esse suporIe no esI evidenIe, mas de IaIo o guery HTTP pode incIuir uma
Iinha Host gue inIorma guaI e o domInio no guaI o cIienIe esI inIeressado. Podemos
visuaIizar isso aIraves da capIura de um guery HTTP gerado peIo NeIscape. No caso, esIamos
uIiIizando-o para visiIar o URL hIIp://www.Iinuxdoc.org. O guery gerado segue (as Iinhas gue
NoIas de AuIa de TCP/!P hIIp://www.ime.usp.br/~ueda/Idoc/noIasIcp.hImI
S9 de 69 22-08-2013 17:S4
Ierminam com ... Ioram Iruncadas).
0ET 1 RTTP11.0
Ti-Mod1i1ed-S1nce. Tue, 18 Jul 2000 15.39.42 0MT, lenlh=19222
Connecl1on. Keep-Al1ve
user-Aenl. Moz1lla14.51 |en] {X11, T, L1nux 2.2.5-22 1586, Nav}
Rosl. WWW.l1nuxdoc.or
Accepl. 1mae11i, 1mae1x-xb1lmap, 1mae1pe, ...
Accepl-Encod1n. z1p
Accepl-Lanuae. en
Accepl-Charsel. 1so-8859-1,*,uli-8
Obs. D qucry HTTP tcrminc com umc linhc cm hrcnco. por isso quc numc dcs primcircs
notcs dcstc documcnto indiccmos quc cps o comcndo GT c ncccssrio prcssioncr NTR
ducs vczcs, dcssc mcncirc o scrvidor rcmoto tomc conhccimcnto dc quc o qucry c composto
uniccmcntc pclc linhc GT.
imporIanIe perceber gue em Iodos os casos discuIidos esIamos comparIiIhando um mesmo
endereo !P para mIIipIos domInios. Assim, se por exempIo as pginas dos domInios a.com
e b.com esIiverem hospedados num mesmo servidor HTTP, enIo os nomes www.a.com e
www.b.com esIaro associados peIo DNS a regisIros A gue aponIaro para um mesmo !P.
!sso signiIica enIre ouIras coisas gue o acesso s pginas web desses domInios nunca poder
ser IeiIo via endereo numerico (aIgo como hIIp://1.2.3.4). SigniIica Iambem gue a
hospedagem de um domInio na !nIerneI no exige como prereguisiIo a aIocao de um !P
excIusivo para agueIe domInio.
Por ouIro Iado, dois proIocoIos IargamenIe uIiIizados na !nIerneI mas gue no possuem
suporIe para muIIidomInio so o POP e o TP. No caso do POP, pode-se conIornar o probIema
Iazendo com gue na conIigurao do cIienIe de emaiI (udora, OuIIook, eIc) consIe o
domInio da caixa posIaI, gue dever enIo ser conIigurada como (por exempIo)
ueda@ime.usp.br e no apenas ueda. !sso Iar com gue na Iransao POP o cIienIe envie ao
servidor aIraves do comando USR a inIormao suIicienIe para eIe idenIiIicar a caixa
posIaI. No caso do TP, o probIema pode ser parciaImenIe soIucionado oIerecendo a cada
hspede um direIrio, gue dever consIar de guaIguer URL de IIp dagueIe hspede.
m guaIguer caso no enIanIo e possIveI Iambem resoIver o probIema do comparIiIhamenIo
de uma mesma mguina por vrios domInios associando a cada um um endereo !P
excIusivo. ssa Iecnica chama-se !P aIiasing e depende de suporIe especIIico no sisIema
operacionaI.
13.2 IP Aliasing
O mapeamenIo de mais de um endereo !P numa mesma inIerIace IIsica chama-se |P
clicsing. No Linux o modo de Iaze-Io resume-se a conIigurar uma nova inIerIace virIuaI para
cada novo endereo adicionado. Se Iivermos por exempIo uma inIerIace eth0 | conIigurada
com o endereo 192.168.0.1 e guisermos mapear neIa Iambem o endereo 192.168.0.3, enIo
conIiguraremos a inIerIace eth0:0 usando o ifconfig:
# 1iconi1 elh0.0 192.168.0.3
# 1iconi1
elh0 L1nk encap.Elhernel RWaddr 00.80.48.EB.06.C0
1nel addr.192.168.0.1 Bcasl.192.168.0.255 Mask.255.255.255.0
uP BR0A0CAST RuNNTN0 MuLTTCAST MTu.1500 Melr1c.1
RX packels.0 errors.0 dropped.0 overruns.0 irame.0
TX packels.91 errors.0 dropped.0 overruns.0 carr1er.0
NoIas de AuIa de TCP/!P hIIp://www.ime.usp.br/~ueda/Idoc/noIasIcp.hImI
60 de 69 22-08-2013 17:S4
coll1s1ons.0 lxqueuelen.100
Tnlerrupl.11 Base address.0xii80
elh0.0 L1nk encap.Elhernel RWaddr 00.80.48.EB.06.C0
1nel addr.192.168.0.3 Bcasl.192.168.0.255 Mask.255.255.255.0
uP BR0A0CAST RuNNTN0 MuLTTCAST MTu.1500 Melr1c.1
Tnlerrupl.11 Base address.0xii80
Observe gue o endereo de hardware da inIerIace eth0:0 e exaIamenIe o mesmo da
inIerIace eth0 (visIo serem IisicamenIe a mesma pIaca de rede). !sso signiIica, enIre ouIras
coisas, gue reguesIs ARP aos !Ps 192.168.0.1 e 192.168.0.3 sero respondidos com o mesmo
endereo de hardware.
O mecanismo de |P clicsing e IargamenIe uIiIizado em servidores comparIiIhados por
mIIipIos domInios. uando se conIraIa a hospedagem de um domInio e nessa hospedagem
h a concesso de um endereo !P excIusivo para agueIe domInio, esse endereo Ier gue
esIar mapeado numa inIerIace IIsica, e como uma mesma mguina e uma mesma inIerIace
so comparIiIhados por (evenIuaImenIe) dezenas de domInios, Iodos os endereos esIaro
mapeados numa mesma inIerIace IIsica.
Um soIIware com suporIe para !P aIiasing deve IesIar para cada conexo o !P de desIino gue
o cIienIe indicou, e em seguida assumir a idenIidade prpria associada a esse !P. ssa
operao e muiIo IreguenIemenIe reaIizada por servidores web como o Apache. O cdigo
gue segue impIemenIa essa operao:
1*
Cd1o para deleco da TP de desl1no que o cl1enle esl
coneclando.
Esle prorama io1 desenvolv1do a parl1r da anl1se do ionle do
NCSA hllpd.
*1
#1nclude <nel1nel11n.h>
#1nclude <sld1o.h>
ma1n{arc,arv}
1nl arc,
char *arv|],
{
slrucl sockaddr_1n serv_addr,
1nl rc,
lon my_addr,
1nl serv_addr_len,
uns1ned char dol1,dol2,dol3,dol4,
serv_addr_len = s1zeoi{serv_addr},
rc = elsockname{0,{slrucl sockaddr *}&serv_addr,&serv_addr_len},
1i {rc == 0} {
my_addr = nlohl{serv_addr.s1n_addr.s_addr},
dol4 = my_addr & 0x000000ii,
dol3 = {my_addr >> 8} & 0x0000ii,
dol2 = {my_addr >> 16} & 0x00ii,
dol1 = my_addr >> 24,
pr1nli{"7u.7u.7u.7u",dol1,dol2,dol3,dol4},
)
else {
pr1nli{"unknoWn\n"},
)
)
Questes
NoIas de AuIa de TCP/!P hIIp://www.ime.usp.br/~ueda/Idoc/noIasIcp.hImI
61 de 69 22-08-2013 17:S4
13.1 xpIigue como um servidor web muIIidomInio Iaz para deIerminar a guaI domInio
virIuaI reIere-se uma dada conexo. CiIe os servios de AP! (sockeIs) uIiIizados peIo servidor
nesse caso.
13.2 m gue condies um mesmo compuIador pode hospedar os siIes web de diIerenIes
domInios virIuais associando a Iodos os nomes um regisIro A aponIando para um nico !P?
13.3 VisiIe as pginas de aIgum grande hospedeiro de siIes na !nIerneI e concIua guanIos
domInios por mguina eIe hospeda.
13.4 Por gue esI errado, no senIido esIriIo, pensar gue hospedar um domInio signiIica
conceder um !P? xpIigue o erro dessa ideia ao nIveI do DNS e SMTP peIo menos.
13.S uanIas conexes TCP voce acha gue um grande servidor consegue manIer aberIas
simuIIneamenIe?
13.6 uanIos hiIs por segundo voce acha gue um servidor hIIp consegue aIender?
13.7 Se na sua empresa exisIir um servidor web inIerno, reaIize um IesIe para IevanIar
guanIas vezes por segundo eIe consegue aIender o pedido de IeiIura de uma pgina esIIica
peguena. Para reaIizar esse IesIe voce pode Iazer um pegueno programa com um Ioop gue a
cada iIerao reaIize um pedido ou uIiIizar aIgum programa pronIo, como o
IIp://IIp.IysaIor.Iiu.se/pub/unix/pIesIer.
13.8 Suponha gue voce venda hospedagem de siIes com o comparIiIhamenIo de !Ps. Nesse
caso como Ieriam gue ser os URLs de TP dos arguivos disponibiIizados para downIoad
peIos cIienIes?
14. Notas breves sobre hardware
Hardwares de uso comum na !nIerneI
SisIemas Operacionais de uso comum na !nIerneI
Notas
14.1 Hardwares e SO's de uso comum na Internet
m virIude dos proIocoIos de uso mais comum na !nIerneI serem sIandard, e conIarem com
mIIipIas impIemenIaes independenIes, guaIguer hardware para o guaI exisIa uma
impIemenIao de TCP/!P e dos servios gue se preIenda oIerecer e, em princIpio, apIo para
operar como um servidor na !nIerneI. , de IaIo, pode-se enconIrar na !nIerneI servidores
baseados nos mais variados hardwares, sisIemas operacionais e soIIwares de apIicao,
reaIizando mais ou menos as mesmas IareIas: PCs comuns das mais variadas procedencias,
servidores especiaIizados baseados em !nIeI, mguinas R!SC, compuIadores de boIso,
mainIrames, eIc.
m aIgumas siIuaes, caracIerIsIicas muiIo especIIicas de uma pIaIaIorma ou ouIra podem
Ier um papeI decisivo num processo de escoIha, no obsIanIe isso e pouco comum, ao menos
no gue Iange aos criIerios esIriIamenIe Iecnicos. Tais caracIerIsIicas poderiam ser por
NoIas de AuIa de TCP/!P hIIp://www.ime.usp.br/~ueda/Idoc/noIasIcp.hImI
62 de 69 22-08-2013 17:S4
exempIo: disponibiIidade de um deIerminado barramenIo na pIaIaIorma (!SA, PC!, MCA,
VM, eIc), capacidade mxima ou Iipo de memria suporIada, possibiIidade ou IaciIidade de
se adicionar grande guanIidade de discos, aIIa capacidade de processamenIo (isso em geraI
impIicar no uso de mguinas com vrias CPUs), aIIa IoIerncia a IaIhas (isso pode
evenIuaImenIe Iornar convenienIe o uso de clustcrs com vrias mguinas redundanIes, ou
se|a, a IaIha de uma no acarreIa desconIinuidade do servio), suporIe a aIgum deIerminado
soIIware do mercado, eIc.
Ainda denIro dessa Iinha, aIgo a gue deve ser dar aIeno mas gue em geraI acaba no
sendo ob|eIo de suIicienIe cuidado, so as condies de reIrigerao das mguinas e do
ambienIe, e a sinaIizao do esgoIamenIo das baIerias gue os no-breaks devem enviar aos
compuIadores, a Iim de gue eIes reaIizem os procedimenIos de shutdown e eviIem dessa
Iorma danos nas mIdias. m aIgumas insIaIaes, a possibiIidade de assaIIos, incendios ou
de inundaes, e a IaciIidade do IransporIe das mguinas em geraI ou em siIuaes de
conIingencia pode ser Iambem um IaIor reIevanIe.
No obsIanIe, os criIerios puramenIe Iecnicos sero em geraI insuIicienIes para se decidir
por um ou ouIro padro de hardware ou de sisIema operacionaI a ser uIiIizado num
servidor !nIerneI. Na prIica, o responsveI Ier gue eIeger aIguns ouIros criIerios e basear
neIes a sua escoIha. nIre esses criIerios, o mais ob|eIivo em geraI ser a experiencia
anIerior dos proIissionais envoIvidos, gue em geraI | possuiro uma capaciIao para
IrabaIhar com deIerminadas Iinhas de produIos de hardware ou de soIIware, IanIo ao nIveI
da conIigurao e manuIeno das mguinas, guanIo ao nIveI dos procedimenIos de
aguisio ou mesmo de imporIao, conhecimenIo das revendas e dos servios de suporIe
disponIveis, conIaIos com ouIros proIissionais da rea, experiencia no desenvoIvimenIo de
soIIwares, eIc. Um segundo criIerio, gue em muiIos casos poder preponderar em reIao ao
anIerior, e o impacIo gue a escoIha Ier ou poder Ier nas vendas e/ou os acordos comerciais
gue a escoIha Ier gue acaIar. Um Ierceiro criIerio gue dependendo do caso poder ser mais
imporIanIe ou menos imporIanIe, e o cusIo dos eguipamenIos e dos soIIwares.
Na IaIIa de inIormaes ou de pro|ees, as esIaIIsIicas de uso e de vendas de cada Iinha de
hardware ou de sisIema operacionaI podero ser Ieis, principaImenIe se se reIerirem ao
nicho visado, mas em geraI devem ser anaIisadas com basIanIe cuidado. TecnicamenIe,
guaIguer hardware ou sisIema operacionaI gue esIe|a vivo no mercado, ainda gue o seu
mcrkct shcrc se|a pegueno, ser sempre um candidaIo viveI. AIem disso, a hisIria da
!nIormIica ou da IecnoIogia em geraI esI cheia de maIogros e sucessos inesperados.
O proIissionaI deve ainda esIar aIenIo ao |ogo do mercado, a Iim de no se deixar inIIuenciar
indevidamenIe. Por vezes baseamo-nos numa escoIha de ouIrem: sc c cmprcsc X ou c
cntidcdc Y optou por cstc ou por cquclc linhc dc cquipcmcntos, cnto jcrci isso tcmhcm. Na
prIica, no enIanIo, as escoIhas, mesmo em ambienIes muiIo conceiIuados, podem no se
dever a criIerios Iecnicos ou econmicos ob|eIivos, mas sim a preIerencias pessoais mais ou
menos vagas, ou a doaes, ou aIe mesmo a razes impubIicveis. Nesse parIicuIar, vaIe
ressaIIar gue guanIo menor Ior a vivencia dos proIissionais envoIvidos, maior ser Iambem
o papeI e a inIIuencia do markeIing nos processos de escoIha de uma pIaIaIorma (se|a o
markeIing direIo IeiIo sobre os cIienIes, ou se|a agueIe IeiIo aIraves da mIdia, especiaIizada
ou no, na Iorma de anncios ou de arIigos).
eiIas essas observaes, em gue IenIamos expor de Iorma ampIa a guesIo da escoIha de
NoIas de AuIa de TCP/!P hIIp://www.ime.usp.br/~ueda/Idoc/noIasIcp.hImI
63 de 69 22-08-2013 17:S4
uma pIaIaIorma, iremos apresenIar uma IisIa de hardwares e de sisIemas operacionais de
uso comum na !nIerneI. sI muiIo Ionge de ser compIeIa e no Iraz esIaIIsIicas de uso ou de
vendas, mas ser IiI como iIusIrao breve do panorama da rea.
A evoIuo hisIrica da !nIerneI Iez com gue Iossem sempre parIicuIarmenIe comuns neIa
mguinas e sisIemas operacionais mais ou menos Iigados ao Unix e ao 8SD, como por
exempIo aIguns compuIadores e sisIemas da DigiIaI e da Sun. A aIuaI popuIaridade do Linux
e um dos eIeiIos visIveis dessa evoIuo. Por ouIro Iado, os padres mais popuIares nascidos
para operar em redes corporaIivas privadas em arguiIeIura !nIeI (NoveII e os sisIemas da
MicrosoII), em virIude da sua grande base insIaIada (e, porIanIo, da grande guanIidade de
proIissionais envoIvidos com eIas), Iambem adapIaram-se para uIiIizar o TCP como
mecanismo de IransporIe e Iornaram-se de uso comum na !nIerneI nos IIimos anos. De
Iorma mais especIIica podemos desIacar:
As mguinas baseadas em processadores Intel ou compaIIveis so ho|e provaveImenIe
as gue Iideram no nmero de vendas de servidores para a !nIerneI. Para essas
mguinas habiIuaImenIe uIiIiza-se barramenIo PC! e discos SCS! ou ATA (!D). Os
maiores IabricanIes de servidores baseados em !nIeI so a Compag, a !8M, a DeII e a
HP. Os sisIemas operacionais disponIveis para essas mguinas e IargamenIe uIiIizados
na !nIerneI so vrios jlcvours de Unix (como o Red HaI Linux, SuS Linux, Debian
Linux, ConecIiva Linux, ree8SD, Open8SD, 8SD!, SoIaris, SCO, enIre vrios ouIros), os
sisIemas da MicrosoII (NT, 2000 ou mesmo a Iinha 9x), NoveII e ouIros.
A arguiIeIura Sparc Ioi criada peIa Sun para rodar os seus sisIemas operacionais, o
anIigo SunOS e o aIuaI SoIaris. VaIe ressaIIar gue a Iicena de uso do SoIaris
recenIemenIe Iornou-se graIuiIa, sendo necessrio enIreIanIo adguirir |unIo Sun a
mIdia (os CDs de insIaIao) para a pIaIaIorma dese|ada (Sparc ou !nIeI). O Linux e
aIgumas varianIes do 8SD Iambem rodam em mguinas Sparc.
A DigiIaI (recenIemenIe adguirida peIa Compag) criou a IecnoIogia Alpha, a primeira
pIaIaIorma de 64 biIs comerciaI. Os sisIemas disponIveis para mguinas AIpha so os
da prpria DigiIaI (OS, gue Ieve seu nome Irocado para DigiIaI Unix e agora passou a
chamar-se Tru64, e o VMS, gue aIuaImenIe chama-se OpenVMS), o NT (gue
recenIemenIe enIreIanIo deixou de ser suporIado nessa arguiIeIura), o Linux e
aIgumas varianIes do 8SD.
A !8M, enIre ouIros IabricanIes, baseou aIguns dos seus produIos na CPU PowerPC e no
barramenIo MCA. Desses, os mais uIiIizados na !nIerneI so provaveImenIe as esIaes
RS/6000 com o sisIema operacionaI A!X. ParIes do A!X Ioram doados peIa !8M para o
kerneI do Linux, gue vem recebendo basIanIe suporIe da !8M.
14.2 Um caso simples de um servidor Internet
A Iim de dar um exempIo mais deIaIhado, ve|amos uma especiIicao basIanIe simpIes de
um servidor consIruIdo para operar na !nIerneI. A escoIha do hardware ou do soIIware
poderia ser ouIra, naIuraImenIe.
sIamos imaginando gue nossa mguina operar como um servidor HTTP, SMTP e POP de
baixa demanda. !maginamos gue o IoIaI de inIormaes oIerecidas via HTTP (isIo e, as
NoIas de AuIa de TCP/!P hIIp://www.ime.usp.br/~ueda/Idoc/noIasIcp.hImI
64 de 69 22-08-2013 17:S4
pginas web, arguivos e evenIuaImenIe aIguma base de dados associada) no uIIrapasse ao
Iodo aIgumas dezenas de megabyIes. A conexo dessa mguina com a !nIerneI ser aIraves
de um Iink de (por exempIo) 128 kiIobiIs por segundo. !maginamos gue no haver mais do
gue poucas dezenas de caixas posIais. Nessa descrio com cerIeza seria possIveI encaixar a
maior parIe dos domInios presenIes ho|e na !nIerneI.
Uma IIpica mguina baseada em !nIeI do mercado aIender com IoIga demanda submeIida
ao nosso servidor. Os menores discos do mercado, cu|a capacidade gira ho|e em Iorno de 10
gigabyIes, armazenaro com grande IoIga o sisIema operacionaI, as apIicaes, os Iogs de
operao, as pginas e arguivos, e as caixas posIais. O padro de disco, num caso desses, e
irreIevanIe, poderia ser ATA ou SCS! (compare a IIpica Iaxa de IransIerencia de um disco
aIuaI, normaImenIe da ordem de 10 megabyIes por segundo, com a veIocidade do Iink). Uma
mguina com esse perIiI via de regra operar basIanIe bem com um IoIaI de memria RAM
a parIir de 64M.
A conexo desse servidor com a !nIerneI em geraI no ser IeiIa direIamenIe, mas sim
aIraves de um roIeador, gue nos casos mais simpIes Iunciona meramenIe como um IraduIor
de meios IIsicos. Ie possui uma porIa sIncrona gue se conecIa ao modem da Iinha de dados
conIraIada (LPCD) e uma porIa eIherneI gue pode ser pIugada num hub ou direIamenIe no
servidor aIraves de um cabo TP cruzado. Assim, nosso servidor precisa de uma porIa
eIherneI, gue e o padro de LAN "de IaIo" do mercado. AIraves dessa mesma porIa eIherneI,
ou IaIvez aIraves de uma segunda porIa eIherneI, o servidor pode comunicar-se com uma
evenIuaI rede inIerna. Para a rede inIerna, eIe pode oIerecer os servios POP, reIay SMTP e
evenIuaImenIe proxy HTTP ou ainda mascaramenIo !P (NAT) e/ou IiIIragem de pacoIes.
Suponhamos gue o sisIema operacionaI uIiIizado se|a aIguma das varianIes do Linux, como
o Red HaI. Nesse caso, Iodos os servios dese|ados esIo presenIes naIivamenIe no sisIema
operacionaI e o servidor poder enIrar em operao Iogo aps a insIaIao, com
reIaIivamenIe poucas cusIomizaes. O servio HTTP ser reaIizado peIo Apache, o SMTP
peIo sendmaiI, o mascaramenIo e a IiIIragem de pacoIes so recursos presenIes ao nIveI do
kerneI, e o POP possui um servidor especIIico aIivado via ineId.
15. Repertrio de comandos
Os comandos abaixo esIo na sinIaxe prpria do Linux. m aIguma medida essa sinIaxe
poder ser usada de Iorma inaIIerada na maior parIe dos ouIros sisIemas Unix-Iike ou no
Windows.
1iconi1 pl1p0
1iconi1 pl1p0 192.168.0.1
1iconi1 pl1p0 doWn
No primeiro caso exibiremos o esIado da inIerIace plip0, gue e a primeira porIa
paraIeIa. O segundo comando conIigura o !P dessa inIerIace como sendo 192.168.0.1. O
Ierceiro comando ir derrubar a inIerIace. Ia conIinuar exisIindo, mas no ser
uIiIizada para roIear pacoIes.
Obs. (1) No Windows no cxistc o comcndo ijconjig, mcs o x possui o winipcjg c, o NT, o
ipconjig, quc cprcscntcm umc juncionclidcdc csscmclhcdc do ijconjig.
NoIas de AuIa de TCP/!P hIIp://www.ime.usp.br/~ueda/Idoc/noIasIcp.hImI
6S de 69 22-08-2013 17:S4
Obs. (1) A conjigurco dcs intcrjcccs costumc scr jcitc cutomcticcmcntc pclos
proccdimcntos dc hoot. D comcndo ijconjig scr uscdo mcnuclmcntc cpcncs pcrc tcstcs.
roule
roule add 192.168.0.33 pl1p0
roule add -nel 192.168.10.0 nelmask 255.255.255.0 elh0
roule del deiaull
No primeiro caso esIamos exibindo o conIedo da IabeIa de roIas (eguivaIenIe a
netstat -r). No segundo esIamos adicionando uma roIa para o desIino 192.168.0.33 e
inIormando gue deve ser uIiIizada a inIerIace plip0. No segundo esIamos adicionando
uma roIa para o neIwork 192.168.10.0/24, e indicando gue dese ser usada a inIerIace
eth0. No guarIo exempIo esIamos removendo a roIa deIauII (agueIa para o desIino
0.0.0.0/0).
Obs. A conjigurco dcs rotcs costumc scr jcitc cutomcticcmcntc pclos proccdimcntos
dc hoot. D comcndo routc scr uscdo mcnuclmcntc cpcncs pcrc tcstcs.
p1n 192.168.10.1
p1n -1 10 allav1sla.d11lal.com
p1n -c 25 WWW.apache.or
nvia pacoIes !CMP CHO RUST para o desIino especiIicado. A opo -i inIorma o
inIervaIo de Iempo enIre cada envio, e a opo -c inIorma o IoIaI de pacoIes a serem
enviados.
lraceroule WWW.1bm.com
LisIa ou IenIa IisIar os gaIeways inIermedirios enIre a mguina IocaI e o hosI
indicado.
Obs. No windows o nomc dcssc comcndo c trcccrt.
nelslal -a
nelslal -a -n -l
nelslal -r -n
No primeiro caso exibe Iodos os sockeIs, de Iodos os proIocoIos. m mguinas UN!X,
exibe incIusive os sockeIs unix domain (no TCP). No segundo exibe apenas os sockeIs
TCP (opo -I) e no Iaz a converso de !Ps para nomes (opo -n). No Ierceiro exibe a
IabeIa de roIas sem converIer !Ps para nomes (opo -n).
lelnel 192.168.10.1
lelnel ma1lhosl.1bp1nelsp.com.br 25
lelnel ma1lhosl.1bp1nelsp.com.br 110
lelnel allav1sla.d11lal.com 80
sIabeIece conexes TCP com 192.168.0.1 na porIa 23 (primeiro caso), com
maiIhosI.ibpineIsp.com.br na porIa SMTP (segundo caso), idem porIa POP3 (Ierceiro
caso), e IinaImenIe com aIIavisIa.digiIaI.com na porIa HTTP (guarIo caso).
Obs. No Windows c portc (c o dcstino) c (so) cspccijiccdc (os) num dos mcnus dc
intcrjccc grjicc.
NoIas de AuIa de TCP/!P hIIp://www.ime.usp.br/~ueda/Idoc/noIasIcp.hImI
66 de 69 22-08-2013 17:S4
ilp rlim.m1l.edu
ilp -1 -v -n rlim.m1l.edu
Abre uma conexo TP com rIIm.miI.edu. O segundo caso e convenienIe para scripIs
gue auIomaIizam IransIerencias por IIp. A opo -i desIiga a conIirmao por-arguivo
em IransIerencias mIIipIas e a opo -n desIiga o auIo-Iogin. A auIenIicao nesIe caso
precisa ser IeiIa aIraves do comando USR do IIp, como mosIra o exempIo abaixo:
nohup ilp -1 -v -n ilp.m1crosoil.com <<ITM
user anonymous ueda@1me.usp.br
hash
b1n
el LS-LR.ZTP
qu1l
ITM
ssh -l ueda 143.107.45.19
scp clara.lar.z 192.168.0.1.1lmp
O primeiro comando abre uma sesso inIeraIiva (sheII) com o servidor sheII.ime.usp.br
uIiIizando SSH, gue cripIograIa os dados de auIenIicao e Iambem o IrIego da
conexo. O segundo comando IransIere para o direIrio /Imp do servidor 192.168.0.1 o
arguivo IocaI cIara.Iar.gz aIraves do SSH.
nslookup WWW.l1nuxloday.com
nslookup 200.231.191.10
nslookup -query=mx 1bm.nel
nslookup -query=mx 1bm.nel - 200.231.191.10
ueries de nomes. No primeiro caso ser IeiIo o guery do regisIro A do nome
www.IinuxIoday.com. No segundo, o guery do reverso do nome 10.191.231.200.in-
addr.arpa. No Ierceiro e no guarIo casos esIamos Iazendo o guery do regisIro MX do
nome ibm.neI. No Ierceiro, o servidor de nomes acionado ser o deIauII e, no segundo,
ser o 200.231.191.10.
Obs. D Windows no trcz nctivcmcntc um cquivclcntc co nslookup.
arp -a
arp -s 192.168.1.12 00.80.48.EB.06.C0 pub
O primeiro comando exibe o cache ARP. O segundo Iaz com gue reguesIs ARP IenIando
IocaIizar o !P 192.168.1.12 se|am respondidos com o endereo de hardware
00:80:48:8:06:CD (proxy-arp).
lcpdump arp
lcpdump -1 elh0 arp
lcpdump -1 ppp0 -l -n -s 120
lcpdump porl 80
lcpdump lcp and porl 80
!nicia a escuIa de pacoIes. No primeiro caso, exibir apenas os pacoIes ARP gue
circuIem na inIerIace deIauII. No segundo expIiciIa-se gue a inIerIace e a eth0 (gue, no
Linux, e a primeira inIerIace eIherneI). No Ierceiro a inIerIace e Irocada para ppp0 (no
Linux, e a primeira inIerIace PPP), a opo -n eviIa gue se|am IeiIos gueries DNS
NoIas de AuIa de TCP/!P hIIp://www.ime.usp.br/~ueda/Idoc/noIasIcp.hImI
67 de 69 22-08-2013 17:S4
reversos e a opo -s 120 aumenIa o Iamanho do Irecho iniciaI do pacoIe a ser
capIurado (IiI para exibir os nomes no caso de pacoIes DNS). O guarIo e o guinIo
exempIos exibiro apenas pacoIes HTTP, sendo gue o guinIo expIiciIa gue apenas
inIeressam pacoIes TCP.
Obs. (1) D Windows no trcz nctivcmcntc um cquivclcntc co tcpdump, mcs cxistc um
portc do tcpdump pcrc windows chcmcdo windump.
Obs. (Z) Ncs plctcjormc Unix-likc o uso do tcpdump costumc cxigir privilcgio dc
supcrusurio (cdministrcdor).
smbcl1enl -L hal -T 192.168.0.1 -N
smbcl1enl 11hal1ueda -T 192.168.0.1 -u ueda
Dois exempIos simpIes de uso do smbcIienI, gue e um cIienIe SM8 de Iinha de
comandos. Ie pode conecIar um servidor samba ou um servidor windows com
recursos comparIiIhados. No primeiro caso, IisIa os recursos do servidor hal gue
esIe|am disponIveis para usurios guaisguer (isso seria semeIhanIe ao dupIo cIigue no
Icone da mguina hal no ambienIe de rede do windows). No segundo, conecIa no
recurso "ueda" da mguina hal, gue no caso e um direIrio (ou "pasIa", no |argo do
windows), com os priviIegios do usurio "ueda" (opo -U). O smbcIienI nesIe caso
oIerece uma inIerIace assemeIhada do cIienIe TP de Iinha de comandos.
Obs. Nos dois ccsos c rcsoluo dc nomcs no joi ccioncdc porquc jorncccmos o |P do
scrvidor, no ohstcntc isso no c o usucl. A rcsoluo dc nomcs numc rcdc windows podc
no scr hcsccdc cm DNS. D scmhc pcrmitc rcclizcr c rcsoluo dc nomcs dc vrics
jormcs dijcrcntcs, incluindo DNS.
Wel -r -l 3 hllp.11WWW.1me.usp.br11ndex.hlml
O wget e um dos robs mais popuIares aIuaImenIe, e cosIuma vir incIuIdo nos CDs de
Linux. O comando acima copiar pginas HTML e imagens do servidor
www.ime.usp.br a parIir da pgina index.hImI, com nIveI de recurso 3. Dessa Iorma o
wgeI permiIe espeIhar servidores HTTP e TP.
Obs. (1) D uso cjicicntc do wgct ou dc quclqucr outro roh cxigc um conhccimcnto
minucioso dos scus rccursos, principclmcntc cquclcs dcstincdos c rcinicicr umc cpic j
pcrciclmcntc rcclizcdc c c limitcr o consumo dc hcndc. ucm quiscr utilizcr o wgct lcic
no mcnucl dclc c dcscrio dcs opcs -c, -nc, - c -D
Obs. (Z) D uso dc rohs pcrc copicr cs pgincs dc um sitc podc cstcr cxplicitcmcntc
dcscutorizcdo por cssc sitc. Alcm disso, cpics dc grcndcs volumcs gcrcm consumo dc
rccursos (CPU c hcndc dc comunicco) cprccivcis nc injrccstruturc rcmotc, c s dcvcm
scr jcitcs dc jormc monitorcdc c no chusivc.
16. Os RFCs
sIa noIa deveria IaIvez ser a primeira desIe documenIo, visIo gue os RCs so |usIamenIe os
sIandards gue deIinem o TCP/!P. No obsIanIe, por se IraIar de IexIos gue necessiIam Ier
grande preciso Iecnica, preIerimos IaIar deIes ao IinaI. Os RCs podem ser obIidos no !T
NoIas de AuIa de TCP/!P hIIp://www.ime.usp.br/~ueda/Idoc/noIasIcp.hImI
68 de 69 22-08-2013 17:S4
(hIIp://www.ieII.org), incIusive um Indice. MuiIos ouIros siIes enIreIanIo oIerecem os RCs
na !nIerneI,e aIguns deIes com IerramenIas de busca e uma esIruIurao por Iemas. Os RCs
no incIuem apenas especiIicaes Iecnicas do TCP/!P (e.g. RC 821 (SMTP), RC 1939 (POP3),
RC 1661 (PPP), eIc), mas Iambem bibIiograIias, opinies e comenIrios, IexIos de carIer
inIormaIivo, como pergunIas e resposIas sobre a !nIerneI (RC 2664), gIossrios (RC 1208,
RC 1983 RC 2828), eIc. uaIguer pessoa pode criar um novo proIocoIo e prop-Io para ser
incIuIdo no TCP/!P sob a Iorma de um novo RC. O procedimenIo para Iaze-Io esI descriIo
no siIe do !T.
17. Bibliografia breve
[1] Comer, D. |ntcrnctworking with TCP-|P voI. !, PrenIice HaII. xceIenIe inIroduo ao
TCP-!P. O voIumes !! e !!! (principaImenIe o !!) enveIheceram muiIo.
[2] Stevens, W. R. TCP-|P |llustrctcd, voI. !, Addison WesIey, 1994. geraImenIe considerado
o meIhor Iivro de TCP-!P disponIveI aIuaImenIe. O VoIume !! descreve a impIemenIao de
TCP/!P do 8SD e inIeressar apenas aos especiaIisIas. O voIume !!! Iambem e de inIeresse
reIaIivo, exceIo peIa abordagem IeiIa do HTTP.
[3] Claus Rugani Tpke, Provcdor |ntcrnct, Makron, 1999. Um Iivro ob|eIivo e muiIo bem
escriIo.
[4] Garfinkel, S., and Spafford, L. PracIicaI Unix SecuriIy, O'ReiIIy, 1991. xceIenIe Iivro,
IciI de Ier e com basIanIe conIedo. sse e/ou ouIros IIIuIos de ugene SpaIIord esIo
pubIicados Iambem em porIugues.
NoIas de AuIa de TCP/!P hIIp://www.ime.usp.br/~ueda/Idoc/noIasIcp.hImI
69 de 69 22-08-2013 17:S4