آموزش CCNA شبکه

لایه Transportation

حمیدرضا وطنی
نوشته شده توسط حمیدرضا وطنی

در ادامه بحث مقدماتی  آموزش CCNA به توضیح در مورد لایه Transportation میپردازیم و از ویژگی ها و پروتکل های مهم این لایه خواهیم گفت.

در لایه Transportation ما دو پروتکل خیلی مهم داریم به نام (TCP (Transmission Control Protocol و  (UDP (User Datagram Protocol .

فرق بین پروتکل TCP و UDP در این است که TCP به ازای هر بسته ای که میفرستد رسید یا Acknowledgment دریافت میکند. اگر از طریق TCP بسته ای را ارسال کنید و Ack آن بسته نیامد ، بسته بعدی ارسال نمیشود و دوباره همون بسته ارسال میشود تا Ack آن بسته بیاید و بعد برود سراغ بسته بعدی.

اما UDP نیاز به دریافت Ack ندارد.

اینکه پروتکل TCP بهتر است یا UDP بستگی به خواسته ما دارد. مثلا اگر جایی که سرعت برایمان مهم است از پروتکل UDP استفاده میکنیم و جایی که Reliability یا امنیت و اطمینان برایمان مهم است از پروتکل TCP استفاده خواهیم کرد.

مثلا برای دریافت فابل یا دانلود نرم افزار از TCP استفاده خواهیم کرد زیرا اگر یک packet گم بشود اون نرم افزار نصب نمیشود ولی برای Voice و Video از UDP استفاده میکنیم چون سرعت برایمان مهم است.

ویژگی های لایه Transportation :

UDPّTCPّFeature
yesyesMultiplexing
noyesError Recovery
(Reliability)
noyesConnection Establishment
noyesConnection Termination
noyesFlow Control
noyesSegmentation
noyesOrder Data Transfer

Multiplexing :

همانطور که قبلا نیز بحث کردیم multiplexing امکان ارائه چند سرویس به صورت همزمان روی یک host در بسته IP را فراهم میکند. (از طریق source port و destination port ) یعنی با استفاده از port number شما میتونی از یک source به یک destination چندین session مختلف بزنی.

مثلا سایت yahoo.com رو باز کنیم و در این سایت ایمیل و اخبار و … را باز کنیم.

Error Recovery :

Error Recovery با فیلدهای sequence number و acknowledgment number صورت میگیرد.

sequence number چیست؟ مثلا من یک بسته دارم 20 هزار بایت است و این 20 هزار بایت رو Fragment میکنم یعنی تو بسته های کوچیک چوچیک ارسال میکنم. این بسته های کوچیک کوچیک به ترتیب ارسال میشوند و مثلا میگوییم این بسته 1 و این بسته 2 و این بسته 1200 و… . به این شماره sequence number میگوییم. یک فیلدی تو لایه 4 داریم که هدرش sequence number است که با این فیلد بسته های fragment شده مرتب میشوند.

یک فیلد دیگری داریم به نام acknowledgment number که رسید فیلد sequence number است.

به این کار میگوییم Error Recovery و فقط در TCP انجام میشود.

یک اصطلاحی داریم به نام Window Size که میگوید این روش که به ازای هر بسته یک Acknowledgment دریافت کنیم خیلی طولانی است و قرار بذاریم مثلا به ازای هر 1500 بایت یک Acknowledgment دریافت کنیم. حالا اینجا دو حالت داریم :

مثلا من 2000 بسته ارسال میکنم و طرف یا 2000 بسته را دریافت کرده یا یکی از این 2000 تا مثلا بسته 1200 رو دریافت نکرده. اینجا دو تا رویکرد وجود دارد:

اگه طرف Buffer داشه باشه یعنی بسته ها رو یک جا ذخیره کرده باشه ، فقط یک (Nack (Navigation Acknowledgment ارسال میکند. مثلا Nack 1200 . یعنی 1200 رو نگرفتم و بسته 1200 رو دوباره برام ارسال کن.

اگه طرف Buffer نداشته باشه این مجبوره از 1200 به بعد را دوباره برایش ارسال کند.

Flow Control :

روش های Flow Control به صورت زیر است:

  1. Using Congestion Window
  2. Using Receiver Window

Flow Control یعنی کنترل سرعت فرستنده ( هر کدام از طرفین میتوانند فرستنده باشند )

سرعت فرستنده یعنی فرستنده حق دارد چند بسته را بدون دریافت Ack ارسال کند.

شما به راحتی میتوانی با ارسال و یا عدم ارسال Ack سرعت فرستنده را کنترل کنی.

به دو دلیل سرعت فرستنده باید محدود شود.

  1. Bottle Neck بودن پهنای بایند مسیر
  2. Bottle Neck بودن گیرنده

Bottle Neck بودن پهنای بایند مسیر : شما ممکن است سرعت فرستنده و گیرنده بالا باشد اما سرعت اینترفیس و یا مسیر پایین است.

Bottle Neck بودن گیرنده : به دلیل پایین بودن سرعت پردازش و حافظه سیستم گیرنده.

Connection Establishment :

تمامی application های مبتنی بر TCP ، قبل از برقراری ارتباط و ارسال و دریافت Data ، عمل Hand Shaking انجام میدهند. به این معنی که یاهم یر سر برقراری ارتباط توافق مینمایند.

Connection Termination :

نه تنها شروع TCP connection با هماهنگی آغاز میگردد بلکه خاتمه آن نیز نیاز به هماهنگی دارد و آن بر عهده Termination است.

معمولا در خواست خاتمه ارتباط یا Connection Termination از سوی Client صورت میگیرد.

Segmentation :

داده ای که توسط Application آماده میگردد ممکن است دارای سایز بزرگی باشد ( مثلا وقتی که Email ای آماده ارسال میکنید ) اما هم اینترفیس های خروجی server یا client و هم اینترفیس های بین راه محدودیتی در سایز ارسالی packet ها ایجاد مینمایند.

لذا داده باید قبل از ارسال به بسته هایی متناسب با سایز MTU بخش بندی شود. این عمل توسط لایه Transportation انجام میشود یعنی لایه Transportation داده را از لایه Application میگیرد ، بخش بندی میکند و تحوبل لایه 3 میدهد.

اما MTU چیست ؟

MTU یا Maximum Transmission Unit میگه حد اکثر سایز بسته بدون این که به بسته های کوچک تر تقسیم کنیم یا به اصطلاح Fragment کنیم تا روی اینترفیس قرار دهیم ، چقدر است.

Ordering :

TCP قبل از آنکه بسته را تحویل لایه Application بدهد باید بسته ها را پشت سر هم قرار دهد. TCP Reordering از فیلد Sequence Number برای مرتب سازی بسته های دریافتی استفاده میکند.

با توجه به مسائل مطرح شده قالب TCP Header و UDP Header به صورت زیر است:

TCP Header :

UDP Header :

اندازه هدر های پروتکل های مختلف TCP/IP در لایه ها:

هدر پروتکل های لایه 2 :

Ethernet : 14 Byte

PPP : 6 Byte

هدر پروتکل لایه 3 :

IP : 20 Byte

هدر پروتکل لایه 4 :

TCP : 20 Byte

UDP : 8 Byte

سوال : چرا بعضی از Application ها روی پروتکل TCP و بعضی روی UDP سوار میشوند؟ چه کسی و بر اساس چه معیاری انتخاب میکند که یک Application روی چه پروتکلی در لایه Transport سوار شود؟

بستگی به این مطلب دارد که Application ویژگی های TCP را نیاز داشته باشد یا خیر. مثلا اگر Application برایش مهم باشد که هیچ بسته ای گم نشود ، باید از ویژگی Raliability بهره ببرد که از ویژگی های TCP است. برخی از Application ها که از پروتکل TCP استفاده میکنند عبارتند از: Http , Ftp , Telnet , Ssh , …

جالب است بدانید برای انتقال فابل از دو پروتکل FTP که از TCP استفاده میکند و TFTP که از UDP استفاده میکند ، استفاده میشود.

در این جا آموزش مقدماتی دوره CCNA تمام میشود و از مبحث بعدی وارد بحث CCNA Switch میشویم.

 

 

 

 

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

حمیدرضا وطنی

حمیدرضا وطنی

2 دیدگاه

درج دیدگاه