#security #bug
دسته بندی
خطای
مثال:
یک وبسایت فروشگاهی داریم که به مشتریان اجازه میدهد محصولات را به سبد خرید خود اضافه کنند و سپس سفارش خود را نهایی کنند. اما در این وبسایت یک باگ منطقی وجود دارد که به مشتریان اجازه میدهد تعداد نامحدودی از محصولات را به سبد خرید خود اضافه کنند و در نتیجه تعدادی از محصولات را به صورت رایگان دریافت کنند.
روشهای جلوگیری:
1- قبل از شروع پیادهسازی، منطق کسب و کار را بهدقت تحلیل کنید تا از وجود خطاهای منطقی پیشگیری شود.
2- منطق کسب و کار را بهصورت دقیق تست کنید تا اطمینان حاصل شود که بهطور صحیح کار میکند.
3- محدودیتهای منطقی در سیستم اعمال کنید تا به کاربران اجازه عملیاتهای نامعقول ندهید. بهعنوان مثال، تعداد حداکثری محصولاتی که میتوانند به سبد خرید اضافه کنند.
4- برای تغییرات در منطق کسب و کار از واحدهای تراکنشی استفاده کنید تا تغییرات منطقی به تمامی بخشهای مرتبط اعمال شود.
5- کدها را بهصورت دورهای بازبینی کنید تا از وجود خطاهای منطقی غافل نشوید.
6- تستهای منطقی و عملکردی را بهصورت مداوم اجرا کنید تا از صحت و عملکرد صحیح منطق کسب و کار اطمینان حاصل شود.
.
دسته بندی
Business Logic Errors
مشکلی که توی این پست بهش پرداخته شده خیلی مهمه و خیلی ها بهش توجه نمیکنن و آخر کار چیزی که تحویل میدن 20 درصدش پروژه س بقیه ش باگ.خطای
Business Logic Errors به خطاهایی اشاره دارند که در منطق کسب و کار و عملیات اصلی یک برنامه یا سیستم وجود دارند. این نوع از خطاها معمولاً به دلیل نقص در طراحی یا پیادهسازی منطق کسب و کار به وجود میآیند و میتوانند منجر به عملکرد نادرست یا ناپایدار سیستم شوند.مثال:
یک وبسایت فروشگاهی داریم که به مشتریان اجازه میدهد محصولات را به سبد خرید خود اضافه کنند و سپس سفارش خود را نهایی کنند. اما در این وبسایت یک باگ منطقی وجود دارد که به مشتریان اجازه میدهد تعداد نامحدودی از محصولات را به سبد خرید خود اضافه کنند و در نتیجه تعدادی از محصولات را به صورت رایگان دریافت کنند.
روشهای جلوگیری:
1- قبل از شروع پیادهسازی، منطق کسب و کار را بهدقت تحلیل کنید تا از وجود خطاهای منطقی پیشگیری شود.
2- منطق کسب و کار را بهصورت دقیق تست کنید تا اطمینان حاصل شود که بهطور صحیح کار میکند.
3- محدودیتهای منطقی در سیستم اعمال کنید تا به کاربران اجازه عملیاتهای نامعقول ندهید. بهعنوان مثال، تعداد حداکثری محصولاتی که میتوانند به سبد خرید اضافه کنند.
4- برای تغییرات در منطق کسب و کار از واحدهای تراکنشی استفاده کنید تا تغییرات منطقی به تمامی بخشهای مرتبط اعمال شود.
5- کدها را بهصورت دورهای بازبینی کنید تا از وجود خطاهای منطقی غافل نشوید.
6- تستهای منطقی و عملکردی را بهصورت مداوم اجرا کنید تا از صحت و عملکرد صحیح منطق کسب و کار اطمینان حاصل شود.
.
#security #bug
دسته بندی
مثال:
فرض کنید یک وبسایت داریم که از الگوریتم رمزنگاری نیافته و به جای آن از رمزنگاری خودساخته استفاده میکند. این رمزنگاری خودساخته به عنوان "ترکیبی" از چند الگوریتم ضعیف تشکیل شده و تا حد زیادی پیچیدگیهای رمزنگاری را نادیده میگیرد.
یک حملهکننده با تجزیه و تحلیل دقیق بر روی این رمزنگاری خودساخته میتواند بهطور نسبتاً آسان ترکیبی را بشکند و اطلاعات مهم مانند رمزهای عبور کاربران را بهطور غیرمجاز بدست آورد.
روشهای جلوگیری:
1- از الگوریتمهای رمزنگاری استاندارد و بازیابی شده با تستهای امنیتی استفاده کنید.
2- از کتابخانهها و ابزارهای معتبر و تاییدشده برای انجام عملیات رمزنگاری استفاده کنید.
3- از الگوریتمهای رمزنگاری با امنیت بالا و تاثیر ثابت مانند
4- از رمزنگاری خودساخته و ترکیبهای مختلف استفاده نکنید، زیرا ممکن است ضعفهای جدی در رمزنگاری ایجاد شود.
5- به جز رمزنگاری، سایر اجزای سیستم را نیز به درستی محافظت کنید تا امنیت کلی تضمین شود.
6- کدها را بازبینی کرده و با تستهای امنیتی الگوریتمها و مکانیزمهای رمزنگاری را ارزیابی کنید.
7- از مدیریت مناسب کلیدها و مواد رمزنگاری استفاده کنید تا از دسترسی غیرمجاز به اطلاعات جلوگیری شود.
.
دسته بندی
Cryptographic Vulnerabilities
باگ Cryptographic Vulnerabilities به مشکلات امنیتی اشاره دارند که در مورد استفاده از الگوریتمهای رمزنگاری و مکانیزمهای امنیتی مربوط به حفاظت از اطلاعات مهم و حساس به وجود میآیند. اشتباهات در استفاده از رمزنگاری میتوانند به حملاتی مانند دسترسی غیرمجاز به اطلاعات یا تخریب امنیت دسترسی منجر شوند.مثال:
فرض کنید یک وبسایت داریم که از الگوریتم رمزنگاری نیافته و به جای آن از رمزنگاری خودساخته استفاده میکند. این رمزنگاری خودساخته به عنوان "ترکیبی" از چند الگوریتم ضعیف تشکیل شده و تا حد زیادی پیچیدگیهای رمزنگاری را نادیده میگیرد.
یک حملهکننده با تجزیه و تحلیل دقیق بر روی این رمزنگاری خودساخته میتواند بهطور نسبتاً آسان ترکیبی را بشکند و اطلاعات مهم مانند رمزهای عبور کاربران را بهطور غیرمجاز بدست آورد.
روشهای جلوگیری:
1- از الگوریتمهای رمزنگاری استاندارد و بازیابی شده با تستهای امنیتی استفاده کنید.
2- از کتابخانهها و ابزارهای معتبر و تاییدشده برای انجام عملیات رمزنگاری استفاده کنید.
3- از الگوریتمهای رمزنگاری با امنیت بالا و تاثیر ثابت مانند
AES استفاده کنید.4- از رمزنگاری خودساخته و ترکیبهای مختلف استفاده نکنید، زیرا ممکن است ضعفهای جدی در رمزنگاری ایجاد شود.
5- به جز رمزنگاری، سایر اجزای سیستم را نیز به درستی محافظت کنید تا امنیت کلی تضمین شود.
6- کدها را بازبینی کرده و با تستهای امنیتی الگوریتمها و مکانیزمهای رمزنگاری را ارزیابی کنید.
7- از مدیریت مناسب کلیدها و مواد رمزنگاری استفاده کنید تا از دسترسی غیرمجاز به اطلاعات جلوگیری شود.
.
#security #bug
دسته بندی
مثال:
فرض کنید یک سیستم عامل با معماری چندکاربره داریم که کاربران مختلف با سطوح دسترسی متفاوت میتوانند وارد سیستم شوند. هر کاربر به منابع معینی دسترسی دارد و کاربران معمولاً به منابع دیگر دسترسی ندارند.
اما حالتی رخ میدهد که یک کاربر معمولی، به نحوی آسیبپذیری در سیستم را کشف میکند که او را قادر میسازد (
کاربر معمولی با بهرهگیری از این آسیبپذیری، توانایی اجرای عملیاتهایی که به کاربران معمولی دسترسی ندارند را پیدا میکند. این عمل به نوعی ارتقاء دسترسی از سطح کاربر عادی به سطح دسترسی مدیریتی به شمار میرود. در نتیجه، این کاربر معمولی قادر است به منابع حساسی دسترسی یابد و عملیاتهایی را انجام دهد که اصلاحات یا حتی خرابیهای جدی در سیستم ایجاد میکند.
روشهای جلوگیری:
1- به کاربران و سیستمها تنها دسترسیهای لازم را اختصاص دهید تا حداقل اصول "کمترین دسترسی" رعایت شود.
2- از مکانیزمهای قوی احراز هویت و دسترسی استفاده کنید تا از افراز و انتقال دسترسیهای غیرمجاز جلوگیری شود.
3- مجوزها و نقشها را بهدقت بررسی کنید و اطمینان حاصل کنید که هیچ کاربری دسترسی به منابع یا عملیات حساس ندارد.
4- تستهای امنیتی مرتب روی سیستمها و نرمافزارها اجرا کنید تا از وجود آسیبپذیریهای احتمالی آگاه شوید.
5- نرمافزارها، سیستمها و کتابخانهها را بهروزرسانی کنید تا از مشکلات امنیتی اجتناب شود.
6- اجازه ندهید که کدهای اجرایی یا اسکریپتها با دسترسیهای بالا اجرا شوند.
7- از دیباگرها و ورودیهای دیباگ مختلف برای تجزیه و تحلیل سیستمها استفاده کنید تا آسیبپذیریها کشف شوند.
.
دسته بندی
Privilege Escalation Vulnerabilities
باگ Privilege Escalation Vulnerabilities به مشکلات امنیتی اشاره دارد که به حملهکننده اجازه میدهد سطح دسترسی خود را از سطح کاربر عادی به سطح دسترسی بیشتر (مانند مدیر سیستم) ارتقاء دهد. این نوع از حملات میتوانند منجر به دسترسی غیرمجاز به منابع و عملیات حساس شوند.مثال:
فرض کنید یک سیستم عامل با معماری چندکاربره داریم که کاربران مختلف با سطوح دسترسی متفاوت میتوانند وارد سیستم شوند. هر کاربر به منابع معینی دسترسی دارد و کاربران معمولاً به منابع دیگر دسترسی ندارند.
اما حالتی رخ میدهد که یک کاربر معمولی، به نحوی آسیبپذیری در سیستم را کشف میکند که او را قادر میسازد (
Token) یک کاربر با سطح دسترسی مدیریتی را بدست آورد.کاربر معمولی با بهرهگیری از این آسیبپذیری، توانایی اجرای عملیاتهایی که به کاربران معمولی دسترسی ندارند را پیدا میکند. این عمل به نوعی ارتقاء دسترسی از سطح کاربر عادی به سطح دسترسی مدیریتی به شمار میرود. در نتیجه، این کاربر معمولی قادر است به منابع حساسی دسترسی یابد و عملیاتهایی را انجام دهد که اصلاحات یا حتی خرابیهای جدی در سیستم ایجاد میکند.
روشهای جلوگیری:
1- به کاربران و سیستمها تنها دسترسیهای لازم را اختصاص دهید تا حداقل اصول "کمترین دسترسی" رعایت شود.
2- از مکانیزمهای قوی احراز هویت و دسترسی استفاده کنید تا از افراز و انتقال دسترسیهای غیرمجاز جلوگیری شود.
3- مجوزها و نقشها را بهدقت بررسی کنید و اطمینان حاصل کنید که هیچ کاربری دسترسی به منابع یا عملیات حساس ندارد.
4- تستهای امنیتی مرتب روی سیستمها و نرمافزارها اجرا کنید تا از وجود آسیبپذیریهای احتمالی آگاه شوید.
5- نرمافزارها، سیستمها و کتابخانهها را بهروزرسانی کنید تا از مشکلات امنیتی اجتناب شود.
6- اجازه ندهید که کدهای اجرایی یا اسکریپتها با دسترسیهای بالا اجرا شوند.
7- از دیباگرها و ورودیهای دیباگ مختلف برای تجزیه و تحلیل سیستمها استفاده کنید تا آسیبپذیریها کشف شوند.
.
#security #bug
دسته بندی
مثال:
فرض کنید یک برنامه ساده با قسمتی برای افزایش موجودی حساب کاربری داریم. این برنامه به گونهای طراحی شده است که هر بار که یک کاربر درخواست افزایش موجودی حساب خود را میدهد، برنامه مقدار موجودی حساب را از دیتابیس بخواند، مقدار جدید را محاسبه و سپس در دیتابیس ذخیره کند.
حالا فرض کنید دو کاربر به طور همزمان درخواست افزایش موجودی حساب خود را میدهند. در صورتی که برنامه ما قابلیت همزمانی (
روشهای جلوگیری:
1- برای عملیاتهایی که به منابع مشترک دسترسی دارند، مکانیزمهای بهروزرسانی انحصاری (
2- در مواردی که از پایگاه داده استفاده میکنید، از تراکنشها برای محدود کردن دسترسیها و بهروزرسانیها استفاده کنید.
3- از مکانیزمهای
4- در زبانهای برنامهنویسی که از نخها (
5- در زبانهای برنامهنویسی که از متغیرهای اتمی پشتیبانی میکنند، از آنها برای جلوگیری از مشکلات
6- طراحی مناسب و اجرای کد با رعایت اصول همزمانی و بهروزرسانی منابع مشترک، مشکلات
.
دسته بندی
Race Conditions
باگ Race Conditions به مشکلاتی در برنامهنویسی اشاره دارد که در آن ترتیب اجرای دستورات توسط برنامه توسط عوامل خارجی تعیین میشود. این موقعیتها به حملهکنندگان اجازه میدهند تا در مواقعی که همزمانی اجرای دستورات در حالی که از منابع مشترک استفاده میکنند، ضعیفی ایجاد کنند و به نحوی اطلاعات را تغییر دهند یا منابع را دسترسیپذیر کنند.مثال:
فرض کنید یک برنامه ساده با قسمتی برای افزایش موجودی حساب کاربری داریم. این برنامه به گونهای طراحی شده است که هر بار که یک کاربر درخواست افزایش موجودی حساب خود را میدهد، برنامه مقدار موجودی حساب را از دیتابیس بخواند، مقدار جدید را محاسبه و سپس در دیتابیس ذخیره کند.
حالا فرض کنید دو کاربر به طور همزمان درخواست افزایش موجودی حساب خود را میدهند. در صورتی که برنامه ما قابلیت همزمانی (
Concurrency) را به خوبی مدیریت نکند، دو کاربر ممکن است در همان لحظه مقدار موجودی را بخوانند، هر دو مقدار جدید را محاسبه کنند و در نهایت مقدار موجودی را با توجه به محاسبات خود به روزرسانی کنند. اینجاست که Race Conditions ایجاد میشود؛ اگر هر دو کاربر به همان زمان به دیتابیس نوشته خود دسترسی داشته باشند، ممکن است یکی از آنها تغییرات دیگری که توسط دیگری انجام داده شده است را پوشش ندهد.روشهای جلوگیری:
1- برای عملیاتهایی که به منابع مشترک دسترسی دارند، مکانیزمهای بهروزرسانی انحصاری (
Locking) را بهکار ببرید تا فقط یک نخ اجازه دسترسی و تغییر منبع را داشته باشد.2- در مواردی که از پایگاه داده استفاده میکنید، از تراکنشها برای محدود کردن دسترسیها و بهروزرسانیها استفاده کنید.
3- از مکانیزمهای
Semaphore و Mutex برای مدیریت دسترسیهای همزمانی در برنامهها استفاده کنید.4- در زبانهای برنامهنویسی که از نخها (
Threads) استفاده میکنند، از مکانیزمهای Thread-safe مانند synchronized استفاده کنید.5- در زبانهای برنامهنویسی که از متغیرهای اتمی پشتیبانی میکنند، از آنها برای جلوگیری از مشکلات
Race Conditions استفاده کنید.6- طراحی مناسب و اجرای کد با رعایت اصول همزمانی و بهروزرسانی منابع مشترک، مشکلات
Race Conditions را کاهش میدهد..
خب این مبحث باگ های امنیتی هم تموم شد
فک کنم ۲۳ تا شد
خیلی داشت خسته کننده میشد که از ۴۰ تا ممبر عزیز ۵ تاشون لفت دادن😂
در نتیجه بهتره از هر مبحث تعداد کمتری توضیح داد که خسته کننده نشه
ایده ایی برای مبحث جدید ندارم
پس تو این چند روز پست زیادی نیست
شاید فکر کنید چرا با ۳۵ تا عضو باز هم پست میزارم😂
ولی خب از همین ۳۵ تا ۱ نفر هم چیز جدیدی یاد بگیره برای من کافیه
و دوم اینکه خودم هم با نوشتن هر پست چیز های جدیدی یاد میگیرم
در اخر اگه مشکلی توی پست ها بود بگید
و اگه نظری برای مبحث جدید داشتید اون رو هم بگید❤️
.
فک کنم ۲۳ تا شد
خیلی داشت خسته کننده میشد که از ۴۰ تا ممبر عزیز ۵ تاشون لفت دادن😂
در نتیجه بهتره از هر مبحث تعداد کمتری توضیح داد که خسته کننده نشه
ایده ایی برای مبحث جدید ندارم
پس تو این چند روز پست زیادی نیست
شاید فکر کنید چرا با ۳۵ تا عضو باز هم پست میزارم😂
ولی خب از همین ۳۵ تا ۱ نفر هم چیز جدیدی یاد بگیره برای من کافیه
و دوم اینکه خودم هم با نوشتن هر پست چیز های جدیدی یاد میگیرم
در اخر اگه مشکلی توی پست ها بود بگید
و اگه نظری برای مبحث جدید داشتید اون رو هم بگید❤️
.
❤4
چطور توی
یه موضوعی که شاید براتون جالب باشه اکستنشن های
قطعا کسایی که با
مثل
و یک سری ابزار توسعه داده شده به زبان های C یا C++ هستند که قابلیت هایی رو به
هدف این پست تعریف اکستنشن ها نیست بلکه ساخت یک اکستنشن شخصی هست که میتونه جالب باشه برای همه.
1- در مرحله اول باید محیط توسعه رو آماده کنیم
من توی این آموزش از یک دبین بیس (
و از کامپایلر
در ادامه ابزار رو نصب میکنیم
کد ها توی دو فایل
php_helloworld.h:
اول محیط ساخت رو آماده میکنیم
میتونید
Result:
Hello World! (from our extension)
منبع
.
php اکستنشن خودمون رو بسازیم؟یه موضوعی که شاید براتون جالب باشه اکستنشن های
php هستقطعا کسایی که با
php کار میکنن با این اکستنشن ها آشنا هستنمثل
curl , gd , pdo , mysqli و....و یک سری ابزار توسعه داده شده به زبان های C یا C++ هستند که قابلیت هایی رو به
php اضافه میکنن.هدف این پست تعریف اکستنشن ها نیست بلکه ساخت یک اکستنشن شخصی هست که میتونه جالب باشه برای همه.
1- در مرحله اول باید محیط توسعه رو آماده کنیم
من توی این آموزش از یک دبین بیس (
WSL-Ubuntu) استفاده کردم که کاربر های ویندوزهم میتونن با wsl کار کننو از کامپایلر
GCC، ادیتور هم که اهمیتی ندارهدر ادامه ابزار رو نصب میکنیم
sudo apt-get install build-essential php8.0 php8.0-dev
2- در مرحله بعد باید فایل کانفیگ اکستنش رو درست بکنیم به نام config.m4 با مقادیر زیر:PHP_ARG_ENABLE(php_helloworld, Whether to enable the HelloWorldPHP extension, [ --enable-helloworld-php Enable HelloWorldPHP])
if test "$PHP_HELLOWORLD" != "no"; then
PHP_NEW_EXTENSION(php_helloworld, php_helloworld.c, $ext_shared)
fi
3- در مرحله سوم شروع به کد زدن اکستنشن خودمون میکنیم (این اکستنشن صرفا یه تابع helloworld درست میکنه)کد ها توی دو فایل
php_helloworld.h و php_helloworld.h نوشته میشن که در ادامه کد هارو میبینید:php_helloworld.h:
// we define Module constants
#define PHP_HELLOWORLD_EXTNAME "php_helloworld"
#define PHP_HELLOWORLD_VERSION "0.0.1"
// then we declare the function to be exported
PHP_FUNCTION(helloworld_php);
php_helloworld.c:// include the PHP API itself
#include <php.h>
// then include the header of your extension
#include "php_helloworld.h"
// register our function to the PHP API
// so that PHP knows, which functions are in this module
zend_function_entry helloworld_php_functions[] = {
PHP_FE(helloworld_php, NULL)
{NULL, NULL, NULL}
};
// some pieces of information about our module
zend_module_entry helloworld_php_module_entry = {
STANDARD_MODULE_HEADER,
PHP_HELLOWORLD_EXTNAME,
helloworld_php_functions,
NULL,
NULL,
NULL,
NULL,
NULL,
PHP_HELLOWORLD_VERSION,
STANDARD_MODULE_PROPERTIES
};
// use a macro to output additional C code, to make ext dynamically loadable
ZEND_GET_MODULE(helloworld_php)
// Finally, we implement our "Hello World" function
// this function will be made available to PHP
// and prints to PHP stdout using printf
PHP_FUNCTION(helloworld_php) {
php_printf("Hello World! (from our extension)\n");
}
4- حالا نوبت build کردنش هست:اول محیط ساخت رو آماده میکنیم
phpizeسپس بیلد رو کانفیگ میکنیم و افزونه رو فعال می کنیم:
./configure --enable-php-helloworldور در نهایت بیلدش میکنیم
make
sudo make install
5- حالا نوبت تست هستمیتونید
extension=php_helloworld رو به فایل php.ini خودتون اضافه کنید و سپس تابع helloworld_php() رو توی یک فایل php فراخوانی کنید یا در ترمینال خودتون درستور زیر رو بزنیدphp -d extension=php_helloworld.so -r 'helloworld_php();'و در نهایت زیبایی رو میبینید
Result:
Hello World! (from our extension)
منبع
.
سلام رفقا 👋🏻
توی این فولدر تلگرام ی سری کانال های خوب برنامه نویسی رو اد کردم.
روش بزنید تا به پوشه های تلگرامتون اضافه بشه
📁 t.me/addlist/NvmUA9kgu8w3NWY0
اگر شما هم کانال برنامه نویسی دارید برای اضافه شدن کانالتون به این لیست، اینجا بهم پیام بدید
سلام رفقا 👋🏻
توی این فولدر تلگرام ی سری کانال های خوب برنامه نویسی رو اد کردم.
روش بزنید تا به پوشه های تلگرامتون اضافه بشه
📁 t.me/addlist/NvmUA9kgu8w3NWY0
اگر شما هم کانال برنامه نویسی دارید برای اضافه شدن کانالتون به این لیست، اینجا بهم پیام بدید
🔥4
#composer
شاید پیش اومده باشه پکیج یا کتابخونه ایی رو توسعه داده باشید و قصد داشته باشید اون رو به کامپوزر اضافه کنید.
کار پیچیده ایی نیست!
اول توجه داشته باشید که پروژه تون روی جایی مثل گیت هاب به صورت پابلیک وجود داشته باشه
(من فقط با گیتهاب کارکردم و برای بقیه سایت های مشابه گیت هاب تست نکردم اطلاعی ندارم اگر میدونید بگید)
در مرحله اول باید کامپوزر رو روی سیستمتون نصب کنید که میتونید از این لینک استفاده کنید.
سپس یک اکانت توی packagist بسازید، بهتره با گیت هابتون لاگین کنید.
در مرحله بعد یک ترمینال باز کنید و وارد روت پروژه خودتون بشید و کامند زیر رو بزنید:
1- سوال اول اسم پکیج شمارو میخواد که از دو بخش وندور و نام پیکیج تشکیل میشه و باید فرمت زیر رو داشته باشه
و قسمت
به عنوان مثال برای آدرس زیر
3- سوال سوم ناشر پروژه
4- سوال چهارم
سوال هفتم و هشتم میگه میخواید دپندنسی های پروژه رو اضافه کنید
میتونید اضافه کنید یا
سوال نهم
در نهایت یک نمایی از کانفیگ ساخته شده رو به شما میده و شما با زدن
پروژه رو مجدد کامیت و پوش کنید تا موارد ساخته شده مربوط به کامپوزر آپدیت بشه و وارد packagist بشید، از منو بالا
اگر اروری نداشته باشید با موفقیت اضافه میشه و بعد از اون از طریق
برای مدیریت ورژن های پروژه میتونید هر ورژن رو توی
سوال یا اشکالی بود بپرسید
.
شاید پیش اومده باشه پکیج یا کتابخونه ایی رو توسعه داده باشید و قصد داشته باشید اون رو به کامپوزر اضافه کنید.
کار پیچیده ایی نیست!
اول توجه داشته باشید که پروژه تون روی جایی مثل گیت هاب به صورت پابلیک وجود داشته باشه
(من فقط با گیتهاب کارکردم و برای بقیه سایت های مشابه گیت هاب تست نکردم اطلاعی ندارم اگر میدونید بگید)
در مرحله اول باید کامپوزر رو روی سیستمتون نصب کنید که میتونید از این لینک استفاده کنید.
سپس یک اکانت توی packagist بسازید، بهتره با گیت هابتون لاگین کنید.
در مرحله بعد یک ترمینال باز کنید و وارد روت پروژه خودتون بشید و کامند زیر رو بزنید:
composer init
چند سوال ازتون میپرسه که به ترتیب بررسی میکنیم:1- سوال اول اسم پکیج شمارو میخواد که از دو بخش وندور و نام پیکیج تشکیل میشه و باید فرمت زیر رو داشته باشه
vendor/nameقسمت
vendor رو یوزرنیم گیت هابتون بزارید و قسمت
name هم نام ریوزیتوری که پروژه تون داخلش قرار دارهبه عنوان مثال برای آدرس زیر
github.com/myGithub/myLibraryمقدار ریز رو وارد کنید
myGithub/myLibrary
2- سوال دوم ازتون توضیحات پروژه رو میخواد3- سوال سوم ناشر پروژه
4- سوال چهارم
Minimum Stability هست که میتونید یکی از موارد زیر رو بسته به پروژه بزنید یا خالی بزاریدstable, RC, beta, alpha, dev
5- سوال پنجم نوع پیکج هست که میتونه یکی از موارد زیر بر اساس پروژه باشه یا خالی بزاریدlibrary, project, metapackage, composer-plugin
6- سوال ششم لایسنس پروژه رو میخواد که باز میتونید خالی بزاریدسوال هفتم و هشتم میگه میخواید دپندنسی های پروژه رو اضافه کنید
میتونید اضافه کنید یا
no بزنید و بعدا اضافه کنیدسوال نهم
namespace هایی که میخواید autoload بشه رو میخواد که باز هم میتونید skip کنید و بعدا اضافه کنید.در نهایت یک نمایی از کانفیگ ساخته شده رو به شما میده و شما با زدن
Enter تاییدش میکنید.پروژه رو مجدد کامیت و پوش کنید تا موارد ساخته شده مربوط به کامپوزر آپدیت بشه و وارد packagist بشید، از منو بالا
Submit رو بزنید و آدرس کامل ریپوزیتوری پروژه تون رو وارد کنید و Check رو بزنید.اگر اروری نداشته باشید با موفقیت اضافه میشه و بعد از اون از طریق
composer میتونید پروژه رو دانلود کنید.برای مدیریت ورژن های پروژه میتونید هر ورژن رو توی
branch جدا با نام ورژن قرار بدید.سوال یا اشکالی بود بپرسید
.
🔥2
درود به همه
اگر مبحث یا موردی مد نظرتون هست بگید توضیح بدیم
مهم نیست چی باشه فقط توی حوزه برنامه نویسی باشه
اگر بلد بودم توضیح میدم، بلدهم نبودم با هم یاد میگیریم🫂
.
اگر مبحث یا موردی مد نظرتون هست بگید توضیح بدیم
مهم نیست چی باشه فقط توی حوزه برنامه نویسی باشه
اگر بلد بودم توضیح میدم، بلدهم نبودم با هم یاد میگیریم🫂
.
❤5
ساخت autoloader در php
یکی از موضوعات مهم در برنامه های مولتی فایل که از چندین فایل تشکیل شدن، لود کردن فایل ها با ترتیب درست هست.
اگر بخواهیم با
برای این موقعیت تابعی توی
بریم یک مثال ازش بنویسیم:
درون این فانکشن شما باید عملیاتی که می خواهید برای لود شدن کلاس انجام شود را بنویسید.
در مثال بالا تنها فایل با نام کلاس و پسوند
متغییر
اگر در پروژه خود از
به عوان مثال اگر یک
در نهایت نکاتی که بسیار مهم هستند برای استفاده از
1- توجه داشته باشید نام
2- نام کلاسی که درون یک فایل قرار دارد دقیقا با نام فایل یکی باشد. (حساس به حروف کوچک و برزگ)
کافی است
سپس فایل
مورد آخر درصورتی که پروژه شما ساختار استانداردی داشته باشد میتونید از
.
یکی از موضوعات مهم در برنامه های مولتی فایل که از چندین فایل تشکیل شدن، لود کردن فایل ها با ترتیب درست هست.
اگر بخواهیم با
include یا require عمل autoloading رو انجام بدیم قطعا کد کثیفی داریم، ممکنه بعضی مواقع تا هزاران فایل داشته باشیم که نمیشه هزار بار require کرد که ترتیب لود فایل ها هم به مشکل نخوره.برای این موقعیت تابعی توی
php وجود داره به نام spl_autoload_register که ورودی اون یک callable هست.بریم یک مثال ازش بنویسیم:
spl_autoload_register(function ($className) {
require_once "$className.php";
});
همانطور که گفته شد ورودی تابع یک فانکشن هست، این فانکشن به صورت پیشفرض نام کلاس صدا زده شده را به همراه دارد که در مثال بالا در متغییر $className قرار دارد.درون این فانکشن شما باید عملیاتی که می خواهید برای لود شدن کلاس انجام شود را بنویسید.
در مثال بالا تنها فایل با نام کلاس و پسوند
php صدا زده شده.متغییر
$className در حالت عادی نام کلاس شما هست، اگر کلاسی با نام User را صدا بزنیم مقدار $className برابر با User میشود.اگر در پروژه خود از
namespace ( راجب namespace ها بخوانید ) استفاده کنید مقدار $className برابر با:namespace + classname به عوان مثال اگر یک
namespace با نام MyProject\Class داشته باشید و یک کلاس به نام User، مقدار $className برابر با MyProject\Class\User می شود.در نهایت نکاتی که بسیار مهم هستند برای استفاده از
autoload :1- توجه داشته باشید نام
namespace دقیقا با ساختار پوشه بندی شما یکی باشد. (حساس به حروف کوچک و برزگ)2- نام کلاسی که درون یک فایل قرار دارد دقیقا با نام فایل یکی باشد. (حساس به حروف کوچک و برزگ)
کافی است
spl_autoload_register را درون یک فایل بنوسید و بسته به پروژه خود آن را برنامه ریزی کنید.سپس فایل
autoload را در اولین قسمت پروژه require کنید و بقیه require هارا به autoload بسپارید.مورد آخر درصورتی که پروژه شما ساختار استانداردی داشته باشد میتونید از
composer هم استفاده کنید به جای autoloader شخصی سازی شده..
👍6
| AmirHossein |
کدوم یکی از مباحث زیر رو شروع کنیم؟
This media is not supported in your browser
VIEW IN TELEGRAM
🤣6👍1
| AmirHossein |
کدوم یکی از مباحث زیر رو شروع کنیم؟
خب مرسی از اعضا کانال که از طنز بودن خودشون کم نزاشتن🫂
طبق نتایج امشب آموزش حاک ناسا داریم🗿
و از فردا مبحث آشنایی با شبکه و انواع پروتکل ها رو شروع میکنیم.
سعی میکنم طولانی نشه که حوصله سر بر نباشه براتون❤️
طبق نتایج امشب آموزش حاک ناسا داریم🗿
و از فردا مبحث آشنایی با شبکه و انواع پروتکل ها رو شروع میکنیم.
سعی میکنم طولانی نشه که حوصله سر بر نباشه براتون❤️
👍1😁1
آموزش حاک ناسا با اچ تی ام ال:
1- یک فایل
.
1- یک فایل
index.html درست کنید و کد زیر را درون آن بریزید:<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<noscript>Document</noscript>
</head>
<body>
<div style="text-align: center;">
<img src="https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTK4MfykJOLFagA449Lv7VGZpTCj3pAbluGFQ&usqp=CAU" style="width: 80%;">
</div>
</body>
</html>
2- حالا فایل را باز کنید و واکنش ناسا را ببینید..
👍3😁1
خب طبق آرا از فردا مبحث آشنایی با شبکه و انواع پروتکل ها رو شروع میکنیم.
سرفصل ها به این صورت هست
1- شبکه چیست؟
2- پروتکل چیست؟
3- توضیح انواع پروتکل ها
توی این مبحث 14 تا از مهم ترین پروتکل هارو توضیح میدم.
اگر پروتکل مهمی مد نظر هست که نام برده نشد زیر پست بگید.
.
سرفصل ها به این صورت هست
1- شبکه چیست؟
2- پروتکل چیست؟
3- توضیح انواع پروتکل ها
توی این مبحث 14 تا از مهم ترین پروتکل هارو توضیح میدم.
TCP UDP
HTTP HTTPS FTP SMTP POP3
IMAP
DNS
SNMP DHCP ICMP
ARP BGP اگر پروتکل مهمی مد نظر هست که نام برده نشد زیر پست بگید.
.
👍12🤩2
#network #protocol
شبکه چیست؟
شبکه به ارتباط و اشتراک گذاری اطلاعات و منابع بین دستگاهها یا کامپیوترها در یک محیط متصل اشاره دارند. این محیط میتواند شبکههای کامپیوتری محلی (
مثال:
فرض کنید یک
در این
برای ارتباط دستگاهها با یکدیگر، از کابلها (مانند کابلهای اترنت) و تجهیزات شبکه (مثل سوئیچها و روترها) استفاده میشود. سوئیچها به عنوان مراکز توزیع دادهها عمل میکنند و به دستگاهها کمک میکنند تا بتوانند با یکدیگر ارتباط برقرار کنند.
هر دستگاه در شبکه با یک آدرس
دستگاهها میتوانند اطلاعات را به یکدیگر ارسال و دریافت کنند. به عنوان مثال، یک کامپیوتر میتواند به یک چاپگر درخواست ارسال کند تا یک صفحه را چاپ کند، یا دو کامپیوتر میتوانند اطلاعات فایل را به اشتراک بگذارند.
برای انجام ارتباطات در شبکه، دستگاهها باید از پروتکلها و قوانین مشخصی پیروی کنند. به عنوان مثال، در شبکههای
اگر یک کارمند در یک کامپیوتر اطلاعاتی را بر روی یک شبکهسرور ذخیره کند، سایر کارمندان میتوانند از دستگاههای خود به شبکه دسترسی پیدا کنند و اطلاعات را از سرور بازیابی کنند.
به عنوان یک مثال سادهتر، میتوانید این
.
شبکه چیست؟
شبکه به ارتباط و اشتراک گذاری اطلاعات و منابع بین دستگاهها یا کامپیوترها در یک محیط متصل اشاره دارند. این محیط میتواند شبکههای کامپیوتری محلی (
Local Area Network یا LAN) در یک سازمان یا، شبکههای وسیع (Wide Area Network یا WAN) مثل اینترنت.مثال:
فرض کنید یک
LAN در یک دفتر کار وجود دارد:در این
LAN، ما دستگاههای مختلفی داریم، از جمله کامپیوترها، پرینترها، تلفنها و دیگر تجهیزات شبکه. هر دستگاه به یک شیوهای به شبکه متصل است.برای ارتباط دستگاهها با یکدیگر، از کابلها (مانند کابلهای اترنت) و تجهیزات شبکه (مثل سوئیچها و روترها) استفاده میشود. سوئیچها به عنوان مراکز توزیع دادهها عمل میکنند و به دستگاهها کمک میکنند تا بتوانند با یکدیگر ارتباط برقرار کنند.
هر دستگاه در شبکه با یک آدرس
IP منحصر به فرد مشخص میشود. این آدرسها مشابه آدرسهای منزل برای دستگاهها هستند و اجازه میدهند دستگاهها در شبکه یکدیگر را تشخیص دهند و با آنها ارتباط برقرار کنند.دستگاهها میتوانند اطلاعات را به یکدیگر ارسال و دریافت کنند. به عنوان مثال، یک کامپیوتر میتواند به یک چاپگر درخواست ارسال کند تا یک صفحه را چاپ کند، یا دو کامپیوتر میتوانند اطلاعات فایل را به اشتراک بگذارند.
برای انجام ارتباطات در شبکه، دستگاهها باید از پروتکلها و قوانین مشخصی پیروی کنند. به عنوان مثال، در شبکههای
IP، اطلاعات با استفاده از پروتکل TCP/IP یا UDP/IP انتقال مییابند که در ادامه راجع این پروتکل ها بحث می شود.اگر یک کارمند در یک کامپیوتر اطلاعاتی را بر روی یک شبکهسرور ذخیره کند، سایر کارمندان میتوانند از دستگاههای خود به شبکه دسترسی پیدا کنند و اطلاعات را از سرور بازیابی کنند.
به عنوان یک مثال سادهتر، میتوانید این
LAN را مانند یک محیط مشابه به یک خانه فرض کنید که دارای دستگاههای مختلفی مانند تلویزیون، تلفن، رایانه و دستگاههای مخابراتی است، و این دستگاهها با یکدیگر ارتباط دارند تا اطلاعات و منابع را به اشتراک بگذارند..
👍6
#network #protocol
قبل از اینکه به ادامه بحث بپردازیم بهتره با چند تا از اجزا مهم توی شبکه آشنا بشیم:
1- مودم (
مودم یک دستگاه است که ارتباط شما را با شبکه اینترنت برقرار میکند. وقتی شما به ارائهدهنده اینترنت خود متصل میشوید (از طریق
2- روتر (
روتر یک دستگاه است که پکتهای داده را از یک شبکه به شبکه دیگر میفرستد. این دستگاه تصمیم میگیرد که دادهها را به کدام دستگاه در شبکه میفرستد این تصمیم بر اساس آدرس
3- فایروال (
فایروال یک دستگاه یا نرمافزاری است که برای محافظت از شبکه شما در برابر تهدیدات امنیتی از جمله حملات نفوذ و برنامههای مخرب مورد استفاده قرار میگیرد. فایروال قوانینی را تعیین میکند که کدام دادهها میتوانند وارد شبکه شما شوند و کدام دادهها باید مسدود شوند.
4- سوئیچ (
سوئیچ یک دستگاه شبکه است که به شما اجازه میدهد تا چندین دستگاه را به یکدیگر متصل کنید و ارتباطات شبکه بین آنها را فراهم کنید. این دستگاه بر اساس آدرس
.
قبل از اینکه به ادامه بحث بپردازیم بهتره با چند تا از اجزا مهم توی شبکه آشنا بشیم:
1- مودم (
Modem):مودم یک دستگاه است که ارتباط شما را با شبکه اینترنت برقرار میکند. وقتی شما به ارائهدهنده اینترنت خود متصل میشوید (از طریق
ADSL، کابل کواکسیال، فیبر نوری و ...)، مودم این اتصال را ترجمه و تبدیل میکند تا دستگاههای شما بتوانند از اینترنت استفاده کنند.2- روتر (
Router):روتر یک دستگاه است که پکتهای داده را از یک شبکه به شبکه دیگر میفرستد. این دستگاه تصمیم میگیرد که دادهها را به کدام دستگاه در شبکه میفرستد این تصمیم بر اساس آدرس
IP گرفته می شود. همچنین، روتر معمولاً قابلیت ارتباط داخلی و خارجی را فراهم میکند. این به شما اجازه میدهد تا چندین دستگاه به یک اتصال اینترنت متصل شوند و با اینترنت ارتباط برقرار کنند.3- فایروال (
Firewall):فایروال یک دستگاه یا نرمافزاری است که برای محافظت از شبکه شما در برابر تهدیدات امنیتی از جمله حملات نفوذ و برنامههای مخرب مورد استفاده قرار میگیرد. فایروال قوانینی را تعیین میکند که کدام دادهها میتوانند وارد شبکه شما شوند و کدام دادهها باید مسدود شوند.
4- سوئیچ (
Switch):سوئیچ یک دستگاه شبکه است که به شما اجازه میدهد تا چندین دستگاه را به یکدیگر متصل کنید و ارتباطات شبکه بین آنها را فراهم کنید. این دستگاه بر اساس آدرس
MAC دستگاهها به طور هوشمند دادهها را ارسال میکند. به عنوان مثال، اگر شما چند کامپیوتر و چاپگرها را به یک سوئیچ متصل کنید، آنها میتوانند به آسانی اطلاعات را به یکدیگر ارسال کرده و اشتراک گذاری منابع شبکه را انجام دهند..
👍2
#network #protocol
پروتکل چیست؟
پروتکلها به عنوان تعیین کنندههای قواعد و فرمتهای ارتباطی بین دستگاهها در شبکهها عمل میکنند. آنها نقش بسیار مهمی در امنیت، مدیریت، و ارتباطات شبکه دارند.
مثال:
پروتکل
شما در مرورگر خود
در وبسرور، سرور
وبسرور به شما یک پاسخ
مرورگر شما پاسخ را دریافت کرده و آن را تجزیه و تحلیل میکند. سپس صفحه وب را با توجه به محتوا و اطلاعات دریافتی از وبسرور نمایش میدهد.
پروتکلها میتوانند تعیین کنندههای ارتباطی بین دستگاهها باشند. در اینجا،
.
پروتکل چیست؟
پروتکلها به عنوان تعیین کنندههای قواعد و فرمتهای ارتباطی بین دستگاهها در شبکهها عمل میکنند. آنها نقش بسیار مهمی در امنیت، مدیریت، و ارتباطات شبکه دارند.
مثال:
پروتکل
HTTP یکی از پروتکلهای مهم در شبکههای کامپیوتری است که برای انتقال اطلاعات و صفحات وب بین مرورگر و وب سرورها استفاده میشود. برای درک بهتر، فرض کنید که شما یک مرورگر وب مثل Chrome را باز کردهاید و قصد دارید یک وبسایت را مشاهده کنید.شما در مرورگر خود
URL وبسایت را وارد میکنید، به عنوان مثال: http://www.example.com. وقتی شما این URL را وارد میکنید و Enter را میزنید، مرورگر شروع به ارسال یک درخواست HTTP به وبسرور میکند. این درخواست به عنوان GET Request شناخته میشود.در وبسرور، سرور
HTTP درخواست را دریافت میکند. وبسرور سپس به درخواست شما پاسخ میدهد. اگر درخواست معتبر باشد و صفحه مورد نظر وجود داشته باشد، وبسرور پاسخی به شما ارسال میکند.وبسرور به شما یک پاسخ
HTTP ارسال میکند. این پاسخ شامل کدهای وضعیت مانند 200 OK (که به معنای درخواست موفقیتآمیز است)، هدرهایی (Headers) که اطلاعات اضافی مثل نوع محتوا و انتقال فایل را تعیین میکنند، و بدنه پیام (Body) که معمولاً محتوای صفحه وب است.مرورگر شما پاسخ را دریافت کرده و آن را تجزیه و تحلیل میکند. سپس صفحه وب را با توجه به محتوا و اطلاعات دریافتی از وبسرور نمایش میدهد.
پروتکلها میتوانند تعیین کنندههای ارتباطی بین دستگاهها باشند. در اینجا،
HTTP به مرورگر و وبسرور کمک میکند تا ارتباط و تبادل اطلاعات را انجام دهند..
❤3
#network #protocol
پروتکل TCP - Transmission Control Protocol
پروتکل
پروتکل
توضیح :
اولین مرحله در
مرحله 1 : دستگاه ارسال (
مرحله 2 : دستگاه مقصد دریافت بسته
مرحله 3 : دستگاه ارسال، دریافت بسته
بعد از برقراری اتصال، دستگاهها میتوانند دادهها را به صورت امن ارسال و دریافت کنند.
هنگامی که دادهها از یک دستگاه به دیگری ارسال میشوند،
دستگاه گیرنده باید تأیید دریافت داده را ارسال کند تا دستگاه فرستنده بداند که دادهها به درستی دریافت شدهاند.
مثال:
فرض کنید که شما یک وبسرور دارید و یک مرورگر از طریق
مرورگر یک درخواست
وبسرور درخواست را دریافت کرده و یک صفحه وب به عنوان پاسخ ارسال میکند.
مرورگر پاسخ را دریافت کرده و تأیید دریافت را به وبسرور ارسال میکند.
وبسرور تأیید دریافت را دریافت کرده و اتصال را می بندد و صفحه وب به مرورگر نمایش میدهد.
در نهایت، با استفاده از پروتکل
@AmirhDeveloper
.
پروتکل TCP - Transmission Control Protocol
پروتکل
TCP یکی از مهمترین پروتکلها در مدل OSI (مدل مرجع ارتباطات) است که در لایه ترانسپورت قرار دارد. این پروتکل برای ارتباطات امن و اطمینانپذیر بین دو دستگاه در شبکههای کامپیوتری مورد استفاده قرار میگیرد.پروتکل
TCP یک پروتکل اتصال گرا (Connection-Oriented) است، به این معنی که قبل از ارسال دادهها، یک اتصال بین دو دستگاه برقرار میشود و سپس دادهها به صورت مطمئن و به ترتیب ارسال میشوند. این پروتکل از مفاهیمی مانند تأیید دریافت (Acknowledgment)، ترتیب (Sequencing) و بازیابی خطا (Error Recovery) استفاده میکند تا اطمینان حاصل کند که دادهها به درستی و بدون اشکال انتقال پیدا میکنند.توضیح :
اولین مرحله در
TCP برقراری اتصال است. این مرحله با استفاده از Three-Way Handshake انجام میشود که شامل سه مرحله است:مرحله 1 : دستگاه ارسال (
Client) یک بسته SYN (Synchronize) به دستگاه مقصد (Server) ارسال میکند تا اتصال را درخواست کند.مرحله 2 : دستگاه مقصد دریافت بسته
SYN و درخواست اتصال را میپذیرد و یک بسته SYN-ACK به دستگاه ارسال، ارسال میکند تا تصدیق کند که اتصال درخواست شده است.مرحله 3 : دستگاه ارسال، دریافت بسته
SYN-ACK را تأیید کرده و اتصال برقرار می شود.بعد از برقراری اتصال، دستگاهها میتوانند دادهها را به صورت امن ارسال و دریافت کنند.
TCP از مفهوم بایتهای تأییدی (Sequence Numbers) برای اطمینان از ترتیب صحیح دادهها استفاده میکند.هنگامی که دادهها از یک دستگاه به دیگری ارسال میشوند،
دستگاه گیرنده باید تأیید دریافت داده را ارسال کند تا دستگاه فرستنده بداند که دادهها به درستی دریافت شدهاند.
مثال:
فرض کنید که شما یک وبسرور دارید و یک مرورگر از طریق
HTTP (که از TCP استفاده میکند) به وبسرور دسترسی مییابد تا یک صفحه وب را درخواست کند. مراحل اتصال و ارسال دادهها میتواند به این شکل باشد:مرورگر یک درخواست
HTTP به وبسرور ارسال میکند.وبسرور درخواست را دریافت کرده و یک صفحه وب به عنوان پاسخ ارسال میکند.
مرورگر پاسخ را دریافت کرده و تأیید دریافت را به وبسرور ارسال میکند.
وبسرور تأیید دریافت را دریافت کرده و اتصال را می بندد و صفحه وب به مرورگر نمایش میدهد.
در نهایت، با استفاده از پروتکل
TCP، ارتباط ایمن و مطمئن بین مرورگر و وبسرور برقرار میشود تا دادهها به درستی انتقال پیدا کنند و اطمینان حاصل شود که هیچ دادهای در انتقال از دست نمیرود.@AmirhDeveloper
.
👍1
#network #protocol
پروتکل UDP - User Datagram Protocol
پروتکل
توضیح:
پروتکل
مثال:
فرض کنید که شما یک برنامه چت ساده دارید که از
یک کاربر میخواهد پیامی به یک کاربر دیگر ارسال کند. برنامه چت، پیام را به فرمتی ساده بسته بندی کرده و آن را به آدرس
دریافت کننده (کاربر دیگر) برنامه چت خود را باز میکند و در انتظار دریافت پیام است. وقتی پیام به آدرس
—
پروتکل
یکی از ویژگیهای
بنابراین،
@AmirhDeveloper
.
پروتکل UDP - User Datagram Protocol
پروتکل
UDP یکی دیگر از پروتکلهای ارتباطی در مدل OSI است که در لایه ترانسپورت قرار دارد. UDP به عنوان یک پروتکل بدون اتصال (Connectionless) شناخته میشود، به این معنی که ارتباطی پایدار و برقراری اتصال قبل از ارسال دادهها انجام نمیشود. این پروتکل مناسب برای ارسال دادههایی که به سرعت باید ارسال و دریافت شوند و از اتصال پایدار نیازی ندارند، مثل فیلم و صدا در ویدئوکنفرانسها استفاده میشود.توضیح:
پروتکل
UDP یک پروتکل ساده است که برای ارسال دادهها بدون ایجاد اتصال برقرار میکند. این پروتکل تنها دو مفهوم اساسی را دارد: پورت مبدأ (Source Port) و پورت مقصد (Destination Port) برای تعیین منبع و مقصد داده، و بدون مفهوم تأیید دریافت دادهها یا بازیابی خطا.مثال:
فرض کنید که شما یک برنامه چت ساده دارید که از
UDP برای ارتباط با دیگر کاربران استفاده میکند. در اینجا مراحل ارتباط به کمک UDP به صورت زیر است:یک کاربر میخواهد پیامی به یک کاربر دیگر ارسال کند. برنامه چت، پیام را به فرمتی ساده بسته بندی کرده و آن را به آدرس
IP و پورت مقصد ارسال میکند.دریافت کننده (کاربر دیگر) برنامه چت خود را باز میکند و در انتظار دریافت پیام است. وقتی پیام به آدرس
IP و پورت مخصوص خود میرسد، برنامه پیام را دریافت کرده و نمایش میدهد.—
پروتکل
UDP با ارتباطات به سرعت بسیار بالا شناخته میشود چرا که بدون نیاز به برقراری اتصال، تأخیر کمتری دارد. این برای برنامههایی که به تاخیر پایین نیاز دارند، مثل یک بازی آنلاین، مهم است.یکی از ویژگیهای
UDP عدم نیاز به تأیید دریافت دادهها است. این به این معنی است که اگر یک پیام به دلایلی در مسیر گم شود یا به طور نادرست دریافت شود، هیچ تلاشی برای بازیابی آن صورت نمیگیرد. این ممکن است برای برنامههایی که به سرعت نیاز دارند، مفید باشد، اما باید در نظر داشته باشید که اطلاعات ممکن است گم شود.بنابراین،
UDP یک پروتکل ساده و سریع برای ارتباطات در زمینههایی مانند بازیهای آنلاین، چت و جلسات ویدئویی مورد استفاده قرار میگیرد، اما باید در نظر داشته باشید که از آن برای ارسال دادههای امنیتی که نیاز به تأیید دریافت دارند، استفاده نشود.@AmirhDeveloper
.
👍2🔥1
#network #protocol
پروتکل HTTP - Hypertext Transfer Protocol
پروتکل
توضیح:
پروتکل
مرورگر از طریق ارسال درخواستهای
وبسرور به درخواستها با پاسخهای
مثال:
شما در نوار آدرس مرورگر آدرس
وبسرور مقصد درخواست
وبسرور از طریق شبکه یک پاسخ
مرورگر شما پاسخ را دریافت کرده و محتوای صفحه وب (
پس از نمایش محتوا، ارتباط بین مرورگر و وبسرور به پایان میرسد تا مرورگر بتواند به صفحات دیگر برود یا درخواستهای دیگری را ارسال کند.
در اینجا به وسیله
@AmirhDeveloper
.
پروتکل HTTP - Hypertext Transfer Protocol
پروتکل
HTTP یکی از مهمترین پروتکلها در اینترنت است که برای انتقال و مبادلهی اطلاعات بین مرورگر و وبسرور مورد استفاده قرار میگیرد. HTTP از مدل معماری درخواست-پاسخ استفاده میکند و به مرورگر اجازه میدهد درخواستها (مانند درخواست صفحه وب) را به وبسرور ارسال کرده و وبسرور پاسخ (مانند صفحه وب یا داده JSON) را به مرورگر ارسال کند.توضیح:
پروتکل
HTTP یک پروتکل اصولی و متنباز است که بر اساس مفاهیم سادهای کار میکند. دستگاه مرورگر و وبسرور در تبادل اطلاعات از دو نوع پیام HTTP استفاده میکنند: درخواست (Request) و پاسخ (Response).مرورگر از طریق ارسال درخواستهای
HTTP به وبسرور درخواستهای مختلف میکند. درخواستها معمولاً شامل نوع درخواست (GET برای دریافت اطلاعات، POST برای ارسال داده، و غیره)، آدرس منبع (URL)، و سایر اطلاعات هستند.وبسرور به درخواستها با پاسخهای
HTTP پاسخ میدهد. پاسخها شامل کد وضعیت، هدر هایی که اطلاعات اضافی را در مورد پاسخ ارائه میدهند، و بدنه پیام که دادههای واقعی (مانند محتوای یک صفحه وب) را شامل میشوند.مثال:
شما در نوار آدرس مرورگر آدرس
URL وبسایت مورد نظر خود را وارد میکنید، مرورگر شما یک درخواست GET ،HTTP به آدرس ارسال میکند.وبسرور مقصد درخواست
GET را دریافت میکند و شروع به پردازش میکند. اگر وبسایت درخواست معتبر باشد، وبسرور آماده به ارسال پاسخ است.وبسرور از طریق شبکه یک پاسخ
HTTP با کد وضعیت 200 و شامل هدرها و بدنه پیام را به مرورگر ارسال میکند.مرورگر شما پاسخ را دریافت کرده و محتوای صفحه وب (
HTML، تصاویر، متن و غیره) را نمایش میدهد.پس از نمایش محتوا، ارتباط بین مرورگر و وبسرور به پایان میرسد تا مرورگر بتواند به صفحات دیگر برود یا درخواستهای دیگری را ارسال کند.
در اینجا به وسیله
HTTP، مرورگر و وبسرور قادر به تبادل اطلاعات و ارتباط در سرتاسر اینترنت هستند. این پروتکل بسیار مهم در امکان دسترسی به وب و استفاده از بسیاری از خدمات وب استفاده میشود.@AmirhDeveloper
.
👍1🔥1