# بروتوكول التحكم بالإرسال

بروتوكول التحكم بالإرسال أو ميفاق التحكّم بالإرسال (بالإنجليزية: Transmission Control Protocol TCP)‏ هو أحد البروتوكولات الأساسيّة في حزمة بروتوكولات الإنترنت، موصُوف بالوثيقة (RFC 793)، ويُؤمّن نقلاً موثوقاً خاليًا من الأخطاء لدفق من البايتات بين مُضيفين يتصلان مع بعضهما البعض عبر شبكة تدعم بروتوكول الإنترنت. تعتمد معظم تطبيقات الإنترنت الرئيسية مثل الويب والبريد الإلكتروني ونقل الملفات على بروتوكول التحكّم بالنقل.

## الوظيفة الشبكية

- يشكل هذا الميفاق وسيطاً بين التطبيقات التي تريد إرسال بيانات على شبكة الإنترنت وبين ميفاق آي بي الذي يتحكم بعمليات العنونة وتوجيه الرسالة إلى الوجهة المراد الإرسال إليها، وذلك حتى نخفف العبء على هذه التطبيقات التي تريد الإرسال باستخدام الميفاق آي بي، لأن الآي بي في الحقيقة يقوم بتقسيم المعلومات المراد إرسالها على الشبكة إلى طرود مما يزيد من مهمات التطبيقات التي تريد الإرسال باستخدامه، لذلك يقوم التي سي بي بهذه العمليات كلها ليجرد التطبيقات العليا من جميع عمليات التحكم بالنقل (سواء الإرسال أو الاستقبال).
- ولا تقتصر مهمة التي سي بي على عملية تقسيم البيانات على شكل طرود يمكن للآي بي أن يرسلها، في الحقيقة يقوم أيضاً بعمليات تصحيح أخطاء النقل كلها أيضاً، حيث من الممكن أن تضيع الطرود أو أن تصل تالفة إلى المستقبل، وبالتالي يتوجب على التي سي بي في هذه الحالة أن يقوم بإعادة إرسالها من المرسل مرة أخرى، وذلك بأن يقوم التي سي بي الذي يوجد عند المستقبل بطلب إعادة إرسال من المرسل والذي يقوم بفهم هذا الطلب هو التي سي بي الموجود عند المرسل، كما ويقوم التي سي بي بعملية إعادة ترتيب الطرود التي وصلته عند المستقبل ليقوم بإيصال النسخة الكاملة من البيانات المرسلة إلى الطبقة العليا التي تحوي التطبيقات (البرامج) التي ستقوم بمعالجة هذه البيانات وفهمها.
- يتم استخدام التي سي بي من قبل العديد من تطبيقات الإنترنت المشهورة مثل البريد الإلكتروني (E-Mail) والشبكة العنكبوتية العالمية (World Wide Web) وميفاق نقل الملفات (File Transfer Protocol) وتطبيقات نقل الوسائط (Streaming Media Applications) والعديد من التطبيقات أخرى.

## ترويسة التي سي بي

| + | البتات 0 — 3 | البتات 0 — 3 | البتات 0 — 3 | البتات 0 — 3 | 4 — 9 | 4 — 9 | 4 — 9 | 4 — 9 | 4 — 9 | 4 — 9 | 10 — 15 | 10 — 15 | 10 — 15 | 10 — 15 | 10 — 15 | 10 — 15 | 16 — 23 | 16 — 23 | 16 — 23 | 16 — 23 | 16 — 23 | 16 — 23 | 24 - 31 | 24 - 31 | 24 - 31 | 24 - 31 | 24 - 31 | 24 - 31 | 24 - 31 | 24 - 31 | 24 - 31 | 24 - 31 |
| 0 | عنوان بوابة الوجهة | عنوان بوابة الوجهة | عنوان بوابة الوجهة | عنوان بوابة الوجهة | عنوان بوابة الوجهة | عنوان بوابة الوجهة | عنوان بوابة الوجهة | عنوان بوابة الوجهة | عنوان بوابة الوجهة | عنوان بوابة الوجهة | عنوان بوابة الوجهة | عنوان بوابة الوجهة | عنوان بوابة الوجهة | عنوان بوابة الوجهة | عنوان بوابة الوجهة | عنوان بوابة الوجهة | عنوان بوابة المصدر | عنوان بوابة المصدر | عنوان بوابة المصدر | عنوان بوابة المصدر | عنوان بوابة المصدر | عنوان بوابة المصدر | عنوان بوابة المصدر | عنوان بوابة المصدر | عنوان بوابة المصدر | عنوان بوابة المصدر | عنوان بوابة المصدر | عنوان بوابة المصدر | عنوان بوابة المصدر | عنوان بوابة المصدر | عنوان بوابة المصدر | عنوان بوابة المصدر |
| 32 | الرقم التسلسلي | الرقم التسلسلي | الرقم التسلسلي | الرقم التسلسلي | الرقم التسلسلي | الرقم التسلسلي | الرقم التسلسلي | الرقم التسلسلي | الرقم التسلسلي | الرقم التسلسلي | الرقم التسلسلي | الرقم التسلسلي | الرقم التسلسلي | الرقم التسلسلي | الرقم التسلسلي | الرقم التسلسلي | الرقم التسلسلي | الرقم التسلسلي | الرقم التسلسلي | الرقم التسلسلي | الرقم التسلسلي | الرقم التسلسلي | الرقم التسلسلي | الرقم التسلسلي | الرقم التسلسلي | الرقم التسلسلي | الرقم التسلسلي | الرقم التسلسلي | الرقم التسلسلي | الرقم التسلسلي | الرقم التسلسلي | الرقم التسلسلي |
| 64 | رقم التأكيد (الإقرار) | رقم التأكيد (الإقرار) | رقم التأكيد (الإقرار) | رقم التأكيد (الإقرار) | رقم التأكيد (الإقرار) | رقم التأكيد (الإقرار) | رقم التأكيد (الإقرار) | رقم التأكيد (الإقرار) | رقم التأكيد (الإقرار) | رقم التأكيد (الإقرار) | رقم التأكيد (الإقرار) | رقم التأكيد (الإقرار) | رقم التأكيد (الإقرار) | رقم التأكيد (الإقرار) | رقم التأكيد (الإقرار) | رقم التأكيد (الإقرار) | رقم التأكيد (الإقرار) | رقم التأكيد (الإقرار) | رقم التأكيد (الإقرار) | رقم التأكيد (الإقرار) | رقم التأكيد (الإقرار) | رقم التأكيد (الإقرار) | رقم التأكيد (الإقرار) | رقم التأكيد (الإقرار) | رقم التأكيد (الإقرار) | رقم التأكيد (الإقرار) | رقم التأكيد (الإقرار) | رقم التأكيد (الإقرار) | رقم التأكيد (الإقرار) | رقم التأكيد (الإقرار) | رقم التأكيد (الإقرار) | رقم التأكيد (الإقرار) |
| 96 | حجم النافذة | حجم النافذة | حجم النافذة | حجم النافذة | حجم النافذة | حجم النافذة | حجم النافذة | حجم النافذة | حجم النافذة | حجم النافذة | حجم النافذة | حجم النافذة | حجم النافذة | حجم النافذة | حجم النافذة | حجم النافذة | ع6 | ع5 | ع4 | ع3 | ع2 | ع1 | محجوز | محجوز | محجوز | محجوز | محجوز | محجوز | مقدار الإزاحة | مقدار الإزاحة | مقدار الإزاحة | مقدار الإزاحة |
| 128 | بيانات مستعجلة | بيانات مستعجلة | بيانات مستعجلة | بيانات مستعجلة | بيانات مستعجلة | بيانات مستعجلة | بيانات مستعجلة | بيانات مستعجلة | بيانات مستعجلة | بيانات مستعجلة | بيانات مستعجلة | بيانات مستعجلة | بيانات مستعجلة | بيانات مستعجلة | بيانات مستعجلة | بيانات مستعجلة | مجموع الاختبار | مجموع الاختبار | مجموع الاختبار | مجموع الاختبار | مجموع الاختبار | مجموع الاختبار | مجموع الاختبار | مجموع الاختبار | مجموع الاختبار | مجموع الاختبار | مجموع الاختبار | مجموع الاختبار | مجموع الاختبار | مجموع الاختبار | مجموع الاختبار | مجموع الاختبار |
| 160 | خيارات وتذييل | خيارات وتذييل | خيارات وتذييل | خيارات وتذييل | خيارات وتذييل | خيارات وتذييل | خيارات وتذييل | خيارات وتذييل | خيارات وتذييل | خيارات وتذييل | خيارات وتذييل | خيارات وتذييل | خيارات وتذييل | خيارات وتذييل | خيارات وتذييل | خيارات وتذييل | خيارات وتذييل | خيارات وتذييل | خيارات وتذييل | خيارات وتذييل | خيارات وتذييل | خيارات وتذييل | خيارات وتذييل | خيارات وتذييل | خيارات وتذييل | خيارات وتذييل | خيارات وتذييل | خيارات وتذييل | خيارات وتذييل | خيارات وتذييل | خيارات وتذييل | خيارات وتذييل |
| + | المعلومات المرسلة | المعلومات المرسلة | المعلومات المرسلة | المعلومات المرسلة | المعلومات المرسلة | المعلومات المرسلة | المعلومات المرسلة | المعلومات المرسلة | المعلومات المرسلة | المعلومات المرسلة | المعلومات المرسلة | المعلومات المرسلة | المعلومات المرسلة | المعلومات المرسلة | المعلومات المرسلة | المعلومات المرسلة | المعلومات المرسلة | المعلومات المرسلة | المعلومات المرسلة | المعلومات المرسلة | المعلومات المرسلة | المعلومات المرسلة | المعلومات المرسلة | المعلومات المرسلة | المعلومات المرسلة | المعلومات المرسلة | المعلومات المرسلة | المعلومات المرسلة | المعلومات المرسلة | المعلومات المرسلة | المعلومات المرسلة | المعلومات المرسلة |
-تحوي ترويسة التي سي بي على الحقول التالية:
1- عنوان بوابة الوجهة: وتحوي رقم التطبيق في طبقة التطبيق (Application layer) عند المستقبل، أي التطبيق الذي سيقوم بالتعامل مع البيانات في هذا الطرد.
2- عنوان بوابة المصدر: وتحوي رقم التطبيق الذي قام بإرسال هذه البيانات باستخدام ميثاق التي سي بي.
3- الرقم التسلسلي: ويدل على رقم أول ثمانية في البيانات المرسلة في هذا الطرد.
4- رقم التأكيد: ويدل على رقم الثمانية التي يقوم مرسل هذا الطرد بانتظار وصولها وجميع الثمانيات التي سبقتها قد وصلت (كون نوع إشارات التأكيد التي يستخدمها التي سي بي إيجابية).
5- حجم النافذة: وهو رقم يخبر به مرسل هذا الطرد الطرف الآخر بعدد الثمانيات التي يمكن لمرسل هذا الطرد أن يستقبلها ابتداءً من رقم التأكيد الذي يوجد في هذا الطرد (هذه تحدد حجم النافذة المتزحلقة عند مرسل هذا الطرد).
6- محجوز: هو حقل غير ولكنه سيستخدم في المستقبل.
7- مقدار الإزاحة: ويحوي هذا الحقل على عدد البايتات التي توجد في ترويسة التي سي بي، وتتراوح قيمته بين 5 إلى 15 كلمة لأنه يقدر بواحدة الكلمة وهي 4 بتات وكل بت من هذه البتات يمثل كلمة أي 32 بت.
8- أعلام مميزة:
1) ع1 (URG): وهو بت واحد يدل على أن البيانات التي توجد في هذا الطرد مستعجلة، ويجب على المستقبل أن يقرأ الرقم الذي يوجد في حقل «بيانات مستعجلة»، وإذا كان يحوي هذا البت القيمة صفر فهذا يدل على أن البيانات التي في هذا الطرد ليست مستعجلة وبالتالي لا يقوم المستقبل بقراءة الرقم الموجود في الحقل «بيانات مستعجلة».
2) ع2 (ACK): وهو بت واحد يدل على أن البيانات الموجودة في هذا الطرد تحتاج إلى تأكيد من قبل مستقبلها.
3) ع3 (PSH): ويدل هذا الحقل في حالة وضعه على القيمة 1 على أن البيانات التي توجد في هذا الطرد يجب أن يتم رفعها إلى الطبقات العليا بأسرع ما يمكن.
4) ع4 (RST): إذا كان على القيمة 1 يدل على أنه يجب إعادة تأسيس الاتصال (Reset the connection).
5) ع5 (SYN): يحوي القيمة 1 عند فتح الرابطة ليساعد بعملية التزامن بين المرسل والمستقبل.
6) ع6 (FIN): لتدل على إغلاق الرابطة بشكل نظامي بين المرسل والمستقبل.
9- بيانات مستعجلة: لا يقوم المستقبل بقراءة هذا الحقل إلا إذا كان العلم ع1 (URG) فعالاً (أي على القيمة 1)، ويدل على رقم آخر ثمانية في المعطيات المستعجلة مما يسمح للتطبيق بمعرفة حجم البيانات المستعجلة القادمة (أي يحوي على عدد الثمانيات المستعجلة).
10- مجموع الاختبار (Checksum) : وهو مجموع قيم البتات في الطرد وترويسة التي سي بي، ويستخدم من أجل كشف الأخطاء، حيث يقوم المرسل بجمع هذه البتات وتخزين نتيجة الجمع في هذا الحقل، والمستقبل عند استقبال الطرد يقوم أيضاً بعملية الجمع نفسها لنفس العدد من البتات ويقارن بين القيمتين، وفي حال الاختلاف يكتشف وجود خطأ في الطرد المنقول ليطلب من المرسل بعدها أن يعيد إرساله إليه.

## خواص الميفاق

1) موثوق : يهتم التي سي بي بعمليات النقل الموثوق للبيانات بدون أخطاء، وفي حالة حصول أخطاء في النقل يقوم بإعادة إرسال البيانات الضائعة أو الخاطئة من المرسل مرة أخرى وهذا ما جعل استخدامه بالنقل ليس مناسباً لجميع التطبيقات لأنه يقوم بتضييع الكثير من الوقت في الانتظار وتصحيح أخطاء النقل بإعادة الإرسال، لذلك يتم استخدام موافيق أخرى في التطبيقات التي تحتاج لنقل لحظي ومباشر للبيانات، مثل نقل الصوت عبر الآي بي (VoIP)، ولكنه جيد جداً ومفيد في التطبيقات التي تحتاج لبيانات دقيقة وصحيحة مثل نقل الملفات باستخدم ميفاق نقل الملفات (بالإنجليزية: FTP)‏
2) يقيم رابطة (اتصال) بين المرسل والمستقبل قبل الشروع بالإرسال: يستخدم التي سي بي تقنية المصافحة من أجل إقامة رابطة أو اتصال مع المستقبل، حيث يقوم بإرسال 3 طرود (3 إشارات مصافحة) بين كل من المرسل والمستقبل:
1- يقوم المرسل بإرسال طرد طلب فتح رابطة إلى المستقبل.
2- يقوم المستقبل بتأكيد هذا الطلب والموافقة عليه (إن كان يستطيع فتح رابطة وليس مشغولاً بعمليات نقل أخرى مع غيره من العقد على الشبكة).
3- يرد المرسل على المستقبل بإشارة تأكيد أخيرة ليدل على أنه جاهز للإرسال. والفائدة من إقامة رابطة بين الطرفين هي أن يعلم المستقبل ترتيب الطرود الحقيقي الذي أرسل وفقه المرسل من خلال وضع ذاكرة عند المستقبل تحتفظ بالطرود التي استقبلها وفقاً لترقيم معين في كل طرد منها يدل على ترتيب الطرد بين العدد الكلي للطرود التي يرسلها المرسل، مما يساعد في كشف ضياع أو فقدان أحد الطرود من قبل المستقبل خلال النقل ليطلب الأخير من المرسل إعادة إرساله، هذا هو السبب الرئيس الذي جعل هذا الميفاق موثوقاً.
3) يقوم بترقيم ثمانيات البيانات بدلاً من ترقيم الطرود: يقوم التي سي بي بترقيم تسلسلي للثمانيات المرسلة بدلاً من أن يقوم بترقيم الطرود المرسلة، فمثلاً إن كان يريد المرسل إرسال 10 طرود، وكل طرد يتكون من 100 ثمانية (Byte)، فيقوم التي سي بي بترقيم الثمانيات من الرقم 1 إلى الرقم 1000 ويوزع الثمانيات بالتساوي على الطرود العشرة، في حين بعض الموافيق الأخرى تقوم بترقيم الطرود العشرة من 1 إلى 10 بدلاً من ترقيم الثمانيات، ويقوم بإرفاق عدد الثمانيات وأرقامها في ترويسة من البتات تضاف مع البيانات المرسلة.
4) يستخدم إشارات التأكيد الإيجابية.
5) يستخدم طريقة إعادة الإرسال التراكمي (Cumulative Retransmission or Go-Back-N Retransmission).
6) يعتمد وجود مؤقت من أجل إعادة الإرسال: ويوجد عند مرسل الطرد، ويفيد في حالة عدم وصول إشارة التأكيد إليه من الطرف المستقبل، ويعمل هذا المؤقت بإحدى الطريقتين التاليتين:
1- يوجد لكل طرد مؤقت خاص فيه ويبدأ بالعمل فور إرسال الطرد ويتوقف عند استقبال إشارة التأكيد الخاصة بالطرد التالي لهذا الطرد ومشكلتها أنها طريقة مكلفة.
2- يتم تشغيل المؤقت فور استلام إشارة التأكيد الخاصة بأحد الطرود في أحد الأطراف وذلك لأن هذه الإشارة تدل على رقم الطرد المنتظر من الطرف المرسل لها.
7) يعتمد طريقة النافذة المتزحلقة من أجل التحكم بالدفق.
8) يعتمد على نافذة الاختناق لتجنب اختناق الشبكة. هناك عدة طرق لضبط نافذة الاختناق تعتمد على خوارزم التحكم في الاختناق المستخدم مثل الزيادة الخطية و النقصان الضربي.