Python Socket
968 subscribers
79 photos
152 files
373 links
گروه چت مرتبط با کانال:
https://t.me/PythonSocketChat

@pythonsocket
Download Telegram
خب خب.. کم کم داریم به آخر سال نزدیک می شیم و یادتون باشه اگر تا حالا پر نکردین، نظر سنجی بزرگ برنامه نویسان ایران امسال رو هم پر کنین. مثل هر سال نتایج کاملا عمومی برای همه منتشر می شه تا بتونیم تصمیم های بهتری برای زندگیمون بگیریم
bit.ly/irprogrammers
پخش کردن این در گروه های دیگه، باعث بهتر شدن نتایج و نتیجه گیری بهتر همه مون از نتایج است.
برنامه نویسی سوکت احتیاج به دانش شبکه دارد. آیا نیاز است ابتدا در مورد مقدمات شبکه و پروتکل TCP/IP صحبت کنیم؟

دانش شبکه دارم اما مناسب می بینم صحبت کنیم. – 7
👍👍👍👍👍👍👍 70%

بله مناسب است صحبت کنیم. – 3
👍👍👍 30%

خیر احتیاجی نیست. مناسب است برنامه نویسی سوکت را شروع کنیم.
▫️ 0%

👥 10 people voted so far. Poll closed.
Python Socket pinned «برنامه نویسی سوکت احتیاج به دانش شبکه دارد. آیا نیاز است ابتدا در مورد مقدمات شبکه و پروتکل TCP/IP صحبت کنیم؟ دانش شبکه دارم اما مناسب می بینم صحبت کنیم. – 7 👍👍👍👍👍👍👍 70% بله مناسب است صحبت کنیم. – 3 👍👍👍 30% خیر احتیاجی نیست. مناسب است برنامه نویسی سوکت…»
یکی از مهترین مفاهیم در ارتباطات بین شبکه ای، Protocol است. پروتکل در یک تعریف ساده، مجموعه ای از قواعد و قوانین از پیش تعریف شده است که بین تمامی اعضای یک مجموعه تعریف شده و مورد توافق قرار گرفته است. در نهایت همه اعضای مجموعه ذکر شده، برای انجام امور مربوطه، بر مبنای آن قوانین عمل می نمایند. در این راستا می توان چندین مثال کاربردی در اطراف خود نام برد. یکی از این مثال ها "توافق بر یک زبان بین المللی" است. شما هرجای دنیا که سفر کنید، ممکن است توانایی صحبت به زبان بومی آن نقطه را نداشته باشید. بهمین جهت زبانی مانند زبان انگلیسی بعنوان زبان بین المللی تعریف شده است که هرکس به آن آگاه باشد می تواند در این مجموعه بزرگ (هرجای دنیا) با دیگری تماس برقرار کند. این مستلزم این نکته است که طرف دیگر نیز بر این پروتکل پایبند باشد. بنابراین، پروتکل قوانین و قواعد ایجاد ارتباط است که از پیش تعریف شده و همگی بر روی آن توافق و اشتراک دارند. مجموعه قواعد و قوانین مشترک در دنیای ارتباطات کامپیوتری در یک مجموعه به نام TCP/IP تعریف شده که به آن "پشته پروتکل" یا Protocol Stack نیز می گوییم.
@pythonsocket
بنیان ارتباطات کامپیوتری بر مبنای TCP/IPاست. در واقع TCP/IP مجموعه ای پروتکل های ارتباطی است که بصورت لایه ای تعریف شده اند. در هر لایه مجموعه ای پروتکل ها دیده می شود که وظایف مختص به خود را دارا هستند. همچنین وظایف هر یک، مستقل از پروتکل های دیگر بوده و در واقع تکمیل کننده آن است. مجموعه وظایف پروتکل های تعریف شده در این مجموعه، یک ارتباط کامپیوتری را می سازد. بهتر است مثالی در این رابطه ارایه کنیم تا مفهوم لایه و پروتکل های آن بهتر نمایان گردد. "خط تولید" یک محصول، بعنوان مثال یک ماشین، را در نظر بگیرید. این خط تولید بخش های متفاوتی دارد که هر یک، اجرای یکی از مراحل تولید ماشین را بر عهده دارد. مثلا در یک قسمت اتاق ماشین جوشکاری می گردد. در قسمت دیگر اتاق تولید شده در مرحله قبل وارد حوضچه رنگ شده و رنگ مورد نظر را به خود می گیرد و بسیاری مراحل دیگر. همانطور که می بینید این مدل نیز لایه ای و ماژولار است. لایه ای و ماژولار بودن مدل TCP/IP از مشخصات مهم آن است که در ادامه آن را بررسی خواهیم کرد.
@pythonsocket
مدل لایه ای و ماژولار TCP/IP را در نظر بگیرید. حال ویژگی های آن را با مثال های متنوع معرفی می کنیم: در مدل لایه ای، وظیفه هر لایه مستقل از دیگری بوده و خرابی یا عیب یابی آن تاثیری در لایه های دیگر ندارد. لذا اگر چنانچه در خط تولید ماشین و مثلا در قسمت تولید بدنه مشکلی بوجود آید این مشکل به لایه های دیگر سرایت نکرده و عیب یابی آن آسانتر خواهد بود. در کنار عیب یابی، به روز رسانی مدل لایه ای نیز نیازمند تغییرات در تمامی لایه ها نبوده و می توان بصورت مستقل، یک بخش یا لایه را بهبود داد. بعنوان مثال می توان تنها بخش مربوط به رنگ ماشین را تغییر داد. عیب یابی و به روز رسانی از ویژگی های بارز مدل لایه ای و ماژولار هستند که در کنار فهم و آموزش بهتر در مدل لایه ای قرار می گیرند. مثال ساده در این بحث، مثال آموزش یک تفنگ جنگی است. در دوران سربازی و برای آموزش تفنگ جنگی، تمامی قطعات آن را از هم جدا کرده و هر یک را بصورت مستقل توضیح می دهند. این باعث می شود که یک فهم کامل از هر یک از قطعات، بصورت مستقل و در کنار هم، ایجاد شده و در نهایت عملکرد تفنگ بهتر آموزش داده شود. مدل لایه ای و ماژولار TCP/IP نیز دارای ویژگی های فوق است.
@pythonsocket
TCP-IP.gif
8.9 KB
مدل TCP/IP بهمراه پروتکل های آن در مقایسه با مدل استاندارد OSI @pythonsocket
ما در Socket Programming با لایه های 2 و 3 (شماره گذاری لایه ها از پایین به بالاست) یعنی لایه های Internet و Transport سروکار خواهیم داشت. بنابراین لازم است دانش کافی در خصوص پروتکل های این دو لایه و مفاهیم مرتبط با آن داشته باشیم که انشاا.. در ادامه به آن خواهیم پرداخت.
دوستان سلام. همانطور که می دانید رمز نگاری داده ها یکی از کلیدی ترین نکات قابل توجه در تبادل اطلاعات بر روی بسترهای ناامن است. در آینده و با ارایه مطالب کانال، یکی از نتایج ما راه اندازی یک سرور چت با استفاده از Socket Programming است. لذا رمزنگاری داده های ارسالی نیز از قابلیت های مهم هر سرویس چتی خواهد بود. یکی راه های ساده جهت رمزنگاری، استفاده از XOR است. به زودی مطلبی در این خصوص ارایه خواهیم کرد.
@pythonsocket
دوستان عزیز سلام. مطالب مقدماتی مرتبط با برنامه نویسی سوکت را با مدل TCP/IP شروع کرده و به مدل لایه ای و ماژولار آن پرداختیم. ادامه این بحث را با یکی دیگر از مفاهیم مهم مدل TCP/IP یعنی Port پیش خواهیم گرفت. Port در ترجمه انگلیسی به فارسی معانی متعددی را دارد که نزدیک ترین آن به موضوع ما، گذرگاه یا درگاه است. در ارتباطات بین کامپیوتری، هر یک از دو طرف ارتباط، داده های خود را از درگاهی خارج و به درگاهی وارد می کنند. خروج درخواست از سیستم مبدا و از یک پورت معین و مشخص، سبب می شود تا پاسخ برگشتی برای درخواست مورد نظر، مجددا به همان پورت وارد شده و با سایر درخواست ها تداخل پیدا نکند. بعبارت بهتر چنانچه یک سیستم چندین درخواست (مثلا به سمت اینترنت) داشته باشد (چندین صفحه در مرورگر خود باز کند) هریک از آنها از یک پورت مشخص خارج و در نهایت جواب برگشتی نیز به همان پورت وارد می گردد. این تفکیک درخواست، سبب می شود جواب های بازگشتی با یکدیگر تداخل پیدا نکنند. از طرفی دیگر، درخواست های ارسالی از سوی سیستم ها، معمولا توسط سرویس هایی پذیرفته شده و پاسخدهی می شوند. این سرویس دهنده ها برای ارایه خدمات مشخص بر روی پورت هایی مشغول Listen هستند تا بتوانند به درخواست های ورودی پاسخ دهند. سرویس دهنده بر روی پورت های از پیش تعریف شده ای مشغول خدمات دهی است و چون این پورت ها از پیش تعریف شده و برای کلاینت ها شناخته شده است به آن پورت های Well Known می گویند. پورت مفهومی است که بین لایه Transport و Internet در مدل لایه TCP/IP قرار می گیرد.
@pythonsocket
توجه داشته باشید که ترکیب IP و Port معنا و مفهوم Socket را می سازد. در ادامه با IP و پورتکل های TCP و UDP نیز آشنا خواهیم شد.
@pythonsocket
پروتکل TCP مطمئن یا Reliable است. بدین معنی که با استفاده از ویژگی هایی نظیر Acknowledgement , Sequencing و Windowing از دریافت اطلاعات توسط مقصد اطمینان حاصل می کند. اگر دیتا در مسیر ارتباط خراب شده و یا از بین برود، TCP این اطمینان را میدهد که دیتای تخریب شده مجددا ارسال و توسط گیرنده دریافت گردد. پروتکل TCP ارتباط گرا یا Connection Oriented است. بدین معنی که با ویژگی 3-Way Handshake از آمادگی مقصد جهت دریافت اطلاعات اطمینان حاصل کرده و پس از آن اطلاعات را ارسال می کند. TCP در مقایسه با UDP و به دلیل استفاده از قابلیت های مذکور، Overhead بالاتری دارد. UDP دقیقا برعکس TCP است. ارتباط گرا نیست، مطمئن هم نیست. البته اینها بدین معنی نیست که UDP ضعیف تر یا بی ارزش تر از TCP است. بلکه توجه به این نکات سبب می شود در برنامه نویسی، بر اساس نیاز و با توجه به معماری برنامه از یکی از پروتکل های ذکر شده استفاده کنیم. سرویس های مهمی در ارتباطات کامپیوتری وجود دارند که با اهمیت بالا از پروتکل UDP استفاده می کنند نظیر DNS. شاید در برنامه نویسی اولیه نیازی به دانستن موارد فوق بصورت جزئی نداشته باشید. اما وقتی نیاز به نوشتن برنامه های از نوع RAW Socket پیدا کردید دانش در این زمینه بسیار تاثیر گذار خواهد بود. لذا پیشنهاد می کنم در زمینه TCP و UDP مطالعات بیشتری داشته باشید. در ادامه به آخرین بحث از مباحث مقدماتی یعنی IP می پردازیم.
@pythonsocket
مقایسه Headerهای TCP و UDP. به مواردی چون Port و TCP Flags توجه بیشتری داشته باشید.
@pythonsocket
آخرین بحث از سلسله مباحث آشنایی مقدماتی با شبکه (مورد نیاز در Socket Programming) مفهوم IP یا Internet Protocol است. آدرس IP (ویرایش 4) یک آدرس 32 بیتی است که بصورت X.X.X.X نمایش داده می شود. هر X معادل با 8 بیت است و عددی است بین 0 تا 255. آدرس IP در لایه اینترنت قرار گرفته و وطایف اختصاصی این لایه یعنی Routing و Addressing را عهده دار است. آدرس IP یک آدرس Logical است که می تواند بنا بر شرایط تغییر کند. (در قیاس با آدرس MAC که Physical بوده و در شرایط عادی قابل تغییر نیست) آدرس های IP ویرایش 4 را در گروه های A تا E تعریف کرده اند که گروه A تا C بصورت عمومی قابل استفاده اند. در هریک از این گروه ها تعدادی آدرس بصورت Private وجود دارد که قابل استفاده در شبکه های داخلی (بدون نیاز به اتصال به اینترنت) هستند. سایر آدرس های هر گروه Public بوده و در اینترنت در دسترس هستند.
@pythonsocket
1
All About XOR.doc
204 KB
دوستان عزیز سلام. مطلب پیوست از آقای عباس نادری است و در خصوص XOR صحبت شده است. مقدمه ای است برای ورود به بحث XOR و رمزنگاری در پایتون. مطالعه بفرمائید.
@pythonsocket
#Sec
Socket#1.pdf
224.1 KB
دوستان عزیز سلام. فایل پیوست اولین مطلب از سلسله مباحث Socket Programming در زبان پایتون است. مطالعه بفرمایید.
@pythonsocket
#Sock