الان به جایی رسیدهایم که میتوانیم بحث پورتها را شروع کنیم. اولین نکتهای که باید بگم این است که ابزاری که به کمک آن با پورتها صحبت میکنیم در همه پورتها یکی است ولی هر پورتی زبان مخصوص خود دارد (درست مثل زبانهای مختلف در جهان که همشون از طریق زبان و دهان ادا میشن ولی هر کدام روش خاصی برای ارتباط برقرار کردن دارند). پس ما برای کار با پورتها باید زبان هرکدام را یاد بگیریم. بحث بعدی این است که وقتی میگیم یه پورت بازه باید توجه کنید که برنامهای روی آن کامپیوتر نصب شده و اون پورت را باز کرده است (پورتها خود به خود باز نمیشوند). یک سری پورتها توسط خود سیستمعامل باز میشوند (یعنی به محض نصب سیستمعامل که خودش هم درواقع یه نرمافزاره) و نیازی نیست که برنامه دیگری برایش نصب کنیم. در مقابل، بعضی پورتهای دیگر توسط برنامههای جانبی باز میشوند. به عنوان مثال وقتی میگم که پورت ۲۵ روی یک ip باز است، این معنی را دارد که برنامهای روی اون کامپیوتر خاص وجود دارد که پورت ۲۵ را باز کرده و من وقتی از طریق کامپیوتر خودم با آن پورت کار میکنم در واقع دارم با آن برنامه خاص (که اون پورت را باز کرده) صحبت میکنم. حالا یه سوال پیش میآد که چرا اصلا یه نرمافزار باید پورت باز کنه و اینکه کدام نرمافزارها باید پورت باز کنند؟ جواب این است که هر برنامهای که بخواهد از طریق شبکه (یعنی از راه دور اصطلاحا remote) قابل دسترس باشه باید یه پورت باز کنه. پس یک برنامهای که نیازی به برقراری ارتباط شبکهای ندارد (مثلا یه نرمافزار گرافیکی) نباید و نشاید که پورت باز کند. باید ببینیم که از طریق چه برنامهای میتوان با پورتها صحبت کرد ( البته با هرکدام به روش خودشان )؟ برای اینکار از دو نرمافزار به نامهای telnet و nc استفاده میکنیم. telnet که در خود سیستمعامل وجود دارد و nc را هم که جلسه قبل داونلود کردیم. حالا چگونه از این دو نرمافزارها میتوان استفاده کنیم؟ ۱- استفاده از telnet : اگر بخواهیم با ip ای به شماره 194.225.184.13 از طریق پورت 25 صحبت کنیم باید بنویسیم: telnet 194.225.184.13 25 ۲- استفاده از nc : اگر بخواهیم همان کار را با netcat انجام دهیم، باید بنویسیم: nc -v 194.225.184.13 25 |
◊ با پورت ۱۳ صحبت کنیم |
نام دیگر اون daytime است و کارش هم اینه که زمان و تاریخ رو در اون کامپیوتر به ما میده. این پورت اصولا خیلی سر راسته. فقط کافیه که بهش وصل شیم تا اطلاعاتشون بیرون بریزه. البته این پورت رو خیلی از کامپیوترها بسته است. (یادتون باشه که وقتی میتوان با یه پورت کار کرد که باز باشد). حالا میخوایم با پورت ۱۳ از ip شماره 194.225.184.13 صحبت کنم. یکی از این دو دستور را مینویسم: telnet 194.225.184.13 13
nc -v 194.225.184.13 13 و جواب میشنوم: 11:35:33 AM 10/5/2002 |
◊ با پورت ۷ صحبت کنیم |
اسم این پورت echo است. من این پورت رو پورت میمون میگم چون هرچی که شما براش بنویسید را تقلید میکنه و همانها را براتون پس میفرستد. مثلا من به پورت ۷ کامپیوتری با ip شماره 194.225.184.13 تلنت یا nc میکنم. telnet 194.225.184.13 7
nc -v 194.225.184.13 7 پس کار کردن با این پورت هم زیاد سخت نیست. |
◊ با پورت ۸۰ صحبت کنیم |
پورت ۸۰ یکی از مهمترین پورتهاست. دنیای وب (صفحات اینترنتی) بر اساس همین پورت کار میکنه. توضیح اینکه وقتی به یه سایت وصل میشیم و صفحه وب را درخواست میکنیم، در واقع مرورگر اینترنتی به پورت ۸۰ اون کامپیوتر وصل میشه و اطلاعات رو میگیره (البته بعد از گرفتن اطلاعات اون رو تفسیر میکنه و به صورت یه صفحه نشون میده - دقت کنید که اطلاعات در واقع به صورت یک سری تگ HTML است ). حالا ما میخواهیم با پورت ۸۰ یک کامپیوتر صحبت کنیم ولی به کمک telnet و nc. اول باید یه connection (اتصال) با پورت ۸۰ برقرار کنیم (مثلا برای سایت hotmail.com باید بنویسم): telnet www.hotmail.com 80
nc -v www.hotmail.com 80 حالا باید شروع به صحبت با پورت ۸۰ کنیم. من فعلا دو تا جمله براتون میگم و بقیهاش بمونه واسه بعد. دقت کنید که موقع کار با پورت ۸۰ با تلنت (نه nc) دستوراتی که ما مینویسیم، نمایش داده نمیشود ولی کار میکنه. ۱- اولین جمله اینه: GET / HTTP/1.0 و بعدش دوتا Enter به فاصلهها دقت کنید. دو طرف / ی که بعد از GET است، فاصله وجود دارد. این جمله به پورت ۸۰ میگه که هرچی در header داره، نشون بده. و جواب میشنوم: HTTP/1.0 302 Moved Temporarily
Server: Microsoft-IIS/5.0
Date: Thu, 05 Dec 2002 12:02:51 GMT
Location: http://lc2.law5.hotmail.passport.com/cgi-bin/login
X-Cache: MISS from cache5.neda.net.ir
Connection: close ۲- دومین جمله اینه: GET / what/ever و بعدش دوتا Enter به فاصلهها دقت کنید. این دستور باعث میشه که هر چی داره، رو کنه. البته توجه کنید که ما مسیر را مشخص نکردیم. بعدها در مورد این مسیر مشخص کردن صحبت خواهم کرد. این حالت که بدون مسیر است خیلی وقتها کار نمیکنه (مثل همین مثال !!) گاهی پیش میآد که یک سری دستورات خاص را همیشه باید پشت سرهم به یه پورت خاص بفرستیم و بخواهیم در وقت صرفهجویی کنیم. مثلا همین جمله GET / HTTP/1.0 و دو Enter پشت سرهم که همیشه استفاده میکنیم. در این موارد میتوان این دستورات را در یک فایل تایپ کرد (همراه با Enter ها که باید موقع نوشتن حتما بزنید) و بعد مثلا با نام ali.txt ذخیره کنید و بعد یکی از دستورات زیر را بنویسیم: nc -v www.far30.com 80 < ali.txt
type ali.txt | nc -v www.far30.com 80 |