محمد نصیری
بنیانگذار انجمن تخصصی فناوری اطلاعات ایران ، هکر کلاه خاکستری ، کارشناس امنیت اطلاعات و ارتباطات

سرویس BITS چیست؟ بررسی Background Intelligent Transfer Service

سرویس BITS یا Background Intelligent Transfer Service از زمان معرفی شدن ویندوز XP درون این سیستم عامل به عنوان یک عضو همیشگی قرار گرفت و بعدها در همه سیستم عامل های شرکت مایکروسافت این سرویس دیگر وجود دارد. مهمترین کاری که این سرویس انجام می دهد استفاده بهینه از پهنای باند شبکه است. BITS به شما اجازه می دهد که بتوانید فایل های خودتان را با استفاده از پهنای باند بلا استفاده شبکه یا در اصطلاح فنی تر Idle Bandwidth را استفاده کنید و فایل های خودتان را بصورت اولویت بندی شده ، غیر همزمان و در مسیری مشخص در شبکه منتقل کنید.

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران

از سرویس BITS امروزه برای سرویس های Windows Update ، Microsoft Update ، Windows Server Update Services و همچنین SCCM برای دریافت کردن بسته های بروز رسانی نرم افزارهای مایکروسافت برای کلاینت ها استفاده می شود ، با استفاده از BITS نرم افزارهای ضد بدافزار مایکروسافت اعم از Microsoft Defender و Windows Security Essentials می توانند Signature های خودشان را بروز رسانی کنند و در این میان برخی از سرویس های Instant Messaging مایکروسافت نیز از BITS برای انتقال فایل استفاده می کنند.

معرفی سرویس BITS ، کاربرد سرویس BITS

تکنولوژی مورد استفاده در سرویس BITS

همانطور که گفتیم BITS از پهنای باند بلا استفاده شبکه برای انتقال داده استفاده می کند. بصورت معمول BITS داده ها را بصورت مخفی از دید کاربر و در پس زمینه انتقال می دهد. مهمترین مزیت BITS این است که فقط زمانیکه بداند پهنای باند بلااستفاده در شبکه وجود دارد شروع به کار می کند و داده های خودش را انتقال می دهد و این یعنی اگر برنامه های شما در حال استفاده از پهنای باند شبکه باشند BITS متوجه می شود که نباید کاری بکند و منتظر باقی می ماند تا پهنای باند بلا استفاده پیدا کند.

یکی از مهمترین مزایای دیگر BITS این است که مثل نرم افزارهای Downloader ای مثل IDM قابلیت Resume کردن یا ادامه دادن فرآیند آپلود یا دانلود را دارد و اگر فایلی در وسط انتقال باشد و فرآیند انتقال متوقف شود ، به محض شروع دوباره سرویس می توان از ادامه آن انتقال را از سر گرفت. BITS نسخه های متعددی تا کنون داشته است ، BITS نسخه 1.0 فقط قابلیت دانلود کردن داشت اما با معرفی شدن BITS نسخه 1.5 توانایی دانلود و آپلود در کنار هم معرفی شد. برای اینکه بتوانید با استفاده از BITS آپلود انجام دهید ، طرف دریافت کننده بایستی یک وب سرور IIS باشد که ماژول BITS آن نصب شده باشد در غیر اینصورت آپلودی انجام نخواهد شد.

انتقال داده در BITS چگونه انجام می شود ؟

BITS بصورت غیرهمزمان از طرف نرم افزاری که می خواهد فایل انتقال بدهد درخواست های انتقال فایل را دریافت می کند. زمانیکه یک نرم افزار از BITS تقاضای انتقال داده می کند می تواند هر کاری که دارد را ادامه دهد و دیگر منتظر BITS نماند ، یا حتی می تواند به کار خودش خاتمه دهد. فرآیند انتقال در پس زمینه ادامه دارد و تا زمانیکه ارتباط شبکه برقرار است و مالک فایل هم Login شده است فرآیند انتقال داده نیز ادامه پیدا می کند. به درخواست هایی که برای انتقال فایل به BITS داده می شود Job گفته می شود.

Job های BITS زمانیکه کاربر مورد نظر Login نکرده است انجام نمی شود. BITS به محض اینکه ارتباط شبکه مختل شود انتقال فایل خودش را در حالت تعلیق در می آورد ، همین عملیات در زمانیکه سیستم عامل خاموش شده است نیز ادامه پیدا می کند. به محض اینکه کاربر مورد نظر Login کرد و یا ارتباط شبکه برقرار شد ادامه انتقال داده ها شروع می شود . BITS قابلیت انتقال داده بر روی پروتکل های SMB ، HTTP و حتی HTTPS را هم دارد.

پهنای باند در سرویس BITS

BITS همیشه از پهنای باند باقیمانده یا اضافی شبکه استفاده می کند. برای مثال اگر نرم افزارهای شما در حال استفاده کردن از 80 درصد پهنای باند مصرفی هستند ، BITS از 20 درصد باقیمانده برای انتقال داده خودش استفاده می کند. BITS بصورت مداوم در حال مانیتور کردن پهنای باند شبکه و ترافیک انتقالی در آن است و به محض اینکه احساس کند نرم افزارهای اصلی و مورد استفاده در سیستم به پهنای باند نیاز دارند ، پهنای باندی که گرفته است را به سیستم پس می دهد تا برنامه های کاربردی دچار کمبود سرعت نشوند.

اما نکته ای که در این میان مهم است این است که BITS الزاما پهنای باند واقعی سیستم را اندازه گیری نمی کند. BITS نسخه 3.0 و بالاتر از آن از اطلاعاتی که توسط پروتکل Internet Gateway Service که در سرویس NAT برای Port Forwarding استفاده می شود نیز استفاده می کنند. البته این در صورتی انجام می شود که واقعا چنین سرویسی وجود داشته باشد و در دسترس باشد. اگر این سرویس در دسترس بود ، BITS خیلی دقیقتر می تواند پهنای باند مورد نیاز خودش را تخمین بزند. در غیر اینصورت BITS برای محاسبه پهنای باند از اطلاعاتی که توسط کارت شبکه به آن ارائه می شود استفاده می کند که چندان هم دقیقا نیستند و خطاهای زیادی در خصوص پهنای باند دریافت می شود. برای مثال ممکن است یک کارت شبکه با سرعت 100 مگابیت بر ثانیه به مودمی با سرعت 56 کیلوبیت بر ثانیه متصل شده باشد.

Job ها در BITS

BITS برای انتقال دادن و مدیریت کردن فایل های انتقالی از یک صف استفاده می کند. یک Session از BITS همیشه توسط یک برنامه شروع می شود و این Session به عنوان یک Job برای BITS شناخته می شود. Job در واقع یک بسته است که شما یک یا چند فایل برای انتقال دادن است. اگر یک Job خالی ایجاد شود باید منتظر بماند که فایلی به آن اضافه شود ، مسیرهای مبدا و مقصد در آن تعریف شوند و بعد تبدیل به یک Job آماده به کار می شود. Download Job ها می توانند شامل تعداد زیادی فایل باشند اما Upload Job ها فقط می توانند دارای یک فایل باشند. برای هر کدام از فایل ها می توان مشخصات ویژه ای را در نظر گرفت. Job ها همیشه مسائل امنیتی را از طرف نرم افزاری دریافت می کنند که درخواست آنها را داده است. BITS برای مدیریت کردن و کنترل Job ها دارای یک API است.

معرفی سرویس BITS

شما براحتی می توانید برنامه ای بنویسید که یک Job را بصورت خودکار Start ، Stop ، Pause و یا Resume کند و یا حتی وضعیت فعلی Job را Query بگیرد.به هر Job از طرف برنامه یک اولویت به نسبت Job های دیگر داده می شود که سرعت رسیدگی و پردازش آنها را نمایش می دهد. بصورت پیشفرض همه job ها در BITS دارای اولویت معمولی یا Normal هستند. Job ها می توانند بصورت دلخواه در اولویت های High یا بالا ، Low یا پایین و یا Foreground قرار بگیرند. انتقالات پس زمینه یا Background Transfers توسط BITS بهینه سازی می شود که اینکار با استفاده از تجزیه و تحلیل پهنای باند بلا استفاده موجود در شبکه انجام می شود. اگر برنامه ای نیاز به پهنای باند بیشتر داشته باشد BITS بصورت خودکار پهنای باند مورد نیاز Job های خود را کاهش می دهد تا پهنای باند به نرم افزار مربوط به برسد.

زمانبندی در BITS

BITS برای هر کدام از Job های خودش یک زمانبندی استفاده از پهنای باند قرار می دهد به گونه ای که اگر یک Job در یک وهله زمانی تعیین شده نتواند کار خودش را بصورت کامل انجام دهد بایستی در حالت Paused قرار بگیرد تا Job بعدی شروع به کار کند و فرصت استفاده از پهنای باند را داشته باشد. Job اولی باید منتظر بماند تا در زمانبندی بعدی بتواند از پهنای باند استفاده کند. هر چقدر اولویت یا Priority یک Job بیشتر باشد ، قطعات یا Time Slice های زمانی بیشتری در اختیار دارد تا کارش را تمام کند.

اگر چند Job در BITS وجود داشته باشند که دارای اولویت یکسان باشند ، آنگاه BITS از قابلیت Round Robin برای پردازش آنها استفاده می کند. زمانیکه یک Job برای اولین بار ایجاد می شود بصورت خودکار در حالت Suspend یا Paused قرار می گیرد ، Job در چنین حالتی حتما باید Resume بشود تا فعال شود و به صف یا Queue انتقال BITS ملحق شود. زمانیکه فرصت انتقال داده به Job داده می شود ، ابتدا به سرور ریموت متصل می شود و سپس انتقال را شروع می کند. بعد از اینکه Time Slice مورد نظر به پایان رسید ، انتقال بصورت موقتی متوقف می شود و Job مورد نظر مجددا به Queue باز می گردد و منتظر زمانبندی بعدی می ماند. بعد از اینکه مجددا زمانبندی بعدی اجازه انتقال داده داد ، انتقال داده از ادامه مسیری که وجود داشته است انجام می شود. زمانیکه انتقال داده توسط یک Job بصورت کامل انجام شد ، مالکیت فایل و Job در اختیار نرم افزاری قرار می گیرد که آن را تولید کرده است.


محمد نصیری
محمد نصیری

بنیانگذار انجمن تخصصی فناوری اطلاعات ایران ، هکر کلاه خاکستری ، کارشناس امنیت اطلاعات و ارتباطات

محمد نصیری هستم ، هکر قانونمند و کارشناس امنیت سایبری ، سابقه همکاری با بیش از 50 سازمان دولتی ، خصوصی ، نظامی و انتظامی در قالب مشاور ، مدرس و مدیر پروژه ، مدرس دوره های تخصص شبکه ، امنیت ، هک و نفوذ ، در حال حاضر در ایران دیگه رسما فعالیتی غیر از مشاوره انجام نمیدم و مقیم کشور ترکیه هستم ، عاشق آموزش و تدریس هستم و به همین دلیل دوره های آموزشی که ضبط می کنم در دنیا بی نظیر هستند.

نظرات