تعداد بازدید: 4129

PHP Socket Programming – Part1

برنامه نویسی سوکت یک راه برای ارتباط مانا میان دو node ( کلاینت و سرور ) می باشد. یک سوکت (یا node) تحت یک IP و پورت به دیگر سوکت گوش می دهد (listen) .

Basic Web Socket

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

تصویر زیر نمونه یک ارتباط مانا میان یک کلاینت و یک سرور ( دو node در سوکت ) روی یک پورت می باشد. این ارتباط با ارسال یک پالس از سمت سرور به کلاینت شروع می شود و در ادامه پس از گذشت زمان دو پالس از سمت کلاینت به سرور می آید.

php web socket programming

برنامه های چت ( telegram ) ، بازی های آنلاین ، یا برخی برنامه های آنلاین گوگل ( Google Docs ) بنا به ماهیت برنامه از برنامه نویسی سوکت استفاده می کنند.

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

 

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

Port Numbers

مثلا ما به مرورگر آدرس دامنه داده شده است و آدرس IP را نمی داند . برای دریافت آدرس IP مرورگر یک درخواست به یکی از سرور های دی ان اس ( مثلا گوگل ) می فرستد و سرور آدرس IP سرور مربوطه رو با استفاده از آدرس دامنه به مرورگر بر می گرداند.

وقتی ما در قسمت Network Setting کامپیوتر خودمان دی ان اس به صورت دستی Set می کنیم برای همین کار استفاده می شود. و همچنین وقتی ما دامنه ثبت می کنیم برای این که دامنه به یک سرور مرتبط گردد دی ان اس سرور را (مثلا ns1.example.com) را برای دامنه وارد می کنیم.به عبارت دیگر ادمین های وب سایت ها دامنه ها را در DNS Server رجیستر کرده اند و تعیین کرده اند که مثلا این دامنه معادل این IP است.

پس از این که مرورگر آدرس IP سرور را بدست آورد یک connection تحت پروتکل Http به سرور بر قرار می کند. یعنی یک Http Request با یکی از متد های GET,POST ارسال و یک پاسخ Http Response نیز از سمت سرور به کلاینت ما بر می گردد.

سرور یک مدل پیچیده تری از یک کامپیوتری است که یک سری نرم افزار روی آن نصب می باشد.هر سرور یک connection را روی یک پورت دریافت می کند. هر پورت به یک سرویس یا یک نرم افزار اشاره می کند.

به طور مثال زمانی که شما از طریق یک کامپیوتر به یک سرور درخواست ارسال می کنید ( با وارد کردن دامنه gnutec.net ) در پشت زمینه به آی پی سرور و روی پورت 80 این درخواست را ارسال می کنید. یا فرض کنید یک درخواست لیست فایل از سمت کلاینت شما (مثلا FileZilla ) به یک سرور روی اینترنت از طریق پروتکل FTP ارسال شده است ، پروتکل TCP واقع در لایه transport-layer protocol پورت را برای این درخواست روی 21 قرار می دهد.

Socket Programming

سوکت برابر است با IP:PORT یا به بیان ساده تر به ترکیب یک آدرس ماشین (IP) و یک شماره درگاه (PORT) سوکت گفته می شود ، که در آن IP متشکل از چهار عدد که هر کدام از 0 تا 255 می باشد و به وسیله . از هم جدا شده اند و پورت شامل یک عدد بین 0 تا 65535 می باشد.

برای برقراری ارتباط میان دو کامپیوتر در یک شبکه دو مورد را باید در نظر بگیریم :

  • آدرس کامپیوتری که می خواهیم به آن متصل شویم
  • برنامه ای از آن کامپیوتر که میخواهیم با آن ارتباط برقرار کنیم

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

مطابق با استاندارد های تعریف شده از 65535 پورت موجود 1024 پورت اول آن برای مقاصد خاص و سرویس های خاصی رزرو شده است و ما باید برای برنامه نویسی سوکت از پورت هایی غیر از اینها استفاده کنیم . برخی از پورت های رزرو شده در پروتکل های TCP و UDP به شرح زیر می باشند.

TCP Telnet 23
SMTP 25
HTTP 80
FTP 21
UDP DHCP 67
NBNS 137
DNS 53
SNTP 123
SNMP 161

پروتکل های خانواده TCP , UDP مربوط به transport-layer protocol شبکه می باشند و سایر پروتکل های موجود در سمت چپ مربوط به application-layer می باشند. حال این که چگونه این دو نوع پروتکل با هم ارتباط برقرار می کنند تا در پازل انتقال داده نقشی را ایفا کنند توضیحات مختصری ارائه می دهیم.

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

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

Transport-layer Protocols

در برنامه نویسی سوکت ما از دو پروتکل برای انتقال اطلاعات در میان کامپیوتر ها استفاده می کنیم :

TCP (Transmission Control Protocol): این پروتکل یک پروتکل اتصال گرا یا connection-oriented می باشد یعنی ارتباط میان کلاینت و سرور تا پایان روند انتقال اطلاعات باقی می ماند. در چنین حالتی کامپیوتر مقصد با دریافت صحیح هر بسته از مبدا یک Acknowledge به منظور اطلاع از دیفات صحیح به کامپیوتر مبدا ارسال می کند. اگر پیغام اعلام وصول فوق به مبدا نرسد ، دوباره بسته را ارسال می کند.

UDP (User Diagram Protocol) : این پروتکل یک پروتکل بدون اتصال یا connection less می باشد . این پروتکل امکان توزیع داده ها را با سرعت بالا تضمین می کند ، ولی هیچ تصمینی در جهت صحت ارسال داده ها و دریافت آن ها توسط کامپیوتر مقصد ارائه نمی دهد.

مطالب مشابه

Apache HTTP Server – htaccess

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

ftp-protocol-in-php

کار با پروتکل FTP در PHP

یکی دیگر قوانین حاکم بر دنیای وب ( از پروتکل های اینترنت لایه application ) پروتکل ftp است که با استفاده از آن می...

email handling in php

ارسال و دریافت ایمیل در php

قوانین حکم فرما بر دنیای وب را پروتکل می نامیم. پروتکل http که در سرور ها برای ایجاد پاسخ به درخواست ها در برخی...

هدر های Http در درخواست و پاسخ

Http Headers (قسمت اول)

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

اشتراک گذاری :

مدیر وب سایت گنوتک . برنامه نویسی رو با زبان C در هفده سالگی شروع کردم . در حال حاضر به برنامه نویسی php برپایه معماری MVC , HMVC و همچنین سیستم مدیریت محتوای WordPress و فریم ورک محبوب لاراول علاقه مند هستم و دوست دارم اطلاعاتم رو با شما به اشتراک بگذارم.

۰ دیدگاه برای PHP Socket Programming – Part1

دیدگاهتان را بنویسید

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