# ترجمة عنوان الشبكة

ترجمة عُنوان الشَّبكة (بالإنجليزية: Network Address Translation)‏ اختصاراً NAT، هو مصطلح يُستعمل لوصف عدد من الآليات التي تستخدم لتبديل مُعرِّفات شبكيَّة، مثل عنوان بروتوكول الإنترنت أو أرقام المنافذ، في رزم البيانات اللاتي تتنقل بين نطاقي عناوين مختلفين يسميان النطاق الداخلي والخارجيّ. طُوِّرت هذه الآلية في عام 1994م بصفتها جُزءاً من الاستراتيجية قصيرة الأمد لمعالجة مشكلة استنفاد عناوين بروتوكول الإنترنت.
ترجمة عنوان الشبكة ليست بروتوكولاً بل هي آليَّة عمل، تحصل في موجه يربط بين نطاقي عناوين. تسبق ترجمة العناوين عملية تهيئة للموجه، قد يُزوَّد فيها بثنائيات من المُعرفات، تضمُّ شطراً من النطاق الداخلي وشطراً من النطاق الخارجي، وقد يزود بنهجٍ وشروطٍ مُحددة لتشكيل الثنائيات آليَّاً ويحدد أيضاً الاتجاه الذي يُسمح فيه بإنشاء جلسة الترجمة. يراقب الموجه بعدها حركة البيانات بين النطاقين، ويبدأ بإنشاء جلسة ترجمة وفقاً للشروط متى ما توافقت مُعرفات رزمة بيانات ما مع أحد الثنائيات، وتستمر عملية الترجمة بعد ذلك على رزم الجلسة المتدفقة بكلا الاتجاهين كُلِّها، وتُغلق الجلسة لاحقاً، وتتوقف عملية الترجمة بعدها.
تُصنَّف هذه الآلية إلى أنواع وفقاً لطريقة تشكيل ثنائيات المُعرِّفات وللاتجاه الذي يُسمح فيه بإنشاء الجلسة، وأول هذه الأنواع هو الترجمة الأساسيَّة، وهي طريقة يُمكن فيها إعداد ثنائيات ثابتة البِنية من عناوين بروتوكول الإنترنت بين النطاقين، وثانيها هو الترجمة المُتغيَّرة، وفيها يُحدد فضاءٌ للعناوين لكل نطاق، ويجري تشكيل ثنائياتٍ من النطاقين آليَّاً، وثالثُها هو ترجمة العناوين وأرقام المنافذ، وفيها تشمل الثنائيات أيضاً أرقام منافذَ بين النطاقين، وتنضوي الأنواع الثلاثة تحت تصنيف واحد هو الترجمة التقليديَّة، وفيها يمكن إنشاء الجلسة باتجاه واحد فقط، وغالباً ما يكون من النطاق الداخلي إلى الخارجي. ومن الأنواع أيضاً الترجمة ثُنائِيَّة الاتجاه، وهي تستعمل إحدى تقنيات الترجمة التقليديَّة، ولكنَّها تسمح بإنشاء الجلسات بكلا الاتجاهين. في جميع ما سبق، يُمكن أن تترجم مُعرِّفات مصدر الرزمة أو مُعرفات وجهتها، وفقاً لاتجاه حركة الرزمة، ولكن يوجد نوعٌ آخر يسمح بإجراء الترجمة للإثنين معاً، ويُسمَّى بالترجمة المُضاعَفة.
توجد مُشكلات عديدة في تطبيق هذه الآليَّة، منها ما هو فلسفيٌ في طبيعته ومنها ما هو تقنيّ. أمَّا الفلسفيّ، ففيه تُحلُّ هذه التقنية بمبدأ الطرفين، وهو أحد المبادئ الرئيسة التي قامت الإنترنت على أساسها. وأمَّا التقنيّ، فمثاله اعتماد تطبيقات عديدة في عملها على المُعرفات التي يجري تبديلها، ويتطلب حل إشكالٍ كهذا إجراء تغيرات عديدة أخرى في ترويسات بروتوكولات هذه التطبيقات. يُثار جدلٌ لم يُحسَم حول جدوى استخدام هذه الآليَّة مع الإصدار السادس من بروتوكول الإنترنت.

## خلفية عامة
### الإصدار الرابع من بروتوكول الإنترنت

الإصدار الرابع من بروتوكول الإنترنت (بالإنجليزية: Internet Protocol version 4 اختصاراً IPv4)‏ هو بروتوكول تشبيك يعمل في طبقة الشبكة بحسب نموذج الاتصالات المعياري. طوّر هذا البروتوكول في عام 1981م كجزء من عمل وكالة مشاريع البحوث المتطورة الدفاعية، وكان أحد الركائز التي قامت شبكة الإنترنت على أساسها.
يُعنى هذا البروتوكول بوظيفتين أساسيتين هما العنونة والتقطيع. والعنونة هي منح مُعرفات لتمييز مضيف أو مجموعة من المضيفين في الشبكة المحلية أو في الإنترنت، ويُسمَّى العنوان الممنوح عنوان برتوكول الإنترنت. قد يُستخدم العنوان لتمييز مُضيفٍ ما بشكلٍ فريد بعينه، أو لتحديد أعضاء مجموعة من المضيفين الذين يستضيفون العنوان في الوقت نفسه، ولا مانع من استضافة المُضيف لأكثر من عنوان بروتوكول إنترنت في الوقت نفسه.
يُعرِّف الإصدار الرابع من بروتوكول الإنترنت فضاءً من العناوين يبلغ طول كل منها 32 بتاً، وقسِّم هذا الفضاء حسب العنونة الصنفية إلى عدد من الأصناف على أساس رياضي، وشمل الصنف الأول، والذي يُسمّى الصنف A، جميع العناوين التي تبدأ بالبت (0) في الخانة الأكثر أهمية، وقُسِّم فضاء هذا الصنف إلى 128 فضاءً جزئياً في كل منها 16777216. أما فضاء الصنف B، فضم جميع العناوين التي تبدأ بالبتين (10)، وقُسِّم فضاء هذا الصنف إلى 16384 فضاءً جزئياً في كل منها 65536 عنواناً. وأما فضاء الصنف C، فضم جميع العناوين التي تبدأ بالبتات (110)، ثم قسم هذا الفضاء إلى 2097152 فضاءً جزئياً في كل منها 255 عنواناً. كما اقتطع من الفضاء الأصلي فضاء مخصص للبث المجموعاتي، وهو الفضاء الذي تبدأ جميع عناوينه بالبتات (1110)، في حين حجز الفضاء الذي تبدأ عناوينه بالبتات (1111) لاستخدامات مستقبلية. بالإجمال، يوجد 2$^{32}$ عنواناً أي ما يعادل تقريباً 10$^9$x 4.3 عنواناً في فضاء الإصدار الرابع من بروتوكول الإنترنت.

### استنفاد فضاء عناوين الإصدار الرابع

استنفاد فضاء عناوين الإصدار الرابع (بالإنجليزية: IPv4 address space exhaustion)‏ هو نضوب العناوين الحرة في فضاء الإصدار الرابع من بروتوكول الإنترنت. بدأت هذه المشكلة في مطلع التسعينات مع انتشار الاستخدام التجاري للإنترنت، حيث لوحظ نمو معدل استهلاك فضاء الإصدار الرابع من بروتوكول الإنترنت بشكل أسي، وكانت التوقعات تشير إلى استنفاد الفضاء كاملاً في منتصف التسعينات من القرن العشرين.
شكَّلت مجموعة مهندسي الإنترنت مجموعة عمل التوجيه والعنونة والمعروفة اختصاراً باسم رُوْد (بالإنجليزية: Routing and Addressing اختصاراً ROAD)‏ لمعالجة هذه المشكلة، حددت هذه المجموعة ثلاث مشكلات رئيسة ستعيق نمو الإنترنت في المدى القصير والمتوسط، وهي كالتالي:
* استنفاد فضاء عناوين الصنف B، وهذه هي نتيجة لعدم وجود فضاء عناوين يناسب مؤسسة متوسطة الحجم، فإمَّا فضاء الصنف C القياسي، الذي يضم 256 عنواناً فقط، أو فضاء الصنف A القياسي الذي يضم ملايين العناوين.
* نمو جداول التوجيه في موجهات الإنترنت لتصبح بجاجة إلى قدرات معالجة غير متوافرة بالبرمجيات أو المعدات المتوافرة.
* استنفاد فضاء عناوين الإصدار الرابع نهائياً.
وُصفت المشكلتان الأولى والثانية بأنهما قصيرتا الأمد، وكان من المتوقع استفحالهما في الفترة بين العامين 1993 و1995م، على عكس المشكلة الثالثة التي وُصِفت بأنَّها طويلة الأمد. من أجل المشكلتين الأولى والثانية، بدأت مجموعة رُوْد العمل على تطوير إستراتيجية قصيرة الأمد لحل هذه المشكلة، فطوَّرت تقنية التوجيه غير الصنفي بين النطاقات، التي نُشر مبدؤها في يونيو من العام 1992م في وثيقة طلب التعليقات RFC 1338، وفي شهر مايو من العام 1994م، طُوِّرت تقنية ترجمة عنوان الشبكة لتكون حلاً آخر قصير الأمد لمشكلة الاستنفاد، واعتمد هذا الحل اعتماداً رئيساً على استعمال أفضية عناوين محددة سُميت الشبكات الخاصةاستعمالاً غير فريد في عنونة الشبكات المحلية، والاقتصار على استعمال العناوين العامة عند النفاذ إلى الإنترنت فقط. أمَّا في إطار الاستراتيجية طويلة الأمد فقد طوِّر إصدار جديد من بروتوكول الإنترنت، هو الإصدار السادس من بروتوكول الإنترنت، نشر المعيار الأول للبروتوكول في شهر ديسمبر من العام 1995م ووصف بوثيقة طلب التعليقات RFC 1883.
كانت الحلول قصيرة الأمد شديدة الفعاليَّة، فأطالت من عمر الإصدار الرابع من بروتوكول الإنترنت لأكثر من عقدين من الزمن، ولكن الهيئة الناظمة لتحصيص فضاء الإصدار الرابع من بروتوكول الإنترنت، وهي أيانا، استنفدت الفضاء كاملاً في شهر يناير من العام 2011م.

### الشبكات الخاصة

الشبكات الخاصة (بالإنجليزية: Private network)‏ هي أفضية جزئيَّة من فضاء الإصدار الرابع من بروتوكول الإنترنت، وهي محجوزة من أجل الاستعمال المحلي فقط ولا يُعلن عنها في الإنترنت. حجزت أيانا، وهي الهيئة الناظمة لتحصيص فضاء بروتوكول الإنترنت، ثلاثة أفضية جزئية هي 10.0.0.0/8 و172.16.0.0/12 و192.168.0.0/16. يُسمَّى الفضاء الأول المجال ذي البتات الأربعة والعشرين (بالإنجليزية: 24 bit block)‏، والثاني بالمجال ذي البتات العشرين والثالث بالمجال ذي البتات الست عشرة، وهذه الأطوال هي أطوال قسم المُضيف في تمثيل البادئة للمجالات الثلاثة. يُكافِئ المجال الأول شبكة قياسية من الصنف A ويُكافئ الثاني 16 شبكة قياسية متتاليَّة من الصنف B، ويُكافِئ الثالث 256 شبكة جزئية قياسيَّة من الصنف C.
| اسم المجال | امتداد المجال | تمثيل البادئة (القناع) | طول قسم البادئة | طول قسم المضيف | عدد عناوين المجال | المُكافئ في العنونة الصنفيَّة |
| ذو البتات الأربعة والعشرين | 10.0.0.0 - 10.255.255.255 | 8/ (255.0.0.0) | 8 | 24 | 16777216 | فضاء قياسي من الصنف A |
| ذو البتات العشرين | 172.16.0.0 - 172.31.255.255 | 12/ (255.240.0.0) | 12 | 20 | 1048576 | 16 فضاء قياسي متتالٍ من الصنف B |
| ذو البتات الست عشرة | 192.168.0.0 - 192.168.255.255 | 16/ (255.255.0.0) | 16 | 16 | 65536 | 256 فضاء قياسي متتالٍ من الصنف C |

### أرقام المنافذ

رقم المنفذ (بالإنجليزية: Port number)‏ هو مُعرِّف رقمي يُستخدم لتمييز الاتصال وفق حزمة بروتوكولات الإنترنت، يبلغ طوله 16 بتاً أي بالإمكان توليد 2$^{16}$ = 65536 رقم منفذ متمايز. بصورةٍ عامَّةٍ، في شبكات البيانات، تخدم المنافذ غرضين أساسيين، أولهما إتاحة آلية للتمييز بين جلسات الاتصال المختلفة التي قد تجري بين طرفين، وثانيها مساعدة بروتوكول النقل في تحديد بروتوكول التطبيق الذي يستخدمه، ولهذا أهمية خاصة في عمليتي التغليف وفك التغليف. بالإضافة لذلك، يُستعمل رقم المنفذ جنباً إلى جنب مع عنوان بروتوكول الإنترنت لإنشاء مقبس الاتصال (بالإنجليزية: Socket)‏، ويمكن تمييز أي اتصال بشكل فريد وفقاً لقيم المقبسين على طرفيه.
يُقسَّم مجال أرقام المنافذ إلى ثلاث أقسام فرعيَّة هي: أرقام منافذ النظام ومجالها (0-1023)، وأرقام منافذ المستخدم ومجالها (1024-49151)، وأرقام المنافذ الخاصة (49152-65535). تشرف المجموعة التوجيهية لهندسة الإنترنت (IESG) على منح أرقام منافذ النظام، في حين تدير هيئة أرقام الإنترنت المُخصصة، أي أيانا، عملية منح أرقام منافذ المستخدم، وأمَّا أرقام المنافذ الخاصة فلا تُمنح.

## الوصف
### تعاريف واصطلاحات

تُعرِّف وثيقة طلب التعليقات RFC 2663، المعنونة: «اعتبارات واصطلاحات لترجمة عنوان الشبكة» المفاهيم التاليَّة:
* نطاق عناوين (بالإنجليزية: Address realm)‏: هو قطاع من الشبكة تُمنح عناوين بروتوكول الإنترنت فيه للمُضيفين بشكلٍ فريد، أي لا يمكن أن يُمنح مُضيفان نفس العنوان في هذا النطاق.
* نطاق العناوين الخارجي: هو نطاق عناوين تديره أيانا أو سجلات إنترنت أدنى في هرمية تحصيص العناوين.
* نطاق العناوين الداخلي: هو نطاق عناوين خاصَّة، ويمكن استعمال نطاقات كهذه محليَّاً من قِبَل أكثر من مُنظمة في الوقت نفسه وبشكل مستقلٍ، أي من غير مراجعة هيئة تحصيص العناوين أو سجلات الإنترنت الإقليمية.
* التوجيه غير المرئيّ (بالإنجليزية: Transparent routing)‏: هو توجيهٌ رزم البيانات بين نطاقي عناوين مختلفين، أي داخليّ وخارجيّ. ويشمل ذلك قيام الموجه الذي يُجري عملية الترجمة بتغيير محتويات ترويسة بروتوكول الإنترنت وبروتوكول التحكم بالنقل. وهو يختلف عن التوجيه التقليدي الذي يحصل ضمن نطاق عناوين واحد. يُوصف هذا التوجيه بأنه غير مرئي لأنه غير مُلاحَظ من قبل المُضيفين، فهم لا يُدركون حصوله، ولا يدركون تغيير محتويات الترويسة الحاصل في أثناء عملية الترجمة.
* الجلسة (بالإنجليزية: Session)‏ الجلسة هي حركة البيانات التي تخضع لعملية الترجمة. واتجاه الجلسة فهو اتجاه هذه الحركة عند البدء، أي من أيِّ نطاق بدأت؟ ونحو أيّ نطاقٍ تتجه؟ بعد إنشاء الجلسة، فإن حركة البيانات ستشمل تدفقاً لرزم بيانات بروتوكول الإنترنت بالاتجاهين، بغض النظر عن اتجاه الجلسة. تجري ترجمة عناوين الشبكة على الجلسة كاملةً، ويحدد اتجاه تدفق الجلسة باتجاه تدفق أول رزمة بيانات فيها.
* الموجه المُترجِم: هو الموجه الذي يُنجِز عملية الترجمة.

### مبدأ العمل

تعمل ترجمة عناوين الشبكة على تغيير قيم حقول محددة في ترويسات رزم البيانات التي تمر عبر الموجه المُترجِم، يُمكن أن تحصل عملية الترجمة على رزم البيانات التي تعبر الموجه بكلا الاتجاهين. تشمل الحقول التي يُبدل محتواها حقول عناوين المصدر أو الوجهة أو كليهما في ترويسة بروتوكول الإنترنت وحقول عناوين رقم منفذ المصدر أو الوجهة أو كليهما في ترويسة بروتوكول النقل المستعمل، وحقل معرِّف الاستعلام في ترويسة بروتوكول رسائل التحكم في الإنترنت. يُسبب تغيير محتوى ترويسة بروتوكول الإنترنت أو بروتوكول النقل المستعمل الحاجة إلى إعادة حساب قيمة حقل التحقق الجمعي (بالإنجليزية: Checksum)‏ في أي ترويسة جرى تعديل قيمة أحد حقولها.
تعمل تقنية ترجمة عنوان الشبكة عبر آلية مكونة من ثلاث مراحل كما يأتي:
* مرحلة التهيئة: وتشمل بناء ثنائيات من محددات الاتصال، أي عناوين إنترنت أو أرقام منافذ أو الاثنين معاً، وتتألف كل ثنائية من جزأين: جزءٌ من النطاق الداخليّ وجزءٌ من النطاق الخارجيّ، وتشمل عملية التهيئة أيضاً تحديد الاتجاه الذي يُسمح فيه بإنشاء الجلسة. بعد ذلك، ترتبط كل ثنائية بعلمٍ لبيان حالتها، ويكون العلم مرفوعاً، أي قيمته مساوية للواحد، فقط إن وجدت جلسة جارية ترتبط بهذه الثنائية، وبخلاف ذلك فقيمته صفريَّة.
* مرحلة المراقبة والترجمة: ويجري فيها مراقبة حركة البيانات عبر المُوجِّه، فإذا مرَّت رزمة بيانات كانت معلومات الترويسة فيها متوافقة مع أحد الثنائيات المهيَّئة في المرحلة السابقة، وكان اتجاه حركة الرزمة متوافق مع اتجاه إنشاء الجلسة أيضاً، فإن جلسة جديدة ستبدأ، ويُبدِّل الموجه قيم حقول الترويسة بما يتوافق مع التهيئة، ويُرفع علم بيان الحالة المرتبط بالثنائية ذات الصلة، ويلي ذلك إجراء الترجمة على رزم بيانات الجلسة جميعها وبالاتجاهين.
* مرحلة التحرير: عندما تُغلق الجلسة، يُخفَض علم بيان الحالة، ويُحرر زوجا العناوين اللذان يشكلان الثنائية، وتعاد الثنائية ثانيةً إلى وضع المراقبة.

## أنماط الترجمة

يتضمن أبسط أشكال الترجمة تبديل عنوان مصدر رزمة بروتوكول الإنترنت، وتحديداً استبدال عنوان المصدر الخاصّ المحليّ بعنوان فريد عالميَّاً، وتبدو الرزمة بعد ذلك وكأنَّها قادمة من العنوان الجديد. وفي شكل أكثر تعقيداً، بإمكان عملية الترجمة أن تستبدل عنوان مصدر الرزم القادمة من شبكة الإنترنت إلى شبكة محليَّة خاصَّة، فتبدو بعد ذلك كأنَّها قادمة من وجهة محليَّة فيها، ويُمكن أيضاً أن تشمل العملية استبدال عنواني المصدر والوجهة معاً.

### الترجمة التقليدية

ترجمة العناوين التقليدية (بالإنجليزية: Traditional NAT)‏: هي الشكل الأبسط من ترجمة العناوين، وهي تسمح لمُضيفي عناوين نطاق داخليّ بالاتصال مع مضيفي عناوين نطاق خارجيّ. تحصل عملية الترجمة في مُوجِّه يصل بين النطاقين، وينجز التوجيه غير المرئي بالنسبة للمُضيفين. في هذا النوع من الترجمة، تكون الجلسات المنشأة وحيدة الاتجاه، أي بالإمكان إنشاؤها باتجاه واحد فقط، وغالباً ما يكون من النطاق الداخلي نحو الخارجي. يجب الانتباه إلى أن حركة رزم بيانات وعملية ترجمة العناوين بعد إنشاء الجلسة تكون بكلا الاتجاهين، أي أن الشرط السابق هو لاتجاه إنشاء الجلسة وليس لحركة رزم البيانات فيها.
تشمل ترجمة العناوين التقليدية النمطين التاليين:
* الترجمة الأساسية لعناوين الشبكة (بالإنجليزية: Basic NAT)‏ وتحصل عملية الترجمة فيها على عناوين مصادر ووجهات رزم بروتوكول الإنترنت. وتُصنَّف إلى نوعين وفقاً للطريقة التي يجري فيها تحديد ثنائيات العناوين التي تترجم بين النطاقين الداخليّ والخارجيّ، وهما:
** ترجمة عناوين الشبكة الثابتة (بالإنجليزية: Static NAT)‏
** ترجمة عناوين الشبكة المُتغيَّرة (بالإنجليزية: Dynamic NAT)‏
* ترجمة عناوين الشبكة وأرقام المنافذ (بالإنجليزية: Network Address Port translation اختصاراً NAPT)‏

#### الثابتة

في الترجمة الثابتة، يُهيَّأ المُوجِّه المُترجِم بعددٍ صحيح N من ثنائيات عناوين بروتوكول الإنترنت، أي (X$_1$,Y$_1$) و (X$_2$,Y$_2$) حتى (X$_N$,Y$_N$)، حيث X هو عنوان بروتوكول الإنترنت من نطاق العناوين الداخليّ وY هو عنوان بروتوكول إنترنت من نطاق العناوين الخارجيّ. بالإضافة لذلك، يُهيَّأ المُوجِّه أيضاً بالاتجاه المسموح لإنشاء الجلسة، وهو في حالة الترجمة التقليديَّة من النطاق الداخليّ إلى الخارجي. يراقب المُوجِّه بعدها حركة البيانات المارة عبره لأجل إنشاء جلسة ترجمة متوافقة مع ثنائيات العناوين والاتجاه المسموح. بعد الإنشاء، يُعدِّل المُوجِّه عنوان المصدر في رزم البيانات القادمة من النطاق الداخلي ويغير قيمته إلى العنوان الخارجيَّ وفقاً لقيم الثنائيات التي هُيِّئ بها، أما في الرزم القادمة من النطاق الخارجي إلى الموجه، والتي تكون وجهتها العنوان الخارجي، فيُعدِّل عنوان الوجهة فيها ويُغيّره إلى العنوان الداخلي وفقاً لقيم الثنائيات السابقة نفسها، وذلك بشرط أن تكون الجلسة قد أُنشِئَت قبلاً.
يُوصف هذا النوع من الترجمة بأنَّه ثابِت، لأنَّ ثنائيات العناوين التي تجري الترجمة بمقتضاها ثابتة البِنية لا تتغير آليّاً، ويُوصَف أيضاً بأنَّه ترجمةُ واحدٍ إلى واحدٍ (بالإنجليزية: One-to-one)‏ لأنَّ المُوجِّه يترجم عنواناً خاصَّاً واحداً من النطاق الداخليّ إلى عنوان عام واحد من النطاق الخارجيّ والعكس بالعكس.

#### المتغيرة

تُنْشَأ جلسات الترجمة المُتغيَّرة انطلاقاً من النطاق الداخليّ فقط، ويشترط لتنفيذها توفُّر عناوين من النطاق الخارجي (Y1... YN)، بالإضافة إلى مجموعة من عناوين النطاق الداخلي (X$_1$... X$_M$) حيث M وN هي أعداد صحيحة موجبة تُمثِّل عدد العناوين في النطاقين الداخليّ والخارجيّ على الترتيب. ويكون شرط بدء الجلسة هو أن ينتمي عنوان مصدر الرزمة إلى النطاق الداخليّ، أي (X$_1$... X$_M$). وعند بدء جلسة ترجمة، انطلاقاً من النطاق الداخلي، يختار المُوجِّه الذي ينفذ عملية الترجمة عنوان ما من مجموعة عناوين الخارجي Y$_k$ ويربطها مع عنوان مصدر الرزمة X$_i$، ثُمّ يُشكِّل منها ثنائية (X$_i$,Y$_k$) آليَّاً، ويحتفظ به في جدول الترجمة الآلية، وتجري عملية تبديل عناوين مصادر الرزم البيانات في الجلسة ذات الصلة بناءً على قيم هذه الثنائية، وعند إغلاق الجلسة، يجري تحرير العناوين لإعادة استخدامها مرة أخرى في تشكيل ثنائيات جديدة. يكون زوجا أي ثنائية غير ثابتين، أي بالإمكان أن يرتبط أحد الشطرين مع عدة أشطر أخرى، في جلسات متنوعة متتالية، والعكس بالعكس فيما يخص الزوج الآخر، وذلك عوضاً عن اعتماد ثنائيات محددة الأشطر، كما هو الحال في الترجمة الثابتة.
قد تكون عناوين المجموعتين السابقتين مُختلِفة العدد، وغالباً ما تكون أعداد العناوين المتاحة لتشكيل الثنائيات في النطاق الداخليّ أكبر من تلك المتاحة في النطاق الخارجيّ، ويبني المُوجِّه عندها الثنائيات من عناوين النطاقين وفق ما سبق حتى استنفاد النطاق الأصغر حجماً، ولا يمكن بعدها إنشاء أيّ جلسةٍ جديدةٍ حتى يتحرر وة جا ثنائية محجوزة من جلسةٍ سابقةٍ. تُوصف هذه الترجمة أيضاً بأنَّها ترجمة واحد إلى واحد، لأنَّها تقوم بترجمة عنوان خاص واحد من النطاق الداخلي إلى عنوان عام واحد من النطاق الخارجي.

#### العناوين وأرقام المنافذ

في ترجمة أرقام المنافذ، ومن أجل الرزم الواردة إلى الموجه من نطاق العناوين الداخليّ باتجاه النطاق الخارجيّ، يُبدَّل عنوان المصدر في الرزمة X مع رقم منفذ المصدر فيها x بعنوان مصدر جديد هو Y ورقم منفذ آخر هو y، أخذاً بالحسبان أن العنوان X من النطاق الداخلي والعنوان Y هو عنوان من النطاق الخارجي، ويُعبَّر عن عملية الترجمة السابقة بالشكل: X:x → Y:y. يمكن أن تجري العملية السابقة على فضاء محدد من النطاقين الداخلي والخارجي، وأن تُحدَد الثنائيات تحديداً ثابتاً أو آليّ.
يوجد شكلٌ خاصٌّ من ترجمة أرقام المنافذ، يُسمَّى التحميل الزائد لترجمة أرقام المنافذ (بالإنجليزية: PAT overloading)‏، وفيها يُستخدم عنوان مصدر واحد فقط من النطاق الخارجيّ في عملية الترجمة. فلو كانت ثنائيات العناوين وأرقام المنافذ في النطاق الداخليّ هي X1:x1 وX2:x2 وX3:x3، وبدأ كل منها جلسةً ترجمة، فإنَّها ستترجم وفقاً لعملية التحميل الزائد إلى Y:y1 وY:y2 وY:y3 على الترتيب. ويمكن لهذه الطريقة من الترجمة أن تسمح، نظريَّاً، بترجمة ما يزيد عن 65 ألفاً من العناوين الداخلية باستعمال عنوان خارجيّ وحيد، وتقلل بذلك من استنفاد فضاء عناوين الإصدار الرابع من بروتوكول الإنترنت. يُمكن أن تجري عملية الترجمة على رسائل المعلومات في ترويسة بروتوكول رسائل التحكم في الإنترنت بالطريقة السابقة نفسها أيضاً.

### الترجمة ثنائية الاتجاه

ترجمة العناوين ثُنائيَّة الاتجاه (بالإنجليزية: Bidirectional NAT أو Two-way NAT)‏ وهي شكل من أشكال ترجمة عناوين الشبكة يسمح بإنشاء الجلسات بدءاً من مُضيفين في نطاقي العناوين كليهما، أي انطلاقاً من النطاق الداخليّ والخارجيّ. مع أخذ ذلك بالحسبان، فإنَّ عملية الترجمة ثُنائيَّة الاتجاه تخضع لنفس القواعد المستعملة في الترجمة التقليديَّة سواءً لجهة كيفيَّة إنشاء ثنائيات العناوين التي ستُترجم أو لجهة ما يجري ترجمته، أي عناوين أو أرقام منافذ أو كليهما.

### الترجمة المُضاعفة

ترجمة العناوين المضاعفة (بالإنجليزية: Twice NAT)‏ وهي شكل من أشكال ترجمة عناوين الشبكة، وفيه يُعدَّل عنوانا المصدر والوجهة معاً في رزمة البيانات التي يجري ترجمتها، وهي تُوصف بالمُضاعفة تمييزاً لها عن الترجمة التقليديَّة وعن الترجمة ثُنائيَّة الاتجاه.
تضيف هذه الترجمة بُعداً جديداً لتصنيف العناوين، وهو النطاق الذي تستخدم فيه العناوين، فإذا كان العنوان مستخدماً في نطاقه فهو عنوان محليّ، وإن كان مُستخدماً خارج نطاقه فهو عنوان عالميّ، وبإضافة هذا للتصنيف الذي يقسم العناوين على أساس موقع مُضيفها يمكن تعريف التصانيف التالية:
* العنوان الداخليّ المحليّ: وهو عنوان مستضاف في النطاق الداخليّ، وهو يُستعمل في النطاق نفسه.
* العنوان الداخليّ العالميّ: وهو عنوان مستضاف في النطاق الداخليّ وهو يُستعمل خارج النطاق. أي هو عنوان لمُضيف داخليّ، ولكنَّه مرئيٌّ في النطاق الخارجيّ.
* العنوان الخارجيّ المحليّ: وهو عنوان مستضاف في النطاق الخارجيّ، وهو يُستعمل في النطاق نفسه.
* العنوان الخارجيّ العالميّ: وهو عنوان مستضاف في النطاق الخارجيّ وهو يُستعمل خارج النطاق. أي هو عنوان لمُضيف خارجيّ، ولكنَّه مرئيٌّ من النطاق الداخليّ.
يُهيَّأ الموجه بثنائيتين من عناوين المصدر والوجهة، الأولى هي (X$_1$,Y$_1$) حيث X$_1$ هو عنوان داخلي محلي وهو عنوان مصدر الرزمة التي ستترجم، وY$_1$ هو عنوان داخلي عالمي، وهو عنوان وجهة الرزمة التي ستتُرجم. والثانية هي (X$_2$,Y$_2$) حيث X$_2$ هو عنوان داخلي عالمي وهو عنوان مصدر الرزمة بعد الترجمة، وY$_2$ هو عنوان خارجي عالمي، وهو عنوان وجهة الرزمة بعد الترجمة. بعد ذلك، إذا وردت للموجه رزمة من النطاق الداخلي نحو النطاق الخارجي، وكان عنوان مصدرها هو X$_1$ وعنوان وجهتها هو Y$_1$، فإن الموجه سيعدل العنوانين إلى X$_2$ وY$_2$ على الترتيب، أي (X$_2$,Y$_2$) → (X$_1$,Y$_1$).

## اعتبارات إضافية
### طبقة الشبكة
#### بروتوكول رسائل التحكم في الإنترنت

بروتوكول رسائل التحكم في شبكة الإنترنت هو (بالإنجليزية: Internet Control Message Protocol اختصاراً ICMP)‏ هو بروتوكول تبليغ عن الأخطاء يعمل مع بروتوكول الإنترنت ويقدّم مجموعة من الوظائف التي تُستخدم في إدارة الشبكة والتحري عن الأخطاء فيها، أشهرها أمر التحقق من الاتصال Ping الذي يُستعمل للتحقق من اتصال مضيف ما مع الشبكة. وصف هذا البروتوكول في وثيقة طلب التعليقات RFC 792.
تُصنَّف رسائل هذا البروتوكول إلى صنفين: رسائل الأخطاء ورسائل الإعلام. قد تحتوي رسائل الأخطاء على ترويسة بروتوكول إنترنت كاملة أو جزئية تضمّ فيها عناوين بروتوكول إنترنت، وإذا انتقلت الرسالة بين نطاقين، وأجريت ترجمة عناوين الشبكة عليها، يجب ترجمة عناوين الشبكة المحمولة فيها أيضاً. أما في رسائل الإعلام، فيجب ترجمة مُعرِّف الاستعلام بشكل مشابه لترجمة أرقام المنافذ. في كلتا الحالتين، ونتيجة لتغيير محتويات الترويسة، يجب إعادة حساب حقل التحقق الجمعي فيها.
وُصِفت المتطلبات السلوكية اللازمة لعمل ترجمة عنوان الشبكة مع بروتوكول رسائل التحكم في الإنترنت في وثيقة طلب التعليقات RFC 5508.

#### الإصدار السادس من بروتوكول الإنترنت

يثار الجدل حول استعمال ترجمة عنوان الشبكة مع الإصدار السادس من بروتوكول الإنترنت، يحاجج البعض أن استعمال الترجمة يلغي مبدأً أساسيَّاً من المبادئ التي قامت عليها الإنترنت، وهو مبدأ الطرفين، ويقول بأنَّ تطوير واستعمال ترجمة عنوان الشبكة كان حلاً آنيَّاً لمشكلة استنفاد فضاء عناوين الإصدار الرابع من بروتوكول الإنترنت. أمَّا الفريق المؤيد للاستعمال فيجادل بأنَّ استعمال الترجمة يُقدِّم عددًا من المنافع والتسهيلات لا بديل آخر لها أو يصعب التخليّ عنها.
يشير الفريق المعارض لاستخدام تقنية الترجمة مع الإصدار السادس إلى زوال السبب الذي أدى إلى تطويرها أساساً، وهو محدودية فضاء عناوين الإصدار الرابع من بروتوكول الإنترنت وسرعة استنفاذه، ويستندون في دفاعهم إلى حقيقة أن تطبيق ترجمة عناوين الشبكة تخلق حاجزاً يوضع في وجه شفافية الشبكة، ولذلك فإنَّ وثيقة طلب التعليقات RFC 4924 توصي بتجنب استعمال ترجمة عنوان الشبكة مع الإصدار السادس من بروتوكول الإنترنت ما دام ذلك ممكناً.
تُقدِّم ترجمة عناوين الشبكة مجموعةً من المنافع والتسهيلات المرتبطة بمسائل العنونة في الإصدار الرابع من بروتوكول الإنترنت، ولكنَّها تصلح أيضاً عند العنونة بالإصدار السادس منه، ومنها على سبيل المثال تجنُّب عملية إعادة العنونة إذا انتقلت مؤسسة ما من موقع جغرافي إلى آخر، وعندها يمكن للمؤسسة أن تحافظ على نطاق العناوين القديم بوصفه نطاقاً داخليَّاً محليَّاً، وتتصل مع العالم الخارجي بوصفه نطاقاً خارجيَّاً عبر عملية ترجمة عناوين الشبكة. ومنها أيضاً مسألة المؤسسات مُتعدِدة المواقع، والتي تكون أماكن استضافتها مُتباعدة جغرافيَّاً لكنَّ المُضيفين فيها معنونون بفضاء العناوين ذاته، ويمكن في حالة كهذه، السماح للمضيفين بتبادل البيانات فيما بينهم باستعمال ترجمة العناوين المُضاعَفة دون الحاجة لإعادة العنونة. ومنها أيضاً مسألة توحيد إعدادات التهيئة، فلو عُنونت الشبكات المحليَّة كلها باستعمال فضاء العناوين الخاصّ نفسه واتصلت مع العالم الخارجي عبر عملية ترجمة مُوحَّدة، لأمكن إعداد تهيئة مُوحدة تُستعمل في أي شبكة محليَّة مُعنونة بذلك الفضاء.
طُوِّرت تقنية خاصة لترجمة عناوين الشبكة من أجل الإصدار السادس من بروتوكول الإنترنت، ووصفت في الوثيقة RFC 6296، ولكنّ العمل ظل في الإطار التجريبيّ ولم ينتقل إلى مرحلة المعيار الرسمي.

### طبقة النقل
#### بروتوكول التحكم بالإرسال

بروتوكول التحكم بالنقل (بالإنجليزية: Transprot control Protocol اختصاراً TCP)‏ هو بروتوكول نقل يؤمن توصيلاً موثوقاً للبيانات عبر قنوات اتصال مهيأ. تعمل آلية ترجمة العناوين على مراقبة محتويات ترويسة البروتوكول الموجودة داخل رزم البيانات المُتبادلة بين طرفي الاتصال من أجل تحديد بداية الجلسة. وفقاً لبروتوكول التحكم بالنقل، يُنشَئ الاتصال بين طرفين بعد إنجاز عملية المصافحة الثلاثيّة، وهي تشمل تبادلاً لمعلومات ذات صلة بالاتصال، مثل رقم التتابع. يمكن تحديد حصول المصافحة الثلاثية من خلال تمييز نمط محدد لقيم علمين من أعلام البروتوكول موجودين في ترويسته داخل الرسائل المُتبادَلة بين الطرفين. وهذان العلمان هما علما المُزامنة SYN وإشعار التأكيد ACK.
تراقب آلية الترجمة محتويات الترويسة مراقبةً مُشابهةً لما سبق، لتحديد نهاية الجلسة. يُمكن تحديد النهاية، إذا كانت بالتراضي، من خلال مراقبة قيم علم النهاية FIN في ترويسة البروتوكول، أو من مراقبة قيمة علم إعادة الضبط RST في حال كان الإنهاء قسريَّاً ومباشراً. تصف الوثيقة RFC 5382 المتطلبات السلوكية اللازمة لآلية ترجمة عنوان الشبكة من أجل العمل الصحيح مع بروتوكول التحكم بالنقل.
تُحدِّد الوثيقة السابقة أيضاً كيفية التعامل مع حالات انقطاع الاتصال، وهي الحالات التي يتوقف فيها الطرف الآخر عن المشاركة في الجلسة من غير إنهائها، أو تلك التي يتعذر فيها تحديد حالة الطرف الآخر، ويجب على المُوجِّه الذي يترجم العناوين عندها أن ينهي الجلسة من تلقاء ذاته. تحدد الوثيقة زمناً للانتظار في حال غياب أي نشاط من الطرف الآخر وهو 4 دقائق بعد آخر نشاط إذا كان إنشاء الاتصال قد بدأ ولكنَّه لم يكتمل، وساعتان وأربع دقائق إذا كان الاتصال مُنشأً ونشيطاً. بالإضافة لذلك، تتناول الوثيقة أيضاً كيفية التعامل مع حالة إنشاء الاتصال بين الأقران، وهي حالة خاصَّة يحاول فيها طرفا الاتصال إنشاءَه في الوقت نفسه، ويكون التغيير في تتابع قيم الأعلام مُختلفاً عن النمط الموجود في المصافحة الثلاثيَّة.

#### بروتوكول حزم بيانات المُستخدم

بروتوكول حزم بيانات المستخدم (بالإنجليزية: User Datagram protocol اختصاراً UDP)‏ هو بروتوكول نقل غير موثوق يُؤمِّن اتصالاً لنقل البيانات عبر قنوات غير مهيأة. يدعم هذا البروتوكول عملية نقل البيانات من غير تأسيس اتصال، وهو لا يطلب إشعاراً لتأكيد استلام البيانات المُرسَلة، ولذلك تكون ترويسته أصغر حجماً. نتيجةً لذلك، لا أعلام في الترويسة تساعد على تحديد بداية ونهاية الجلسة، فهي الجلسة عند وصول أول رزمة بيانات تُحدد محتوياتها اتصالاً جديداً، وتجري عملية الترجمة عليها بحسب التهيئة، ويُرفع علم بيان الحالة الخاص بثنائية المُعرفات المستخدم للدلالة على حجزه لمدة زمنية، هي دقيقتين على الأقل، وهي تُجدد آليَّاً كُلما استقبل المُوجِّه المُترجِم رزمةً جديدةً من نفس الجلسة، فإذا انتهت المدة ولم تستقبل أي رزمة بعدُ، عدّ المُوجه أن الاتصال مقطوعٌ، وُحرَّر زوجي المُعرِّفات المُستخدمين في الترجمة.
تظهر مشكلة مُرتبطة بعملية تقطيع رزم البيانات عند استعمال البروتوكول، فالقطع الناتجة، جميعها خلا الأولى، لا تحتوي ترويسة بروتوكول النقل، وبسبب ذلك، لا يُمكن إجراء عملية ترجمة أرقام المنافذ ما لم يُعاد تجميع الرزمة الأصليَّة كاملةً. في هذه الحالة، غالباً ما يجري التخلص من الرزمة من غير إجراء عملية الترجمة، وتحصل هذه المشكلة نفسها لو اُستخدم بروتوكول التحكم بالإرسال أيضاً.

#### بروتوكولات أخرى

تستعمل بروتوكولات نقل أخرى في شبكات البيانات وهي أقل شيوعاً من البروتوكولين السابقين، منها مثلاً بروتوكول التحكم بازدحام الرزم $^{[الإنجليزية]}$ DCCP الموصُوف بوثيقة طلب التعليقات RFC 4340. تصف الوثيقة 5597 RFC المتطلبات السلوكية اللازمة لاستعمال ترجمة عناوين الشبكة مع هذا البروتوكول. أمَّا بروتوكول التحكم بتدفق النقل SCTP فهو بروتوكول نقل طُوِّر أساساً لنقل رسائل التأشير الخاصة بشبكات الهاتف العامَّة عبر شبكة معنونة ببروتوكول الإنترنت، وله تطبيقاتٌ أخرى في مجال نقل الصوت عبر الإنترنت، وهو موصوف بالوثيقة 4960 RFC. لا يوجد وثيقة طلب تعليقات تصف المُتطلبات السلوكية لاستعمال ترجمة عناوين الشبكة معه، ولكن يتوفر مسودة لوثيقة صيغت في سنة 2009م، ولم تُصبِح معياراً رسميَّاً.

## مشكلات في التنفيذ

* تقطيع رزم البيانات: إذا قطعت رزم البيانات، فإن ترويسة بروتوكول النقل ستكون في أول قطعة فقط، ويُسبب هذا إشكالات في مراقبة الجلسة إذا كان بروتوكول النقل هو بروتوكول التحكم بالنقل. بالإضافة لذلك، أيَّاً كان بروتوكول النقل المُستعمل، لا يمكن تنفيذ ترجمة أرقام المنافذ في حال التقطيع، فجميع القطع الناتجة، ما خلا القطعة الأولى لا تحتوي على أرقام المنافذ أصلاً بسبب غياب ترويسة بروتوكول النقل فيها، ولا يمكن إجراء ترجمة أرقام المنافذ عليها.
* الاستعمال مع بروتوكول نقل الملفات: يستعمل بروتوكول نقل الملفات أمري Port وPASV في جلسة التحكم الخاصة بالحمولة من أجل تحديد عنوان بروتوكول الإنترنت ورقم المنفذ اللذان سوف يستعملان في جلسة نقل البيانات ويجري عملية نقلهما بعد ترميزهما بترمز آسكي. وتحصل المشكلة عندما يتغير طول العنوان فمثلاً العنوان: 10.0.0.1 يُرمَّز بخمسة محارف آسكي، بينما يُرمَّز العنوان 200.100.10.1 بتسع محارف. وهذا التغيير في الطول إشكالاً في قيمة رقم التتابع في ترويسة بروتوكول التحكم بالنقل، ويجب، بعد إجراء الترجمة، تحديث هذه القيمة أيضاً لتعكس التغيير الحاصل في الترويسات في رزمة البيانات المُترجَمة.
* التطبيقات المعتمدة على المُعرِّفات المترجمة: توجد مجموعة من التطبيقات اللاتي يعتمد عملها على عنوان بروتوكول الإنترنت أو أرقام المنافذ أو تحتويهما في موقع ما من ترويستها. وبالتالي، فإنَّ تبديل هذا العنوان بعملية الترجمة يُسبب مشكلة في عمل التطبيق، ويجب إجراء عملية التبديل في ترويسة بروتوكول التطبيق أيضاً، وللقيام بذلك تُستخدم تطبيقات خاصَّة تُهيأ في المُوجِّه المُترجِم بعملية الترجمة، وتسمَّى الواحدة منها البوابة على مستوى التطبيق (بالإنجليزية: Application level gateway اختصاراً ALG)‏. طرح حل آخر لهذه المشكلة وهو تخطي الترجمة (بالإنجليزية: NAT Traversal)‏ ويشمل عمل تطبيق ما في المضيفين للحصول على مُعرِّفات الطرف الآخر البعيد الذي يراد الاتصال معه، ثم إجراء التبديل اللازم في ترويسة بروتوكول التطبيق في المُضيف الذي يُرسل الرزمة قبل إرسالها لتجري ترجمة العناوين فيها. طُوِّرت مجموعة من البروتوكولات التي تتبنى هذا الحل أو شكلاً مُشتقَّاً عنه، أشهرها: بروتوكول خدمات تخطي جلسة ترجمة عنوان الشبكة $^{[الإنجليزية]}$ STUN وهو موصوف في الوثيقة RFC 5389، وبروتوكول تخطي الترجمة باستعمال المُرحلات $^{[الإنجليزية]}$ TURN وهو موصوف في الوثيقة RFC 5766.
* الحاجة لإعادة الحساب: ترجمة عنوان الشبكة هي آلية تتطلب حوسبة وقدرات معالجة بكثافة، فمن أجل كل رزمة يجري ترجمتها، يلزم إعادة حساب كل تحقق جمعيّ يشمل ما جرى تعديله، وهذا يتطلب قدرات معالجة وقد يُسبب تأخيراً في عملية توجيه الرزمة.

## هوامش

* ↑ العنوان الأصلي: (بالإنجليزية: IP Network Address Translator (NAT) Terminology and Considerations)‏.
* ↑ يُسمَّى هذا النطاق عدَّة أسماء أخرى أيضاً منها النطاق الخارجي (بالإنجليزية: Outside realm)‏ أو(بالإنجليزية: External realm)‏ والنطاق العام (بالإنجليزية: Public realm)‏ والنطاق العالمي (بالإنجليزية: Global realm)‏.
* ↑ يُسمَّى هذا النطاق عدَّة أسماء أخرى أيضاً منها: النطاق الداخلي (بالإنجليزية: Inside realm)‏ والنطاق الخاص (بالإنجليزية: Private realm)‏ والنطاق المحلي (بالإنجليزية: Local realm)‏.
* ↑ تُسمَّى أيضاً ترجمة عناوين الشبكة المتراكبة (بالإنجليزية: Overlapping NAT)‏، وهذا الاسم مأخوذ من أحد تطبيقات التقنية، وفيه يكون مجالا عناوين متراكبين، أحدهما في النطاق الخارجي والآخر في النطاق الداخلي، وتسمح هذه التقنية لمضيفي هذه العناوين المتباعدَين بالتواصل بعضهما مع بعض وبتبادل البيانات.
* ↑ يوجد لغطٌ في التسمية الإنجليزية جرى تجاوزه عند تعريب المصطلحات، فالأسماء المستعملة في المراجع المُعتمدة لوصف هذه التقنية لا تتوافق مع الأسماء الموجودة في المعيار الرسمي، وفيها يُشار إلى النطاق الداخلي باستعمال كلمة Local، وللنطاق الخارجي باستعمال كلمة Global، بدلاً من Inside وOutside المُستعملة في المعيار، ولكن هاتين الكلمتين، أي Inside وOutside، تُستعملان لتحديد النطاق الذي يستخدم فيه العنوان، وبذلك تكون العناوين في المراجع كما يأتي: الداخلي المحلي (بالإنجليزية: Inside local)‏ الداخلي العالمي (بالإنجليزية: Outside local)‏ الخارجي المحلي (بالإنجليزية: Inside Global)‏ الخارجي العالمي (بالإنجليزية: Inside Global)‏ وقد تُرجمت العناوين إلى العربية بتصرف للتوحيد مع المعيار الأصلي ولإزالة هذا اللبس.
* ↑ قد تتنوع قيمة مؤقت الانتظار بشكلٍ كبير وفقاً للتطبيق الذي يُنفِّذ ترجمة عناوين الشبكة، ولكن التوصيات المعياريَّة توصي بألا تقل هذه المدة عن دقيقتين، وتُحبِّذ قيمة 5 دقائق لها.
* ↑ وهذا اختصار من كلمة غير فاعل (بالإنجليزية: Passive)‏، وهو أمرٌ لمخدم بروتوكول نقل الملفات للانتظار ومراقبة الأوامر الواردة بحثاً عن رقم منفذ مُحدد من أجل إنشاء الاتصال، عوضاً عن الوضع الافتراضي الذي تبدأ فيه عملية بإنشاء الاتصال بعد استقبال أمر النقل مباشرةً.