رفتن به مطلب



iran rules jazbe modir
ADS mahak

Doctor Robot

Programming-Py امنیت شبکه با پایتون سوکت

پست های پیشنهاد شده

کاربرد پایتون در شبکه

میدانیم پایتون زبانی است با قابلیت های بسیار، ازبرنامه نویسی برای وب گرفته تاهوش مصنوعی و....

امروز میخواهیم قدرت این زبان محبوب را در شبکه بررسی کنیم و بفهمیم چه کاربردی دارد؟

چگونه میتوان از این زبان در بحث شبکه استفاده کرد؟

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

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

telegram channel   jazbe modir

تاریخچه سوکت ها:

درباره تاریخچه سوکت ها باید بگویم که تاریخ خیلی طولانی دارند و استفاده ازآنها درسال 1971 با آرپانت آغازشد و سپس باتوسعه API یاهمان رابط های نرم افزاری که ارتباط بین نرم افزارهای مختلف را پیاده سازی میکنند در سال 1983 به نام سوکت بِرِکلی منتشر شد.

احتمالا الان در ذهن خود میگویید آرپانت چیست؟سوکت برکلی چیست؟

باکمی صبروحوصله به جواب میرسید.

در ادامه سوکت ها، با اینترنت که در دهه 1990 جهانی شد به کار خود ادامه دادند و کلید برنامه نویسی شبکه رقم خورد و سرورهای وب و مرورگرها تنها برنامه هایی بودند که با استفاده از سوکت ها به شبکه متصل شدند.

شایع ترین کاربرد سوکت ها، برنامه مشتری - سرور است که درآن یک طرف به عنوان سرور عمل میکند و منتظر ارتباط از مشتریان است.

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

تعریف آرپانت و سوکت برکلی:

آرپانت (ARPANET) مخفف Advanced Research Projects Agency Network به معنی سازمان پروژه‌های تحقیقاتی پیشرفته شبکه، اولین شبکه Switching بسته های اطلاعات در دنیا بود و پس از مدتی تبدیل به اینترنت جهانی شد.

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

در همین سال ها در مراکز تحقیقاتی غیرنظامی که در امتداد دانشگاه ها بودند، تلاش برای اتصال کامپیوترها به یکدیگر در جریان بود. در آن زمان کامپیوتر های Mainframe از طریق ترمینال ها به کاربران سرویس می دادند. در اثر اهمیت یافتن این موضوع آژانس آرپا (ARPA) منابع مالی پروژه اتصال دو کامپیوتر از راه دور به یکدیگر را در دانشگاه MIT بر عهده گرفت. در اواخر سال 1960 اولین شبکه کامپیوتری بین چهار کامپیوتر که دو تای آنها در MIT، یکی در دانشگاه کالیفرنیا و دیگری در مرکز تحقیقاتی استنفورد قرار داشتند، راه اندازی شد.
 

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

 Switching بسته‌های اطلاعات در آرپانت بر اساس طرحی از دانشمند بریتانیایی دونالد دیویس و لارنس رابرت از آزمایشگاه لینکلن بود.

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

نخستین شبکه از این نوع که چندین ایالت را به هم متصل می کرد Michnetنام داشت. روش اتصال کاربران به کامپیوتر میزبان در آن زمان به این صورت بود که یک نرم افزار خاص روی کامپیوتر مرکزی اجرا می شد و ارتباط کاربران را برقرار می کرد اما در سال 1976 نرم افزار جدیدی به نامHermes عرضه شد که برای نخستین بار به کاربران اجازه می داد از طریق یک ترمینال به صورت تعاملی مستقیماً به سیستم MERIT متصل شوند.

از وقایع مهم تاریخچه شبکه های کامپیوتری، ابداع روش سوئیچینگ بسته ای است. قبل از معرفی شدن این روش از سوئیچینگ مداری برای تعیین مسیر ارتباطی استفاده می شد اما در سال 1974 با پیدایش پروتکل ارتباطی TCP/IP این پروتکل جایگزین پروتکل NCP شد و به پروتکل استاندارد برای آرپانت تبدیل شد. با این تغییر و تحول، شبکه های زیادی به بخش تحقیقاتی این شبکه متصل شدند و آرپانت به اینترنت تبدیل شد.

 ۲۹ اکتبر سال ۱۹۶۹ اولین پیام بین کامپیوتری ارسال شد. در این روز، چارلی کلاین، یکی از دانشجویان دانشگاه UCLA تلاش کرد کلمه‌ی «login» را با استفاده از شبکه‌‌ی بین کامپیوتری، به کامپیوتر دیگر در مرکز تحقیقات دانشگاه استنفورد ارسال کند. این شبکه‌ی بین کامپیوتری آرپانت (ARPANET)نام داشت که پایه‌های اینترنت را بنا کرد.

پس از ارسال حروف l و o، شبکه‌ی آرپانت دچار مشکل شد و قطع شد. پس از یک ساعت تلاش، شبکه به حالت پایدار بازگشت و ارسال پیام با موفقیت انجام شد. آرپانت مخفف عبارت «شبکه‌ی آژانس پروژه‌های تحقیقاتی پیشرفته  (Advanced Research Projects Agency Network)  است. این شبکه یکی از اولین شبکه‌های ارتباطی بر اساس ارسال و دریافت Packet بود و از پروتکلTCP/IP استفاده می‌کرد. هر ۲ فناوری استفاده‌شده در این شبکه، پایه‌های توسعه‌ی اینترنت بودند. توسعه‌ی شبکه‌ی آرپانت توسط آژانس پروژه‌های تحقیقاتی پیشرفته‌ی وزارت دفاع ایالات متحده‌ی آمریکای پشتیبانی می‌شد.

با پیشرفت پروژه‌ی آرپانت، استانداردها و نیازها برای اتصال شبکه‌های متعدد به یکدیگر نیز توسعه یافتند. در سال‌های بعد استانداردها و پروتکل‌های اینترنت به‌مرور تدوین شدند و در نهایت در سال ۱۹۹۰، شبکه‌ی آرپانت بازنشسته و تعطیل شد.

سوکت های برکلی: سوکت‌های برکلی  یا سوکت‌های بی‌اس‌دی، فریم ورکی است که شامل رابط‌های برنامه‌نویسی نرم‌افزار برای کار با سوکت‌های اینترنتی است، که از این سوکت‌ها برای ارتباطات بین پردازشی استفاده می‌شوند. امروزه تمام سیستم‌عامل‌های مدرن یک پیاده‌سازی از سوکت‌های برکلی را به همراه دارند چون این سوکت‌ها روش استاندارد برای دسترسی به اینترنت هستند.

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

سوکت‌ها چه هستند؟

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

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

با یک بیان ساده می‌توان گفت که سوکت به ترکیب یک آدرس ماشین (IP) و یک شماره درگاه (Port) گفته می‌شود. 
در برقراری ارتباط بین کامپیوترها در یک شبکه دو چیز بسیار مهم است:

  1. آدرس ماشینی که می‌خواهیم اطلاعاتی از آن بگیریم یا به آن ارسال کنیم
  2. برنامه‌ای از آن ماشین که درخواست اطلاعات کرده یا اینکه می‌خواهیم اطلاعاتی از آن برنامه کسب کنیم.

این دو یعنی آدرس ماشین و شماره برنامه به وسیله سوکت در شبکه مشخص می‌شوند.

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

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

و اما چیزهای مثل HTTP و FTP و SMTP و POP3 چی هستن؟
اینها پروتکل هستن. یعنی قراردادها و استانداردهایی که تعیین میکنند برنامه های مختلف چطور با هم صحبت کنند.
پروتکل مثل زبان است. مثلا زبان عربی، فارسی و غیره.
و سوکت یه دستگاه ارتباطی مثل تلفن است.

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

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

چه پروتکل هایی برای ارتباط سوکت استفاده می شود؟

همان طور که اشاره شد ما پروتکل های ارتباطی نظیر TCP  و UDP  داریم که پروتکل TCP  این امکان را به ما میدهد تا هم اطلاعات را ارسال و هم دریافت کنیم.

به عبارتی تبادل اطلاعات به صورت دو طرفه خواهد بود.

اما در پروتکل UDP  ارسال اطلاعات به صورت یک طرفه خواهد بود.

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

پیش نیاز های برنامه نویسی سوکت در زبان پایتون

برای برنامه نویسی شبکه در زبان پایتون، نیاز است تا به تمام Syntax ها و مفهوم های ابتدایی این زبان آشنا باشید.

اگر آشنایی با این زبان ندارید، پیشنهاد می‌کنیم به دوره آموزش پایتون ما بروید و با این زبان آشنا شوید و سپس این آموزش را دنبال کنید.

برای مشاهده این بخش لطفا وارد حساب کابری خود شوید یا اگر عضو نیستید از این قسمت عضو سایت شوید

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

پایتون سوکت چیست؟

در زبان پایتون از کتابخانه httplib  و یا socket.io   برنامه نویسان تحت وب برای برنامه نویسی خود استفاده میکنند.برای ایجاد یک سوکت شما می‌توانید از تابع socket.socket() استفاده کنید، سینتکس این حالت به صورت زیر است:

برای مشاهده این بخش لطفا وارد حساب کابری خود شوید یا اگر عضو نیستید از این قسمت عضو سایت شوید

  • socket_family: این مورد نوع آدرس دهی برای ارتباط را مشخص میکند. این ورودی، یک مقدار عددی است اما میتوان مقادیر ثابت موجود در کتابخانه socket را نیز استفاده کرد
  • socket_type:  مشخص کننده نوع سوکت است. این ورودی، یک مقدار عددی است و میتوان برای تعریف آن از مقادیر ثابت موجود در کتابخانه استفاده کرد. نوع سوکت در اصل نشان دهنده نحوه اتصال بین دو نود خواهد بود. معمولاً از مقدار socket.SOCK_STREAM برای ارتباط TCP و از socket.SOCK_DGRAM برای اتصال UDP استفاده میشود.

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

توابع مربوط به سوکت سرور

bind

با استفاده از تابع bind() میتوان آدرس IP و پورت مورد نظر برای فعال شدن را تعیین کرد. توجه داشته باشید که پورتی که وارد میشود باید بر روی سیستم سرور آزاد بوده و توسط برنامه دیگری استفاده نشود. (همانطور که میدانید پورت های 1 تا 1024 به صورت پیشفرض توسط سیستم عامل رزرو شده اما میتوانید پورت های 1025 تا 65536 را بررسی کنید)

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
در 5 دقیقه قبل، Doctor Robot گفته است :

توابع مربوط به سوکت سرور

bind

با استفاده از تابع bind() میتوان آدرس IP و پورت مورد نظر برای فعال شدن را تعیین کرد. توجه داشته باشید که پورتی که وارد میشود باید بر روی سیستم سرور آزاد بوده و توسط برنامه دیگری استفاده نشود. (همانطور که میدانید پورت های 1 تا 1024 به صورت پیشفرض توسط سیستم عامل رزرو شده اما میتوانید پورت های 1025 تا 65536 را بررسی کنید)

listen

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

accept

این تابع درخواست هایی که برای سرور ارسال میشود را دریافت کرده و در صورت توان قبول خواهد کرد. برنامه بر روی تابع accept() به صورت بلاک شده خواهد ماند تا زمانی که درخواستی به سرور ارسال و از سمت سرور پذیرفته شود.پس از دریافت و قبول یک ارتباط (connection)، این تابع یک تاپل(tuple) را به عنوان خروجی باز میگرداند؛ این تاپل دو مقدار دارد، مقدار اول شئ کانکشن و مقدار دوم حاوی مشخصات کلاینت متصل شده در ارتباط می باشد.

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

توابع سوکت کلاینت

connect

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

توابع اصلی سوکت

توابع زیر را میتوان در هر دو طرف ارتباط (سرور یا کلاینت) استفاده کرد.

recv

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

به عنوان ورودی اول تابع recv() یک مقدار عددی دریافت میکند؛ این عدد(buffer size) نشان دهنده تعداد حداکثر بایت هایی است که باید از خروجی بخواند. یعنی مشخص میکنیم حداکثر چند بایت از پیام دریافت شده را بخواند.

خروجی تابع به صورت byte است؛ پس اگر بخواهیم آن را به عنوان یک رشته استفاده کنیم، بهتر است تابع decode() را روی آن صدا بزنیم.

send

تابع send() یک ورودی به صورت اجباری میگیرد که همان اطلاعاتی است که باید به مقصد (آن سوی ارتباط TCP) ارسال شود.

ورودی تابع می بایست به صورت byte و با encode مشخص باشد؛ بنابراین در صورتی که بخواهیم یک رشته را ارسال کنیم، باید بر روی رشته مورد نظر ابتدا تابع encode() را صدا زده و خروجی آن را ارسال کنیم.

recvfrom

این تابع برای دریافت پیام در کانکشن ایجاد شده UDP استفاده میشود.

sendto

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

Close

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

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

Join the conversation

You are posting as a guest. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   بازگردانی قالب بندی

  حداکثر استفاده از ۷۵ شکلک مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به عنوان یک لینک به جای

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

در حال بارگذاری

  • مطالب مشابه

    • توسط  Doctor Robot
      در زمینه امنیت، گاهی بدون در نظر گرفتن پیامدهای منفی و طولانی مدت، تصمیمات نامناسبی می‌گیریم. اچ پی شرکتی متخصص است که شما را در گرفتن تصمیمات عاقلانه در زمینه امنیت سایبری حمایت می‌کند. با ما همراه باشید…
      افراد باهوش معمولا کارهای غیرعاقلانه‌ای انجام می‌دهند! لیست بلندبالایی از کارهایی که باید انجام شود، برنامه‌های فشرده و بودجه کمی که در اختیار است، باعث می‌شود بدون در نظر گرفتن پیامدهای منفی و طولانی مدت آن، تصمیمات نامناسبی بگیریم. مثلا:
      جان در زمینه ارایه خدمات کاشت چمن فعالیت دارد. مشغله او زیاد است و باعث می‌شود او از دندان‌دردی که هفته‌هاست او را آزار می‌دهد، چشم‌پوشی کند. او می‌داند که باید به دندان‍‌پزشک مراجعه کند اما کی؟ عدم حضور در محل کار به معنی از دست دادن ساعات کاری باارزش است. تا این که یک شب این درد ناچیز باعث دردی در دندان آسیاب او شد و علی‌رغم میلش او را مجبور کرد به اورژانس مراجعه کرده و آن را جراحی کند. کاری که با یک مراجعه ساده و کم هزینه به دندان‌پزشکی قابل انجام بود، اکنون با هزینه‌ای چندین برابر، از دست رفتن ساعات کاری بسیار و مشتریان منتظر به پایان رسید. مردی باهوش با تصمیمی غیرعاقلانه!
      دب، کار و کسب موفقی در زمینه تحویل گل دارد. او همیشه صدایی از زیر ماشین خود می‌شنود اما زمانی برای بردن آن به مکانیکی ندارد. سرانجام هم در میانه راه و تحویل سفارش از کار افتاد و باعث شد تحویل چندین سفارش را از دست داد و مجبور به بازپرداخت شد. باید به دنبال ماشین دیگری باشد که همچنان باعث از دست رفتن سفارشات و کارهای دیگر می‌شود. خانمی باهوش با تصمیمی غیرعاقلانه!
      باب خدمات مالیاتی انجام می‌دهد. او می‌داند که باید به پیغام نرم‌ افزار امنیتی خود که مدام هشدار می‌دهد توجه کند. اما فصل مالیات است و زمانی برای رسیدگی به آن وجود ندارد. در نهایت نیز زمانی رسید که کامپیوترش مورد هجوم یک بدافزار قرار گرفت و چندین فرم مالیاتی در حال رسیدگی را از بین برد. نتیجه آن از دست دادن کار و سیل دادخواست‌های مشتریان ناراضی است. متخصص باهوش و تصمیمی غیرعاقلانه!
       
      امنیت سایبری شامل سه مورد است:
      1. حفاظت از دستگاه‌هایی که افراد استفاده می‌کنند.
      2. حفاظت از اطلاعاتی که روی این دستگاه‌ها قرار دارند.
      3. حفاظت از هویت افرادی که از این اطلاعات استفاده می‌کنند.
      بسیاری از شرکت‌ها فقط آنتی‌ویروسی را خریده و نصب می‌کنند با این تصور که برای حفاظت از آن‌ها کافیست. با وجودی که این کار اهمیت دارد، اما اصلا کافی نیست. در دنیایی که افراد و سازمان‌هایی هستند که سعی در دزدیدن اطلاعات شما دارند، باید از چندین سطوح امنیتی استفاده کنید که هم شامل نرم‌افزار می‌شود و هم سخت‌افزار. باید از رمزگذاری داده و پسوردهای قوی که کاربران نتوانند آن را غیرفعال کنند نیز استفاده شود.
    • توسط  Doctor Robot
      دوستان عزیز سلام
      دوره آموزشی برنامه نویسی python Gui شروع شد
      پرسش و پاسخ ممنوع 
      اسپم ممنوع
      دوستان این آموزش تا حد امکان به زبان ساده توضیح داده شده
      پیش نیاز این دوره : برای مشاهده این بخش لطفا وارد حساب کابری خود شوید یا اگر عضو نیستید از این قسمت عضو سایت شوید

  • کاربران آنلاین در این صفحه   0 کاربر

    هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.

×
×
  • جدید...