কম্পিউটার টিউটোরিয়াল

Microsoft Windows BITS বোঝা: ব্যাকগ্রাউন্ড ইন্টেলিজেন্ট ট্রান্সফার সার্ভিস ব্যাখ্যা

লেখক

  • Rahul Awati
  • Stephen J. Bigelow, সিনিয়র টেকনোলজি এডিটর

প্রকাশিত: ২১ আগস্ট, ২০২৩

Microsoft Windows Background Intelligent Transfer Service (BITS) হলো Microsoft Windows অপারেটিং সিস্টেম (OS)গুলোর একটি সার্ভিস যা HTTP (Hypertext Transfer Protocol) ওয়েব সার্ভার এবং SMB (Server Message Block) ফাইল সার্ভার থেকে ফাইল ডাউনলোড এবং আপলোড করার অনুমতি দেয়।

BITS নিষ্ক্রিয় নেটওয়ার্ক ব্যান্ডউইথ ব্যবহার করে ফাইল ট্রান্সফার করে ব্যাকগ্রাউন্ড বা ফোরগ্রাউন্ডে যাতে ইউজারের ফোরগ্রাউন্ড অভিজ্ঞতা ন্যূনতম প্রভাবিত হয়। সার্ভিসটি ডিজেবল করলে BITS-এ নির্ভরশীল সব অ্যাপ্লিকেশন প্রোগ্রাম এবং অন্যান্য গুরুত্বপূর্ণ ইনফরমেশন অটোমেটিক্যালি ডাউনলোড করা থেকে বাধित হবে।

BITS অনইউজড বা আইডল নেটওয়ার্ক ব্যান্ডউইথ নেয় ফাইল ট্রান্সফার—ডাউনলোড বা আপলোড—HTTP ওয়েব সার্ভার এবং SMB ফাইল সার্ভার থেকে বা তে করার জন্য। ফাইল ট্রান্সফার—যেমন, একটি ক্লায়েন্ট মেশিন এবং সার্ভারের মধ্যে—অ্যাসিনক্রোনাস এবং ফোরগ্রাউন্ড বা ব্যাকগ্রাউন্ডে হয়। এর মানে, যখন একটি অ্যাপ্লিকেশন BITS-কে ফাইল ট্রান্সফারের জন্য অনুরোধ করে, এটি মুক্তভাবে অন্য যেকোনো টাস্ক পারফর্ম করতে পারে।

BITS-এ PowerShell cmdlets রয়েছে ট্রান্সফার তৈরি এবং ম্যানেজ করার জন্য এবং BITSAdmin কমান্ড-লাইন ইউটিলিটি ডাউনলোড বা আপলোড জব তৈরি এবং তাদের প্রগ্রেস মনিটর করার জন্য। সার্ভিসটিতে একটি কিউ অ্যাডমিনিস্ট্রেশন ফ্যাসিলিটিও রয়েছে অ্যাপ্লিকেশন থেকে ফাইল ট্রান্সফার রিকোয়েস্ট প্রায়োরিটাইজ করার জন্য।

যদি নেটওয়ার্কে কোনো ডিসরাপশন বা ইন্টারাপশন ঘটে, BITS অটোমেটিক্যালি রিকানেক্ট করে এবং ফাইল ট্রান্সফার রিজিউম করে যখন নেটওয়ার্ক বা মেশিন সার্ভিসে ফিরে আসে। BITS রিবুটের পরেও অটোমেটিক্যালি ট্রান্সফার পজ ও রিজিউম করতে পারে। এটি মেশিন প্লাগড ইন থাকলে এবং মডার্ন স্ট্যান্ডবাই মোডে থাকলে ফাইল ট্রান্সফার করে, এভাবে পাওয়ার ইউজেজের প্রতি সচেতন থাকছে।

Background Intelligent Transfer Service জবের লাইফসাইকেল

একটি BITS জব হলো একটি কন্টেইনার যা এক বা একাধিক ফাইল ধারণ করে HTTP ওয়েব সার্ভার এবং SMB ফাইল সার্ভার থেকে বা তে ট্রান্সফার করার জন্য। একটি জবের প্রপার্টি থাকে যা স্পেসিফাই করে BITS কীভাবে ফাইলগুলো ট্রান্সফার করবে এবং অ্যাপ্লিকেশনের সাথে কীভাবে ইন্টারঅ্যাক্ট করবে।

জবের লাইফসাইকেল শুরু হয় এর তৈরির সাথে। এটি হলো যখন ইউজার জবের প্রায়োরিটি স্পেসিফাই করে, এটি আপলোড নাকি ডাউনলোড, এবং কোন ইভেন্টের জন্য তারা নোটিফিকেশন পেতে চায়। একবার জব তৈরি হলে, ফাইলগুলো এড করা যায় এতে—আপলোড জবের জন্য এক ফাইল maksimum। জব প্রপার্টিগুলোও অ্যাপ্লিকেশনের উপর নির্ভর করে পরিবর্তন করা যায়। এক বা একাধিক ফাইল জবে অ্যাড করার সময়, ফাইলের লোকাল (ক্লায়েন্ট) এবং রিমোট (সার্ভার) নাম স্পেসিফাই করা গুরুত্বপূর্ণ।

যখন জবগুলো তৈরি হয়, BITS অটোমেটিক্যালি জবগুলো সাসপেন্ড করে। ইউজারকে জব রিজিউম করতে হবে এটিকে ট্রান্সফার কিউতে এক্টিভেট করার জন্য, অর্থাৎ সাসপেন্ডেড স্টেট থেকে কিউড স্টেটে মুভ করার জন্য। এটি কিউড স্টেটে থাকে যতক্ষণ না BITS শিডিউলার এর টার্ন নির্ধারণ করে ফাইল ট্রান্সফারের জন্য। এই পয়েন্টে, জব কানেক্টিং স্টেটে মুভ করে, এবং BITS রিমোট সার্ভারের সাথে কানেক্ট করে। তারপর এটি ট্রান্সফারিং স্টেটে মুভ করে এবং সেখানে থাকে যতক্ষণ না চার শর্তের যেকোনো একটি ঘটে:

  1. টাইম স্লাইস শেষ হয়।
  2. ট্রান্সফার সম্পূর্ণ হয়।
  3. একটি এরর হয়।
  4. অ্যাপ্লিকেশন জবটি সাসপেন্ড করে।

জব ট্রান্সফার্ড স্টেটে মুভ করে যখন BITS এর সব ফাইল ট্রান্সফার করে। ট্রান্সফার্ড ফাইলগুলো ক্লায়েন্টের জন্য শুধু উপলব্ধ হবে যখন অ্যাপ্লিকেশন IBackgroundCopyJob::Complete মেথড কল করে এবং ফাইল অওনারশিপ BITS থেকে ইউজারের কাছে ট্রান্সফার হয়।

BITS কীভাবে ইউজার এক্সপেরিয়েন্স সংরক্ষণ করে

উপলব্ধ আইডল নেটওয়ার্ক ব্যান্ডউইথের উপর নির্ভর করে, BITS ফাইল ট্রান্সফারের রেট বাড়ায় বা কমায়। যদি একটি অ্যাপ্লিকেশন বেশি ব্যান্ডউইথ কনজিউম করা শুরু করে, BITS অটোমেটিক্যালি ফাইল ট্রান্সফার রেট কমায়, এভাবে ইউজারের সামগ্রিক অভিজ্ঞতা রক্ষা করে এবং নিশ্চিত করে যে ব্যাকগ্রাউন্ড ট্রান্সফার অপ্টিমাল।

যতক্ষণ না ফাইল ট্রান্সফার শুরুকারী ইউজার নেটওয়ার্কে লগড অন থাকে এবং একটি নেটওয়ার্ক কানেকশন বজায় থাকে, BITS ফাইল ট্রান্সফার চালিয়ে রাখে, এমনকি যদি অ্যাপ্লিকেশন নিজে এক্সিট করে। 그렇더라도, BITS কোনো নেটওয়ার্ক কানেকশন ফোর্স করে না যদি সেটি হারায় বা কোনো ইউজার লগ অফ করে। বদলে, এটি প্রথমে ট্রান্সফার জবটি সাসপেন্ড করে এবং তারপর কানেকশন পুনঃস্থাপিত হয়ে গেলে বা লগ-অফ করা ইউজার লগ ইন করলে রিজিউম করে।

BITS সবসময় ফাইল ট্রান্সফারের খরচ এবং নেটওয়ার্ক ইউজেজ, valamint নেটওয়ার্ক কানজেশন বিবেচনা করে। এছাড়া, এটি অ্যাপ-স্পেসিফাইড ট্রান্সফার পলিসি ব্যবহার করে কস্টেড নেটওয়ার্ক কানেকশনে ফাইল ট্রান্সফার রोकতে। এই বিবেচনাগুলো রোমিং নেটওয়ার্কে বিশেষভাবে মatterson করে যেখানে খরচ দ্রুত বেড়ে যেতে পারে। BITS আছা ইউজারের ফোরগ্রাউন্ড কাজের ওপর প্রভাব বা ইন্টারফেরেন্স মিনিমাইজ করতে সাহায্য করে, চূড়ান্তভাবে সিস্টেমের সাথে কাজ করার তাদের অভিজ্ঞতা সংরক্ষণ করতে সাহায্য করে।

Background Intelligent Transfer Service-এর অ্যাপ্লিকেশন

BITS সিস্টেম অ্যাডমিনিস্ট্রেটরদের জন্য সবচেয়ে উপকারী যারা HTTP ওয়েব সার্ভার এবং SMB ফাইল শেয়ার থেকে ফাইল ডাউনলোড বা আপলোড করতে চান। এছাড়া, এটি একটি কম্পোনেন্ট অবজেক্ট মডেল ইন্টারফেস প্রদান করে যা C, C++ এবং .NET প্রোগ্রামারদের জন্য উপকারী। Microsoft BITS অ্যাপ্লিকেশন প্রোগ্রামিং ইন্টারফেস (API)-কে Universal Windows Platform প্রোগ্রামারদের জন্য রিকমেন্ড করে না। তারা Windows.Networking.BackgroundTransfer API ব্যবহার করা উচিত।

Windows BITS ব্যবহার করে ইউজারের লোকাল সিস্টেমে আপডেট ডাউনলোড করে। অন্য অনেক অ্যাপ্লিকেশনও BITS ব্যবহার করে, যার মধ্যে অ্যাপ্লিকেশন যেগুলো HTTP বা রিপ্রেজেন্টেশনাল স্টেট ট্রান্সফার ওয়েব সার্ভার বা SMB ফাইল সার্ভার থেকে ডাউনলোড বা ফাইল আপলোড করতে চায়। অ্যাপ্লিকেশন যেগুলো নেটওয়ার্ক ডিসকানেক্ট বা কম্পিউটার রিস্টার্টের পর ফাইল ট্রান্সফার অটোমেটিক্যালি রিজিউম করতে চায় সেগুলোও BITS ব্যবহার করে। চূড়ান্তভাবে, BITS ওয়াইড এরিয়া নেটওয়ার্ক ট্রাফিক অপ্টিমাইজ করতে ব্যবহার করা যায় যখন BranchCache-এর সাথে ব্যবহার করা হয়, একটি WAN অপ্টিমাইজেশন টেকনোলজি যা Windows এবং Windows Server OS-এর কিছু এডিশনে অন্তর্ভুক্ত।

Microsoft Windows BITS বোঝা: ব্যাকগ্রাউন্ড ইন্টেলিজেন্ট ট্রান্সফার সার্ভিস ব্যাখ্যা অ্যাডমিনরা Microsoft Windows BITS ব্যবহার করে WAN ট্রাফিক ম্যানেজ করতে পারেন।

BITS-এ ট্রান্সফার জবের টাইপ এবং জব স্টেট

BITS তিন ধরনের ট্রান্সফার জব সাপোর্ট করে:

  1. ডাউনলোড জব। এটি ক্লায়েন্টে ফাইল ডাউনলোড করে। এছাড়া, সব ফাইল অ্যাসিনক্রোনাসলি ফোরগ্রাউন্ড বা ব্যাকগ্রাউন্ডে ট্রান্সফার হয়।
  2. আপলোড জব। এটি ক্লায়েন্ট থেকে সার্ভারে একটি ফাইল আপলোড করে।
  3. আপলোড-রিপ্লাই জব। এটি প্রথমে সার্ভারে একটি ফাইল আপলোড করে এবং তারপর সার্ভার অ্যাপ্লিকেশন থেকে একটি রিপ্লাই ফাইল পায় যে আপলোডটি সম্পূর্ণ হয়েছে।

একটি BITS জব চারটি স্টেটের যেকোনো একটি হতে পারে:

  1. স্টার্টিং। ডিফল্টভাবে, স্টার্টিং স্টেট হলো SUSPENDED। এই স্টেট থেকে, একটি ইউজার জবের ফাইল অ্যাড করতে পারে এবং জব এবং ফাইল প্রপার্টিও সেট করতে পারে।
  2. অ্যাকশন। একাধিক অ্যাকশন স্টেট সম্ভব যা জবের করেন্ট ইন্টারনাল এক্টিভিটি দেখায়, যেমন QUEUED, CONNECTING এবং TRANSFERRING। আরেকটি অ্যাকশন স্টেট হলো TRANSIENT ERROR, যা ইন্ডিকেট করে যে জবটি ফাইল ট্রান্সফার করতে ব্যর্থ হয়েছে।
  3. ট্রান্সফার্ড। এই স্টেট হয় যখন ট্রান্সফার সফল হয়েছে এবং আর ট্রান্সফার করার কিছু নেই।
  4. ফাইনাল। জবটি ACKNOWLEDGED এবং সব কমপ্লিটেড ডাউনলোডেড ফাইল উপলব্ধ।

যে একটি BITS জব চলে, এটি বিভিন্ন স্টেট ক্লাসের মধ্যে স্টেটের মধ্যে ট্রান্সিশন করে। কিন্তু, একবার এটি ফাইনাল স্টেটে পৌঁছালে, সেটি সেই স্টেটের বাইরে মুভ করবে না, অর্থাৎ কোনো স্টেট-চেঞ্জিং মেথড কল করা সম্ভব নয়। এটি জব এনুমারেশনে দেখাবে না। যদি একটি এরর ঘটে, জব ফ্যাটাল এরর স্টেটে মুভ করে (BITS সেটি থেকে রিকভার করতে পারে না) বা ট্রানজিয়েন্ট এরর স্টেটে (এররটি স্বয়ংসমাধান হতে পারে এবং BITS জবটি রিট্রাই করে যতক্ষণ না ট্রান্সফার সফল হয় বা অ্যাপ্লিকেশন-স্পেসিফাইড পিরিয়ডে জবটি টাইম আউট হয়)। যদি একটি জব ট্রানজিয়েন্ট এরর স্টেটে টাইম আউট হয়, BITS সেটি ফ্যাটাল এরর স্টেটে মুভ করে।

Background Intelligent Transfer Service প্রায়োরিটি লেভেল

BITS বুদ্ধিমানভাবে পিক করতে পারে কী ট্রান্সফার জব চালাবে এবং কখন। এর কারণ হলো অ্যাপ্লিকেশন বিভিন্ন প্রায়োরিটি লেভেল ব্যবহার করতে পারে: ফোরগ্রাউন্ডের জন্য এক এবং ব্যাকগ্রাউন্ডের জন্য তিন। একটি প্রায়োরিটি লেভেল নির্ধারণ করে একটি ট্রান্সফার জব কখন প্রসেস হবে ট্রান্সফার কিউতে অন্যান্য জবের সাপেক্ষে, তাই:

  • একটি হায়ার-প্রায়োরিটি জব লোয়ার-প্রায়োরিটি জবের ওপর প্রেসিডেন্স নেয়।
  • লোয়ার-প্রায়োরিটি জব ট্রান্সফার টাইম পায় না যতক্ষণ না সব হায়ার-প্রায়োরিটি জব ট্রান্সফার হয়ে যায় বা এরর স্টেটে থাকে।
  • একই প্রায়োরিটি লেভেলের জবগুলো ট্রান্সফার টাইম শেয়ার করে, তাই কোনো বড় জব ট্রান্সফার কিউ ব্লক করে ডিলে সৃষ্টি করতে পারে না।

একই প্রায়োরিটি লেভেলের জবগুলো শিডিউল করার জন্য, BITS রাউন্ড-রবিন শিডিউলিং ব্যবহার করে, যেখানে প্রতিটি জবকে তার ফাইল প্রসেস করার জন্য একটি টাইম স্লাইস দেওয়া হয়। যদি কোনো নির্দিষ্ট জব তার আলটেড টাইম স্লাইসে কমপ্লিট না হয়, এটি অটোমেটিক্যালি কিউড স্টেটে ফিরে যায়, এবং কিউতে নেক্সট জব ফার্স্ট-ইন, ফার্স্ট-আউট (FIFO) বেসিসে এক্টিভেট হয়। এখানে, লক্ষ্য করুন যে BITS FIFO প্রসেসিং গ্যারান্টি দেয় না, যদিও এটি সেটি করার চেষ্টা করে।

Microsoft Windows BITS বোঝা: ব্যাকগ্রাউন্ড ইন্টেলিজেন্ট ট্রান্সফার সার্ভিস ব্যাখ্যা Windows BITS একই প্রায়োরিটি লেভেলের জবগুলো শিডিউল করার জন্য রাউন্ড-রবিন শিডিউলিং ব্যবহার করে।

BITS 1.5 এবং তার পূর্বে, ফোরগ্রাউন্ড জব ব্যাকগ্রাউন্ড জবের ওপর প্রায়োরিটি পায়। ফ্যাক্ট, ফোরগ্রাউন্ড জব সবচেয়ে হায় প্রায়োরিটি থাকে, এবং BITS একবারে শুধু একটি জব প্রসেস করে। পরবর্তী BITS ভার্সনে, একাধিক ফোরগ্রাউন্ড ট্রান্সফার একসাথে হতে পারে, কিন্তু একই জবে একাধিক ফাইল সবসময় সিকোয়েনশিয়ালি বা সিরিয়ালি ট্রান্সফার হয়।

Background Intelligent Transfer Service-এর ইতিহাস

Microsoft BITS-কে বহুবার আপডেট করেছে:

  • Microsoft BITS ভার্সন ১.০ Windows XP-এ ২০০১ সালে আনার করে।
  • ভার্সন ১.২ মিড-২০০২-এ এল Windows 2000-এ Automatic Updates সার্ভিস যোগ করতে।
  • ভার্সন ১.৫ লেট ২০০৩-এ এল Windows Server 2003-এ এবং কমান্ড-লাইন সাপোর্ট, আরও আপলোড ফিচার এবং সিকিউরিটি উন্নতি আনার।
  • ভার্সন ২.০, মিড-২০০৪-এ রিলিজ একাধিক OS ডিপ্লয়মেন্টের জন্য আপডেট হিসেবে, আরও ডাউনলোড ফিচার, ব্যান্ডউইথ থ্রটলিং এবং SMB-এর জন্য সাপোর্ট আনার।
  • মিড-২০০৭-এ রিলিজ, BITS 2.5 IPv6 এবং কাস্টম HTTP হেডার এবং बेटার HTTP সিকিউরিটির জন্য সাপোর্ট আনার।
  • BITS 3.0, Windows Vista এবং Windows Server 2008-এ অন্তর্ভুক্ত, পিয়ার ক্যাশিং, নোটিফিকেশন, টেম্পোরারি ফাইল অ্যাক্সেস, HTTP রিডাইরেক্ট হ্যান্ডলিং, অতিরিক্ত গ্রুপ পলিসি কন্ট্রোল এবং ইভেন্ট লগিং আনার।
  • BITS 4.0, মিড-২০০৯-এ রিলিজ Windows 7 এবং Windows Server 2008 R2-এ, টোকেন-ভিত্তিক সিকিউরিটি, স্ট্যান্ডঅ্যালোন ফাইল সার্ভার ফিচার, রিফাইনড ব্যান্ডউইথ থ্রটলিং এবং রিভাইসড পিয়ার ক্যাশিং আনার।
  • BITS 5.0, Windows 10-এ মিড-২০১৬-এ অন্তর্ভুক্ত, ব্যাকগ্রাউন্ড কপি জবে উন্নতি, পুরনো ব্যাকগ্রাউন্ড কপি জবের জন্য সাপোর্ট এবং APIs এবং PowerShell cmdlets দিয়ে BITS ব্যবহার করার ক্ষমতা আনার।
  • BITS ভার্সন ১০.১, Windows 10 ভার্সন ১৭০৩-র অংশ, যেটি Windows 10 Creators Update-ও হিসেবে পরিচিত, ডাউনলোড এবং নোটিফিকেশন ফিচার রিফাইন করল।
  • BITS ভার্সন ১০.২, Windows 10 October 2018 Update-র অংশ, ডিফল্ট প্রক্সি অর্ডারিং, এবং মডার্ন স্ট্যান্ডবাই এবং মোবাইল ডিভাইস ম্যানেজার পলিসি এবং গ্রুপ পলিসি সাপোর্ট আনার।
  • BITS ভার্সন ১০.৩, Windows 10 May 2019 Update-র অংশ, HTTP হেডারকে রাইট-অনলি হিসেবে মার্ক করার ক্ষমতা এবং সার্ভার সার্টিফিকেট ভ্যালিডেশন কলব্যাক ইন্যাবল করল।

PowerShell File Transfer Protocol স্ক্রিপ্ট দিয়ে ফাইল আপলোড এবং ডাউনলোড করার পদ্ধতি শিখুন, এবং এন্টারপ্রাইজের জন্য আট সিকিউর ফাইল ট্রান্সফার সার্ভিস সম্পর্কে পড়ুন।

Microsoft Windows Background Intelligent Transfer Service (BITS) সম্পর্কে আরও পড়ুন

  • PowerShell কী এবং কীভাবে ব্যবহার করবেন: চূড়ান্ত টিউটোরিয়াল
  • Windows 11 পারফরম্যান্স ইস্যু চিনতে এবং ফিক্স করার ৫ ধাপ
  • বড় ফাইল ট্রান্সফার করার টুলস: সেরা খুঁজে বের করে কেনার পদ্ধতি
  • ডেস্কটপ অ্যাডমিনিস্ট্রেটরদের জন্য Windows 11 মাইগ্রেশন টুলস
  • ডেস্কটপ অ্যাডমিনদের জানা উচিত Windows 11 আপগ্রেড ইস্যু

IT অপারেশনস এবং ইনফ্রাস্ট্রাকচার ম্যানেজমেন্টে গভীরে যান

  • Microsoft Windows BITS বোঝা: ব্যাকগ্রাউন্ড ইন্টেলিজেন্ট ট্রান্সফার সার্ভিস ব্যাখ্যা
    সিম্পল Struts 2 ফাইল আপলোড উদাহরণ

    Microsoft Windows BITS বোঝা: ব্যাকগ্রাউন্ড ইন্টেলিজেন্ট ট্রান্সফার সার্ভিস ব্যাখ্যা

    লেখক: Cameron McKenzie

  • Microsoft Windows BITS বোঝা: ব্যাকগ্রাউন্ড ইন্টেলিজেন্ট ট্রান্সফার সার্ভিস ব্যাখ্যা
    JCL (জব কন্ট্রোল ল্যাঙ্গুয়েজ) কী?

    লেখক: TechTarget Contributor

  • Microsoft Windows BITS বোঝা: ব্যাকগ্রাউন্ড ইন্টেলিজেন্ট ট্রান্সফার সার্ভিস ব্যাখ্যা
    নেটওয়ার্ক জুড়ে ফাইল ট্রান্সফার করার জন্য TFTP ব্যবহার করার পদ্ধতি

    Microsoft Windows BITS বোঝা: ব্যাকগ্রাউন্ড ইন্টেলিজেন্ট ট্রান্সফার সার্ভিস ব্যাখ্যা

    লেখক: Damon Garn

  • Microsoft Windows BITS বোঝা: ব্যাকগ্রাউন্ড ইন্টেলিজেন্ট ট্রান্সফার সার্ভিস ব্যাখ্যা
    CLI-এ cURL এবং Wget ব্যবহার করে নেটওয়ার্ক ফাইল ডাউনলোড করা

    Microsoft Windows BITS বোঝা: ব্যাকগ্রাউন্ড ইন্টেলিজেন্ট ট্রান্সফার সার্ভিস ব্যাখ্যা

    লেখক: Damon Garn

  1. পিসিতে হ্যালো ইনফিনিট সর্বোত্তম পারফরম্যান্সের জন্য অপ্টিমাইজ করুন

  2. আপনার উইন্ডোজ ১১/১০-এ সর্বশেষ ফিচার আপগ্রেড ও সার্ভিসিং আপডেট আছে কি?

  3. Qumana: ডেস্কটপ ব্লগিং-এর একটি সহজ বিকল্প

  4. IObit Uninstaller দিয়ে উইন্ডোজ ১০ থেকে সফটওয়্যার ব্যাচ-আনইনস্টল করার উপায়