Tác giả: Rahul Awati, Stephen J. Bigelow (Biên tập viên công nghệ cấp cao)
Ngày xuất bản: 21/08/2023
Dịch vụ Chuyển Tệp Thông Minh Nền của Microsoft Windows (Background Intelligent Transfer Service - BITS) là một dịch vụ trong hệ điều hành Microsoft Windows cho phép tải xuống (download) từ và tải lên (upload) tệp đến máy chủ web Hypertext Transfer Protocol (HTTP) và máy chủ tệp Server Message Block (SMB).
BITS sử dụng băng thông mạng rảnh rỗi (idle network bandwidth) để truyền tệp ở nền (background) hoặc tiền cảnh (foreground) nên trải nghiệm tiền cảnh của người dùng bị ảnh hưởng tối thiểu. Vô hiệu hóa dịch vụ sẽ ngăn chặn tất cả các ứng dụng phụ thuộc vào BITS tự động tải xuống chương trình và thông tin quan trọng khác.
BITS lấy băng thông mạng không sử dụng hoặc rảnh rỗi để thực hiện truyền tệp — tải xuống hoặc tải lên — từ hoặc đến máy chủ web HTTP và máy chủ tệp SMB. Các truyền tệp — ví dụ, giữa máy khách (client) và máy chủ (server) — là bất đồng bộ (asynchronous) và xảy ra ở tiền cảnh hoặc nền. Điều này nghĩa là, khi một ứng dụng yêu cầu BITS cho một truyền tệp, nó có thể tự do thực hiện bất kỳ tác vụ nào khác.
BITS bao gồm cmdlet PowerShell để tạo và quản lý truyền tải và tiện ích dòng lệnh BITSAdmin để tạo tác vụ tải xuống hoặc tải lên và theo dõi tiến độ. Dịch vụ cũng bao gồm cơ sở quản lý hàng đợi (queue administration facility) để ưu tiên các yêu cầu truyền tệp từ ứng dụng.
Nếu sự gián đoạn hoặc ngắt quãng xảy ra trên mạng, BITS tự động kết nối lại và tiếp tục truyền tệp khi mạng hoặc máy quay lại dịch vụ. BITS có thể tạm dừng và tiếp tục truyền tự động ngay cả sau khi khởi động lại (reboot). Nó cũng truyền tệp khi máy được cắm điện và ở chế độ Modern Standby, do đó vẫn chú ý đến việc sử dụng năng lượng.
Vòng Đời Của Công Việc Background Intelligent Transfer Service
Công việc BITS (BITS job) là một bộ chứa (container) giữ một hoặc nhiều tệp để truyền đến hoặc từ máy chủ web HTTP và máy chủ tệp SMB. Một công việc có các thuộc tính chỉ định cách BITS truyền tệp và tương tác với ứng dụng.
Vòng đời của công việc bắt đầu với việc tạo nó (creation). Đây là lúc người dùng chỉ định độ ưu tiên của công việc, là tải lên hay tải xuống, và cho những sự kiện nào họ muốn nhận thông báo. Khi công việc được tạo, tệp có thể được thêm vào nó — với tối đa một tệp cho tác vụ tải lên. Thuộc tính công việc cũng có thể thay đổi tùy thuộc vào ứng dụng. Khi thêm một hoặc nhiều tệp vào công việc, quan trọng là phải chỉ định tên cục bộ (client) và tên từ xa (server) của tệp.
Khi công việc được tạo, BITS tự động tạm dừng (suspends) công việc. Người dùng phải tiếp tục (resume) công việc để kích hoạt nó trong hàng đợi truyền tải (transfer queue), tức là chuyển nó từ trạng thái tạm dừng sang trạng thái hàng đợi (queued). Nó ở lại trạng thái hàng đợi cho đến khi bộ lập lịch BITS (BITS scheduler) xác định đến lượt nó truyền tệp. Lúc này, công việc chuyển sang trạng thái kết nối (connecting), và BITS kết nối đến máy chủ từ xa. Sau đó nó chuyển sang trạng thái truyền tải (transferring) và ở đó cho đến khi một trong bốn điều kiện xảy ra:
- Khoảng thời gian (time slice) kết thúc.
- Truyền tải hoàn tất.
- Có lỗi xảy ra.
- Ứng dụng tạm dừng công việc.
Công việc chuyển sang trạng thái đã truyền (transferred state) khi BITS truyền hết các tệp của nó. Các tệp đã truyền chỉ trở nên có sẵn cho máy khách khi ứng dụng gọi phương thức IBackgroundCopyJob::Complete và quyền sở hữu tệp được chuyển từ BITS sang người dùng.
Cách BITS Bảo Toàn Trải Nghiệm Người Dùng
Tùy thuộc vào băng thông mạng rảnh rỗi có sẵn, BITS tăng hoặc giảm tốc độ truyền tệp. Nếu một ứng dụng bắt đầu tiêu thụ nhiều băng thông hơn, BITS tự động giảm tốc độ truyền tệp, do đó duy trì trải nghiệm tổng thể của người dùng và đảm bảo các truyền nền là tối ưu.
Miễn là người dùng khởi tạo truyền tệp vẫn đăng nhập trên mạng và kết nối mạng được duy trì, BITS tiếp tục truyền tệp, ngay cả khi chính ứng dụng thoát. Tuy nhiên, BITS không ép buộc kết nối mạng nếu nó bị mất hoặc nếu người dùng đăng xuất. Thay vào đó, nó trước tiên tạm dừng công việc truyền tải và sau đó tiếp tục nó sau khi kết nối mất được thiết lập lại hoặc sau khi người dùng đăng xuất đăng nhập lại.
BITS luôn xem xét chi phí truyền tệp và sử dụng mạng, cũng như tắc nghẽn mạng (network congestion). Nó cũng sử dụng chính sách truyền do ứng dụng chỉ định (app-specified transfer policies) để ngăn chặn truyền tệp trên kết nối mạng có chi phí (costed network connections). Những cân nhắc này đặc biệt quan trọng trên mạng di động (roaming networks) nơi chi phí có thể tăng nhanh. BITS cũng giúp giảm thiểu tác động đến — hoặc can thiệp vào — công việc tiền cảnh của người dùng, cuối cùng giúp bảo toàn trải nghiệm làm việc của họ với hệ thống.
Ứng Dụng Của Background Intelligent Transfer Service
BITS hữu ích nhất cho quản trị viên hệ thống muốn tải xuống tệp từ hoặc tải lên tệp đến máy chủ web HTTP và chia sẻ tệp SMB. Ngoài ra, nó cung cấp giao diện Component Object Model hữu ích cho lập trình viên C, C++ và .NET. Microsoft không khuyến nghị API ứng dụng BITS (BITS API) cho lập trình viên Universal Windows Platform. Họ nên dùng API Windows.Networking.BackgroundTransfer thay thế.
Windows dùng BITS để tải xuống bản cập nhật (updates) đến hệ thống cục bộ của người dùng. Nhiều ứng dụng khác cũng dùng BITS, bao gồm ứng dụng cần tải xuống từ hoặc tải lên tệp đến máy chủ web HTTP hoặc representational state transfer (REST) hoặc máy chủ tệp SMB. Ứng dụng cần tự động tiếp tục truyền tệp sau ngắt kết nối mạng hoặc khởi động lại máy tính cũng dùng BITS. Cuối cùng, BITS có thể dùng để tối ưu hóa lưu lượng mạng diện rộng (WAN traffic) khi dùng với BranchCache, một công nghệ tối ưu hóa WAN đi kèm trong một số phiên bản Windows và Windows Server.
Quản trị viên có thể dùng Microsoft Windows BITS để quản lý lưu lượng WAN.
Các Loại Công Việc Truyền Tải & Trạng Thái Công Việc Trong BITS
BITS hỗ trợ ba loại công việc truyền tải:
- Công việc tải xuống (Download job): Tải tệp xuống máy khách. Cũng, tất cả tệp được truyền bất đồng bộ ở tiền cảnh hoặc nền.
- Công việc tải lên (Upload job): Tải một tệp từ máy khách lên máy chủ.
- Công việc tải lên-trả lời (Upload-reply job): Trước tiên tải một tệp lên máy chủ và sau đó nhận tệp trả lời từ ứng dụng máy chủ rằng tải lên đã hoàn tất.
Một công việc BITS có thể ở một trong bốn trạng thái:
- Khởi động (Starting): Theo mặc định, trạng thái khởi động là TẠM DỪNG (SUSPENDED). Từ trạng thái này, người dùng có thể thêm tệp vào công việc và cũng đặt thuộc tính công việc và tệp.
- Hành động (Action): Nhiều trạng thái hành động có thể có thể chỉ ra hoạt động nội bộ hiện tại của công việc, như HÀNG ĐỢI (QUEUED), KẾT NỐI (CONNECTING) và TRUYỀN TẢI (TRANSFERRING). Trạng thái hành động khác là LỖI TRANSIENT (TRANSIENT ERROR), chỉ ra công việc không truyền được tệp.
- Đã truyền (Transferred): Trạng thái này xảy ra khi truyền tải thành công và không còn truyền tải nào cần làm.
- Cuối cùng (Final): Công việc là ĐÃ XÁC NHẬN (ACKNOWLEDGED) và tất cả tệp đã tải xuống hoàn tất có sẵn.
Khi một công việc BITS chạy, nó chuyển đổi giữa các trạng thái trong các lớp trạng thái khác nhau. Nhưng, một khi nó đạt trạng thái cuối cùng, nó sẽ không chuyển ra khỏi trạng thái đó, nghĩa là không thể gọi bất kỳ phương thức thay đổi trạng thái nào. Nó cũng không xuất hiện trong liệt kê công việc (job enumeration). Nếu lỗi xảy ra, công việc chuyển sang trạng thái lỗi nghiêm trọng (fatal error state - BITS không thể khôi phục từ nó) hoặc trạng thái lỗi tạm thời (transient error state - lỗi có thể tự giải quyết và BITS thử lại công việc cho đến khi truyền tải thành công hoặc cho đến khi công việc hết thời gian chờ trong khoảng thời gian do ứng dụng chỉ định). Nếu công việc hết thời gian chờ trong trạng thái lỗi tạm thời, BITS chuyển nó sang trạng thái lỗi nghiêm trọng.
Các Mức Độ Ưu Tiên Của Background Intelligent Transfer Service
BITS có thể thông minh chọn công việc truyền tải nào chạy và khi nào. Điều này là vì ứng dụng có thể dùng các mức độ ưu tiên khác nhau: một cho tiền cảnh và ba cho nền. Một mức độ ưu tiên xác định khi nào công việc truyền tải được xử lý liên quan đến các công việc khác trong hàng đợi truyền tải, do đó:
- Công việc ưu tiên cao hơn có quyền ưu tiên hơn công việc ưu tiên thấp hơn.
- Công việc ưu tiên thấp không nhận thời gian truyền tải cho đến khi tất cả công việc ưu tiên cao hơn được truyền tải hoặc ở trạng thái lỗi.
- Công việc ở cùng mức ưu tiên chia sẻ thời gian truyền tải, nên không có công việc lớn nào có thể chặn hàng đợi truyền tải và gây độ trễ.
Để lên lịch công việc ở cùng mức ưu tiên, BITS dùng lập lịch vòng tròn (round-robin scheduling), nơi mỗi công việc được cho một lát thời gian để xử lý tệp của nó. Nếu một công việc cụ thể không hoàn thành trong lát thời gian được phân bổ, nó tự động quay lại trạng thái hàng đợi, và công việc tiếp theo trong hàng đợi được kích hoạt theo cơ sở vào trước ra trước (FIFO - first-in, first-out). Ở đây, quan trọng phải lưu ý rằng BITS không đảm bảo xử lý FIFO, mặc dù nó cố gắng hết sức.
Windows BITS dùng lập lịch vòng tròn (round-robin) để lên lịch công việc ở cùng mức ưu tiên.
Trong BITS 1.5 và trước đó, công việc tiền cảnh được ưu tiên hơn công việc nền. Thực tế, công việc tiền cảnh có ưu tiên cao nhất, và BITS chỉ xử lý một công việc tại một thời điểm. Trong các phiên bản BITS sau này, nhiều truyền tải tiền cảnh có thể xảy ra cùng lúc, nhưng nhiều tệp trong cùng một công việc luôn được truyền tuần tự (sequentially) hoặc nối tiếp (serially).
Lịch Sử Của Background Intelligent Transfer Service
Microsoft đã cập nhật BITS nhiều lần:
- Microsoft giới thiệu phiên bản 1.0 của BITS trong Windows XP năm 2001.
- Phiên bản 1.2 đến giữa năm 2002เพิ่ม dịch vụ Cập nhật Tự động (Automatic Updates) vào Windows 2000.
- Phiên bản 1.5 đến cuối năm 2003 với Windows Server 2003 và mang lại hỗ trợ dòng lệnh, thêm tính năng tải lên và cải tiến bảo mật.
- Phiên bản 2.0, phát hành giữa năm 2004 như bản cập nhật cho nhiều triển khai hệ điều hành, thêm tính năng tải xuống, điều tiết băng thông (bandwidth throttling) và hỗ trợ SMB.
- Phát hành giữa năm 2007, BITS 2.5 thêm hỗ trợ IPv6 và tiêu đề HTTP tùy chỉnh (custom HTTP headers) và bảo mật HTTP tốt hơn.
- BITS 3.0, đi kèm với Windows Vista và Windows Server 2008, thêm bộ nhớ đệm ngang hàng (peer caching), thông báo (notifications), truy cập tệp tạm thời, xử lý chuyển hướng HTTP, điều khiển Group Policy bổ sung và ghi nhật ký sự kiện (event logging).
- BITS 4.0, phát hành giữa năm 2009 với Windows 7 và Windows Server 2008 R2, mang lại bảo mật dựa trên token (token-based security), tính năng máy chủ tệp độc lập (standalone file server features), điều tiết băng thông tinh chỉnh (refined bandwidth throttling) và bộ nhớ đệm ngang hàng cải tiến (revised peer caching).
- BITS 5.0, đi kèm với Windows 10 giữa năm 2016, thêm cải tiến cho công việc sao chép nền (background copy jobs), hỗ trợ cho công việc sao chép nền cũ hơn và khả năng dùng BITS qua API và cmdlet PowerShell.
- Phiên bản 10.1 của BITS, một phần của Windows 10 phiên bản 1703, còn gọi là Windows 10 Creators Update, tinh chỉnh tính năng tải xuống và thông báo.
- Phiên bản 10.2 của BITS, một phần của Cập nhật tháng 10 năm 2018 của Windows 10, thêm thứ tự proxy mặc định (default proxy ordering), cũng như hỗ trợ cho Modern Standby và chính sách trình quản lý thiết bị di động (mobile device manager policies) và chính sách nhóm (group policies).
- Phiên bản 10.3 của BITS, một phần của Cập nhật tháng 5 năm 2019 của Windows 10, cho phép khả năng đánh dấu tiêu đề HTTP là chỉ ghi (write-only) và callback xác thực chứng chỉ máy chủ.
Tìm hiểu cách tải lên và tải xuống tệp với script PowerShell File Transfer Protocol, và đọc về 8 dịch vụ truyền tệp an toàn cho doanh nghiệp.
Đọc Thêm Về Microsoft Windows Background Intelligent Transfer Service (BITS)
- PowerShell là gì và cách sử dụng: Hướng dẫn tối thượng
- 5 bước xác định và khắc phục vấn đề hiệu suất Windows 11
- Công cụ truyền tệp lớn: Cách tìm và mua tốt nhất
- Công cụ di chuyển Windows 11 cho quản trị viên máy tính để bàn
- Vấn đề nâng cấp Windows 11 mà quản trị viên máy tính để bàn nên biết
Tìm Hiểu Sâu Hơn Về Quản Trị Vận Hành & Hạ Tầng CNTT
-
Ví dụ tải tệp đơn giản Struts 2

Tác giả: Cameron McKenzie
-
JCL (job control language) là gì?
Tác giả: TechTarget Contributor
-
Cách dùng TFTP truyền tệp qua mạng

Tác giả: Damon Garn
-
Dùng cURL và Wget tải tệp mạng từ CLI

Tác giả: Damon Garn