صادق محبی
صادق محبی
خواندن ۶ دقیقه·۵ ماه پیش

این RFC چیه و چرا خوندنش مهمه؟

چیزی که در بسیاری از اپیزود های پادکست های جادی (رادیو گیک قدیم) به وفور دیده می شه همین مرور و خواندن RFC هاست. در این نوشتار کوتاه اول می خوایم ببینیم RFC چیه و چه اهمیتی داره و در آخر چندتا RFC بنیادی و خواندنی رو بهتون پیشنهاد می‌کنم.

تعاریف، نکات و آداب مطالعه

مقالات RFC مخفف Requests For Comments در واقع مستنداتی فنی مهندسی هستند که طی فرایند های دقیق و مشخصی نگاشته، تنظیم و توسط انجمن IETF تایید و منتشر می‌شوند.

انجمن IETF مخفف Internet Engineering Task Force در واقع انجمنی هستند که استاندارد های اینترنت رو مشخص می‌کنند. اعضای هیئت مدیره این انجمن که به صورت هیئت امنایی اداره می شه در حال حاظر ۵ نفر هستند. روند مشارکت و انتخاب اعضا، روال ها، همایش ها و فرایند های IETF نیز جالبه.

منبعی بهتر از خود سایت IETF برای آشنایی باهاشون پیدا نکردم. ازینجا می‌تونید شروع کنید و حتما گشتی در سایت انجمن بزنید، دست خالی برنمی گردید! در خود این سایت نیز توضیحات کاملی در خصوص RFC در این لینک آمده است که می‌تونید آنجا را نیز مرور کنید.

همان طور که می توان حدس زد، RFC ها مهم ترین خروجی IETF است چرا که با این ابزار، استاندارد های اینترنت را در کل دنیا مشخص و تعیین می‌کند. خواندن RFC نیز آدابی دارد که به برخی از این موارد اشاره می‌کنیم:

  • خود RFC ها در ۵ مرحله‌ی بلوغ و اتکاپذیری طبقه‌بندی می‌شوند: ۱- informational یا اطلاع رسانی ۲- experimental یا در حال توسعه و تکمیل ۳- Proposed Standard (PS) در این مرحله می‌توان به محتوای RFC اعتماد کرد چرا که به عنوان یک استاندارد رسمی پذیرفته شده است ولی هنوز به عنوان استاندارد کل اینترنت به رسمیت شناخته نمی شود. ۴- Draft standard یک مرحله‌ی میانی جهت دریافت بازخورد ها و تایید نهایی ۵- Internet Standard انواعی از RFC ها هستند که به صورت یک استاندارد مستند رسمی در اینترنت مورد قبول و منتشر می‌شود و در واقع این مرحله نهایی و غایت RFC هاست.
    دو وضعیت دیگر نیز هست به اسم BCP و Historic (تاریخی)‌ که تعریف دقیق آن برای ما در اینجا خیلی مهم نیست! و در ادامه با مثال، نمونه هایی از این دو نوع RFC را بررسی خواهیم کرد.
  • از آنجایی که RFC ها استاندارد های کل اینترنت هستند، هر RFC رسمی منتشر شده، شماره ای نیز دارد که مثلا برای ارجاع دادن در سایر مقالات، بتوان به سادگی آن را پیدا کرد و به آن استناد داد.
  • سایت های زیادی برای مطالعه‌ی RFC ها در اینترنت وجود داره که یکی از مهم‌تریناش rfc-editor هست که خود IETF معرفیش کرده.

بررسی چند نمونه

پس بیاید سربرگ دو تا RFC مهم رو با هم ببینیم و طبق چیزایی که یادگرفتیم تحلیل شون کنیم:

https://www.rfc-editor.org/rfc/rfc3339.html
https://www.rfc-editor.org/rfc/rfc3339.html

سمت راست که عموما نویسندگان مستند و تاریخ رو نوشته، سمت چپ اشاره ای به IETF و شماره مقاله یعنی RFC3339 داره. دسته بندی هم که مشخص کرده، این RFC از نوع internet standard عه یعنی به عنوان یک استاندارد رسمی تایید نهایی و منتشر شده است. خود RFC هم که موضوعش مشخصه و خداست. به این ظاهر زشت و خشک RFC ها نگاه نکنید اتفاقا خیلی هاشون متن روان و جذاب و دقیق ای دارند و خوندن شون لذت بخشه.

https://www.rfc-editor.org/rfc/rfc5424.html
https://www.rfc-editor.org/rfc/rfc5424.html

و RFC5424 بعدی هم مربوط به پروتکل syslog سیستم هست و همانطور که مشخصه، از نوع استاندارد اینترنت منتشر و تایید نهایی شده و همچنین، یک RFC دیگری به اسم RFC3164 از نوع informatioanl را نیز منسوخ کرده است.

حالا که حرف از syslog شد، یه نکته تو پرانتز بگم: به نظرم ما توسط grafana و elastic stack و datadog و ... مارکتینگ شدیم! در حالی که مثلا برای دریافت، انتقال و مدیریت لاگ راهکار های بسیار ساده تر و بهینه تری نیز وجود دارد. یکی از این راهکار ها RELP است که با syslog کار می‌کند و انصافا جای بررسی و کار دارد. (در حال آماده کردن سلسله مقالاتی در خصوص RELP - syslog از مفاهیم تا کاربرد عملی‍ آن هستم و به هنگام انتشار، در لینکدین اطلاع رسانی خواهم کرد)

حالا خالی از لطف نیست که در ادامه از دو نوع BCP و Historic نمونه هایی رو ببینیم:

https://www.rfc-editor.org/rfc/rfc2026.html
https://www.rfc-editor.org/rfc/rfc2026.html

روال ها و فرایند های داخلی IETF به صورت RFC های BCP یا ‌Best Current Practices تهیه و تنظیم می‌شوند، به طور مثال RFC2026 به فرایند ثبت و تایید RFC های از نوع Internet Standard پرداخته است.

بسیاری از RFC های قبلی با انتشار و تایید RFC های جدید، منسوخ و منقضی می‌شوند ولی در این بین، RFC هایی که قدمت بالایی دارند (یه جورایی ارزش تاریخی دارن) به عنوان RFC های Historic طبقه بندی شده اند.

https://www.rfc-editor.org/rfc/rfc943.html
https://www.rfc-editor.org/rfc/rfc943.html

از بین این RFC ها می‌توان به زمان های قدیم سفر کرد و تاریخ اینترنت را مطالعه کرد.

چرا RFC بخونیم؟

باب اسفنجی ای که کل شب رو داشته RFC می‌خونده! :)
باب اسفنجی ای که کل شب رو داشته RFC می‌خونده! :)

چیزی که با مشاهده و تجربه بهش رسیدم، لازمه‌ی عبور از چالش های پیچیده‌ی مهندسی نرم افزار، دونستن جزئیات هست. این جزئیات در سه جا به خوبی یافت می شوند: ۱- مستندات خوب نوشته شده‌ی سرویس، فریم‌ورک یا زبان برنامه‌نویسی ۲- برخی از RFC های مرتبط به حیطه‌ی کاری ۳- یه آدم گیک خفن و منتور فوق باتجربه

به نظرم رجوع به RFC مثل استفاده از دیکشنری های چند جلدی آکسفورد عه. اگر در مورد یک کلمه یا حرف انگلیسی به دیکشنری آکسفورد مراجعه کنید، تمامی کاربرد ها، تعاریف، مثال ها، مترادف و متضاد و ... را در خصوص آن کلمه پیدا می‌کنید و قطعا با دست پر کتاب رو می‌بندید. در خصوص RFC هم به همین شکل هست، مراجعه‌ی موردی به RFC ها خیلی مفیده.

البته یادمه سر کلاس دانشگاه استاد زبان مون می‌گفت که دیکشنری برای خوندن عه نه برای مراجعه‌ی موردی. اینم به هر حال روشی عه. اینکه چند تا RFC مهم و پرکاربرد رو انتخاب کنیم و کامل بخونیم شون.

پس دو روش برای مطالعه‌ی RFC ها شد: ۱- مراجعه‌ی موردی و ۲- مطالعه‌ی کامل RFC های منتخب

چند تا RFC خفن

خودم RFC های زیر رو نخوندم ولی کلیدواژه هایی رو جستجو کردم و یا لینک هاش رو از جاهای های مختلف پیدا کردم و یه نگاه کلی بهشون انداختم. در نهایت مواردی رو دست چین در اینجا برای خودم و شما آوردم:

https://datatracker.ietf.org/doc/html/rfc3339

یک RFC3339 با جزئیات بالا و گیج کننده ولی بسیار مهم در خصوص فرمت های استاندارد تاریخ و زمان در اینترنت و کاربرد timestamp (چونکه توی این نوشته بهش اشاره کردیم،‌ لینکش رو آوردم)


https://datatracker.ietf.org/doc/html/rfc9293

همه چیز (حقیقتا همه چیز) درباره‌ی پروتکل TCP به شدت روان و زیبا


https://datatracker.ietf.org/doc/html/rfc9110/

در خصوص پروتکل HTTP 1.1 مشخصا RFC های زیادی هست که ابعاد مختلف اون رو توضیح داده، این RFC9110 جدید ترین و کامل ترین شون هست که برای مراجعه و مرور کلی بسیار جذابه. برای دنبال کردن موضوعات می‌تونید از RFC2616 شروع کنید که در واقع RFC اصلی پروتکل HTTP هست.


فرمول طلایی رهایی از سردرد های مشکلات شبکه‌ای :\
فرمول طلایی رهایی از سردرد های مشکلات شبکه‌ای :\


ممنونم تا اینجا اومدید و امیدوارم این نوشته براتون مفید بوده باشه. نظرات و فیدبک هاتون خیلی مهمه و کمک کنندست.

اینترنتشبکهsre
برنامه نویس node js و DevOps کار - دانش‌آموخته اقتصاد علاقه‌مند به کارآفرینی و استارتاپ ها - sadeghmohebbi.ir
شاید از این پست‌ها خوشتان بیاید