API سیستمعامل، به ما کمک میکنند تا درخواستی از سیستمعامل بکنیم. یعنی APIهای یک سیستمعامل را میتوان وسیله تعامل بین ما و سیستمعامل در نظر گرفت.
API یا همان Application Programming Interface را میتوان یک رابط میان دو برنامه دانست. برای درک بهتر، با یک مثال شروع میکنیم.
یک اتومبیل را در نظر بگیرید. این اتومبیل تجهیزات پیچیدهای مثل موتور، گیربکس، سیستم سوخترسانی و... دارد که برای به حرکت درآمدن آن ضروری است. اما وقتی یک نفر پشت آن مینشیند و آن را به حرکت درمیآورد، به پیچیدگیهای درون موتور، گیربکس و... کاری ندارد! چرا که یک API پیشروی راننده است و راننده کافیست کار کردن با آن API را یاد بگیرد! این API همان فرمان، پدالها، دنده و... هستند. یعنی راننده برای به حرکت درآوردن خودروی خود کافیست پدال گاز را فشار بدهد! دیگر نیازی نیست که سیستم سوخترسانی، موتور، گیربکس و... را شخصا تنظیم کند تا ماشین حرکت کند! تنها با فشردن پدال گاز، به ماشین اعلام میکند که باید حرکت کند و همه اتفاقاتی که لازم هست، انجام میشود.
پس این لایه باعث میشود، برای راننده فرقی نکند که سیستم درون ماشین چیست و چگونه کار میکند! حتی اگر موتور ماشین عوض شود و یا سیستم سوخترسانی تغییر کند، راننده تغییری حس نمیکند چرا که تنها با پدال گاز سر و کار دارد و درخواست خود را از طریق آن به اتومبیل منتقل میکند.
حال که مفهوم API را متوجه شدیم، بررسی میکنیم که APIهای سیستمعامل چه جایگاهی دارند و چگونه مورد استفاده قرار میگیرند.
در مقاله "سیستمعامل چیست و چه کاری انجام میدهد؟" درمورد وظیفه سیستمعامل در یک کامپیوتر صحبت کردیم. گفتیم که سیستمعامل به ما کمک میکند تا با سختافزار خود، ارتباط برقرار کنیم. اما اگر کمی دقت کنیم، میبینیم که ما در برخی موارد حتی با خود سیستمعامل هم بهصورت مستقیم ارتباط برقرار نمیکنیم! بلکه یک سری برنامه (Application) برروی سیستمعامل خود نصب میکنیم و سپس از طریق آن با سیستمعامل ارتباط برقرار میکنیم. در اصل، بین برنامهها و سیستمعامل یک روش تعامل وجود دارد. این تعامل بین برنامهها و سیستمعامل از طریق APIهای سیستمعامل صورت میگیرد.
مثلا فرض کنید، برنامه X نیاز به خواندن اطلاعات از یک فایل F دارد. برای خواندن محتوای F باید ابتدا آن را باز کند. همان طور که میدانید، مدیریت فایلها (باز کردن، بسته کردن و... ) به عهده سیستمعامل میباشد. بنابراین برنامه X درخواست خود (باز کردن فایل F) را از طریق یک API به نام OpenFile به سیستمعامل اعلام میکند و سیستمعامل فایل F را برای برنامه X باز میکند تا از آن استفاده کند.
یکی از ابزارهایی که مدیران و تکنسینهای شبکه همواره برای عیبیابی یک شبکه از آن استفاده میکنند، Traceroute میباشد. هر جا که اختلالاتی مثل تاخیر (Latency) و قطعی (Connectivity Issue) درون یک شبکه وجود داشته باشد، Traceroute و Ping دو ابزار ابتدایی ولی کارآمدی هستند که میتوانند در زمینه رفع مشکل به ما کمک کنند.
حتما با ابزار Ping آشنایی دارید. ابزاری که به ما کمک میکند تا متوجه شویم با یک IP ارتباط داریم یا خیر. فرض کنید میخواهیم بفهمیم که آیا دو سیستم با یکدیگر ارتباط دارند یا خیر. کافیست پشت یکی از سیستمها بنشینیم و درون CMD، سیستم دیگر را Ping کنیم. اگر پاسخ پکتهای ارسالی را با موفقیت دریافت کنیم، متوجه میشویم که ارتباط بین این دو سیستم بدون مشکل است. اما اگر پاسخ درستی دریافت نکنیم، تنها میفهمیم که ارتباط مشکل دارد. چگونه تشخیص دهیم که کجای ارتباط مشکل دارد؟ چراکه احتمالا چندین روتر و سوییچ بین این دو سیستم وجود دارد.
اگر در ارتباط بین دو سیستم مشکلی وجود داشته باشد، Traceroute اولا میتواند مشخص کند که یک مشکلی در ارتباط وجود دارد، دوما میتواند مشخص کند که این مشکل از کجاست!
Traceroute عموما از پکتهای Echo (متعلق به پروتکل ICMP) و همچنین مقادیر متفاوت TTL (یا همان Time To Live) استفاده میکند. اما قبل از اینکه بررسی کنیم Traceroute چگونه کار میکند، باید با مفهوم کلی TTL و RTT آشنا باشیم.
به زبان ساده TTL یا همان Time To Live، عمر یک پکت را در شبکه، محدود میکند. این مقدار برای هر بسته توسط فرستنده آن مشخص میشود و با رسیدن به هر HOP در شبکه، یک واحد از آن کاسته میشود. یعنی اگر TTL یک بسته 100 باشد، نهایتا از 100 عدد HOP میتواند عبور کند تا به مقصد موردنظر برسد در غیر ای نصورت بسته ارسالشده، دور انداخته میشود (از بین میرود) و یک پیام خطا از طریق ICMP برای فرستنده ارسال میشود. HOP همان روترهایی هستند که بر سر راه این پکت قرار دارند.
به زبان ساده RTT یا همان Round-Trip Delay، مدت زمانی است که طول میکشد تا یک پکت ارسال شود و پاسخ آن دریافت شود. RTT به ما کمک میکند تا بفهمیم که بهطور میانگین چه فاصله زمانی بین یک فرستنده و گیرنده وجود دارد. RTT به ما کمک میکند تا تاخیرهای موجود در ارتباط بین دو سیستم را ارزیابی کنیم.
Traceroute در ابتدا شروع به ارسال پکتهایی میکند که TTL آنها 1 میباشد. این پکتها بعد از اینکه به اولین HOP رسیدند، از مقدار TTL یک واحد کم میکنند، از این رو، مقدار TTL برای این پکتها به صفر میرسد. همان طور که بالاتر گفتیم، وقتی مقدار TTL به صفر میرسد، اولا پکت DROP میشود. دوما یک پیام خطا به سمت فرستنده ارسال میشود. حالا تا به اینجا RTT نشان دهنده فاصله زمانی بین فرستنده (کسی که پکتها را ارسال کرد و در اصل همان کسی که دستور Traceroute را اجرا کرده است) و اولین HOP میباشد، چرا که TTL را برابر 1 قرار داده بودیم.
در گام بعدی، Traceroute شروع به ارسال پکتهایی میکند که TTL آنها 2 میباشد. هدف از این کار این است که بستههای ما تنها تا HOP دوم حرکت کنند. پس بستهها پس از اینکه شروع به حرکت کردند، ابتدا از HOP اول عبور میکنند و TTL آنها از عدد 2 به عدد 1 کاهش پیدا میکند. سپس با رسیدن پکتها به HOP دوم، TTL آنها از یک به صفر کاهش پیدا میکند و در نتیجه یک پیام خطا به سمت فرستنده ارسال میشود. بدین صورت فرستنده متوجه میشود که وضعیت RTT تا HOP دوم به چه صورت است.
Traceroute این کار مجددا ادامه میدهد و هر بار TTL را یک واحد افزایش میدهد تا وضعیت ارتباط و RTT هر یک از HOP ها را متوجه شود.
برای استفاده از Traceroute کار بسیار سادهای را پیشرو داریم.
در لینوکس:
traceroute 192.168.1.5
و در ویندوز:
tracert 192.168.1.5
که در هر دوی موارد 192.168.1.5 همان IP ای میباشد که میخواهیم مسیر ارتباط با آن مورد بررسی قرار گیرد.
باج افزارها(Ransomware) را میتوان نوعی از فایلهای مخرب (بدافزار) دانست که اطلاعات سیستم قربانی را رمز (Encrypt) میکنند تا قربانی نتواند به اطلاعات خودش دست پیدا کند! عموما بعد از رمز شدن تمام اطلاعات قربانی، مهاجم درخواست باج میکند.
چرا به سیستمعامل نیاز داریم؟چه کار میکند و وظیفه آن چیست؟ از آن چه استفادهای میتوان کرد؟ آیا مهم است که از چه سیستمعاملی استفاده کنیم؟ ادامه مطلب ...
یکی از نقاط قوت اصلی لینوکس، ترمینال آن میباشد. ترمینال لینوکس بسیار منعطف بوده و امکاناتی را برای کاربران فراهم میکند تا بتوانند راحتتر و سریعتر با آن کار کنند.