شما میتوانید اپلیکیشن اندروید ما را دانلود کنید.
مخصوص نسخه اندروید 4.4 به بالا دانلود اپلیکیشن اندروید

وبلاگ

قدرت protocol analyzer ها

Russian Yuri Vlasov (C) weight lifter putting on private exhibit for invited group of Olympic athletes before official contests. (Photo by Mark Kauffman/The LIFE Picture Collection/Getty Images)

در دنیای پیچیده شبکه ها، مشکلات اتفاق می افتند. اما تعیین علت دقیق یک مشکل جدید در زمانی که شما سخت خشمگین هستید، می تواند قدری خطرناک باشد. در چنین مواردی، حتی مهندسین ذیصلاح نیز ممکن است پس از آنکه از تکنیک های جست و جو در گوگل نا امید شدند، بواسطه این که تحت فشار هستند به آزمون و خطا روی آورند.

خوشبختانه یک اسلحه مخفی برای مهندسین مشتاق به توسعه وجود دارد که نام آن، protocol analyzer است. این ابزار این امکان را به شما می دهد تا تقریبا به طور دقیق سر منشاء هر خطایی را تعیین کنید و علاوه بر این زمینه آشنایی شما را با پروتکل های اساسی نیز فراهم می کند. بسیاری از مهندسین تنها به علت ترسی کاملا غیر منطقی، از رو به رو شدن با این ابزار به طور کلی اجتناب می کنند.

protocol analyzer چیست؟

protocol analyzer یا packet sniffer ابزاری است که برای intercept کردن ترافیک، ذخیره و ارائه آن در یک قالب رمز گشایی شده و قابل فهم برای انسان استفاده می شود. “protocol analyzer” هایی مدرن مانند Wireshark حتی می توانند مشکلات ابتدایی را به خودی خود کشف کرده و پس از آن با کمک اطلاعات ضبط شده به تجزیه و تحلیل آماری بپردازند.

صرفنظر از قابلیت ها، “packet sniffer” ها همگی به یک شیوه عمل می کنند. آن ها با قرار دادن خودشان در network stack، کلیه ترافیک های خروجی را در buffer یا در یک فایل کپی می کنند. همچنین اکثر این ابزارها network driver را در حالتPromiscuous  قرار می دهند، که اصولا این کار موجب می شود تا این ابزار، به جای آن که تنها ترافیک های ارسال شده برای سیستم خود را جمع آوری کند، تمامی ترافیک وارد شده به network stack را گردآوری کند.

Protocol analyzer ها به چه شکل مفید واقع می شوند؟

در بسیاری از موارد، سخت ترین قسمت حل یک مشکل در شبکه، پیدا کردن و درک منشاء مشکل است. بخشی از این مشکلات ناشی از این واقعیت است که برخی از ابزارهایی که برای بیشتر مشکلات خود از آنان استفاده می کنید، ابزارهای مناسبی برای مشکلات لایه های پایین تر نیستند.

چنانچه شما یک ادمین باشید، این امکان برای شما وجود دارد تا برای گرد آوری داده های ثبت شده از انواع و اقسام پیغام های خطا، به سراغ ابزارها بروید. به طور کلی هر دو این ابزارها، ابزارهایی تفسیری هستند. این ابزارها تلاش می کنند تا داده های خام را به شکلی خلاصه کنند که، فهم آن برای افرادی به جز توسعه دهندگان و مهندسان نیز ممکن باشد و از آنجایی که ابزارهای تفسیری خلاصه ای از داده های بدست آمده از مشکلات را از منظر لایه Application ارائه می کنند، در نتیجه این ابزارها برای حل مشکلاتی که در لایه های پایین تر رخ می دهد عملا کاربردی ندارند.

به عنوان مثال، پیغام ثبت یک رویداد ممکن است به شما اعلام کند که یک application موفق به برقراری ارتباط با سرور نشده است، حتی ممکن است به شما بگوید که عامل اصلی این مسئله، به وجود آمدن وقفه (timeout) بوده است. اما بسیار بعید است که این پیغام به شما اعلام کند که این وقفه بوجود آمده به خاطر وجود حفره سیاه یا همان  Black Holeدر روتر است که باعث از دست رفتن یک large frame شده است. این اتفاق رخ نخواهد داد، زیرا سرویس پیغام ثبت یک رویداد، از دلیل به وجود آمدن این خطا اطلاعی ندارد. برای این که ابزار مذکور بتواند از این علت با خبر شود، نیاز است تا وقوع مشکل را به درستی پیش بینی(نه تفسیر) کند. ارسال بسته ها به MTU به طور پیوسته کاهش پیدا می کند تا زمانی که آخرین بسته نیز عبور کند. اگر سرویس پیغام ثبت یک رویداد (event log message service) برای انجام این کار برنامه ریزی شده بود، دیگر شما در وهله اول با مشکلی روبرو نمی شدید.

هنگامی که از ابزار نامناسب استفاده می کنید، ممکن است ساعت ها و یا هفته ها زمان صرف کنید تا در نهایت شانس این را پیدا کنید که به راه حلی برسید. اما با استفاده از Protocol analyzer و ping command قدیمی، شما به آسانی می توانید تا مشکلات را تنها در چند دقیقه شناسایی کنید. تمامی این صحبت ها بر سر استفاده از ابزاری صحیح برای انجام کار است.

گذشته از شناسایی خطا، Protocol analyzer ها یکی از معدود راه حل هایی هستند که منشاء مشکل را پیدا می کنند. برگردیم به روزهایی که من در شرکت مایکروسافت مشغول به کار بودم، در آن دوران نیز این بسیار مرسوم بود که برای مشکلات دشوار، تیم های مختلف بواسطه داده هایی که از برنامه های تفسیری بدست می آوردند دچار سوء تعبیر می شدند. این مسئله باعث می شد تا مشکل پس از عبور از تیم Exchange و سپس تیم Active Directory، در نهایت به تیم Networking برسد.

معمولا دلیل این مسئله این بود که یک مشکل از دید تیم فنی دیگر منطقی به نظر می رسید. اما با این حال این بحث در اغلب مواقع با کمک تیم شبکه به پایان می رسید. اما چرا؟ زیرا ابزارهای درجه یک این تیم می توانستند اثبات کنند که منشاء مشکل چه می باشد.

شبکه همانند سایر واحد های محاسباتی، کاملا در هسته خود منطقی (logical) عمل می کند. به محض اینکه دریابید این مجموعه در درون به چه شکل کار می کند، قادر خواهید بود که مشکلات را صرف نظر از خاص بودن آنان، در پایین ترین سطوح نیز شناسایی کنید. یکی از تاثیرات جانبی استفاده از Protocol analyzer ها این است که شما با بخش اعظمی از شبکه آشنا می شوید که خود باعث می شود تا شما از پس حل بسیاری از مجموعه مشکلات مرتبط با شبکه برآیید (حتی اگر آن مشکلات نیازی به Protocol analyzer نداشته باشد).

اصول ابتدایی Wireshark

این روزها Protocol analyzer ها از تنوع بسیاری برخوردارند، از نمونه های رایگان و کاملا کاربردی (Microsoft Message Analyzer) تا نمونه های بسیار پر امکانات و بسیار گرانی همچون (Savvius Omnipeek)، همگی در این دسته قرار می گیرند. من در این سال ها با تعدادی از آن ها کار کرده ام، اما Protocol analyzer محبوب من برای عیب یابی های کلی و عمومی، Wireshark است. Wireshark یک نمونه رایگان، open-source، multi-platform است که از امکانات بسیاری برخوردار می باشد. سادگی استفاده این ابزار تجزیه و تحلیل، موجب شده است تا این ابزار نقطه شروع مناسبی به نظر برسد.

شما می توانید Wireshark متناسب با سیستم عامل خود را از آدرس (https://www.wireshark.org) دانلود کنید. نکته خاصی برای نصب این ابزار وجود ندارند، اما اگر قصد دارید تا آن را بر روی ویندوز نصب کنید، اطمینان حاصل کنید که از قبل، درایور WinPCAP را نصب کرده باشید (که این درایور بصورت باندل همراه پکیج ارائه میشود). این کار باعث می شود تا Wireshark به شکل عملی packet ها را ضبط کند (بدون این کار تنها می توانید داده های ضبط شده آرشیوی را مشاهده کنید).

Wireshark معمولا در کارت شبکه (NIC) شما و در وضعیت promiscuous جای می گیرد. در حالت عادی، کارت شبکه شما تنها فریم ها مقرر شده برای MAC شما یا (Broadcast MAC (FF-FF-FF-FF-FF-FF را نگه داری می کند. اما اگر promiscuous mode فعال گردد، کارت شبکه هر آنچه را که از آن عبور می کند را حفظ می کند.

از نظر تئوری، این بدین معنی است که در این حالت شما می بایست تمامی packet های موجود بر روی Ethernet segment را دریافت کنید. اما عملا با در نظر گرفتن این مسئله که اکثر شبکه های امروزی مبتنی بر switch هستند، ضبط تمام ترافیک عبوری از کارت شبکه، تلاش بیشتری را می طلبد.

با نصب Wireshark به آسانی می توانید از آن استفاده کنید. به محض اجرا این ابزار با صفحه ای به شکل زیر روبرو خواهید شد:

image1-640x426

این صفحه علاوه بر امکان انتخاب کارت شبکه مورد نظر برای ضبط packet ها عبوری، امکان فیلتر کردن تنها بخشی از بسته ها  packetهای ورودی به کارت شبکه را نیز فراهم می کند. چنانچه یک کارت شبکه را انتخاب کنید و بر روی آیکونی که به شکل بال کوسه می باشد و در زیر منوی فایل قرار دارد، کلیک کنید Wireshark بلافاصله اقدام به ضبط packet ها می کند.

همزمان که packet ها در حال ضبط شدن می باشند، Wireshark به شکل زنده آنان را در صفحه اصلی به نمایش در می آورد. هنگامی که قصد داشتید تا روند ضبط را متوقف سازید، کافی است تا به سادگی بر روی آیکون قرمز رنگ مربعی شکل که در کنار آیکون بال کوسه قرار دارد کلیک کنید.

image2-640x453

بخش packet list (لیست بسته ها) هر آنچه که در این مرحله ضبط شده است را به شکلی دسته بندی شده و مرتب (به شکل پیش فرض) به نمایش در می آورد (شما می توانید با کلیک بر روی عنوان نحوه چیدمان این packet ها را مطابق میل خود تغییر دهید).

بخش packet details (جزئیات بسته ها)  هر هدری (header) را که Wireshark آن را از درون packet رمزگشایی کرده است را نشان می دهد. تقریبا می توان گفت که رمز گشاهای (decoders) ابزار Wireshark برای تمامی پروتکل های مورد استفاده امروزی کاربرد دارند، ابزار decoder برای نمایش داده ها به شکلی مجزا به شما، به صورت خودکار از هر packet استفاده می کند.

به عنوان مثال در شکل زیر مشاهده می کنید که من هدر Ethernet II متعلق به یک بسته HTTP معمولی را باز نموده ام:

image3-640x84

همانگونه که مشاهده می کنید Wireshark، مقصد (destination) و آدرس های source MAC و نوع آن ها را که ۰x800 می باشد را به تفکیک از یکدیگر جدا ساخته است، Wireshark  با استفاده از بخش نوع شاخه (type field)، مشخص می کند که هدر بعدی می بایست یک هدر از نوع آی پی ورژن ۴ (IP version 4 header) باشد.

ویژگی این نوع از رمزگشایی این است که می تواند شما را از شمردن بایت ها و رمزگشایی آنان توسط خودتان خلاص کند (گرچه در صورت تمایل همچنان می توانید این کار را با استفاده از بخش raw bytes انجام دهید). همچنین در بخش raw bytes، این ابزار همزمان این امکان را فراهم می کند تا با استفاده از یک تبدیل ASCII برای داده ها، در برخی از موارد به اطلاعات جالبی دست پیدا کنید.

image4

Wireshark همچنین امکانات خوبی در زمینه تجزیه و تحلیل آماری ارائه می کند. این ابزار این قابلیت را دارد که زمان رفت و برگشت پاسخ را نیز اندازه گیری کند. اما با این همه مفیدترین ویژگی این ابزار تاکنون، ویژگی فیلترینگ آن می باشد.

دقیقا در زیر قسمت (packet list) جعبه متنی وجود دارد که با ورود به آن فیلترهای موجود به نمایش در می آیند. اما به طور پیش فرض هیچ فیلتری اعمال نشده است، که معنی این جمله این است که تمامی packet های ضبط شده در حال نمایش است. با این حال در شرایطی که با اطلاعات بیش از از نیازتان روبرو هستید، امکان حذف اطلاعات اضافی در تجزیه و تحلیل بسته ها، از اهمیت بسیاری برخوردار است.

فیلترها در Wireshark برای فیلتر کردن packet هایی که مطابق با معیارهای شما نیست، از یک زبان ساده آمیخته شده با شاخه های مرتبط با پروتکل ها، عملگرهای توصیفی و عملگرها منطقی استفاده می کنند. به عنوان مثال، فیلتر http تنها ترافیک های HTTP را نمایش می دهد، و فیلتر (ip.addr == 192.168.1.10) تنها packet هایی را نمایش خواهد داد که یا source IP address آن ها یا destination IP address آن ها ۱۹۲٫۱۶۸٫۱٫۱۰ باشد.

وقتی برای اولین بار وارد بخش فیلتر می شوید ممکن است قدری احساس نگرانی کنید، اما آسان ترین راه برای یادگیری فیلترهای Wireshark این است که از ابزار توصیفی موجود در خود نرم افزار استفاده کنید. دسترسی به این بخش از طریق کلیک بر روی دکمه ای که در قسمت راست کادر متنی فیلتر قرار دارد، امکان پذیر است.

این ابزار این امکان را به شما می دهد تا تمامی پروتکل های Wireshark که به صورت بومی پشتیبانی می شود را دسته بندی کنید و شاخه ای را که مد نظر شماست را بدون آنکه از کلمات و ادبیات آن اطلاعی داشته باشید برگزینید. برای این منظور به راحتی پروتکل را انتخاب کنید، قسمت هایی را که ظاهر می شود را پر کنید و پس از آن بخش فیلتر بر اساس نیاز شما ساخته می شود.

image5

به نحوه نمایش ترکیب نهایی فیلتر که در پایین در کادر سبز قرار دارد توجه کنید. با توجه لازم به این بخش، شما می توانید تا در نهایت با بیشتر فیلترهای مورد استفاده عموم آشنا شوید.

کاری که نمی توانید با ابزارهای توصیفی انجام دهید، به رشته در آوردن فیلترهاست. برای این کار نیاز است تا شما با تعداد کمی از عملگرهای منطقی آشنا باشید. عملگرهای منطقی ابتدایی Wireshark عبارتند از:

and (&&)، or (||) و and not (!).

(And) برای یکی کردن فیلترها استفاده می شود؛ بنابراین با استفاده از آن packet هایی نمایش داده خواهند شد که کلیه معیارهای از پیش تعیین شده برای نمایش را داشته باشد. برای مثال، فیلتر (http && ip.addr == 192.168.1.10) تنها packet هایی را نمایش خواهد داد که هر دو شرط وجود هدر پروتکل HTTP در لایه ۷ و آدرس IP، ۱۹۲٫۱۶۸٫۱٫۱۰ را در هدر IP خود داشته باشند.

عملگر (Or) از آنجا که برای یافتن فیلتر هم استفاده می شود، پس با استفاده از آن packet هایی نمایش داده خواهند شد که با معیارهای تعیین شده توسط شما همخوانی داشته باشد. به عنوان مثال، فیلتر (http || ip.addr == 192.168.1.10) packet هایی را نشان خواهد داد که یکی از قیدهای تعیین شده توسط شما یعنی وجود هدر پروتکل HTTP در لایه ۷، یا آدرس IP، ۱۹۲٫۱۶۸٫۱٫۱۰ را در هدر IP خود داشته باشند.

عملگر (Not) برای فیلتر کردن چیزی از نتایج بدست آمده کاربرد دارد. برای مثال، فیلتر (ip.addr == 192.168.1.10 ! http) packet هایی را نمایش می دهد که آدرس IP، ۱۹۲٫۱۶۸٫۱٫۱۰ را در هدر IP خود دارند اما هدر پروتکل HTTP در لایه ۷ را ندارند.

آخرین چیزی که می بایست در رابطه با قابلیت های اساسی مربوط به  ابزار  Wiresharkبه آن توجه داشته باشید، آن است که علاوه بر ذخیره اطلاعات فرآوری نشده، شما همچنین می توانید این اطلاعات را با استفاده از امکانات گسترده ای که در اختیار شما قرار گرفته است صادر کنید.

برای شروع، شما packet فعلی انتخاب شده، همه packet ها، packet های مشخص شده و یا بازه ای از packet ها را ارسال می کنید. با انتخاب هر یک از این گزینه ها شما می توانید تمامی packet های ضبط شده یا تنها آن هایی را که به نمایش در آمده اند را ارسال کنید. این گزینه ها مشخصا این اجازه را به شما می دهند تا دقیقا packet های مورد نظرتان را به بیرون صادر کنید.

image6-640x587

علاوه بر این، شما می توانید تا تقریبا packet ها را با هر فرمت رایجی صادر کنید، یکی از بهترین قابلیت های Wireshark برای اسناد و ایمیل ها، قابلیت تقسیم کردن packet ها به شکل متن ساده، یا فرمت CSV برای ارسال می باشد (packet کاملا رمز گشایی شده). برای انجام این کار کافی است تا تنها (Export Packet Dissections) را از منوی فایل انتخاب کنید.

چگونگی درک آنچه که مشاهده می کنید

در حالی که تمامی این قابلیت ها به نظر خوب می رسند، اما چنانچه در رابطه با درک هر یک از شاخه های قرار گرفته در هر هدر (header) دچار مشکل باشید، تمامی این اطلاعات بی فایده به نظر می رسند. خوشبختانه به جز چند مورد پروتکل خاص، مشخصات مرتبط با پروتکل هایی که شما به آن ها برخورد خواهید کرد به شکل رایگان و آنلاین در دسترس عموم قرار دارد.

به عنوان مثال: برای Ethernet می توانید تا مستقیما به IEEE مراجعه کنید و استانداردها را دانلود کنید؛ استاندارد ۸۰۲٫۳ به نشانی http://standards.ieee.org/about/get/802/802.3.html در دسترس است. این استاندارد رایگان و مستقیما از منبع معتبر می باشد. اما اگر شما به دنبال فرمت فریم ۸۰۲٫۳ Ethernet هستید، در اینجا در حال حاضر تنها سه شاخه وجود دارد: Destination MAC Address، Source MAC Address و حوزه Type/Length.

اگر مایلید تا بدانید چه اتفاقی برای preamble و SFD افتاده است، باید بدانید که آن ها پیش از آنکه فریمstack  را از کارت شبکه به Wireshark منتقل سازد، حذف شده اند. به شکل مشابه و به طور معمول، شما FCS را نیز در پایان مشاهده نمی کنید، چون FCS پیش از گذر از فریم حذف شده است.

بالاتر از لایه ۲، تمامی پروتکل های TPCTCP/IP توسط IETF کنترل می شوند و این RFC ها (درخواست برای توضیح) هستند که آن ها را معین می کنند. تمامی این RFC ها مستقیما و به شکلی رایگان بر روی سایت rfc-editor.org در دسترس قرار گرفته اند. در حالی که آنان کمی مختصر و مفید به نظر می رسند (و به همین دلیل است که درک آنان در برخی از مواقع دشوار به نظر می رسد)، اما همواره صحیح هستند، توضیحات واضح آن ها در رابطه با یک مسئه خاص در دسترس عموم قرار دارد و برای دستیابی به آنان کافی است تا یک جستجوی سریع در گوگل داشته باشید.

به عنوان مثال، یکی از چیزهایی که معمولا باعث سردرگمی افراد تازه کار می شود مسئله تعدد TCP reset ها، یا packet هایی هستند که RST flag آن ها به TCP header تبدیل شده است. با نگاه به RFC 793 (TCP) احتمالا این احساس به شما دست می دهد که RST همواره به چیز بدی اشاره دارد. تقریبا همه ۳۵ مورد، یا موارد بسیار مطرح شده از RST به نوعی با یک وضعیت خطا ارتباط داشته اند.

با این حال برای یک جست و جوی سریع در گوگل، استفاده از کلید واژه (tcp rst from client) می تواند باعث شود تا به بررسی های مفیدی در رابطه با این پدیده دست پیدا کنید. شاید بهترین بخش از انجمن Wireshark، قسمتی باشد که آن ها توضیح می دهند که این کار برای client application بسیار معمول است که به سادگی یک کد به جای آن که کانکشن را قطع کنند، آن را reset می کنند. در این وضعیت سرور از پیش یک FIN ارسال کرده است. کلاینت به جای آن که پاسخ خود را در قالب یک FIN/ACK ارسال کند و منتظر final ACK بماند، تنها با کمک ارسال یک RST و قطع session به بهینه سازی فرآیند می پردازد. این موضوع به وضوخ در مثال زیر قابل مشاهده است:

علاوه برspecs  و Google، منبع مناسب دیگر برای آشنایی با نحوه عملکرد پروتکل ها، مراجعه به نمونه های از پیش انجام شده می باشد. این کار باعث می شود تا نه تنها شما نسبت به عملیات رایج و در عین حال مبهمی که پروتکل ها انجام می دهند، دید نسبتا مناسبی پیدا کنید، بلکه با خطاهای غیر معمولی که ممکن است کمتر اتفاق بیافتد نیز آشنا خواهید شد.

برای شروع بهتر است تا کار خود را با مراجعه به نمونه های ضبط شده در Wireshark Wiki به آدرس: https://wiki.wireshark.org/SampleCaptures آغاز کنید. وجود تعداد زیادی از نمونه های ضبط شده و مفید در این جا باعث می گردد تا شما از طریق دانلود آن ها با نحوه کارکرد فیلتر در این ابزار و سایر قابلیت های Wireshark از جمله خطاهای جالبی همچون broadcast storms، viruses و attack suites آشنا شوید. اگر این تعداد مثال هم شما را راضی نکرد، لینک های دیگری نیز در این صفحه وجود دارد که با معرفی چندین منبع دیگر شما را در رساندن به هدفتان یاری می کند. اما بی شک سریع ترین راه برای مهارت پیدا کردن در زمینه تجزیه و تحلیل پروتکل ها، نگاه به تعداد زیادی از نمونه های ضبط شده و تلاش برای درک هرچه بهتر پروتکل های مورد استفاده می باشد.

چگونه به بهترین نحو اطلاعات را ضبط کنیم؟

تا زمانی که شما اطلاعاتی درست را ضبط نکرده باشید، حتی برخورداری از بالاترین سطح از هوش و توانمندی نیز به شما کمکی نخواهد کرد. در سطوح ابتدایی هدف تنها این است که packet هایی  ضبط شوند که با مشکل مرتبط اند و انجام این کار، خود باعث می شود تا به شکل موثری میزان اطلاعات مزاحم از سر راه ردیابی برداشته شود.

برای کمک به این کار شما می توانید با استفاده از ابزار فیلتر، داده هایی را که مد نظرتان می باشد را از سایر اطلاعات ضبط شده مستثنی کنید. این کار در زمانی که می دانید دقیقا به دنبال چه چیزی هستید بسیار عالیست، اما در بیشتر مواقع این دیدگاه باعث می شود تا برخی اطلاعات مهم را از قلم بیاندازید. در بیشتر موارد شما در رابطه با مسئله به وجود آمده تنها یک ایده دارید که سرسختانه به آن باور دارید، یا ممکن است برخی از اصول اساسی را در فرآیند پیدا کردن خطا فراموش کنید. اگر چنین اتفاقاتی رخ دهد، شما شانس استفاده از فیلتر در ضبط packet ها را از دست خواهید داد، و نمی توانید تا تنها با بازگشت به عقب و حذف فیلتر، آن ها را باز پس گیری کنید.

به عنوان مثال، در عیب یابی مشکل عملکرد یک وب سایت، شما ممکن است تا تصمیم بگیرید از خودWeb server با استفاده از تنظیم کردن فیلتر، تنها داده های going to/from سیستم کلاینت و SQL server را ضبط کنید. در حالی که ممکن است منشاء مشکل شما، سرور احراز هویت ( authentication server ) باشد که بیش از حد زیر بار است و این وقفه پیش آمده برای سرور ارائه دهنده خدمات وب (Web server) دلیل اصلی مشکل عملکرد در سیستم شما باشد. شما با انتخاب فیلتر در چنین حالتی هرگز به نتیجه نخواهید رسید.

به همین خاطر است که من ترجیح می دهم تا تمامی داده ها را ضبط کنم و پس از آن با استفاده از فیلتر نمایش داده ها اطلاعات اضافی را کنار بگذارم. این صحبت به این معنی نمی باشد که بگوییم استفاده از فیلتر لازم نیست. یکی از رایج ترین کاربرد های فیلتر داده ها، زمانی است که شما ارتباطات بسیار پر ترافیک gigabit یا ۱۰gig  را دارید و استفاده از فیلتر سبب می شود تا حجم عظیمی از داده ها کاهش پیدا کند. بنابراین در این زمینه نیاز است تا همواره در استفاده از فیلتر محدودیت های آن را نیز در نظر بگیرید.

گام دوم در روند بهبود شیوه ضبط داده ها، شناسایی دقیق سیستم یا سیستم هایی است که شما داده ها را از روی آن ها جمع آوری می کنید. به عنوان نمونه، در مثال قبلی که در رابطه با Web server و مشکل در عملکرد آن بود، من ترجیح می دادم تا در ابتدا به شکل همزمان داده ها را از Web server و Web client ضبط می کردم. با این کار شما می توانید هر گونه انحراف از روند عادی سیستم ها را در هر دو طرف رصد کنید و مشکل را از هر یک از طرفین، یعنی server یا client مجزا کنید.

هنگامی برای من مشخص می شد که وقفه به وجود آمده از جانب server بوده است که با authentication در ارتباط است، آنگاه من اقدام به بررسی Web server و authentication server می کردم. با دنبال کردن این شیوه در نهایت من متوجه خواهم شد که مشکل authentication server محلی است، یا به خاطر مشکل در سرویس دیگری مانند DNS یا یک مشکل سراسری می باشد.

گام سوم در روند بهبود شیوه ضبط داده ها، ضبط داده تحت هر شرایطی است. به عنوان مثال، اگر شما به طور مداوم با مشکل در عملکرد Web server روبرو هستید، روند دنبال کردن این مشکل را هم در شرایط نرمال و هم در شرایطی که مشکل به وجود می آید ادامه دهید. با این کار شما با مقایسه ای که بین دو حالت “بد” و “خوب” انجام می دهید، می توانید مشکل را پیدا کنید.

اما به عنوان نکته آخر، هنگامی که با یک مشکل به طور مداوم درگیر هستید، ممکن است ضبط داده ها در شرایط خرابی، سخت به نظر برسد. در چنین مواردی Wireshark یک قابلیت استثنایی دارد که “ring buffer” نامیده می شود و به شما اجازه می دهد تا روند ضبط داده ها را بدون وقفه ادامه دهید.

معمولا و به خصوص در شبکه های پر ترافیک، ادامه روند ضبط داده ممکن است تا شما را با خطر پر شدن حافظه مواجه سازد. اما با استفاده از ” ring buffer”،Wireshark  رایت کردن یک فایل را تا زمانی ادامه می دهد که به یک حجم، یا یک زمان مشخص برسد، پس از آن است که این ابزار اقدام به ایجاد یک فایل جدید می کند. هنگامی که برنامه به حد مشخصی از فایل های رایت شده رسید، اقدام به حذف قدیمی ترین فایل ها می کند. برای مثال نگاهی به نحوه تنظیمات من در تصویر زیر داشته باشید:

image9-640x503

این تنظیمات نشان می دهد که Wireshark صرف نظر از حجم فایل هر ۱۰ دقیقه یکبار اقدام به ایجاد یک فایل جدید می کند، و اطمینان می دهد که برنامه در کل ۳ فایل را نگه داری می کند و در صورت نیاز قدیمی ترین ها را حذف می کند. این کار تضمین می کند که من از زمانی که خطایی در شبکه رخ می دهد، تا زمان آگاه شدن و توقف ضبط داده ۳۰ دقیقه زمان دارم. این تکنیک برای ضبط مشکلاتی که دائما اتفاق می افتند، بسیار مفید است.

image10

این مطالبی که مطرح شده است همگی تکنیک های اساسی هستند که برای شروع کار در حوزه عیب یابی با Wireshark به آن نیاز دارید. استفاده از این تکنیک ها و منابع معرفی شده باعث می شود تا شما در بیشتر اوقات در کمترین زمان نسبت به سایر تکنیک ها، بتوانید منشا عیب های موجود در شبکه را بیابید و آنان را رفع کنید.

برگرفته از:

The power of protocol analyzers