چیزی که در بسیاری از اپیزود های پادکست های جادی (رادیو گیک قدیم) به وفور دیده می شه همین مرور و خواندن RFC هاست. در این نوشتار کوتاه اول می خوایم ببینیم RFC چیه و چه اهمیتی داره و در آخر چندتا RFC بنیادی و خواندنی رو بهتون پیشنهاد میکنم.
مقالات RFC مخفف Requests For Comments در واقع مستنداتی فنی مهندسی هستند که طی فرایند های دقیق و مشخصی نگاشته، تنظیم و توسط انجمن IETF تایید و منتشر میشوند.
انجمن IETF مخفف Internet Engineering Task Force در واقع انجمنی هستند که استاندارد های اینترنت رو مشخص میکنند. اعضای هیئت مدیره این انجمن که به صورت هیئت امنایی اداره می شه در حال حاظر ۵ نفر هستند. روند مشارکت و انتخاب اعضا، روال ها، همایش ها و فرایند های IETF نیز جالبه.
منبعی بهتر از خود سایت IETF برای آشنایی باهاشون پیدا نکردم. ازینجا میتونید شروع کنید و حتما گشتی در سایت انجمن بزنید، دست خالی برنمی گردید! در خود این سایت نیز توضیحات کاملی در خصوص RFC در این لینک آمده است که میتونید آنجا را نیز مرور کنید.
همان طور که می توان حدس زد، RFC ها مهم ترین خروجی IETF است چرا که با این ابزار، استاندارد های اینترنت را در کل دنیا مشخص و تعیین میکند. خواندن RFC نیز آدابی دارد که به برخی از این موارد اشاره میکنیم:
پس بیاید سربرگ دو تا RFC مهم رو با هم ببینیم و طبق چیزایی که یادگرفتیم تحلیل شون کنیم:
سمت راست که عموما نویسندگان مستند و تاریخ رو نوشته، سمت چپ اشاره ای به IETF و شماره مقاله یعنی RFC3339 داره. دسته بندی هم که مشخص کرده، این RFC از نوع internet standard عه یعنی به عنوان یک استاندارد رسمی تایید نهایی و منتشر شده است. خود RFC هم که موضوعش مشخصه و خداست. به این ظاهر زشت و خشک RFC ها نگاه نکنید اتفاقا خیلی هاشون متن روان و جذاب و دقیق ای دارند و خوندن شون لذت بخشه.
و RFC5424 بعدی هم مربوط به پروتکل syslog سیستم هست و همانطور که مشخصه، از نوع استاندارد اینترنت منتشر و تایید نهایی شده و همچنین، یک RFC دیگری به اسم RFC3164 از نوع informatioanl را نیز منسوخ کرده است.
حالا که حرف از syslog شد، یه نکته تو پرانتز بگم: به نظرم ما توسط grafana و elastic stack و datadog و ... مارکتینگ شدیم! در حالی که مثلا برای دریافت، انتقال و مدیریت لاگ راهکار های بسیار ساده تر و بهینه تری نیز وجود دارد. یکی از این راهکار ها RELP است که با syslog کار میکند و انصافا جای بررسی و کار دارد. (در حال آماده کردن سلسله مقالاتی در خصوص RELP - syslog از مفاهیم تا کاربرد عملی آن هستم و به هنگام انتشار، در لینکدین اطلاع رسانی خواهم کرد)
حالا خالی از لطف نیست که در ادامه از دو نوع BCP و Historic نمونه هایی رو ببینیم:
روال ها و فرایند های داخلی IETF به صورت RFC های BCP یا Best Current Practices تهیه و تنظیم میشوند، به طور مثال RFC2026 به فرایند ثبت و تایید RFC های از نوع Internet Standard پرداخته است.
بسیاری از RFC های قبلی با انتشار و تایید RFC های جدید، منسوخ و منقضی میشوند ولی در این بین، RFC هایی که قدمت بالایی دارند (یه جورایی ارزش تاریخی دارن) به عنوان RFC های Historic طبقه بندی شده اند.
از بین این RFC ها میتوان به زمان های قدیم سفر کرد و تاریخ اینترنت را مطالعه کرد.
چیزی که با مشاهده و تجربه بهش رسیدم، لازمهی عبور از چالش های پیچیدهی مهندسی نرم افزار، دونستن جزئیات هست. این جزئیات در سه جا به خوبی یافت می شوند: ۱- مستندات خوب نوشته شدهی سرویس، فریمورک یا زبان برنامهنویسی ۲- برخی از RFC های مرتبط به حیطهی کاری ۳- یه آدم گیک خفن و منتور فوق باتجربه
به نظرم رجوع به RFC مثل استفاده از دیکشنری های چند جلدی آکسفورد عه. اگر در مورد یک کلمه یا حرف انگلیسی به دیکشنری آکسفورد مراجعه کنید، تمامی کاربرد ها، تعاریف، مثال ها، مترادف و متضاد و ... را در خصوص آن کلمه پیدا میکنید و قطعا با دست پر کتاب رو میبندید. در خصوص RFC هم به همین شکل هست، مراجعهی موردی به RFC ها خیلی مفیده.
البته یادمه سر کلاس دانشگاه استاد زبان مون میگفت که دیکشنری برای خوندن عه نه برای مراجعهی موردی. اینم به هر حال روشی عه. اینکه چند تا RFC مهم و پرکاربرد رو انتخاب کنیم و کامل بخونیم شون.
پس دو روش برای مطالعهی RFC ها شد: ۱- مراجعهی موردی و ۲- مطالعهی کامل RFC های منتخب
خودم RFC های زیر رو نخوندم ولی کلیدواژه هایی رو جستجو کردم و یا لینک هاش رو از جاهای های مختلف پیدا کردم و یه نگاه کلی بهشون انداختم. در نهایت مواردی رو دست چین در اینجا برای خودم و شما آوردم:
یک RFC3339 با جزئیات بالا و گیج کننده ولی بسیار مهم در خصوص فرمت های استاندارد تاریخ و زمان در اینترنت و کاربرد timestamp (چونکه توی این نوشته بهش اشاره کردیم، لینکش رو آوردم)
همه چیز (حقیقتا همه چیز) دربارهی پروتکل TCP به شدت روان و زیبا
در خصوص پروتکل HTTP 1.1 مشخصا RFC های زیادی هست که ابعاد مختلف اون رو توضیح داده، این RFC9110 جدید ترین و کامل ترین شون هست که برای مراجعه و مرور کلی بسیار جذابه. برای دنبال کردن موضوعات میتونید از RFC2616 شروع کنید که در واقع RFC اصلی پروتکل HTTP هست.
ممنونم تا اینجا اومدید و امیدوارم این نوشته براتون مفید بوده باشه. نظرات و فیدبک هاتون خیلی مهمه و کمک کنندست.