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* 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