سلام به همه دوستان. امیدوارم تا حالا مطالب مفید بوده باشه! شاید یکسری از مطالب گفته شده برای شما تکراری باشه و بعضی از قسمت ها گیج کننده ولی سعی کردم با تکرار مطالب و توضیح کاملتر در قسمت های تکرار شده، موضوع را قابل درک تر کنم. بدون اتلاف وقت میریم و به بقیه مطالب که ادامه قسمت قبل هستش میپردازیم.
UDP چیست؟
User datagram protocol (دیتاگرام یا بسته کاربر) یکی از اعضای اصلی مجموعه پروتکل اینترنت است. UDP یک پروتکل ارتباطی (جایگزین برای پروتکل انتقال TCP) است که در درجه اول برای برقراری و ارسال داده در زمان کم و همچنین با امکان خطا، در اینترنت استفاده میشود. UDP از یک روش انتقال ساده بدون handshake است. در استفاده از این پروتکل فرض بر آن است که بررسی خطا و تصحیح آن ضروری نیست.
برنامهها با استفاده از پروتکل UDP اطلاعات را خیلی سریع ارسال میکنند؛ زیرا نه نیازی به ایجاد اتصال با کلاینت دارند و نه لازم است منتظر پاسخ باشد. فقط هیچ تضمینی وجود ندارد که بستهها به طور کامل و به همان ترتیبی که ارسال شدهاند به مقصد برسند! به علاوه این پروتکل امنیت دادهها را در برابر دستکاری اشخاص ثالث تضمین نمیکند.
امکانات انتقال داده برای تضمین یک انتقال کامل و موفق روی پروتکل دیتاگرام کاربر یا همان UDP حداقل است؛ از این رو نمیتوان به آن به چشم یک پروتکل انتقال اصلی نگاه کرد. این پروتکل از ابتدا برای کاربردهایی طراحی شده بود که امنیت برای آنها در اولویت نبود؛ بنابراین کاربردهای محدودی دارد، از جمله:
کاربردهای نیازمند ارائه بهترین تلاش (best effort)
گاهی اوقات برای انتقال داده به سرویسهای ارائه، بهترین تلاش نیاز است. در چنین کاربردهایی معمولا از پروتکل UDP برای انتقال اطلاعات استفاده میشود. مثل برنامههایی که مقادیر اندازهگیری شده را انتقال میدهند یا مرتب دستورات کاری مشابهی اجرا میکنند.
کاربردهایی که مکانیسمهای خاصی برای انتقال قابل اعتماد دارند:
پروتکل UDP میتواند برای کاربردهایی که نیازمند انتقال کامل و قابل اعتماد اطلاعات هستند هم مفید باشد؛ به این شرط که خود کاربردها مکانیزمهای خاصی برای ارسال مطمئن اطلاعات داشته باشند. مزیت این سرویسها این است که برای تضمین کامل بودن و صحت بستههای داده ارسالی، نیازمند الگوهای ثابتی نیستند. شما میتوانید خودتان تصمیم بگیرید که چگونه و چه زمانی به اطلاعات نادرست یا مرتب نشده پاسخ دهید.
کاربردهای چندپخشی
برخلاف پروتکلهای انتقال قابل اعتماد مانند TCP که حتما باید بین فرستنده و گیرنده اتصال ایجاد کنند، UDP از اتصالات چندپخشی IP نیز پشتیبانی میکند. اگر قرار است برنامهای بتواند بستههای IP را به طور کارآمد و سریع به تعداد زیادی سیستم به طور همزمان ارسال کند،UDP انتخاب مناسبی است.
کاربردهای بلادرنگ
پروتکل UDP در سرویسهایی مثل ارتباطات صوتی و تصویری که نیاز به انتقال بلادرنگ دارند، عالی عمل میکند. در واقع این سرویسها باید بتوانند تا حد زیادی انتقال، دریافت و بازتولید جریانهای داده را خودشان کنترل کنند. این اتفاق به راحتی با انتقال UDP امکانپذیر است.
موارد استفاده از UDP
- بازیهای آنلاین: اکثر بازیهای آنلاین از خدمات پروتکل UDP استفاده میکنند. از آنجایی که در بازیهای آنلاین تاخیر قابل تحمل نیست، استفاده از UDP انتخاب عاقلانهتری است.
- کنفرانس ویدیویی: برنامههای کنفرانس ویدیویی مانند Skype ،Gmeet ،Zoom همگی از خدمات UDP استفاده میکنند؛ چراکه برنامههای بلادرنگ محسوب میشوند و نباید تاخیری در دریافت دادهها داشته باشند.
- تکنولوژی انتقال صدا روی بستر شبک:(VoIP) : برنامههایی مانند Viber، Whatsapp، Google Hangouts از UDP برای تبدیل صدای ما به دادههای دیجیتال و انتقال آن از طریق شبکه استفاده میکنند.
- سیستم نام دامنه (DNS): DNS از UDP برای واکشی آدرس IP مربوطه استفاده میکند؛ زیرا زمان بارگذاری صفحات وب سرعت اهمیت زیادی دارد و UDP بهمراتب سریعتر از TCP است.
تفاوت میان TCP و UDP چیست؟
TCP یک پروتکل اتصالگرا است. به این معنی که برای انتقال با این پروتکل باید یک جلسه بین فرستنده و گیرنده برگذار شود تا در مورد اینکه چه دادههایی منتقل میشوند، توافق کنند. هنگامی که بستههای TCP دریافت میشوند و عملیات بررسی خطا را پشت سر میگذارند، گیرنده باید با یک تایید پاسخ دهد. اگر بستههای TCP در حین انتقال خراب یا گم شوند، گیرنده تأییدیه ای ارسال نمیکند و فرستنده در نهایت آن بستهها را دوباره ارسال میکند.
UDP پروتکل بدون اتصال است. گیرنده میتواند بستههای UDP را درخواست کرده و دریافت کند، اما هیچ جلسهای برقرار نمیشود. به این معنی که هیچ شروع یا پایانی وجود ندارد و دادهها فقط ارسال و دریافت میشوند. حتی اگر بستههای UDP در حین انتقال خراب یا گم شوند، ممکن است گیرنده باخبر نشود. در این حالت گیرنده خطاها را به فرستنده گزارش نمیکند یا تایید نمیکند که دادهها دریافت شده است.
موارد استفاده از TCP
- انتقال متن: قطعا انتظار همه در ارسال و دریافت پیامهای متنی این است که متن بدون اتلاف و به همان ترتیبی که ارسال شد، دریافت گردد. از این رو پروتکل TCP به دلیل قابلیت انتقال مطمئن و کنترل خطا در ارتباطات متنی استفاده میشود مانند Whatsapp، iMessage، Instagram و Google Chat.
- انتقال فایل یا FTP : زمانی که در انتقال فایل، صحت بستهها در مقصد دارای اهمیت باشد از TCP استفاده میشود؛ مثل مشتری و سرور FileZilla.
- پروتکل انتقال ابرمتن (HTTP) : برای دسترسی به دادههای موجود در شبکه جهانی وب از TCP استفاده میشود زیرا TCP از ارسال مرتب دادهها، کنترل خطا و کنترل جریان و ارسال مجدد بستههای گم شده پشتیبانی میکند.
- پروتکل انتقال نامه ساده (SMTP): این یک پروتکل لایه کاربرد است که برای ارسال ایمیل از یک سیستم به سیستم دیگر استفاده میشود. SMTP برای برقراری ارتباط از خدمات TCP استفاده میکند. هنگامی که سرور SMTP درخواست اتصال را میپذیرد، اجازه ارسال نامهها را به فرستنده میدهد. نمونههایی از این پروتکل را در Yahoo ،Gmail ،Outlook و غیره میبینیم.
PPPOE چیست؟
PPPOE مخفف عبارت Point-to-Point over Ethernet است و یک پروتکل شبکهایست که از پروتکل قدیمی PPP یا Point-to-Point گرفته شده. دلیل طراحی PPPOE مدیریت و نحوه انتقال دادهها از طریق شبکههای اترنت (شبکههای کابل) هست. در نتیجه چندین کلاینت در یک شبکه میتونن دسترسی به اینترنت رو با استفاده از اتصال PPPOE داشته باشن.
برای اینکه موضوع رو راحتتر درک کنین باید بگیم که PPPOE نسخه جدیدتر از اتصالات dial-up connection هست که بیشتر توی دهههای 80 و 90 میلادی مورد استفاده قرار میگرفتن. همچنین PPPOE توانایی این رو داره که ویژگیهای مهم و اساسی در شبکه مثل فشرده سازی دادهها (data compression)، رمزگذاری (encryption)، نقش رمزنگاری در امنیت شبکه و تأیید هویت (authentication) رو ارائه کنه.
اگر مطلب گفته شده براتون گنگ بود، بذارید یک جور دیگه هم توضیح بدم. خوب،
PPPOE سازگاری خوبی با IPv4 و IPv6 داره. به خاطر اینکه توی این پروتکل نیاز به ساخت کانکشن و تنظیم اون توسط کاربر نیست، توی ISP ها یا شرکتهای ارائهدهنده خدمات اینترنت نظیر ADSL بیشترین کاربرد رو داره. بنابراین بیشترین میزان تنظیم سرور PPPOE در سمت ISPها صورت میگیره و معمولا تنظیمات PPPOE Client روی مودمها در کاربرد خانگی یا روی روتر سازمان انجام میشه.
پروتکل PPPOE در شبکه به طور خودکار دنبال access pointهایی میگرده که میشه بهشون وصل شد. سپس یک PPPOE connection میسازه که با یک username و password به سادگی قابل اتصال هست. این پروتکل یک پروتکل استاندارده که برای اینکه بین دو نقطه ارتباط برقرار بشه، مورد استفاده قرار میگیره.
قابلیت PoE چیست؟
قابلیت PoE یا Power over Ethernet یک فناوری جدید است که به کابل شبکه اجازه می دهد تا علاوه بر انتقال داده، انرژی الکتریکی (تغذیه) را نیز انتقال دهد. برای مثال یک دوربین مدار بسته را در نظر بگیرید که قصد داریم آن را در فضای بیرونی ساختمان نصب کنبم. دوربین مداربسته برای عملکرد صحیح به دو اتصال (کابل) نیاز دارد:
- اتصال شبکه: برای ارتباط برقرار کردن با NVR یا مانیتور
- اتصال برق (تغذیه): برای تأمین نیروی الکتریکی لازم
با این وجود اگر دوربین دارای قابلیت PoE باشد، برای این دو نوع اتصال فقط به یک کابل شبکه نیاز خواهد داشت که هم داده ها را انتقال دهد و هم انرژی برق لازم را تأمین کند.
پورت PORT چیست؟
پورت نقطه اتصال یا رابط بین کامپیوتر و یک دستگاه خارجی یا داخلی می باشد. پورت های داخلی، جهت اتصال دستگاه هایی مانند هارد دیسک، درایوهای CD ROM یا DVD و پورت های خارجی برای مودم ها، چاپگرها، ماوس ها و سایر دستگاه ها استفاده میگردند. به هر پورت شمارهای اختصاص داده میشود تا در حین برقراری ارتباط بین دستگاه ها و سیستم، شبکه بتواند نوع ارتباط و داده های دریافت شده در زمان ارتباط را ردیابی نماید.
ما دو نوع پورت داریم:
پورت سخت افزاری و پورت نرم افزاری.
پورت سخت افزاری: مانند پورت LAN در مادربرد و Switchها. پورت های سخت افزاری به دلیل قابل دیده شدن آنها، برای ما واضح است (پورت های سخت افزاری برای ما الکترونیکی ها، آشناست!).
اما پورت نرم افزاری چیست؟ و چه نیازی به آن داریم؟
پورتهای نرم افزاری تعیین میکنند که کامپیوترها، اطلاعات را از یک IP مشخص با یک پورت مشخص، ارسال و دریافت کنند. پس، میتوان گفت پورت نرم افزاری قسمتی از یک آدرس اینترنتی است.
جایگاه Port در مدل OSI
در مدل OSI سه نوع آدرس داریم:
- آدرس سخت افزاری (MAC Address)
- آدرس IP
- شماره پورت
جایگاه پورت ها و آدرس ها در مدل OSI به صورت زیر است:
- Port در لایه 4 یعنی Transport
- IP Address در لایه 3 یعنی Network
- MAC Address در لایه 2 یعنی Data-link
برای درک بهتر کاربرد پورت، به مثال زیر توجه کنید:
فرض کنیم قرار است نامهای را برای شخصی ارسال کنیم در این صورت اگر:
- IP Address را معادل کد پستی ساختمان و
- MAC Address را معادل شماره واحد در آن ساختمان در نظر بگیریم،
در این صورت شماره Port معادل (کد ملی) همان شخصی است که گیرنده نامه است.
شماره پورت چیست؟
در شبکه های کامپیوتری، شماره پورتهای شبکه برای برنامه های مختلف استفاده میشود. پورت ها در تمام دستگاه های متصل به شبکه استاندارد شدهاند و به هر پورت یک عدد اختصاص داده شده است. بیشتر پورتها برای پروتکلهای خاصی رزرو شدهاند.
یعنی نیاز نیست یک اتصال مثلا داده سیمکارت برای دانلود فیلم برقرار کنید و یک اتصال اینترنت خانگی برای وبگردی. در حقیقت پستچی یک نفر است که تمامی نامههای شما را از مکانهای مختلف به دستتان میرساند. یعنی یک اتصال تمامی کدها، درخواستها، پاسخها و… را همزمان و بهصورت فلهای تحویل گوشی، لپتاپ یا هر دستگاهی میدهد و هر Port، درخواست مربوط به خود را سوا کرده و میبرد.
درنتیجه میتوان بهصورت همزمان حتی از هزاران شبکه مختلف بهره برد. رایانه نهایتا ۵۰ پورت سختافزاری مختلف خواهد داشت اما پورت های مجازی ۶۵۵۳۵ عدد هستند که به صورت عدد مشخص می شوند و به آنها پورت نامبر نیز میگویند. بعضی از این پورت ها توسط سازمان IANA برای سرویس خاصی رزرو شدند و سایر پورت ها آزاد هستند. چند نمونه از پورت ها و سرویس های معادل آن ها را در زیر می بینید:
برای دیدن لیست پورت های معروف و سرویس های معادل آن ها به لینک زیر سر بزنید:
https://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers
چه زمانی به Port نیاز داریم؟
هر گاه در سطح Application بخواهیم در شبکه ارتباطی برقرار کنیم نیاز به سه آدرس MAC، IP و Port داریم. هم برای مبدا و هم برای مقصد. آدرس MAC که از قبل بر روی کارت های شبکه تنظیم شده است. بنابراین آنچه که نیاز داریم IP و Port خواهد بود. تنظیمات IP میتواند توسط ما به صورت دستی و یا توسط DHCP یا APIPA به صورت اتوماتیک بر روی کارت شبکه انجام شود. اما چه کسی Port ها را اختصاص می دهد؟
پاسخ کوتاه:IANA، سیستم عامل، کاربر
یک مرورگر وب مانند Mozilla را در نظر بگیرید. این Application به این دلیل ایجاد شده تا صفحات وب را برای ما نشان دهد. بنابراین Mozilla باید درخواست ها را به وب سرور و به پورت 80 آن بفرستد. چرا که پورت 80 برای پروتکل HTTP و درخواست صفحات وب می باشد(اختصاص پورت توسط IANA). پس پورتی که باید به آن Data بفرستد مشخص شد! اما خود Mozilla از چه پورتی استفاده می کند؟ برنامه Mozilla لزوما از یک پورت ثابت استفاده نمیکند و به ازای درخواستهای مختلف، نیاز به پورتهای مختلفی دارد، بنابراین هرگاه نیاز به پورت جدید برای برقراری ارتباط داشته باشد، به سیستم عامل درخواست میدهد تا یک پورت خالی به او اختصاص دهد. (اختصاص پورت توسط سیستم عامل)!
حالت دیگری هم وجود دارد، و آن این است که شخص کاربر، برای برنامه خود پورت اختصاص دهد. اما کاربر باید بداند کدام بازه از پورت ها مجاز است که استفاده کند، چون در صورت انتخاب پورت نادرست ممکن است باعث بروز تداخل و از کار افتادن سرویس شود. مناسب ترین گزینه برای تخصیص پورت توسط کاربر، از پورت 49152 به بعد است که در جدول زیر می بینید.
پورت های 0 تا 1023 با نام پورت های اختصاص یافته (Assigned) مهمترین و پرکاربردترین پورت ها هستند و از هرکدام برای سرویسی خاص استفاده می شود، پورت های 1024 تا 49151 به عنوان پورت های ثبت شده (Registered) و پورت های بالاتر از 49151 به عنوان پورت های خصوصی (Private) شناخته می شوند.
پورت 80 یکی از مهم ترین پورت های جهان است که معمولا برای ارتباطات اینترنتی استفاده می شود، تمامی صفحات اینترنتی بر پایه این پورت کار میکنند. زمانی که به وب سایتی مراجعه میکنیم، در واقع مرورگر درخواست دریافت آن صفحه را از طریق پورت 80 به وب سرور مقصد ارسال نموده و وب سرور اطلاعات را از طریق پورت 80 برای ما ارسال میکند. پورت 80 از پروتکل Hypertext Transfer Protocol (HTTP) یا (پروتکل انتقال ابر متن) برای انتقال اطلاعات استفاده می کند.
اینترنت در ابتدا بر روی سیستم های مبتنی بر یونیکس گسترش یافته بود، یونیکس در ابتدا 1023 پورت اول را به عنوان پورت های دارای حق امتیاز سیستمی یا root ثبت نموده بود که تنها توسط سرویس های root در دسترس بودند. بنابراین تنها سیستم های دارای مجوز و حق انحصاری قادر به برقراری ارتباط و راه اندازی وب سرور از طریق پورت 80 بودند. در نتیجه سیستم هایی که دارای چنین حق امتیازی نبودند تا وب سرور خود را با پورت 80 راه اندازی کنند، پورت 8080 را بعنوان پورت جایگزین انتخاب نمودند. وب سرور هایی مانند آپاچی و تامکت با این پورت کار می کنند.
پورت 8080 در اصل جایگزین پورت محبوب 80 است و با نام HTTP Alternate شناخته می شود، برای دلیل استفاده از پورت 8080 باید به مروری کوتاه از تاریخچه این پورت بپردازیم.
دیگه یواش یواش اطلاعاتتون درباره شبکه و اینترنت و… داره کامل میشه. ولی یه خورده کاری هایی هنوز هست. پس بریم تا در قسمت هشتم مطالب را ادامه بدیم.