Feilsøking med pakkefangst

Mens jeg har programmert mesteparten av livet mitt, har jeg ikke brukt så mange år av karrieren min som 40 time i uken, kodeutvikler. Det er bare slik ting fungerte. Noe av det virkelig gode med dette er at jeg lærte et sett med ferdigheter som mange utviklere ikke har. For eksempel har all tiden jeg har brukt systemadministrasjon gitt meg stor innsikt i hvordan jeg kan løse problemer med applikasjoner, selv når du ikke kan se koden direkte eller knytte en feilsøking til en prosess. På en jobb jeg hadde, måtte jeg ofte finne ut den interne logikken i et program for å gjøre fikse endringer i utviklingspersonalet ... med ingenting annet enn HTML-utdata og muligheten til å se hvilke SQL-setninger den kjørte.

En av ferdighetene jeg bruker mye i det daglige arbeidet mitt er nettverksovervåking og pakkefangst for å finne problemer med webapplikasjoner. Jeg skal vise deg noen av verktøyene og triksene jeg bruker for å nærme meg denne typen problemer.

Hva er pakkefangst?

Pakkefangst er en teknikk der du bruker et program som registrerer deler av eller hele nettverkstrafikken på maskinen din. Et godt pakkefangstapplikasjon vil ødelegge trafikken etter kilden eller destinasjonen, porten eller protokollen, og forhåpentligvis systemprosessen som dataene kommer til eller kommer fra. En enda bedre pakkefangstapplikasjon vil ha forståelse for forskjellige protokoller og bryte trafikken ned til et passende syn for deg underveis.

Hva det får oss

Pakkefangster kan brukes til å skaffe alle slags nyttig informasjon fra et program når det kjøres. Den viser deg alle nettverkssamtalene som forekommer under panseret til et program; for eksempel bruker jeg det ofte for å forstå autentiseringsproblemer. En annen bruk er å løse problemer der et bibliotek kaster et unntak rundt nettverkstilgang, men ikke gir nesten nok informasjon til å fortsette. Etter at jeg begynte å gjøre det for noen år siden, finner jeg meg ut til å pakke fangst for å løse alle slags problemer som jeg aldri trodde jeg ville bruke det.

Verktøy

Valget av verktøyet mitt er Microsoft Network Monitor-applikasjonen (jeg vurderte Microsoft Network Monitor 3.3 for TechRepublic i august 2009). Det er andre gode applikasjoner der ute (Wireshark kommer til hjernen), men jeg har blitt vant til Microsoft Network Monitor, og det gjør en god jobb for meg.

Microsoft Network Monitor (Klikk på bildet for å forstørre.)

Fiddler er et lignende verktøy som jeg også synes er ganske nyttig, selv om Fiddler er litt annerledes enn en ekte nettverksmonitor. I stedet for å sitte på toppen av NIC, fungerer den som en proxy-server og registrerer deretter hva som går gjennom. Dette gir den ekstremt dyptgående titt på noen ting (spesielt SSL-trafikk, som pakkefangst ikke kan dekryptere), og den er optimalisert for å se HTTP-trafikk. Samtidig er det veldig begrenset (for eksempel vil det ikke vise deg DNS-oppslag).

Feilsøkingsprosessen

Jeg skal ikke gå i dybden med hvordan jeg bruker verktøyene; hver person vil finne et verktøy de liker, og verktøyene er ganske enkle å bruke. Men teknikkene du vil bruke er de samme.

Du vil vanligvis ikke starte fangsten før rett før problemet du prøver å løse kommer opp. Disse applikasjonene genererer massevis av data, og det kan være vanskelig å sortere gjennom, så du vil minimere det som samles inn så mye som mulig. Når problemet har oppstått, stopper jeg fangsten igjen for å minimere data. Deretter bruker jeg filtrene for bare å vise trafikk fra applikasjonen min, og deretter bruker jeg et annet filter for bare å vise trafikk til den andre maskinen. Dette vil la meg se de nøyaktige dataene jeg leter etter i prosessen.

Hvis jeg ikke ser trafikk dit jeg forventer at den skal gå, indikerer det vanligvis et DNS-problem som må løses. Slipp til en kommandolinje og prøv å pinge maskinnavnet, og kontroller at DNS-oppslaget skjer riktig. For mange ganger har jeg gått nøtt over en "feil", da det viste seg at noen la feil DNS-oppføring.

Hvis DNS ser opp riktig, men du ikke får noe svar, er det sannsynligvis et brannmurproblem. Bruk en telnet-klient til å koble til samme maskin og port som applikasjonen din, og se hva som skjer. Hvis det går ut, er det noe som blokkerer forbindelsen, og du må engasjere systemadministratoren som håndterer destinasjonsmaskinen for å få den sortert.

Hvis trafikken går bra, men noe går galt på applikasjonsnivå, vil nettverksmonitoren din være en stor hjelp her. Når du filtrerer ting på riktig måte, vil du se den nøyaktige trafikken du leter etter. Og når du velger den trafikken, vil et godt verktøy bryte den ned for deg, avhengig av protokoll, og la deg se spesifikk informasjon. For eksempel, med Microsoft Network Monitor, vil den oppdage SOAP-trafikk og gi meg et godt innblikk i XML-sendingen og SOAP-spesifikke ting som autentiseringsinformasjon, noe som helt klart er en stor hjelp når jeg jobber med web-tjenester. Du må ha god kunnskap om de underliggende protokollene og spesifikasjonene (jeg liker rfc-editor.org for dette) for å finne ut av ting, men du vil kunne se feilkoder som biblioteket eller rammen kan skjule direkte. . Et SMTP-bibliotek kan for eksempel bare si "Kunne ikke sende e-post", mens feilkoden avslørt i pakkefangsten vil si "Bruker eksisterer ikke" eller "Avvist med spamfilter", noe som vil føre deg til riktig løsning .

Konklusjon

Når du prøver å feilsøke et nettverksapplikasjon, er det virkelig ingen erstatning for pakkefangst som en teknikk. Det er så vellykket for meg at jeg har en vane å prøve det rett etter at jeg har funnet opp feilkoder for slike situasjoner. Jeg opplever at det er raskere å få øynene opp for problemet på et lavt nivå enn å trille søkemotorer og håper at en av dem får ut av millionresultatene for den generiske meldingen. Jeg tror at med litt trening vil det å lønne seg denne teknikken lønne seg for deg.

J.Ja

Avsløring av Justin's tilknytning til industrien: Justin James har en kontrakt med Spiceworks for å skrive produktkjøpsguider; han har en kontrakt med OpenAmplify, som eies av Hapax, for å skrive en serie blogger, opplæringsprogrammer og artikler; og han har en kontrakt med OutSystems om å skrive artikler, eksempelskode, etc.

© Copyright 2021 | pepebotifarra.com