دست‌دهی

از ویکی‌پدیا، دانشنامهٔ آزاد
(تغییرمسیر از Tree way handshake)
دو تن در هنگام دست دادن

در هر اتصال رایانه‌ای مقداری بار اضافی وجود دارد که در اصطلاح دست‌دهی (handshaking) نامیده می‌شود و بدین معنی است که مودم از کامپیوتر سرور سؤال می‌کند، آیا داده‌ها را دریافت کرده‌است و سرور پاسخ مثبت یا منفی می‌دهد.

هنگام اتصال کابل HDMI به رایانه، این از طریق تبادل یک دنباله از اعداد که منحصر به آن دستگاه است، با پورت اطمینان حاصل می‌کند که همه چیز درست است. به این فرایند، دست‌دهی گفته می‌شود؛ ولی اگر یک دستگاه دنباله HDCP نادرستی را ارسال کند، کابل HDMI به درستی کار نمی‌کند. دستگاه‌های HDMI گه گاه به دلیل خطای انتقال یا تغییر ناگهانی ولتاژ نمی‌توانند دست‌دهی HDCP را انجام دهند.

دست‌دهی سه‌مرحله‌ای[ویرایش]

دست‌دهی سه مرحله‌ای (Tree Way Handshake) برای برقراری اتصال در پروتکل TCP استفاده می‌شود. البته ابتدا طرفین باید آماده باشند و بعد بین طرفین مذاکرات سه مرحله‌ای زیر صورت می‌گیرد.

در مرحله اول طرف شروع کننده ارتباط، یک بستهٔ TCP (خالی از داده) ارسال می‌کند که در آن بیت SYN=۱ و بیت ACK=۰ است و درون فیلد شماره ترتیب عدد x قرار داده شده که در آن x یک عدد تصادفی است. در حقیقت با این شماره به طرف مقابل اطلاع داده می‌شود که به‌طور قرار دادی ترتیب داده‌های ارسالی بجای ۰ از شماره x+۱ شروع می‌شود. در پروتکل TCP شماره ترتیب ۳۲ بیتی است لذا برای پیشگیری از مشکلات احتمالی ناشی از مساوی بودن شماره ترتیب بسته‌های ارسالی، داده‌ها از شماره ۰ شروع نمی‌شود، بلکه از یک عدد تصادفی (که به صورت خودکار تولید می‌شود)، شروع خواهد شد و در همان مرحلهٔ اول، این شمارهٔ ترتیب به طرف مقابل اعلام می‌گردد.

در مرحله دوم طرف مقابل با دریافت تقاضای فوق اگر تمایل به برقراری ارتباط نداشته باشد با ارسال یک بستهٔ خالی که در آن بیت RST به ۱ تنظیم شده، این تقاضا را رد می‌کند ولی اگر تمایل به برقراری ارتباط بود یک بستهٔ خالی از داده با مشخصات زیر تولید می‌کند:

  • بیت SYN را یک می‌کند.
  • بیت ACK را یک می‌کند.
  • مقدار فیلد Acknowledgement Number را x+۱ قرار می‌دهد.
  • مقدار فیلد Sequence Number را مقدار تصادفی y قرار می‌دهد.

در این مرحله که به معنای پذیرش ارتباط است، طرف مقابل با قرار دادن مقدار فیلد ACK=x+۱ نشان می‌دهد که شماره ترتیب x را پذیرفته و منتظر داده‌ها از شماره ترتیب x+۱ به بعد است. درضمن خودش عدد تصادفی y را در فیلد Seq. No. قرار می‌دهد و به طرف مقابل اعلام می‌کند که شماره ترتیب داده‌های ارسالی از y خواهد بود.

مرحله سوم شروع کننده ارتباط با قرار دادن مقادیر زیر شروع ارتباط را تصدیق می‌کند:

  • بیت SYN را صفر می‌کند.
  • بیت ACK را یک می‌کند.
  • فیلد Seq. No. =x+۱ را قرار می‌دهد.
  • فیلد ACK را برابر y+۱ قرار می‌دهد.

در حقیقت با قرار دادن Seq. No. =x+۱ و ACK=y+۱ شروع کننده ارتباط اعلام می‌کند که بر روی پارامترهای شماره ترتیب توافق شده‌است و او پذیرفته که داده‌های طرف مقابل را از شماره y+۱ بپذیرد. پس از این مرحله، ارسال و دریافت داده‌ها توسط طرفین تا هنگامی که ارتباط با اطلاع طرفین خاتمه داده نشده‌است آزاد است.

خاتمه ارتباط[ویرایش]

برای خاتمه ارتباط روند زیر صورت می‌گیرد: طرفی که داده‌هایش برای ارسال تمام شده‌است یک بستهٔ TCP ارسال می‌نماید که درسرآیند آن بیت FIN را یک قرار داده است. طرف مقابل این درخواست را دریافت و با ختم یک طرفهٔ آن موافقت می‌کند. ولی چون ارتباط به صورت یک طرفه ختم می‌شود، طرف مقابل می‌تواند تا جایی که داده دارد آن‌ها را ارسال کند و نهایتاً در آخرین بسته، بیت FIN را یک بگذارد تا پس از تصدیق آن، ارتباط به صورت دوطرفه ختم شود. نکته: اگر یکی از طرفین ارتباط در اثر بروز مشکلی سخت افزاری یا نرم‌افزاری ارتباط را بدون هماهنگی قطع کند حق ندارد تا ۱۲۰ ثانیه به ارتباط مجدد با همان شمارهٔ پورت اقدام کند و این نکته ناشی از آن است که مطمئن باشد بسته‌های قبلی که ارسال کرده یا آنکه برایش ارسال شده از زیر شبکه حذف شده‌اند تا مبادا بسته‌های معلق و جاری متعلق به قبل به اشتباه به جای بسته‌های جدید دریافت شوند.

منابع[ویرایش]

اصول مهندسی اینترنت دکتر احسان ملکیان، ویراست دوم، چاپ سی و نهم