October 30, 2004

همیشه که نباید از مخابرات بد گفت !

درسته که من خیلی مواقع ایرادات عمدتا فنی و مسائل مخابراتی رو در این وبلاگ مطرح می کنم ، اما این یه طورای نامردی هستش که وقتی این ایرادات حل میشه و یا رو به بهبودی میره ، دیگه بی خیال مساله بشم و چیزی در موردش اینجا نگم .
دو مورد ایرادی که در اینجا مطرح کردم به کل رفع شده و دست مخابرات درد نکند . اولی در مورد گوشی های جدید نوکیا بود که با شبکه موبایل کشور مشکل داشت که از اول مهرماه این مشکل به کل حل شده و با خیال راحت می تونید هر گوشی جدیدی که خواستید بخرید و خیالتون راحت باشه که در تمام تهران ( شایدم ایران ، اما تهرانش رو که مطمئنم ) بدون هیچ مشکلی گوشیتون کار می کنه . به سلامتی حالا که گوشی ما دیگه از بورس خارج شده تازه به دردمون خورده :)
در مورد مشکل فیلتر هم اون مشکلی که ذکر کرده بودم به کل از بین رفته و حداقل در چند هفته اخیر هیچ مشکل و یا گزارشی در مورد وجود چنین مشکلی مشاهده نشده که نشانه بسیار مثبتی هستش .
مساله Spoofing هم که چند بار در این وبلاگ اشاره کرده بودم حل شده و الان دیگه Visitor های سایت های مختلف با IP آدرس های خودشون به وب سرور میزبان معرفی می شوند که باز هم این نکته بسیار مثبتی هستش .
در مورد پهنای باند در کشور همونطور که می دونید در حال حاضر 2 لینک 155Mb ( معادل STM-1 ) از جنوب کشور در اختیار مخابرات ما قرار دارد و ما بقی آن توسط ICP ها از طریق ارتباطات گران قیمت ماهواره ای در کشور وجود دارد . کار خوب دیگری که مخابرات خیز انجام آن را برداشته تهیه یک لینک 155Mb دیگر از شمال کشور است . ( یعنی احتمالا ترکیه و یا روسیه ) با انجام این کار نه تنها پهنای باند با Delay کم در کشور بیشتر می شود ، بلکه در صورت قطع شدن لینکهای جنوبی کشور ( که تا بحال بارها اتفاق افتاده است ) می توان از لینک شمالی کشور کماکان استفاده کرد .
تنها نکته دیگری که در حال حاضر نقطه منفی حساب می شود و باید گفت که خیلی در بازار اینترنت در ایران تاثیر دارد ، قیمت پهنای باندی است که مخابرات به مشترکین پرسرعت خودش ( یعنی ISP ها ) می دهد ، است . این قیمت معادل و حتی گاها بیشتر از قیمت پهنای باندی است که توسط ICP ها از ماهواره تامین میگردد . پر واضح است که قیمت پهنای باندی که از طریق ماهواره دریافت می شود بسیار گران است ، به دلیل اینکه اکثر پولی که داده می شود بابت اجاره کانال های ماهواره است . اگر قیمت اجاره این کانال های ماهواره را از آن کم کنید قیمت بسیار ( خیلی بسیار ! ) پائینتری بابت پهنای باند اینترنتی می توان پرداخت . ( چیزی برابر قیمت پهنای باند در اروپا ، حالا یکم بیشتر ) اما مخابرات ایران با اینکه قیمت اجاره کانالهای ماهواره ای را نمی پردازد و آن را بر روی خطوط فیبر نوری دریافت می کند ( که اجاره آن به مراتب پائینتر از اجاره کانالهای ماهواره است ) ، اما قیمت آن با قیمت پهنای باند بر روی ماهواره برابری می کند و گاها خیلی بیشتر است .
به نظر من با آمدن DSL و مشترکین نهایی پر سرعت ، اگر بخواهیم هم کیفیت خوبی را داشته باشیم و هم قیمت معقولی را ، باید قیمت پهنای باند مناسبی که توسط فیبر به کشور آمده و توسط مخابرات ارائه می شود بسیار پائینتر از این حرفا بیاید که هم برای مشترک نهایی قیمت خوبی باشد و هم کیفیت بهتری نسبت به لینکهای پر تاخیر ماهواره ای باشد . در هر صورت اگر مخابرات بنا به گفته مسئولین خودش دنبال کسب درآمد های کلان از فروش پهنای باند نیست ، باید قیمت آن را به مقدار قابل توجهی کاهش دهد و سعی کند خطوط ارتباطی فیبر دیتا با سایر کشور های همسایه ( مانند پاکستان ، ترکیه و روسیه و کشور های زیر مجموعه اش ) را گسترش دهد که این کار باعث میشود برای کسی صرفه تامین پهنای باند از ماهواره اقتصادی نباشد و ناچار رو به تامین پهنای باند از مخابرات خواهند آورد که این برای مخابرات که این همه بگیر و ببند برای دادن مجوز های ICP و جمع آوری دیشهای غیر مجاز کرد پدیده ای مبارک است .

October 17, 2004

اینم از مدرک ما !

از اونجایی که حتما خبر دارید که این دوره زمونه اگه مدرک نداشته باشه کلات پس معرکه هستش و دیگه با این همه مدرک MCSE و CCNA و CCNP و RHCE و ... دیگه انواع و اقسام که حتما شما از من بهتر بلدید ( تازه شنیدم همه اینا یه طرف جدیدا همینا با یک + آخرش اومده که کار درست تره!!! ) آدم بلانسبت گوسفند هم باشه لااقل یکی از این مدرک ها بهش میرسه که !!
اما هر چی فشار به خودمون آوردیم دیدم مشکل بنده پایه ای هستش و باید از Base تقویت کنم بیام بالا ، بنابراین فعلا علی الحساب یک مدرک Bungy Jumping که گرفتم می ذارم اینجا که هم کم نیارم و اونجای بعضی ها که نپریدن رو بسوزونم و هم به درخواست های مکرر آدمای ضایع !!! جواب داده باشم :)
راستش خودم هم فقط توی این مدرک اسم خودم رو بلدم بخونم و اصلا نمی دونم بقیه اش چی نوشته . فقط امیدوارم دری وری یا چیز ضایعی ننوشته باشه ! ( خدائیش اگه کسی روسی بلده ترجمه اش رو برای منم بفرسته ببینیم چه نوشته یه موقع ضایع نشیم ! )

October 13, 2004

Zelate بعد از مستندات

ابتدایی که مسعود این Framework خودش ( قالب کاری ترجمه خوبی هستش ؟ ) به نام Zelate رو درست کرده بود و خوب پروژه فارسی وبلاگ خودش رو بر اساس این قالب کاری طرح ریزی کرده بود ، خیلی از قالب کاری خودش تعریف می کرد. راستش اون روزا یکم کدهاش رو خوندم . مسعود بر خلاف شلم شولبایی که در زندگی کامپیوتریش داره و هر روز دنبال یه چیز جدید میره ( میگید نه وبلاگش رو یک ماه تعقیب کنید ) ، خیلی زیادی مامانم اینا و مرتب کد می نویسه و این برای کسی مثل من که خودم خیلی تمیز کد نمی نویسم هیجان آوره ! به هر حال اون موقع ها یه چیزایی از مبنای فکری این قالب کاری و نحوه کار بعضی از قسمت هاش فهمیدم . اما خوب حال و حوصله در آوردن ته و توش رو نداشتم چون کار وقت گیری هستش که از یک کلاس بدون مستندات بخواهید سر در بیارید و اون رو برای خودتون به کار بگیرید . اما حالا که کم کم مسعود مستندات این Zelate رو کامل کرده و مثال های بدرد بخوری از کاربرد بخشهای مختلف این قالب کاریش ارائه کرده ، میشه فهمید که این کلاس به چه دردهایی می خوره و چه قابلیت هایی داره . به شخصه از ZelateCache خیلی خوشم اومد و یه چند جایی هم ازش استفاده کردم. خوب کار می کنه و بعضی جاها بد کار رو راه می اندازه . بد نیست شما هم مستندات این پروژه بازمتن وطنی رو بخونید ( دیگه فارسی هم هستش و باید مثل بلبل بخونید ) شاید در بعضی از جاهای کد نویسی مثل من به کارتون بیاد و ازش استفاده کنید .
درسته هیچ کس در گسترش این پروژه کمکی به مسعود نکرده ( روم به دیوار خودم هم یکیشون ) اما اینکه مسعود پا پس نکشیده و هر چند کند اون رو ادامه داده و به جایی رسونده که میشه ازش استفاده کرد ، جای بسی عبرت داره برای خودم اول از همه که اصلا از این همت ها ندارم ( بسوزه پدر پول !!! ) .

October 06, 2004

این tcpdump مهربون

هر کسی که کمی با Network و Unix کار کرده باشه و به رد و بدل شدن اطلاعات درون Network علاقمند باشه حتما با Command محبوب و دوست داشتنی و بدرد بخور tcpdump زیاد کار کرده . خوب من قصد ندارم نحوه استفاده از این دستور رو در اینجا توضیح بدم ، چرا که اگه می خواهید نحوه کار کردن با این دستور را یاد بگیرید کافیست یک سری به Manual آن بزنید . اما نکته جالبی که چند روز پیش در مقاله یک آدم ناشناس در مجله هایی که در مورد Linux و Networking از Cebit آورده بودم دیدم و به نظرم جالب اومد اینجا شرح می دم .
تا حالا از سوئیچ d- در ادامه tcpdump استفاده کرده اید ؟! در توضیحات خود tcpdump گفته است :

Dump the compiled packet-matching code in a human readable form to standard output and stop.


خوب حالا بیایید یکی از خروجی های این دستور رو با هم بررسی کنیم :


[root@phone root]# tcpdump -d src 213.217.40.187 and icmp
(000) ldh [12]
(001) jeq #0x800 jt 2 jf 7
(002) ld [26]
(003) jeq #0xd5d928bb jt 4 jf 7
(004) ldb [23]
(005) jeq #0x1 jt 6 jf 7
(006) ret #96
(007) ret #0


اونایی که با زبان اسمبلی آشنایی دارند حتما از این کد های خروجی می تونن سر در بیارن . اما در عین حال یک توضیح مختصری در اینجا می دهم .
خط اول دو بایت اول packet رو از offset شماره 12 در حافظه بارگذاری می کند . ( به اصطلاح لری خودمون در packet های Ethernet ، دو بایت اول نوع و اندازه Ethernet header هستش )
در خط دوم این مقدار بارگذاری شده رو با مقدار 0x0800 مقایسه می کند . این مقدار Type Code مربوط به IPv4 هستش . در صورتیکه این مقدار برابر نبود به خط 7 برنامه می رود که در آنجا مقدار 0 را بر می گرداند . ( به اصطلاح لری اگر Packet از نوع IPv4 نبود ، این Packet را Reject می کند ) در صورتیکه این مقدار برابر بود به خط بعد که خط سوم برنامه با شماره خط 2 هستش می رود .
در این خط مقدار 4 بایت از ابتدای Packet را از Offset شماره 26 بارگذاری می کند . ( این 4 بایت Header مربوط به IPv4-over-Ethernet Packet هستش که در آن Source IP مربوط به Packet وجود دارد )
در خط بعد این مقدار را با 0xd5d928bb که معادل همان IP Address داده شده در خط فرمان است مقایسه می کند . در صورتیکه این مقدار برابر نبود به خط شماره 7 می رود ( مشخص است که چون Packet از Source دلخواه ما نیامده آنرا Reject می کند ) . در صورتیکه که برابر بود به خط شماره 4 می رود .
در خط بعد 1 بایت اول Packet رو از Offset شماره 23 در حافظه بارگذاری می کند . ( این مقدار در Packet از نوع IPv4-over-Ethernet نوع Protocol این packet را مشخص می کند ) . در صورتیکه این مقدار برابر 0x1 نبود ( شماره برچسب Packet از نوع ICMP ) به خط شماره 7 می رود ( مشخص است که چون ما درخواست Packet های ICMP رو کرده بودیم و این Packet از نوع ICMP نیست باید Reject شود ) و در غیر این صورت به خط بعد می رود که در آنجا مقدار 96 بازگردانده می شود که به معنای این است که این Packet با شرط داده شده تطابق دارد و مورد قبول است و 96 بایت اول این Packet خوانده شود .
کلا یک مقداری دید اسمبلی نسبت به این code خروجی داشته باشید مساله حله !
حالا این رو برای چی گفتم ؟! اولا اینکه مدتها برای خودم سئوال بود که این خروجی چه معنی میده و گفتم حالا که فهمیدم برای بقیه هم بگم شاید به دردشون بخوره و ثانیا اینکه در بررسی عملکرد شرط های تو در تو در tcpdump و تلفیق چندین شرط خفن میشه مشکل رو راحت از طریق این code پیدا کرد .