لایه ی انتقال (Transport Layer)
لایه ی انتقال (Transport Layer) چهارمین لایه ی مدل OSI است و پروتکل های آن، داده ها را از لایه ی جلسه دریافت و صحت انتقال آنها از دو سمت گیرنده و فرستنده را مدیریت می کنند. در اینجا مدیریت به مفهوم حصول اطمینان از انتقال درست داده از نقطه ی A به نقطه ی B با ترتیب درست و بدون خطا می باشد. بدون وجود خدمت های لایه ی انتقال، سمت گیرنده نمی تواند صحت داده ها را بررسی یا تفسیر کند. پروتکل های لایه ی انتقال افزون بر موارد بالا، وظیفه ی کنترل جریان یعنی فرآیند اندازه گیری نرخ انتقال بر پایه ی توان دریافت داده ی گیرنده را بر عهده دارند. در مثال درخواست صفحه ی وب، یکی از پروتکل های لایه ی انتقال به نام TCP (پروتکل کنترل انتقال: Transmission Control Protocol) وظیفه ی بررسی صحت انتقال دقیق درخواست های پروتکل HTTP از رایانه ی مشتری به خدمتگزار وب و برعکس را بر عهده دارد.
وظیفه ی بیشتر پروتکل های لایه ی انتقال، حصول اطمینان از دریافت دقیق داده های ارسالی است. برخی از این پروتکل ها از نوع اتصال گرا (Connection Oriented) می باشند، زیرا پیش از ارسال هر داده ای، با گره مورد نظر ارتباط برقرار می کنند. به عنوان مثالی از پروتکل های اتصال گرا می توان به TCP اشاره کرد. در مثال درخواست صفحه ی وب، ابتدا پروتکل TCP رایانه ی مشتری، یک بسته ی درخواستی SYN (همگامی: Synchronization) را برای ایجاد ارتباط به خدمتگزار وب ارسال می کند. خدتمگزار وب نیز در پاسخ، یک بسته ی SYN-ACK (تصدیق همگامی: Synchronization-Acknowledgment) یا تصدیق، را برای برقراری ارتباط به رایانه ی مشتری ارسال می کند. در نهایت رایانه ی مشتری برای تأیید ارتباط، بسته ی ACK (تصدیق: Acknowhedgment) خود را به خدمتگزار وب ارسال می کند. با استفاده از این فرایند سه مرحله ای، که به دست دادن (Handshake) معروف است، ارتباط ایجاد می شود و پس از تثبیت آن، پروتکل TCP اقدام به ارسال درخواست های HTTP می کند.
پس از ایجاد ارتباط، افزون بر موارد بالا، از تصدیق برای اطمینان از درستی دریافت داده های ارسالی استفاده می شود. با ارسال هر واحد داده، پروتکل اتصال گرای گره ارسال کننده، منتظر دریافت یک تصدیق از گیرنده می باشد. برای نمونه، پس از اینکه پروتکل TCP رایانه ی مشتری، درخواست HTTP خود را به خدمتگزار وب ارسال کرد، منتظر تصدیق دریافت آن خواهد ماند. اگر تصدیق در بازه ی زمانی تعیین شده دریافت نشود، پروتکل رایانه ی مشتری فرض را بر از دست رفتن داده های ارسالی گذاشته و دوباره اقدام به ارسال آن بسته خواهد کرد.
پروتکل های اتصال گرا برای اطمینان از صحت داده ها، از روشی به نام Checksum استفاده می کنند. Checksum رشته ی کاراکتری یکتایی است که به گره گیرنده این امکان را می دهد تا بسته ی داده ی دریافتی را با بسته ی داده ی ارسالی مقایسه و از درستی آن اطمینان حاصل کند. Checksumها در مبدأ به داده های ارسالی اضافه می شوند و در مقصد پس از دریافت، برای مشخص کردن درستی داده ها، بررسی می شوند. اگر در مقصد یک Checksum با آنچه که در مبدأ مشخص شده است همخوان نباشد پروتکل های لایه ی انتقال مقصد خواستار ارسال مجدد آن بسته از مبدأ خواهند شد.
همه ی پروتکل های لایه ی انتقال از قابلیت اطمینان لازم برخوردار نیستند زیرا پیش از انتقال داده، تلاشی در جهت برقرار کردن ارتباطی پایدار و اطمینان از عدم وجود خطا در داده های دریافتی نخواهند کرد. این گونه پروتکل ها به پروتکل های بدو ن اتصال (Connectionless) معروف اند. پروتکل های بدون اتصال فاقد هر گونه وسواس در خصوص یکسان بودن داده های ارسالی و دریافتی می باشندو بر خلاف پروتکل های اتصال گرا هیچ گونه باراضافی بر سیستم تحمیل نخواهند کرد.
پروتکل های لایه ی انتقال افزون بر تأیید قابل اطمینان بودن داده های دریافتی، وظیفه ی تبدیل و شکستن بسته های بزرگ داده ی دریافتی از لایه ی جلسه به بسته های کوچک تری به نام قطعه (Segment) را بر عهده دارند که این فرایند به قطعه بندی معروف است. قطعه بندی در برخی از انواع شبکه، موجب افزایش کارایی انتقال داده می شود و استفاده از آن در بیشتر موارد برای تطبیق واحد داده با MTU (حداکثر واحد انتقال: Maximum Transmission Unit، بزرگ ترین واحد داده ی قابل انتقال در شبکه) ضروری است. معمولاً هر نوع شبکه دارای MTU پیش فرضی است که توسط مدیر شبکه قابل افزایش می باشد. برای نمونه به شکل پیش فرض، شبکه ی اترنت، بسته های داده ای بزرگ تر از 1500 بایت را نخواهد پذیرفت و روی شبکه انتقال نخواهد داد. برای نمونه، اگر برنامه ای بخواهد یک بسته ی داده ای 6000 بایتی را روی شبکه ی اترنت ارسال کند، باید پیش از ارسال، آن را به بسته های 1500 بایتی یا کمتر تقسیم کند. برای تشخیص اندازه ی MTU شبکه ( و تعیین اینکه آیا بسته های ارسالی نیاز به قطعه بندی دارند یا خیر)، پروتکل های لایه انتقال اقدام به اجرای یک روال اکتشاف روی ارتباط برقرار شده ی شبکه می کنند. با این کار تا زمانی که ارتباز برقرار باشد، در صورت نیاز، پروتکل ها اقدام به قطعه بندی بسته های داده خواهند کرد.
قطعه بندی شبیه به فرایند شکستن کلمات در سیلاب ها قابل تشخیص است که کودکان برای یادگیری خواندن از آن استفاده می کنند. فرایند بازسازی و چیدمان مجدد واحدهای داده ای قطعه بندی شده، بازنشانی (reassembly) نام دارد. برای درک شیوه ی عملکرد باز نشانی، فرض کنید در کلاس تاریخ پرسش مقابل مطرح شده است:«خانم جونز، تکنیک های غنی سازی کشاورزی چگونه به داست با̓ول کمک کرد؟» ولی گوش خانم جونز کلمات را به شکل « تکنیک های غنی سازی کشاورزی خانم جونز؟چگونه توانست به داست با̓ول؟ کمک کند» دریافت می کند. در شبکه، لایه ی انتقال این نوع بی نظمی را شناخته و تکه های نامرتب داده های دریافتی را به شکل صحیح کنار هم قرار می دهد.
روش شناسایی و تشخیص قطعات داده ای تقسیم شده در یک گروه خاص، ترتیب گذاری(Sequencing) نام دارد. این روش همچنین مشخص می کند که هر واحد داده کجا و با چه ترتیبی در گروه داده ای دریافت شده قرار بگیرد. برای این که ترتیب گذاری به درستی کار کند، پروتکل های لایه ی انتقال دو گره، باید دارای زمان بندی یکسانی بوده و روی نقطه ی شروع انتقال، دارای اتفاق نظر باشند.