-۱)تعاريف (definitions):
سگمنت ((Segment: به بسته هاي TCP (Data,Ack) اصطلاحا سگمنت گفته مي شود.
(Sender Maximum Segment Size)SMSS: اندازه بزرگترين سگمنتي كه فرستنده مي تواند ارسال كند. اين مقدار براساس حداكثر واحد انتقال در شبكه ، الگوريتمهاي تعيين MTU ، RMSS يا فاكتورهاي ديگر تعيين مي شود. اين اندازه شامل هدر بسته و option نمي باشد.
(Receiver Maximum Segment Size)RMSS: سايز بزرگترين سگمنتي كه گيرنده مي تواند دريافت كند. كه در يك ارتباط در فيلد MSS در option توسط گيرنده تعيين مي شود و شامل هدر و option نمي باشد.

(Receiver Window)rwnd: طول پنجره سمت گيرنده.
(Congestion Window )cwnd: نشان دهنده وضعیت متغیر TCP است که میزان داده در شبکه را محدود می کند.در هر لحظه , حجم داده در شبکه به اندازه مینیمم cwnd و rwnd می باشد.

 

۱-۲)مكانيزمهاي كنترل ازدحام در شبكه TCP:
در يك شبكه زمانيكه ترافيك بار از ظرفيت شبكه بيشتر مي شود ، ازدحام اتفاق مي افتد.که به منظورکنترل ازدحام در شبكه الگوريتمهاي متفاوتي وجود دارد. در يك ارتباط ، لايه شبكه تا حدي قادر به كنترل ازدحام در شبكه است اما راه حل واقعي براي اجتناب از ازدحام پايين آوردن نرخ تزريق داده در شبكه است. TCP با تغيير سايز پنجره ارسال تلاش ميكند كه نرخ تزريق داده را كنترل كند.

شناسايي ازدحام اولين گام در جهت كنترل آن است.
در گذشته ،شناسايي ازدحام به راحتي امكانپذير نبود. از نشانه هاي آن وقوع Timeout بدليل اتلاف بسته يا وجود noise در خط ارتباطي يا اتلاف بسته ها در روترهاي پر ازدحام و … را می توان نام برد. اما امروزه از آنجا كه اكثرا تكنولوژي بستر ارتباطي از نوع فيبر مي باشد اتلاف بسته ها كه منجر به خطاي ارتباطي شود بندرت اتفاق مي افتد. و از طرفي وقوع Timeout در اينترنت بدليل ازدحام مي باشد.
در همه الگوريتمهاي TCP فرض بر اين است كه وقوع Timeout بدليل ازدحام شبكه است.
در شروع يك ارتباط در شبكه ،سايز پنجره مناسب تعيين مي شود. گيرنده بر اساس سايز بافر خود مي تواند سايز پنجره را تعيين كند. اگر ميزان داده هاي ارسالي از فرستنده در حد سايز پنجره باشد ،مشكلي پيش نمي آيد. در غير اينصورت در سمت گيرنده Overflow اتفاق مي افتد. پس بطور كلي با دو مسئله مواجه هستيم:
۱- ظرفيت شبكه
۲- ظرفيت گيرنده
كه دريك ارتباط بايد اين دو مورد را در نظر گرفت.
فرستنده در هنگام ارسال ،سايز دو پنجره را در نظر مي گيرد.
۱- پنجره سمت گيرنده
۲- پنجرا ازدحام
كه سايز پنجره ارسال به اندازه مينيمم اين دو مقدار تعیین می شود.
كنترل ازدحام در شبكه TCP از بالا رفتن ظرفيت شبكه جلوگيري مي كند . در واقع به فرستنده اجازه مس دهد نرخ ارسال داده در شبكه را به منظور جلوگيري از ازدحام تنظيم نمايد.
مكانيزمهاي كنترل ازدحام كه توسط TCP حمايت مي شوند عمدتا شامل ۴ مرحله اصلي مي باشند كه عبارتند از:
۱- Slow Start
2- Congestion Avoidance
3- Fast Retransmission
4- Fast Recovery
كه در ادامه هر يك به تفصيل شرح داده مي شوند.

۱-۲-۱)Slow Start: در شروع يك ارتباط ،ارسال داده ها به سمت گيرنده به اندازه حداكثر ظرفيت سمت گيرنده انجام نمي شود. بلكه فرستنده تعدادي بسته در شروع ارسال مي كند و منتظر دريافت Ack بسته هاي ارسالي مي شود. و سپس بتدريج نرخ ارسال را افزايش مي دهد . اين مكانيزم به فرستنده TCP اين اجازه را مي دهد كه وضعيت موجود شبكه اعم از پهناي باند در دسترس را شناسايي كند.
مكانيزم Slow Start درموارد زير كاربرد دارد:

۱- در شروع هر ارتباط مبتي بر TCP.
2- در شروع مجدد يك ارتباط TCP بعد از مدتي بيكاري.
۳- در شروع مجدد يك ارتباط TCP بعد از وقوع Timeout.

شكل(۱) مكانيزم Slow Start در TCP را به تصوير كشيده است. در مرحله Slow Start فرستنده بايد سايز پنجره ازدحام (Cwnd كه ميزان ترافيك در شبكه را مشخص مي كند) داشته باشد. تعداد سگمنتهاي ارسالي از سمت فرستنده در هر لحظه به اندازه مينيمم سايز پنجره ازدحام و سايز پنجره سمت گيرنده مي باشد.

شكل(۱)
در شروع يك ارتباط سايز اين پنجره يك سگمنت است. فرستنده TCP با ارسال يك سگمنت وارد فاز Slow Startشده و منتظر دريافتAck مي شود. بعد از دريافت Ack فرستنده سايز پنجره ارسال را از يك به دو افزايش مي دهد و دو سگمنت فرستاده مي شود.زمانيكه Ack اين دو سگمنت از سمت گيرنده دريافت شد ، فرستنده سايز پنجره ارسال را از ۲ به ۴ افزايش مي دهد و ۴ سگمنت فرستاده مي شود. رشد نمايي سايز پنجره ارسال (Cwnd) ادامه مي يابد تا زمانيكه به حداكثر سايز پنجره سمت گيرنده برسد يا بسته ها بدليل ازدحام در شبكه اتلاف شوند. در فاز بعدي (Congestion Avoidance) چگونگی برخورد TCP با اتلاف بسته ها شرح داده میشود.
فرستنده TCP به دو طریق می تواند اتلاف بسته ها در شبکه را تشخیص دهد:
۱- دریافت ack تکراری.
۲- سر ریز شدن تایمر.
عدم وجود یک سگمنت در بین سگمنتهای ارسالی در یک پنجره باعث ایجاد Ack تکراری در مقصد می شود. (یادآوری می شود که TCP , Ack منفی یا Ack حاوی شماره بسته نمی فرستد.)
برای مثال , زمانیکه مقصد داده را تا بایت ۲۰۰۰ دریافت می کند در پاسخ Ack داده ۲۰۰۱ را می فرستد به این مفهوم که سگمنت بعدی که گیرنده انتظار دریافت آنرا دارد از بایت ۲۰۰۱ شروع می شود . اگر یک سگمنت در روترهای میانی تلف شود , در مقصد بسته های بعدی به ترتیب رسیدن بافر می شوند و از آنجاییکه گیرنده سگمنت بعدی مورد انتظار را دریافت نکرده به فرستادن Ack سگمنت ۲۰۰۱ ادامه می دهد. از آنجاییکه دریافت Ack تکراری همچنین دلالت بر عدم دریافت سگمنتها به ترتیب دارد, در نتیجه مبدا TCP از سه Ack تکراری به نشانه اتلاف بسته ها استفاده می کند. اتلاف آخرین بسته در یک پنجره ارسالی از سگمنتها باعث سرریز شدن تایمر در مبدا می شود , زیرا سگمنت بعدی جهت تولید Ack وجود ندارد.
فرستنده TCP انتظار دریافت Ack از سمت مقصد به نشانه دریافت موفق بایتهای جدید در رشته داده ها را دارد. هر زمانی که فرستنده یک سگمنت را ارسال می کند یک تایمر شروع بکار می کند و منتظر دریافت Ack می شود. اگر تایمر قبل از اینکه Ack داده های ارسالی دریافت شود, سرریز شود فرستنده TCP فرض را بر این می گذارد که سگمنت گم شده یا آسیب دیده است . در نتیجه مجددا آنرا ارسال می کند.

۱-۲-۲)Congestion Avoidance:
زمانيكه فرستنده TCP متوجه اتلاف بسته ها در شبكه شد متغيرssthresh یا حد آستانه ناحیه (slow-start threshold) slow start را به اندازه نصف cwnd جاري تنظيم مي كند. در واقع فرستنده نرخ ارسال خود را با برگشت به فاز Slow Start كاهش مي دهد. با اين تفاوت كه افزايش نمايي نرخ ارسال تا رسيدن به سايز پنجره ارسال به حد آستانه (ssthresh) ادامه مي يابد. در اين نقطه ، فرستنده سايز پنجره ارسال را (cwnd) بطور خطي افزايش مي دهد (با يك سگمنت در هر RTT).
در واقع به آهستگي نرخ ارسال را افزايش مي دهد تا به مقدار cwnd قبلي كه در آن نقطه اتلاف بسته رخ داده بود برسد.
زمانيكه cwnd مساوي يا كمتر از حد آستانه ssthresh است فرستنده TCP در فاز slow-start است. و زمانيكه cwnd بزرگتر از ssthresh است فرستنده TCP در فاز Congestion Avoidance قرار دارد. كه در شكل (۲) به تصوير كشيده شده است.

شكل (۲)

فاز slow-start و Congestion Avoidance سبب مي شود TCP با وقوع اتلاف بسته ها سايز پنجره ارسال را به نصف كاهش دهد . اگر وجود ازدحام در شبكه به طور مرتب باعث اتلاف بسته ها شود ميزان ترافيك وارد شده به شبكه و نرخ ارسال توسط فرستنده TCP بطورنمايي كاهش مي يابد. كه اين امر به روترهاي مياني اجازه مي دهد تا صفهاي خود را خالي كنند.

۱-۲-۳)Fast Retransmission:
همانطور كه قبلا گفته شد ، TCP با دريافت Ack تكراري متوجه اتلاف بسته ها ميشود. از طرفي دريافت Ack تكراري همچنين مي تواند به مفهوم دريافت بسته ها بر خلاف ترتيب اصلي باشد. پس بجاي نشان عكس العمل سريع نسبت به دريافت Ack تكراري با ارسال مجدد بسته گم شده، فرستنده TCP منتظر ميشود تا ۳ Ack تكراري دريافت كند.

Fast Retransmission كارايي TCP را به ۳ طريق افزايش دهد:
– اگر بسته ها به ترتيب دريافت نشده باشند از ارسال مجدد آنها و در نتيجه پر كردن ظرفيت شبكه جلوگيري مي كند.
– بهره وري بيشتر و بازدهي بالا خطوط ارتباطي را موجب مي شود.
– در صورت اتلاف بسته ها ، TCP قبل از سرريز تايمر اقدام به ارسال مجدد بسته مي كند. و منتظر سرريز شدن تايمر نمي شود.

۱-۲-۴)Fast Recovery:
زمانيكه مبدا TCP، Ack تكراري دريافت مي كند ،داده ها به سمت مقصد در جريان هستند زيرا در مقصد اگر سگمنتها به ترتيب دريافت نشوند Ack تكراري توليد مي شود.
در اين مورد فرستنده TCP به طور ناگهاني نرخ ارسال داده را با رفتن به فاز slow-start كاهش نمي دهد. در عوض بعد از ارسال مجدد سگمنت گم شده (در پاسخ به ۳ Ack تكراري) مبدا TCP ميزان cwnd را به نصف كاهش مي دهد و وارد فاز Congestion Avoidanceمي شود. اين عمليات باعث بازدهي بهتر TCP مي شود. كه اين عمليات در شكل (۳) به تصوير كشيده شده است.

شكل (۳)

Fast Recovery از خالي شدن جريان TCP بين مبدا و مقصد بعد از اتلاف يك بسته و ارسال مجدد آن جلوگيري مي كند. اين فاز كارايي TCP را با عدم نياز به برگشت به فاز slow-start و افزايش تدريجي ظرفيت شبكه بعد از اتلاف يك بسته ايجاد مي شود.
در مقابل, در حاليكه فاز Fast Recovery كارايي TCP را زمانيكه يك بسته در يك پنجره ارسالي گم مي شود افزايش ميدهد.كارايي را زمانيكه چندين بسته در يك پنجره اتلاف مي شوند افزايش نمي دهند.

مثال:
شكل ۴ بازدهي جريان TCP را نمايش مي دهد.

شکل (۴)

در شروع يك ارتباط TCP ،مبدا اتصال سعي در اجتناب از بالا بردن ترافيك شبكه دارد. همانطور كه در منحني A ديده مي شود ارتباط با فاز slow-start آغاز مي شود و سرعت نرخ ارسال افزايش مي يابد تا ظرفيت جاري تشخيص داده شود. فاز slow-start تا زمانيكه Ack تكراري دريافت شود ادامه مي يابد. همانطور كه در منحني قسمت B نشان داده شده مبدا TCP ميزان حد آستانه ssthresh را به نصف ميزان cwndجاري تنظيم مي كند و Fast Restart انجام مي شود و به فاز Congestion Avoidance مي رسد تا دوباره به ميزان cwnd قبلي كه منجر به اتلاف بسته شده بود برسد.
بعد از شروع مجدد با فاز Congestion Avoidance نرخ ارسال افزايش مي يابد تا زمانيكه Ack تكراري دريافت شود . همانطور كه در منحني C نشان داده شده است، فرستنده ميزان ssthresh را مساوي نصف cwnd جاري تنظيم مي كند و بازيابي مجدد همراه با Congestion Avoidance انجام ميشود.
حال اگر آخرين سگمنت در پنجره ارسال در يكي از روترهاي مياني آسيب ببيند ،در اينصورت مبدا TCP منتظر سرريز شدن تايمر است قبل از اينكه آخرين سگمنت را مجددا ارسال كند. همانطور كه در منحني D ديده مي شود ، مبدا TCPميزان ssthresh را به نصف مقدار cwnd جاري تنظيم مي كند و مجددا به فاز slow-startبر ميگرددو با ازدحام برخورد مي كند.

۱-۳)پيشرفتهاي جديد در زمينه كنترل ازدحام در TCP:
در طي سالها ،پياده سازي TCP منجر به طراحي الگوريتمهاي متفاوتي به منظور كنترل ازدحام در شبكه و ايجاد يك ارتباط مناسب گشته است. در اين زمينه الگوريتمهايي مثل Tahoe، Reno، New Reno، و Vegas مطرح هستند.كه در ادامه نقاط ضعف و قوت هر يك را بيان مي كنيم.

۱-۳-۱)TCP Tahoe:
اولين پياده سازي از اين نسخه TCP در سال ۱۹۸۸ در سيستم ۴٫۳BSd يونيكس بود. و اين نسخه پياده سازي اصلي مكانيزم پيشنهادي توسط Van Jacobson بود. Tahoe شامل ۳ مرحله اساسي است.
Slow-Start، Congestion Avoidance، Fast Retransmission.
در طول Slow-Start ، در شروع يك ارتباط (cwnd=1) يك بسته ارسال مي شود. و سايز پنجره ارسال با دريافت Ack از سمت گيرنده به طور نمايي افزايش مي يابد و ناحيه Slow-Start ادامه مي يابد تا زمانيكه<ssthresh cwnd . در طول فاز Congestion Avoidance
(ssthresh =cwnd) اتلاف بسته نشان دهنده ازدحام در شبكه است.
Tahoe در چنين مواقعي به شرح ذيل عمل مي نمايد.
۱- اگر در هنگاميكه اتلاف رخ مي دهدw = cwndباشد سايز پنجره ارسال بين ۰٫۵w تا w بسته تنظيم ميشود با اين فرض كه شبكه مي تواند اين تعداد بسته را هدايت كند.
۲- ssthresh را به اندازه۰٫۵w تنظيم مي كند و TCP به فاز Slow-Start بر مي گردد يعني جائيكه cwnd=1
3- با دريافت يك Ack جديد در حاليكه>sshresh cwnd ،سايز پنجره ارسال يعني cwnd طبق رابطه زير افزايش مي يابد.
Cwnd+=1/ cwnd

فاز Fast Retransmission درواقع Tahoe را از وقوع Time out بدليل اتلاف بسته ها حمايت مي كند. دريافت Ack تكراري، دلالت بر اتلاف بسته ها دارد و Tahoe در اين شرايط به فاز Slow-Start بر مي گردد. و با دريافت چندين Ack تكراري ،شروع به ارسال مجدد بسته ها مي كند و منتظر وقوع Time out (سرريز شدن تايمر) نمي شود.

۱-۳-۲)TCP Reno:
الگوريتم Reno در سال ۱۹۹۵ مطرح شد و شامل تمام مكانيزمهاي مطرح شده در الگوريتم Tahoe است. و علاوه بر آنها در Reno فاز Congestion Avoidanceبا مكانيزم Fast Recovery توسعه مي يابد. همانند Tahoe ،فاز Congestion Avoidance زمانيكه ssthresh =cwnd است شروع مي شود. در اين زمان cwnd با دريافت هر Ack فقط به اندازه ۱/ cwnd افزايش مي يابد. يعني بصورت خطي رشد مي كند.
و بطور مشابه فاز Fast Retransmission با دريافت سه Ack تكراري آغاز مي شود. آنچه كه باعث اختلاف بين Tahoe و Reno است در واقع فاز Fast Recovery است. زمانيكه سومين Ack تكراري دريافت مي شود ، ssthresh=0.5*cwnd و cwnd= ssthresh+3 تنظيم ميكنيم.
(سه Ack ،كه هر Ack تكراري دلالت بر اين دارد كه گيرنده از دريافت سه بسته گم شده صرفنظر كرده است.(
سپس Reno ميزان cwnd را تغيير مي دهد تا زمانيكه Ack مناسب از بسته هايي كه مجددا ارسال كرده را دريافت كند. در اينحال مجددا ssthresh =cwnd تنظيم مي گردد.
بطور خلاصه, هر Ack تکراری فرستنده TCP را از اتلاف یک بسته آگاه می سازد و مکانیزم Fast Recovery بمنظور بازیابی اتلاف بسته ها میزان cwnd را تغییر می دهد. زمانیکه بسته گم شده احیا شد (در گیرنده دریافت شد) مجددا cwnd = cwnd /2 .درنتیجه Reno با استفاده از Fast Recovery بطور پیوسته به فاز Congestion Avoidance انتقال می یابد.
یکی از نقاط ضعف الگوریتم Reno نحوه برخورد آن با اتلاف چندین بسته در یک پنجره ارسال می باشد. Reno رویه Fast Recovery را چندین بار اجرا میکند تا با اتلاف چندین بسته در شبکه مقابله نماید و مرتبا مقادیر cwnd و ssthresh را تغییر میدهد. در پایان ,این امر در مواقعی منجر به وقوع Time Out می شود که منجر به تغییر cwnd به اندازه یک بسته می شود و کارایی را تحت تاثیر قرار میدهد. علاوه بر این , Reno ترافیک انفجاری در شبکه را نمی تواند به خوبی تحمل کند, که این امر به نحوه ارسال Ack بر می گرددکه در هر RTT فقط اتلاف یک بسته اعلام می شود.
۱-۳-۳)TCP New Reno:
New Reno بطور هوشمندانه نقاط ضعف Reno را بهبود می بخشد , بخصوص فازهای Slow Start و Fast Recovery را. در واقع بطور تدریجی سایز پنجره را تغییر می دهد و علاوه بر این اتلاف چندین بسته در یک پنجره را شناسایی می کند. در ابتدا لازم است مفهوم Partial Ack درک شود. یک Partial Ack , Ack مربوط به تعدادی از بسته ها و نه همه آنهاست, که در ابتدای ناحیه Fast Recovery متمایز می شوند. Partial Ack سبب تغییر حالت New Reno به فاز Fast Recovery نمی شود بلکه Partial Ack دریافتی در طول Fast Recovery دلالت بر این دارد که بسته ای که بلا فاصله بعد از بسته ای که Ack آن آمده ,گم شده و باید مجددا ارسال شود. بنابراین زمانیکه چندین بسته گم می شوند , New Reno می تواند بدون وقوع Time Out اتلاف را بهبود بخشد (بازیابی کند). در واقع عملکرد New Reno زمانی برجسته و متمایز میشود که چندین بسته در یک پنجره ارسال گم شوند. در طول فاز Fast Recovery استفاده از Partial Ack بطور قابل توجهی میزان وقوع Time Out را کاهش میدهد.

۱-۳-۴)TCP Vegas:
Vegas نسبت به الگوریتم Reno دو فاز Congestion Avoidance و Fast Retrasmission را بهبود می بخشد. در واقع به TCP توانایی شناسایی ازدحام و تنظیم نرخ ارسال را بر اساس آن می دهد و مکانیزم ارسال مجدد بهینه همچنین منجر به این می شود که در مورد بسته های اتلاف شده , به منظور زمان ارسال تصمیم گیری بهتری انجام شود.
در طول ناحیه Slow Start در الگوریتم Vegas , cwnd بطور نمایی افزایش می یابد.و در طول هر RTT بدون تغيير باقي مي ماند.اين امر مقايسه بين نرخ ارسال مورد انتظار و نرخ ارسال واقعي را محقق مي سازد. بنابراين cwnd بطور مناسب تنظيم مي شود. اگر نرخ واقعي كمتر از نرخ مورد انتظار باشد ، سپس Vegas به فاز Congestion Avoidance وارد مي شود.
Vegas سه متغیر را در طول فاز Congestion Avoidance ذخیره می کند . α به عنوان حد آستانه که بوسیله مدیر شبکه انتخاب می شود . β یک متغیر حد آستانه پایین و Δ اختلاف بین نرخ ارسال مورد انتظار و واقعی. در طول مقایسه, cwnd بطور خطی افزایش می یابد اگر α <Δ و کاهش می یابد بصورت خطي اگر β >Δ باشد. هدف Vegas در واقع تداوم ارسال است تا زمانیکه Δ در بازه (β ،α) باشد. در طول روال Fast Retransmission تغییر یافته , Vegas به طرق زیر به منظور شناسایی سریعتر اتلاف عمل مي کند:
۱- اختلاف بین زمان جاری و برچسب زمانی تعریف شده را چک می کند که اگر بزرگتر از Time Out باشد در مقابل رسید اولین Ack تکراری , بسته مجددا ارسال می شود , بدون انتظار برای دومین Ack تکراری.
۲- زمانیکه اولین یا دومین Ack دریافت شد (به عبارت دیگر , نه Ack تکراری) بعد از انتقال, مجددا چک می شود که اگر Time Out در حال افزایش باشد در اینحال ارسال مجدد سریعا شروع می شود.
۳- Cwnd در یک حالت کاهش می یابد. بسته ای که ارسال مجدد شده است قبلا بعد از آخرين كاهش cwnd . فرستاده شده باشد ، cwnd كاهش مي يابد فقط به منظور اجتناب از ازدحام پر خطر.
پس از بررسي شرايط ازدحام و مكانيزمهاي كنترل ازدحام در ارتباط TCP ، در ادامه عملكرد TCP را در شبكه هاي حسي مورد بررسي قرار مي دهيم.

۲-۱)عملکرد بهینه TCP در شبکه های بی سیم حسی:
برنامه های کاربردی زیادی در شبکه های بی سیم حسی نیاز به برقراری اتصال با شبکه های خارجی دارند تا بتوانند ارتباط موجودیتها را با سنسورها کنترل نمایند. با استفاده از پروتکل TCP/IP در شبکه حسی, اتصالات خارجی به راحتی فراهم می شود.
در يك شبکه حسی مبتنی بر پروتکل TCP/IP, TCP می تواند به منظور مدیریت از راه دور و برنامه ریزی مجدد سنسورها استفاده شود.
هر چند که نرخ خطای بالا در شبکه های حسی با چندین نود ( پرش) منجر به ناکارآمدی انرزی و در نتیجه طول عمر پایین شبکه های حسی می شود, در این جا دو دیدگاه متفاوت به منظور عملکرد بهینه انرزی از پروتکل TCP در شبکه های حسی مطرح و بررسی می شود:
Distributed TCP Cachimg (DTC)
TCP Support for Sensor networks(TSS)
هر دو مکانیزم به سنسورهای نودهای میانی این اجازه را می دهند که بسته های TCP را نگهداری کنند و بسته های داده را از نودی به سمت نود دیگر بفرستند.
DTC : بسته های داده TCP را cache کرده و بلافاصله بسمت جلو هدایت می کند. در حالیکه
TSS: بسته cache شده را تا زمانیکه از دریافت موفقیت آمیز بسته قبلی توسط نود بعدی مطلع نشود , آنرا بسمت جلو هدایت نمی کند.
هر دو دیدگاه بطور آشکار تعداد بسته های TCP و Ack را کاهش می دهند.و کارایی آنها از نقطه نظر نرخ خطا تا حدی با یکدیگر اختلاف دارد و این دو مکانیزم نیازهای متفاوتی را به لحاظ مصرف حافظه بافر و تنظیمات TCP دارا می باشند.
شبکه های حسی بیسیم از تعداد زیادی حسگر های حساس به امواج رادیویی تشکیل شده اند که بطور خودکار تشکیل یک شبکه را می دهند که داده ها در بین حسگرها منتقل می شوند. قطعات استفاده شده با مشکل محدودیت منابع از جمله انرزی, قدرت پردازشگر , حافظه و پهنای باند ارتباطی روبرو می باشند.
برنامه های زيادی در شبکه حسگرهای بیسیم نیازمند ارتباطات خارجی به منظور کنترل و مانیتور کردن موجودیتهایی هستند که از داده های موجود درشبکه استفاده می کنند و با حسگرها در ارتباط هستند. اجرای TCP/IP در شبکه های حسی ارتباط مستقیم شبکه حسی را با شبکه مبتنی بر IP به راحتی و بدون نیاز به واسطه فراهم می سازد.
از آنجاییکه هر حسگر قادر به برقراری ارتباط با استفاده از TCP/IP می باشد, مسیریابی داده ها از شبکه های حسی با استفاده از تکنولوزی مبتنی بر IP مثل GPRS ممکن است.
انتقال داده ها در شبکه حسی مبتنی بر IP با استفاده از دو پروتکل مهم امکانپذیر می شود: پروتکل UDP که best effort است و پروتکل TCP که جریان مطمئن بایتهای داده را حمایت می کند. UDP برای داده ها و اطلاعات دیگری که در جریان انتقال, خیلی اهمیت ندارند استفاده می شود . اما در مورد داده های مهم از پروتکل TCP استفاده می شود. به عنوان مثال پیکره بندی و مانیتورینگ حسگرها و … مخصوصا بارگذاری داده ها در نودهای مخصوصی مثل نود ریشه در یک ساختار کلاستری در یک ناحیه مخصوص.
نکته مهم در استفاده از TCP مشکل اساسی آن به لحاظ کارایی در یک شبکه بیسیم است . یک مساله این است که TCP که برای شبکه های با سیم و تعداد خطای پایین طراحی شده , از اتلاف بسته ها بعنوان نشانه ای از ازدحام در شبکه و در نتیجه کاهش نرخ ارسال استفاده می کند. که این امر منجر به کاهش بازدهی می شود. که مشکل بزرگی در شبکه AD-HOC می باشد.
برای شبکه های حسی مشکل اصلی, ناکارآمدی انرزی در استفاده از TCP است . این ناکارآمدی انرزی بعلت انتقال انتها به انتهای بسته های داده در TCP است, که در مورد بسته های تلف شده نیاز به انتقال مجدد از حسگر فرستنده است. در شبکه با چندین نود (پرش) ارسال مجدد بسته ها , باید از کلیه نودهای میانی بین فرستنده و گیرنده بسمت جلو انجام شود که این امر منجر به اتلاف انرزی زیادی در هر پرش می شود. در نتیجه از آنجا که در هر پرش , نرخ اتلاف بسته ها در بازه ۵% تا ۱۰% و در مواردی بیشتر نیز می باشد ارسال انتها به انتهای بسته های تلف شده روش مناسبی برای انتقال قابل اطمینان در شبکه های حسی نمی باشد. در این جا دو تکنیک DTC و TSS شرح داده می شوند. در هر دو مکانیزم، نودهای میانی بسته های TCP را cache کرده و در هنگام اتلاف بسته ها بصورت محلی ارسال مجدد توسط این نودها صورت می گیرد. و پیاده سازی این دو تکنیک نیاز به هیچگونه تغییری در پیاده سازی TCP ندارد.
در مکانیزم TSS ,نودی که بسته ای را cache کرده بسته را بسمت جلو هدایت نمی کند تا زمانیکه از دریافت تمامی بسته های TCP با شماره ترتیبی کمتر توسط نود بعدی خود آگاه شود. این امر منجر به وجود back pressure می شود که تعداد بسته های ارسالی را کاهش می دهد.
DTC بلافاصله همه بسته های TCP را بسمت جلو هدایت می کند , حتی آنهایی که در نودهای میانی cache شده اند.
بعلاوه TSS از مکانیزم بهبود تصديق ( Acknowledge) TCP استفاده می کند.
نتایج بدست آمده نشان می دهند که هر دو مکانیزم TSS و DTC بطور آشکاری کارایی TCP را در قالب تعداد کل سگمنتهای منتقل شده و تعداد انتقالهای مجدد انتها به انتها افزایش می دهند. با وجود مکانیزم Ack تهاجمي در TSS تعداد کل Ack بیشتر از DTC می باشد. بعبارت دیگر , بدلیل وجود مکانیزم back pressure تعداد سگمنتهای منتقل شده در TSS کمتر می باشد.
برای نرخ پایین اتلاف بسته ها, DTC و TSS تعداد بسته های منتقل شده مشابهی دارند. در حاليكه DTC نسبت به TSS بسته هاي بيشتري را در شرايط نرخ اتلاف بالا ، بازيابي مي كند.