لایه ترنسپورت (Transport) یا هاست تو هاست (Host to Host) در مدل TCPIP
کار لایه ترنسپورت(لایه انتقال) را در لایه های مدل osi آموزش دادیم که معادل آن نیز در همین لایه در پروتکل مدل TCPIP انجام می شود. فقط باید با پروتکل هایی که در هاست تو هاست (Host to Host) یا ترنسپورت (Transport) مدل TCPIP کار میکنند، آشنا شوید تا بدانید دقیقاً چه وظایفی دارند.
آنچه در این مقاله می خوانید:
سگمنت چیست؟
وقتی اطلاعات از لایه بالایی به لایه ترنسپورت (Transport) میرسد، در این لایه به قسمت های کوچک تری جهت ارسال در شبکه تقسیم بندی می شود، که به آن سگمنت (بخش)می گویند.
علت این تقسیم بندی، این است که اطلاعات رسیده از لایه بالاتر مثلاً یک فیلم که از لایه اپلیکیشن میآید و میخواهد به روی خط برود تا به مقصد برسد، حجم بسیار زیادی دارد و مسلماً نمیشود، همه را یکجا فرستاد.
این اطلاعات در لایه ترنسپورت، به چند سگمنت(بخش) تقسیم می شوند تا هم با حجم سبک تری ارسال شوند و هم بتوان هر تکه را کنترل کرد و سلامت و صحت آنها را بررسی نمود.
پورت چیست؟
پورت ها نیز وظایف مشخصی در لایه ترنسپورت مدل TCPIP مثل مدل OSI برعهده دارند. پورت، یک آدرس ویرچوال یا مجازی دو بایتی در Ip Address است که مجموع آن ۱۶ بیت می باشد و بین اعداد ۰ تا ۶۵۵۳۵ یعنی ۲ به توان ۱۶ را تشکیل میدهد.
برای درک بهتر می توان اینطور بیان کرد که خط ارتباطی بین کامپیوترها، IP Address آن ها می باشد و همه نوع اطلاعات از بستر IP Address جا به جا می شود. برای اینکه کنترل ما روی این اطلاعات اعم از فیلم و عکس، برنامه های حسابداری، برنامههای کنترل شبکه و غیره بیشتر باشد و بهتر بتوانیم آنها را مدیریت کنیم، از پورت ها استفاده می کنیم.
یعنی یک خط IP Address را به صورت مجازی به پورت های مختلف تقسیم بندی می کنیم که این شماره پورت ها می تواند از صفر تا ۶۵۵۳۵ باشد و از این پورت ها در شبکه استفاده می کنیم. به عنوان مثال، پروتکل های مختلف، هر کدام برای خود یک پورت دارند. مثلاً http برای ارسال اطلاعات از پورت ۸۰ استفاده می کند یا https از پورت ۴۴۳ و FTP از ۲۱ و غیره. در تصویر زیر، برخی از مهمترین پورت ها را به شما معرفی می کنیم تا آنها را به خاطر بسپارید چون دانستن برخی از این پورت های اختصاص داده شده به پروتکل ها مهم است.
سوکت چیست؟
مجموع آیپی آدرس به علاوه پورتی که در این IP Address استفاده میشود را سوکت می نامند. مثلاً آی پی زیر را در نظر بگیرید:
۱۶۸.۲۲۰.۱۲.۶:۲۱
اعداد ۲۱ که در جلوی آن نوشته میشود، نام پورت است که نشان میدهد در این آدرس ما از FTP استفاده می کنیم.
شماره پورت ها یکسری دسته بندی دارند که به سه دسته تقسیم می شوند:
- پورت های سیستمی (Well-known)
به پورت های بین شماره ۰ تا ۱۰۲۳ پورت های سیستمی شناخته شده می گویند که از قبل برای نوع کاری که باید استفاده شود، تعریف شدند و بیشترین کاربرد را در شبکه دارند.
- پورت های ثبت شده
پورت ۱۰۲۴ تا ۴۹۱۵۱ در یانا ثبت شده و برای مصارفی که به صورت ثبت شده از آنها استفاده می شود، کاربرد دارند.
- پورت های ثبت نشده یا پرایوت پورت (Private Port)
از پورت ۴۹۱۵۲ تا آخرین پرت یعنی ۶۵۵۳۵ آزاد است که در یانا ثبت نشده و به آنها پرایوت پورت (Private Port) هم میگویند و شما میتوانید در شبکههای خود از آنها استفاده کنید و با یکسری پورت خاص، اطلاعاتی را ارسال و یا دریافت کنید. بیشتر برای انتقال یک پروتکل خاص یا یک نوع اطلاعات خاص از یک پورت مورد استفاده قرار می گیرد که بقیه در جریان نباشند.
نحوه برقراری ارتباط در لایه ترنسپورت (Transport) مدل TCPIP
مهمترین نکته ای که باید در لایه ترنسپورت مدل TCPIP یا همان هاست تو هاست (Host to Host) یاد گرفت، تقسیم بندی ارتباطات این لایه به دوقسمت TCP وUDP است.
لایه ترانسپورت (Transport) دو نوع کانکشن دارد:
- کانکشن اورینتد (Connection Oriented) یا همان کانکشن بیس طبق پروتکل TCP
- کانکشن لس کانکشن (connectionless) طبق پروتکل UDP
اگر برای ارسال اطلاعات، یک کانکشن استیبل و ثابت برقرار باشد که همه چیز به آن کانکشن وابسته است، نوع ارتباط Connection Oriented است ولی در حالت connectionless، این وابستگی به آن شکل دیده نمی شود و برای ارسال اطلاعاتی مثل تصاویر زنده یا تماس های صوتی زنده استفاده می شود.
پروتکل کانکشن TCP (Transmission Control Protocol)
TCP که در اصل به خاطر اهمیت بسیار زیادی که دارد، هسته پروتکل مدل TCPIP را هم تشکیل می دهد، وظایفی به شرح زیر را انجام می دهد:
- انتقال اطلاعات (Data Transfer)
- امنیت و قابل اطمینان بودن خط ارتباطی (Reliability)
- کنترل جریان اطلاعات و حجم اطلاعات (Flow Control)
- مولتیپلکسینگ (Multiplexing)
- Connection Oriented Comunication
- Precedence and Security
در ادامه هریک از این وظایف لایه ترانسپورت (Transport) مدل TCPIP را به طور کامل شرح می دهیم.
TCP data transfer
اولین کاری که پروتکل TCP در لایه ترانسپورت (Transport) مدل TCPIP انجام می دهد، برقراری ارتباط بین کامپیوتر مبدا و مقصد است که این کار را با انجام پروسه ای به نام three hand Shaking انجام می دهد که به آن SYN, SYN-ACK, ACK نیز گفته می شود.
برای اینکه بین دو کامپیوتر a و b توسط پروتکل TCP ارتباط برقرار شود، مراحل زیر طی خواهد شد:
- پیامی به نام سینکرونایز (Synchronize) که مخفف آن SYN یا اصطلاحاً پکت سین است، از هاست کامپیوتر a به هاست کامپیوتر b ارسال می شود. به این ترتیب آماده بودن کامپیوتر b را برای دریافت و ارسال اطلاعات چک می کند.
- زمانی که کامپیوتر b این پیام را دریافت کرد، در پاسخ به آن، یک پیام دیگر به صورت Synchronize-Acknowledgment به کامپیوتر a ارسال می کند. Synchronize به معنای هماهنگ شدن و acknowledgement به معنای جواب دادن است. به این مفهوم که کامپیوتر b پیام کامپیوتر a را دریافت کرده و به آن پاسخ داده است.
- کامپیوتر a این SYN-ACK را دریافت کرده در جواب یک ACK به کامپیوتر b می فرستد تا تایید کند که برای ارسال و دریافت اطلاعات آماده است.
به این روند اصطلاحاً برقراری TCP socket connection می گویند. پس به طور کلی در three hand shaking سه پیغام رد و بدل می شود:
- Syn
- Sync-Ack
- Ack
که اولین قدم برای برقراری ارتباط بین کامپیوتر a و b است.
TCP reliability
وظیفه دیگر پروتکل TCP، در لایه ترانسپورت (Transport) مدل TCPIP اطمینان از ارسال و دریافت اطلاعات به شکل صحیح است. همانطور که پیش از این گفتیم، در لایه ترانسپورت (Transport) ، اطلاعات به چند دسته تقسیم بندی می شوند که به هر کدام از آنها سگمنت گفته می شود که به ترتیب برای مقصد ارسال میشود.
روی هر سگمنت یک شماره گذاشته می شود که به آن Sequence number میگویند. دلیل این شماره گذاری هم این است که هر اطلاعاتی که به ترتیب شماره گذاری شده و به مقصد ارسال شده باید در لایه ترانسپورت (Transport) مقصد چک شود و تک تک شماره ها به صورت پشت سر هم ردیف شود تا مطمئن شود که تمام سگمنتها از مبدا به مقصد رسیده است و بتواند فایل را کامل کرده و به کاربر نمایش دهد. بنابراین، اولین وظیفه پروتکل TCP گذاشتن Sequence Number روی سگمنت ها است.
CRC checkیا Cyclic redundancy check
CRC فرمولی است که تمام دستگاههای داخل شبکه که اطلاعات از آنها عبور می کند، آن را می شناسند و از آن استفاده می کنند. توسط این فرمول که به شکل خاصی نوشته می شود می توان یک الگوریتم خاص از اطلاعات را ثبت کرد و برای مقصد فرستاد.
بر اساس این فرمول از ظاهر اطلاعات ارسال شده یک سری بیت هایی برداشته می شود، روی آنها عملیات ریاضی انجام شده و حاصل ضربی از این عملیات ریاضی به دست می آید که به آن FCS (Frame Check Sequence) می گویند. این عدد همراه با سگمنت به مقصد ارسال می شود، مقصد نیز این عدد را دریافت کرده و با توجه به فرمول CRC عدد دریافت کرده را محاسبه کرده و یک FCS یا Frame Check Sequence بدست می آورد.
در نهایت FCS به دست آمده را با عددی که از مبدا ارسال شده بود، مقایسه می کند و اگر این دو عدد یکسان بود، مطمئن می شود که اطلاعات درست ارسال شده است. اما اگر اشتباهی در حین تبادل اطلاعات رخ داده باشد، به راحتی آن را تشخیص می دهد که به آن Error Detection یا تشخیص خطا می گویند و در نتیجه درخواست تصحیح آن را ارسال می کند. به این روند Checksum نیز گفته می شود.
برای اینکه دقیق تر با وظیفه Error Detection ، لایه ترنسپورت مدل TCPIP آشنا شوید می توانیم این طور توضیح دهیم که حتی اگر سگمنتها به طور کامل به لایه ترنسپورت رسیده باشند و شمارش آنها درست باشد، ممکن است هر کدام از سگمنت ها که حاوی چند بیت اطلاعات هستند، دچار مشکل شده باشند و به درستی ارسال نشده باشند. بنابراین، وظیفه ارور دیتکشن (Error Detection) این است که اگر اطلاعات داخل هر سگمنت یا بیت هایی که آن را تشکیل میدهد نیز دچار اشکال باشد، آن را تشخیص داده و درخواست اصلاح آن را ارسال کند.
این مثال همانطور که در تصویر زیر می بینید در صورتی که حین کپی یک فایل در ویندوز، بخشی از اطلاعات دچار مشکل شده باشد و یا هنگام تبادل اطلاعات از دست رفته باشد، خطایی به شما نمایش می دهد که این خطا توسط ارور دیتکشن ارائه شده است:
TCP flow control
در این بخش، TCP کنترل می کند که حجم اطلاعات ارسال شده از مبدا و دریافت شده توسط مقصد متناسب باشد که به آن مدیریت کردن ریت اطلاعات (Rate management) گفته می شود.
فرایند Sliding Window
برای درک بهتر این وظیفه لایه ترانسپورت (Transport) در مدل TCPIP تصویر زیر را در نظر بگیرید که در آن کامپیوتر سمت چپ قرار است اطلاعاتی را از صفحات وب به کامپیوتر سمت راست ارسال کند:
کامپیوتر گیرنده یک سگمنت سینکرونایز (SYN) برای کامپیوتر فرستنده ارسال می کند. کامپیوتر فرستنده این SYN را دریافت کرده و در پاسخ آن یک SYN-ACK می فرستد. کامپیوتر گیرنده ACK را ارسال کرده و Three hand shaking تکمیل شده و در نهایت ارتباط بین این دو کامپیوتر برقرار میشود.
کامپیوتر گیرنده، همزمان با درخواست Ack یک درخواست نیز برای باز کردن فایل به کامپیوتر فرستنده، ارسال می کند. به این ترتیب، کامپیوتر فرستنده، اطلاعات درخواست شده را به صورت سگمنت هایی روی خط می فرستد. فرض کنید، ۴ سگمنت از کامپیوتر فرستنده به کامپیوتر گیرنده ارسال می شود. روی این سگمنت ها، شماره گذاری از ۱ تا ۴ انجام می شود. سگمنت های ارسال شده، یک حجم مشخص دارد. به عنوان مثال، ۱۵۰۰ بیت، زمانی که این سگمنتها به کامپیوتر گیرنده رسید، اطلاعات دریافتی را بر اساس Sequence number چک می کند تا اطلاعات درست باشد و برای تمام اطلاعاتی که به یکباره دریافت کرده یعنی هر چهار سگمنت یک Ack می فرستد.
اگر تعداد سگمنت های ارسال شده اولیه با موفقیت توسط کامپیوتر گیرنده، دریافت شود زمانی که کامپیوتر دوم می خواهد مجدداً اطلاعاتی را ارسال کند، حجم آن را دو برابر می کند. در مثال ما، چون بار اول ۴ سگمنت ارسال کرده بود و کامپیوتر مقصد آنها را با موفقیت دریافت کرده بود، این بار ۸ سگمنت ارسال میکند و روی آنها شماره گذاری ۵ تا ۱۲ را انجام می دهد.
به این ترتیب، ۸ سگمنت ۱۵۰۰ بایتی را با sequence number های مشخص ارسال میکند که به کامپیوتری که درخواست آن را داده بود، می رسد. مجدداً کامپیوتر اول Ack مربوط به ۸ سگمنت که دریافت کرده است را به صورت Ack(5-12)+1 ارسال می کند. منظور از به علاوه یک در هر ACK که توسط کامپیوتر گیرنده ارسال می شود، این است که سگمنت های قبلی را دریافت کرده و باید شماره سگمنت بعدی را برای او ارسال کند. به عنوان مثال، اگر تا ۱۲ را دریافت کرده باید سگمنت دوازده به علاوه یک، یعنی ۱۳ برای او ارسال شود.
به این ترتیب، اگر اختلالی در دریافت سگمنت ها ایجاد شود، کامپیوتر مقصد با شمارشی که در Ack توسط کامپیوتر گیرنده برای او فرستاده میشود، این اختلال را متوجه شده و آن را اصلاح می کند. به عنوان مثال، اگر کامپیوتر گیرنده فقط سگمنت ۸ را دریافت کرده باشد، یک Ack به صورت Ack(5-8)+1 برای کامپیوتر فرستنده ارسال میکند، و به این ترتیب کامپیوتر فرستنده متوجه میشود که باید سگمنت ۹ به بعد را مجددا ارسال کند چون به دست گیرنده نرسیده است.
اما اگر کل سگمنت ها با موفقیت توسط کامپیوتر گیرنده دریافت شده باشد، این بار کامپیوتر فرستنده بازهم سگمنت ها را دو برابر می کند و به جای ۸ سگمنت، ۱۶ سگمنت را می فرستد. اگر حجم اطلاعاتی که به کامپیوتر گیرنده می رسد، موجب اختلال شود کامپیوتر گیرنده پیامی به کامپیوتر فرستنده مبنی بر بافر اورفلو (Buffer Overflow) ارسال میکند و به این معناست که حجم اطلاعاتی که کامپیوتر گیرنده می تواند دریافت کند، در حافظه خود از این میزان کمتر است و نمی تواند این میزان سگمنت را به طور همزمان دریافت کند، در این حین برخی از سگمنت ها از دست می رود که اصطلاحاً به آن دراپ شدن می گویند.
چون کامپیوتر مقصد به جای دریافت Ack پیغام خطا دریافت کرده، حجم اطلاعات را کاهش داده و طبق آخرین شماره Seq. NO که به دست کامپیوتر گیرنده رسیده بود، مجدداً سگمنت ها را ارسال می کند، به عنوان مثال ۸ سگمنت را می فرستد.
اگر کامپیوتر مقصد اطلاعات را به درستی دریافت کرد و مجددا Ack فرستاد، سگمنت ها به همین ترتیب و با همین حجم ارسال می شوند. اما اگر باز هم کامپیوتر مقصد در دریافت اطلاعات، دچار مشکل بود، حجم ارسال سگمنت ها، باز هم کاهش پیدا می کند.
این کار به نحوی تکرار می شود که کامپیوتر مقصد بتواند اطلاعات را به درستی دریافت کند، اما اگر حتی با ارسال کوچکترین واحد اطلاعات یعنی یک سگمنت باز هم پیغام خطا دریافت شد، مشخص می شود که کانکشن یا ارتباط باید مجدداً ریست شده و اطلاعات تبادل شود.
به این پروسه اسلایدینگ ویندو Sliding Window گفته می شود که طی آن یک سری اطلاعات از کامپیوتر فرستنده ارسال شده، همان اطلاعات توسط کامپیوتر گیرنده دریافت شده و در صورت تایید دریافت اطلاعات، تعداد سگمنت ها افزایش پیدا میکند و به همین ترتیب جلو میرود تا تمامی اطلاعات منتقل شود.
دیدگاه شما درباره این مقاله چیست ؟