प्रक्रिया आईडी और पोर्ट नंबर के बीच अंतर और संबंध क्या है?


4

प्रक्रिया निष्पादन में एक कार्यक्रम है। जैसे फ़ायरफ़ॉक्स। मैं "प्रक्रिया" और "बंदरगाहों" के बीच संबंध और अंतर को नहीं समझता।

जब मैं netstat -no -p -TCPcmd पर चलता हूं तो मैं देख सकता हूं कि नीचे दिखाए गए अनुसार प्रत्येक प्रक्रिया के साथ कई पोर्ट नंबर जुड़े हुए हैं। हालांकि बंदरगाहों और प्रक्रियाओं के बीच का संबंध मेरे लिए अस्पष्ट है।

स्क्रीनशॉट: "netstat -no -p -TCP" का cmd आउटपुट


8
एक कर्मचारी आईडी नंबर और एक कार्यालय नंबर के बीच का अंतर।
चिरलीस

en.wikipedia.org/wiki/Network_socket के अनुसार MaQleod के जवाब में एक सॉकेट कम से कम एक स्थानीय सॉकेट और एक पोर्ट की विशेषता है।
बार्लोप

BTW ओपी, आपके सीएमडी विंडो का टेक्स्ट स्क्वैश दिखता है। मैं इसे बहुत सारे पीसी पर देखता हूं जो 7 या 8 से विंडोज 10 में अपग्रेड हो गए हैं। आप इसे फॉन्ट साइज, सेविंग, फिर इसे बदलकर ठीक कर सकते हैं।
वेजेंड्रिया

@wjandrea मुझे लगता है कि अगर रैस्टर चुनते समय यह स्क्वैश हो जाता है और फिर रैस्टर के साथ आपको कुछ मज़ेदार आयामों के विकल्प मिलते हैं और आप पूर्वावलोकन भी कर सकते हैं और मज़ेदार दिख सकते हैं। लेकिन अगर कूरियर नया चुनते हैं, तो आपको हास्यास्पद आयाम विकल्प नहीं मिलते हैं, और संभवतः कुछ मामूली फ़िडलिंग के साथ आप यह सुनिश्चित कर सकते हैं कि सेटिंग सही है।
बार्लोप

जवाबों:


32

सीधे प्रश्न का उत्तर देने के लिए: प्रक्रिया आईडी और पोर्ट नंबर के बीच कोई संबंध नहीं है। वे पूरी तरह से अलग चीजों की गणना करते हैं।

पीआईडी ​​एक प्रक्रिया की पहचान करता है (जैसे एक फ़ायरफ़ॉक्स सत्र: प्रत्येक टैब एक अलग प्रक्रिया के रूप में चल सकता है), और पोर्ट संख्या यह पहचानती है कि संचार करने के लिए कौन सी प्रक्रिया का उपयोग कर रहा है। विशिष्ट पोर्ट संख्याओं में प्रथागत उपयोग होते हैं: 80 आमतौर पर HTTP और 443 HTTPS के लिए उपयोग किया जाता है। लेकिन एक प्रक्रिया किसी भी पीआईडी ​​नंबर को प्राप्त कर सकती है, जो इस बात पर निर्भर करती है कि यह कब शुरू किया गया है।

जैसा कि आप देख सकते हैं, आपके स्थानीय पोर्ट नंबरों को क्रमिक रूप से उपयोग किया जाता है और न तो गंतव्य पोर्ट संख्या या उनके उपयोग की प्रक्रिया के पीआईडी ​​से संबंधित हैं।


8
रूपक रूप से यदि संभवत: शाब्दिक रूप से नहीं, तो वे विभिन्न सरणियों में सूचक हैं ।
पीटर जार्जेंस

तकनीकी रूप से बोलना, initइन दिनों पीआईडी ​​1 आरक्षित है। लेकिन इससे परे, यह जानने का कोई तरीका नहीं होना चाहिए कि पीआईडी ​​को कौन सी प्रक्रिया मिलेगी।
कैट

मैं बताता हूं कि अंतिम वाक्य "आपके स्रोत पोर्ट संख्या क्रमिक रूप से उपयोग किए जाते हैं"। ऐसा प्रतीत होता है कि यह एक कार्य केंद्र है जो किसी भी पोर्ट पर नहीं सुनता है, लेकिन दूसरों के जवाब को देखने के लिए जो सर्वर के बारे में बात कर रहे हैं, यह एक महत्वपूर्ण अंतर है।
मोंटी हार्डर

" आपके स्थानीय पोर्ट नंबर क्रमिक रूप से उपयोग किए जाते हैं " - यह मेरे लिए विशेष रूप से अनुक्रमिक नहीं दिखता है, कुछ अंतराल हैं और हम उस समय को भी नहीं जानते हैं जिस पर कनेक्शन खोले गए थे। वे सिर्फ उस विशेष स्क्रीनशॉट में आरोही क्रम में सूचीबद्ध हैं।
बरगी

और पूर्णता के लिए, यह ध्यान दिया जाना चाहिए कि कई प्रक्रियाएं किसी भी बंदरगाह का उपयोग नहीं करेंगी (हालांकि परिभाषा के अनुसार ये एक netstatकमांड द्वारा सूचीबद्ध नहीं होंगे )।
ट्रिपहाउंड

12

PID को केवल इसलिए दिखाया जाता है ताकि आप संचार करने वाली विशिष्ट प्रक्रिया की पहचान कर सकें और पोर्ट नंबर से संबंधित न हों।

यदि आपके पास एक प्रोग्राम की एक से अधिक प्रतियां चल रही हैं और वे सभी नेटवर्क पर संचार कर रहे हैं, तो प्रोग्राम का नाम दिखाना विशिष्ट रूप से यह पहचानने के लिए पर्याप्त नहीं होगा कि कौन सा पोर्ट प्रोग्राम की किस कॉपी से संबंधित है।

यदि आप किसी विशेष कनेक्शन को मारना चाहते हैं, लेकिन कार्यक्रम की सभी प्रतियों को आपको प्रोग्राम नाम के बजाय पीआईडी ​​जानने की आवश्यकता नहीं है।


यदि आप प्रक्रिया को "प्रोग्राम की कॉपी" के रूप में परिभाषित कर रहे हैं जो स्पष्ट परिभाषा नहीं है। दो अलग-अलग निर्देशिकाओं में कॉपी किए गए प्रोग्राम, या कहीं और कॉपी किए गए प्रोग्राम फ़ाइल या किसी अन्य नाम के साथ .. या RAM में एक प्रोग्राम के बीच एक बड़ा अंतर है।
बार्लोप

9

प्रक्रिया

एक प्रक्रिया क्या है?

एक प्रक्रिया मूल रूप से एक कार्यक्रम की एक प्रति है। इसलिए, यदि आप कई बार नोटपैड जैसे प्रोग्राम चलाते हैं, तो प्रत्येक विशिष्ट समय की अपनी प्रक्रिया होगी। एक प्रक्रिया संसाधनों का उपयोग करती है, जैसे आपके कंप्यूटर पर उपलब्ध रैम। यदि आप टास्क मैनेजर को देखते हैं और आप प्रोग्राम को कई बार चलाते हैं, तो प्रोग्राम की प्रत्येक अलग घटना एक अलग प्रक्रिया हो सकती है।

प्रक्रियाएँ कैसे सौंपी जाती हैं?

पीआईडी ​​("प्रोसेस आईडी") नंबर ऑपरेटिंग सिस्टम द्वारा हर बार एक नई प्रक्रिया किए जाने पर असाइन किए जाते हैं।

प्रक्रियाओं के लिए क्या अच्छा है?

प्रक्रिया आईडी का उपयोग करना (जो किसी चल रहे कार्यक्रम की एक सटीक, विशिष्ट प्रतिलिपि की पहचान करता है), आप यह निर्धारित कर सकते हैं कि कौन सा सॉफ्टवेयर प्रोग्राम उस प्रक्रिया का एक उदाहरण है। आप इसे टास्कलिस्ट (कमांड लाइन से), WMIC PROCESS GET / FORMAT: LIST (कमांड लाइन से), या टास्क मैनेजर का उपयोग करके कर सकते हैं। टास्क मैनेजर में, माइक्रोसॉफ्ट विंडोज के कुछ नए संस्करणों पर, आपको "विवरण" टैब पर जाने की आवश्यकता हो सकती है। यदि पीआईडी ​​दिखाने के लिए कोई कॉलम नहीं है, तो आप इसे जोड़ सकते हैं। (विंडोज 10 में, कम से कम, आप एक कॉलम नाम पर राइट-क्लिक करते हैं, और फिर दृश्य स्तंभों का चयन कर सकते हैं। जैसा कि मेमोरी मेरी सेवा करती है, विंडोज के पुराने संस्करणों में इसके लिए एक मेनू विकल्प था।)

एक और कमांड जो आपको उपयोगी लग सकता है वह है नेटस्टैट। मैं देख रहा हूँ कि आप netstat का उपयोग कर रहे हैं। "-B" पैरामीटर को जोड़ने का प्रयास करें। (यह विकल्प Microsoft Windows के लिए विशिष्ट है, जिसे मैं मानता हूं कि आप अपने प्रॉम्प्ट में C: \ Users \ User> के आधार पर उपयोग कर रहे हैं।) जिसमें Netstat निष्पादन योग्य फ़ाइल के नाम का पता लगाने के लिए PID का उपयोग करने का प्रयास करेगा। और अगली पंक्ति पर प्रिंट करें।

यह सब पोर्ट नंबर के लिए पूरी तरह से असंबंधित है।

पोर्ट नंबर

पोर्ट नंबर क्या है

एक पोर्ट नंबर का उपयोग नेटवर्क कनेक्शन के एक भाग के रूप में किया जाता है। सभी नेटवर्क संचार पोर्ट संख्याओं का उपयोग नहीं करते हैं। उदाहरण के लिए, TraceRoute (Microsoft विंडोज पर "TRACERT" नाम) और Microsoft Windows "पिंग" कमांड द्वारा उपयोग किया जाने वाला ICMP पोर्ट नंबर का उपयोग नहीं करता है। सबसे आम प्रोटोकॉल जो यूडीपी और टीसीपी हैं। (शायद SCTP अगला-सबसे आम है?) कई प्रोटोकॉल जिसमें HTTP (S) और SMTP (E-Mail के लिए) TCP का उपयोग करते हैं, इसलिए पोर्ट नंबर का उपयोग किया जाता है।

पोर्ट नंबर किसके लिए अच्छे हैं?

एक ही कंप्यूटर के बीच कई टीसीपी कनेक्शन होना संभव है, और उन कनेक्शनों की पहचान करने के लिए पोर्ट नंबर का उपयोग किया जाता है। उदाहरण के लिए, यदि आपका ई-मेल प्रोग्राम ई-मेल प्राप्त कर रहा है, तो नेटवर्क कनेक्शन [LOCAL PORT 52534, REMOTE / FOREIGN PORT 25] के बीच हो सकता है, जबकि आपका वेब ब्राउज़र [LOCAL PORT 54499, REMOTE / FOREIGN] का उपयोग कर कनेक्शन बना सकता है पोर्ट 443]। इस तरह, जब दूरस्थ कंप्यूटर प्रतिक्रिया करता है और आने वाले ट्रैफ़िक को [LOCAL PORT 54499, REMOTE / FOREIGN PORT 443] के रूप में परिभाषित किया जाता है, तो आपका कंप्यूटर जानता है कि ट्रैफ़िक आपके स्थानीय ई-मेल प्रोग्राम के लिए नहीं है। वास्तव में, आपका वेब ब्राउज़र एक ही समय में कई ग्राफिक्स डाउनलोड करने जैसा कुछ करने के लिए कई टीसीपी कनेक्शन बना सकता है। जब आपका कंप्यूटर ग्राफ़िकल डेटा प्राप्त करता है, तो पोर्ट नंबर आपके वेब ब्राउज़र को यह जानने में मदद कर सकते हैं कि डेटा किस कनेक्शन के लिए है।

(नोट: वर्गाकार कोष्ठक एक संकेतन हैं जो मैंने उस परिच्छेद को पढ़ने में थोड़ा आसान बनाने के लिए बनाया है। नेटस्टेट के आउटपुट में, बृहदान्त्र के बाद पोर्ट संख्या दिखाई जाती है। मैं आमतौर पर "विदेशी" शब्द का उपयोग करना पसंद नहीं करता। पोर्ट संख्याओं का वर्णन करें, लेकिन मैंने इस मामले में किया क्योंकि यह netstat द्वारा प्रयुक्त शब्द था।)

पोर्ट नंबर कैसे सौंपे जाते हैं?

सामान्य तौर पर, अधिकांश सॉफ़्टवेयर केवल "नेटवर्क स्टैक" को बताता है कि वह नेटवर्क कनेक्शन बनाना चाहता है। आधुनिक ऑपरेटिंग सिस्टम में, "नेटवर्क स्टैक" को ऑपरेटिंग सिस्टम के हिस्से के रूप में बनाया गया है (हालांकि विंडोज 3.1 के दिनों में, Microsoft इंटरनेट एक्सप्लोरर या ट्रम्पेट विनसॉक जैसे सॉफ़्टवेयर प्रोग्राम की स्थापना के दौरान एक नेटवर्क स्टैक आमतौर पर जोड़ा गया था) । सॉफ्टवेयर प्रोग्राम आमतौर पर नेटवर्क स्टैक को कुछ बताएगा, जैसे "रिमोट पोर्ट 443 में एक नया टीसीपी कनेक्शन बनाएं।" नेटवर्क स्टैक यह निर्धारित करेगा कि किस स्रोत पोर्ट संख्या का उपयोग करना चाहता है।

सारांश

प्रक्रियाएं और पोर्ट नंबर बहुत अलग चीजें हैं। मैं अन्य उत्तरों में अधिकांश या सभी जानकारियों से सहमत हूँ। (हालाँकि, मैंने अपना उत्तर यहाँ जोड़ दिया क्योंकि मैंने थोड़ा और विस्तार से सोचा, जैसे कि जहाँ से संख्याएँ सौंपी गई हैं, वहाँ भेद को थोड़ा और स्पष्ट करने में मदद मिल सकती है।)


यह उत्तर एक तरह से अच्छा है, लेकिन मुझे लगता है कि यह बताना बेहतर होगा कि सॉफ़्टवेयर को कुछ विशिष्ट संख्या कैसे मिलती है, भले ही वे असाइन किए गए पोर्ट नंबर के साथ प्रोटोकॉल का उपयोग कर रहे हों, लेकिन फिर भी
DreadfulWeather

@ ड्रेडफुलवर्थ: सबसे पहले, "वे" शब्द का क्या अर्थ है? और दूसरा, मेरा जवाब बिल्कुल ऐसा नहीं है, जैसे "पोर्ट नंबर कैसे असाइन किए जाते हैं?" अनुभाग। मैं आपकी टिप्पणी को चार बार पढ़ता हूं कि क्या मैं समझ सकता हूं कि आप क्या संवाद करने की कोशिश कर रहे हैं, लेकिन मुझे यह कहते हुए खेद है कि मैं अभी आपकी टिप्पणी को समझ नहीं पाया हूं।
TOOGAM

2

थोड़ा सरलीकृत:

PID वह संख्या है जो किसी विशिष्ट प्रक्रिया को संदर्भित करने के लिए आपके कंप्यूटर में आंतरिक रूप से उपयोग की जाती है। एक प्रोसेसर एक समय में केवल एक ही काम कर सकता है, लेकिन इसके पास कई कार्य हैं, इसलिए यह विभिन्न प्रक्रियाओं के लिए काम करने के बीच वैकल्पिक है, और पीआईडी ​​वह टैग है जो प्रोसेसर प्रत्येक प्रक्रिया की पहचान करने के लिए उपयोग करता है।

पोर्ट नंबर एक टैग है जो सभी नेटवर्क संचारों को दिया जाता है ताकि जब कोई उत्तर नेटवर्क से वापस आए, तो आपके होम नेटवर्क पर मौजूद राउटर को पता हो कि कंप्यूटर उस उत्तर का इंतजार कर रहा है, और जब उत्तर कंप्यूटर पर आता है, तो कंप्यूटर को पता होता है कि कौन सी प्रक्रिया का इंतजार है संदेश।

उदाहरण के लिए, पोर्ट टैग यह सुनिश्चित करता है कि जब आप इस पृष्ठ को Stackexchange के सर्वर से अनुरोध करते हैं, और साइट डेटा आपके राउटर पर पहुंचता है, तो आपका राउटर जानता है कि यह आपका कंप्यूटर है, न कि आपके भाई का स्मार्टफोन या कोई अन्य डिवाइस जो चाहता है उन्हें। और जब वे आपके कंप्यूटर पर आते हैं, तो आपका कंप्यूटर बता सकता है कि यह फ़ायरफ़ॉक्स है जो उन्हें चाहता है, वर्ड नहीं।


2

एक प्रक्रिया एक चल कार्यक्रम है, ज्यादातर मामलों में। फ़ायरफ़ॉक्स जैसा कार्यक्रम वास्तव में एक साथ काम करने वाली कई प्रक्रियाओं से मिलकर बना सकता है, लेकिन जहां तक ​​ऑपरेटिंग सिस्टम का सवाल है, वे काम की मूल इकाई हैं: हर प्रक्रिया में एक छवि (निष्पादन योग्य फ़ाइल जो चल रही है), एक कार्यशील निर्देशिका, संभालती है (संसाधन असाइनमेंट), मेमोरी एड्रेस स्पेस, सीपीयू और आई / ओ प्राथमिकता, और इसी तरह। यदि आप नोटपैड चलाते हैं, तो नोटपैड। Exe का उपयोग करके एक प्रक्रिया शुरू की जाती है, और यह आपके साथ बातचीत करने के लिए एक विंडो खोलता है।

एक पोर्ट एक संसाधन है। ऑपरेटिंग सिस्टम में पोर्ट की एक निश्चित संख्या (65535) उपलब्ध है, और एक प्रक्रिया पोर्ट के अनन्य उपयोग को प्राप्त करने के लिए एक हैंडल का अनुरोध कर सकती है। एक प्रक्रिया किसी भी संख्या में अप्रयुक्त बंदरगाहों के लिए हैंडल प्राप्त कर सकती है। नेटवर्क संचार के लिए एक पोर्ट की आवश्यकता होती है। आउटगोइंग कनेक्शन के लिए चुना गया पोर्ट नंबर (जैसे वेब सर्वर से कनेक्ट होने वाला ब्राउज़र) अनिवार्य रूप से मनमाना है; वे कोई महत्व नहीं रखते हैं जिसकी आपको देखभाल करने की आवश्यकता है।

यह सब एक सरलीकृत अवलोकन है, इसलिए इसे सुपर सटीक होने के रूप में न लें ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.