جواب پرسش های شبکه

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

پرسیدن: «کنون درگاه یا سوکت که با دو جداساز نقطه در ipv4 نمایش داده میشوند؟؟ جور 80،8080،،»

سوکت یه چیزه، درگاه یا پورت چیز دیگه.

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

و اما پورت چیه؟ خب پورت به سادگی یه عدد هست برای اینکه بسته های ورودی و خروجی برنامه های مختلف روی یک سیستم و با یک IP مشترک بتونه از هم تشخیص داده بشه. مثلا روی یک سیستم مشترک من برنامه A رو اجرا میکنم و شما برنامه B رو، فرض اینا هر دو اطلاعاتی رو به سیستم C در اینترنت ارسال میکنن، حالا C در پاسخ بسته های IP خاصی محتوی اطلاعات خودشو به سیستم ما میفرسته، حالا سیستم ما از کجا تشخیص بده که اون بسته ها هرکدام مال کدام برنامه است هر بسته مشخص باید به برنامه A باید تحویل داده بشه یا B؟ این تفکیک از روی شماره پورتی که در بسته های ورودی ما توسط C مشخص شده انجام میشه، و این شماره پورت دریافت اطلاعات رو برنامه A و B هرکدام موقع ارسال اطلاعات به C در بسته های IP شون درج کرده بودن (البته بصورت دقیق تر این کارها در سطح پایین معمولا توسط سیستم عامل انجام میشه و این برنامه ها بصورت مستقیم خودشون بسته های IP رو نمیسازن، بلکه بواسطهء کتابخانه های سطح بالاتر، شماره پورت و دیتای مورد نظر برای ارسال رو برای سیستم عامل رو تعیین کردن و سیستم عامل بقیه کارها رو انجام میده).
البته بازم بصورت خیلی مختصر و ساده شده گفتم چون بازم جزییات و سوال زیاد پیش میاد در این مورد، ولی این یک نمونه مثالی بود که بنظرم بقدر کافی این مسئله رو جا میندازه. در هر صورت این سیستم کلی هست و مثلا محدود به این نیست که A و B حتما هردو با یک هاست C ارتباط برقرار کنن، و میتونه هاست های مختلف باشه، یا A و B حتما شروع کننده و ارسال کننده اولیه اطلاعات و اتصال اولیه نیستن و ممکنه سرور باشن و منتظر بمونن تا برنامه ای از طرف دیگه با اونا ارتباط برقرار کنه (و در اینطور مواقع اون برنامه طبیعتا باید شماره پورت دریافت اطلاعات توسط هر یک از برنامه های A و B رو بدونه تا بسته ها رو با اون شماره پورت مقصد ارسال کنه).
پس پورت در اصل هیچ چیز خاص و پیچیده ای نیست و فقط یک شماره هست برای مشخص کردن و تفکیک دیتاهای ارسالی و دریافتی برنامه های مختلف در سیستم.

پرسیدن: «کنون ipv6 هم در دستکاری چیدمان تنظیمات فرستنده گیرنده همان مودم هم میبینیم،،آیا این نشانی دهی یا آدرس دهی بزرگتر هست؟؟»

بله IPv6 فضای 128 بیتی داره و تعداد آدرسهای آیپی ممکن رو به میزان بسیار زیادی افزایش داده. دلیل اصلی طراحی IPv6 هم همین بوده که تعداد آیپی های ممکن با IPv4 محدود بود و با گسترش انفجاری اینترنت و هاست ها، تعداد آیپی های اختصاصی در دسترس به شدت کاهش پیدا کرده و رو به پایان است. خب زمانی که IPv4 اختراع میشد حتی مخترعینش پیشبینی نمیکردن که به این زودی ها زمانی برسه که فضای 32 بیتی آدرس های IPv4 که حدود 4.3 میلیارد آدرس است پر بشه.
البته IPv6 یکسری امکانات و تفاوت های قابل توجه دیگر هم نسبت به IPv4 داره طبیعتا، که چون جدیدتر هست امکانات و پیشبینی های بهتری بعضا با درس گرفتن از تجربه های گذشته درش تعبیه شده، ولی عمدهء دلیل اصلی و مزیتش در درجهء اول همین فضای آدرس بسیار بزرگی هست که در اختیار میذاره که میشه گفت انتظار نمیرسه در تاریخ بشر دیگه با مشکل کمبود آدرسهای IP مواجه بشیم.

«فراز یا فرق میان telnet که در داس میدیدیم، با فرستادن نامه یا email در چیست؟؟ آیا یکمی بر خش یا برخط آنلاین ،،دگری تواناییِ انبار کردن داده ها را دارد؟؟»

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

«یا همین تارگردی از چه گونه ای هست با یک تارگردی جور اپرا؟ ، از گونه تلنت، یا نامه رسانی، یا کنار هم ،از این دو روش؟؟»

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

و همهء این ارتباط ها در زیر کار دارن دیتاهای خودشون رو روی همون سوکت شبکه و حالا با پروتکل های سطح پایین تر که اغلب TCP است اما انواع دیگر مثل UDP هم در بعضی موارد و بعضی پروتکل ها استفاده میشن رد و بدل میکنن. البته برنامه نویسی که پروتکل سطح بالاتر مثل ایمیل و وب و تلنت رو طراحی میکنه دیگه معمولا کار زیادی به جزییات پروتکل سطح پایین تر که داده هاش بر اون سوار و ارسال و دریافت میشه نداره و فقط براش حکم همون شلنگ رو داره که دیتا و فرمانهای خودش رو تحویلش میده تا از سر دیگر شلنگ به مقصد برسه!

«کار گیرنده های شمارشی دیجیتال، که رسانهء تازه کار برای پخش رسانه هستند، چگونه هست؟ یا گیرنده های بشقابی ماهواره ها که پخش زنده دارند؟؟
که ساده تر از شبکه سراسری تارنمای نت هستند، نیز در کدام شاخه اش جای دارند؟؟ ،،»

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

یه نکتهء مفید باید همیشه یادمون باشه و اینکه ارتباطها بر روی چند لایه پروتکل سوار هستن که از پروتکل های سطح رسانه فیزیکی شروع میشه تا آخرش میرسه به پروتکل های لایه اپلیکیشن.
مثلا شما یه کابل شبکه رو درنظر بگیر. این کابل اول براش یک پروتکل در پایین ترین سطح تعریف میشه که صفر و یک چطور درش ارسال و کدکشایی بشن. مثلا میگن فلان پالس الکتریکی با فلان فرکانس و نمیدونم فلان روش کدینگ نماینده یک است و فلان پالس مکملش نماینده صفر. خب این تا اینجا! بعد ولی این مسلما کافی نیست و شما برنامتون رو نمیتونید بر اساس فرکانس های الکتریکی و پالس طراحی کنید و تک تک صفر و یک ها رو بخواید خودتون به این زبان تبدیل و ارسال کنید! پس روی این سطح دوباره پروتکل های سطح بالاتری هست. مثلا کارت شبکه از پروتکل Ethernet استفاده میکنه که یک پروتکل سطح بالاتره و این کارت شبکه هست که بسته های اطلاعاتی و صفر و یک های فرمانها و داده های پروتکل Ethernet رو باید به سیگنال های پروتکل سطح رسانه فیزیکی تبدیل کنه، بعد سیستم عامل هم با با کارت شبکه حرف میزنه میگه فلان بسته Ethernet محتوی فلان داده ها رو ارسال کن… حالا محتویاتی که توی اون بسته هست چیه با چه فرمتی؟ خب معمولا این داده ها بر اساس فرمت پروتکل IP هستن که پایه ای ترین پروتکل اینترنته، ولی پروتکل IP باز خودش سطح پایینه و معمولا بصورت مستقیم در برنامه نویسی باهاش کار نمیشه (مگر اینکه برنامه نویسی سیستمی یا بهرصورت سطح پایین باشه)، بنابراین روی پروتکل IP دوباره پروتکل های سطح بالاتری مثل TCP و UDP تعریف شدن که راحتی و امکانات بیشتری رو در دسترس برنامه نویس سطح بالاتر میذارن که دیتای این پروتکل ها رو سیستم عامل در قالب بسته های IP تبدیل و ارسال میکنه، بعد مثلا بازم روی TCP دوباره پروتکل سطح اپلیکیشن مثل HTTP تعریف شده که میگه مثلا یک صفحهء وب چطور باید از یک سرور درخواست و چطور توسط سرور به کلاینت ارسال بشه، و حتی بعضی وقتا بازهم لایه بیشتر توسط خود برنامه نویسان اپلیکیشن در سطح برنامه نویسی عادی و روزمره هم تعریف میشه و ممکنه برنامه نویسان خودشون پروتکل های اختصاصی تری رو بر بستر پروتکل هایی مثل HTTP تعریف کنن و از HTTP صرفا بعنوان شلنگ ارسال دیتا و فرمت پروتکل خاص خودشون استفاده کنن (البته میتونستن از TCP هم برای این کار استفاده کنن، ولی خیلی وقتا به دلایل فنی خاصی از پروتکل هایی که برای کاربرد اصلی سطح بالاتر خاصی طراحی شدن برای کاربرد متفاوتی هم بنوعی استفاده میشه)، ولی مرورگر از همون HTTP بهره میبره چون دقیقا برای همون هدف ساخته شده که مرورگر باید اجرا کنه.

2 دیدگاه در “جواب پرسش های شبکه

  1. “بسم الله الرحمن الرحيم
    …ﺍﻟَّﺬِﻳﻦَ ﻳَﻨْﻘُﻀُﻮﻥَ ﻋَﻬْﺪَ ﺍﻟﻠَّﻪِ ﻣِﻦْ ﺑَﻌْﺪِ ﻣِﻴﺜَﺎﻗِﻪِ ﻭَﻳَﻘْﻄَﻌُﻮﻥَ ﻣَﺎ ﺃَﻣَﺮَ ﺍﻟﻠَّﻪُ ﺑِﻪِ ﺃَﻥْ ﻳُﻮﺻَﻞَ ﻭَﻳُﻔْﺴِﺪُﻭﻥَ ﻓِﻲ ﺍﻟْﺄَﺭْﺽِ ﺃُﻭﻟَﺌِﻚَ ﻫُﻢُ ﺍﻟْﺨَﺎﺳِﺮُﻭﻥَ ..”
    “به شناسه خداوند پرمهر بسیار مهربان
    ..همانها وامیتابند، پیش پیمان خداوند، از دوریِ سفت سخت شدنشُ، میبُرند چه دستور داد خداوند بهش که پیوندمیشودُ، چرکی میکنند در زمین، آندسته آنها تباهکارها..”
    آشتیُ درودی
    بینید آنچه بنده خداوند دریافتم که سوکت یک بسته جابجا ساز داده هاست که دو سرش به سردر یا پورتی میرسد؟؟
    دو چیز دگر که در یافتم این شلنگ یا سوکت یا سوراخی حفره، از داده هایی بهره میبرد که انگیزه آغاز یا پایداریِ این پیوند یا ارتباط میشود،،به شناسهء پیوند نامه، یا پیوندنگهدار، یا پروتکل ،که دو گونه هست tcp با udp که ایندو بدیدم یکمی از پیش نوشته همگانی هست، دومی نوشته شده بدست برنامه نویسها؟؟؟
    آیا همه داده هایی که در پروتکل یا پیوند نامه جابجا میشوند به چیدمان ip هستند؟؟
    نمونه داده ای به چیدمان
    127.161.،،.،،
    چه گونه ای از داده را نگهداری میکند،نشانی دستگاهها؟شناسه دستگاهها، داده های نوشتاری، رمز کدی ویژه؟؟؟ که چندی دگر بازگشایی به داده های خواناتر میشود؟؟
    ،،
    یک پرسشی دگر که مرا درگیر کرد، چند سال پیش بسته فایلی سنگین دریافت داشته ام ،دانلود کرده بودم، با گیرنده مودم های کُند دیال آپ، که بسته کمبود داشت، ناقص بود، کار نمیکرد اجرا نمیشد،، یک برنامه کوچک دگر دریافت کردم که تکه بخشهای سگمنت های کمبوددار را شناسایی میکرد، با میزبان که بسته را گذاشته بود برای دریافت،پیوند میساخت ،تنها همان بخش را دوباره دریافت میکردُ، در این بسته فایل کمبود دار جاسازی میکرد،که بسته درست میشد خوب کار میکرد،،
    پس بسته فایلها به تکه بخشهای کوچکتری جدا میشوند که سرنام بسته، داده ها،نشانی جایگیری داده ها،، گونه داده ها ،،چیدمان یا نظمی دارد که روشن میشود،،داده درست هم سالم هست،،،که پیشامدِ از دست رفتن داده ها را بایستی به روشهایی کم کنیم،،
    بدید بنده بایستی بیشتر با شبکه نیز داده ها سرُ کار داشت،تا از کارکردش آگاه شد،،تا از دور درباره اش داوری کردن،،

    “اَللهم”"خداوندا” مرا از کسهایی کن که کارُ بازار از فراگذارنده های یادت نسازد، هم روگردانی نساز که انجام هاشان جور سرابی روی زمین هست، گمان شده آبی، که زمانی رسیدیم دست دراز کردیم آبی نیابیم،،یا تاریکیهایی در دریایی کولاکی که بر رویش ابرهایی، زمانی دست بیرون کنیم نبینیمش،نیز کسی که برایش سو نگذاری نیست برایش سو،،هم بخش با برپایی پیوست نماز هم دهنده دارایی برای پاک شدن زکاة

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

پاسخ دادن به بندهء خداوند لغو پاسخ

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

*

شما می‌توانید از این دستورات HTML استفاده کنید: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>