क्या एक वेब डेवलपर को टीसीपी / आईपी को समझना चाहिए और राउटर अनुरोधों का प्रबंधन कैसे करते हैं? [बन्द है]


15

मैंने एक महत्वपूर्ण साइट पर डेवलपर के रूप में नौकरी की स्थिति के लिए आज नौकरी का साक्षात्कार दिया था। उन्होंने कई टन प्रोग्रामिंग भाषा से संबंधित प्रश्न पूछे, जिनका मैं बिना किसी समस्या के उत्तर देने में कामयाब रहा, लेकिन फिर उन्होंने मेरे पीसी पर एक वेब सर्वर से अनुरोध करने के बाद टीसीपी / आईपी अनुरोध कैसे किया जाता है, इस बारे में सवाल पूछना शुरू कर दिया। मैंने एक छात्र के रूप में उन सामग्रियों को प्राप्त किया, लेकिन मैं उन्हें अच्छी तरह से याद नहीं करता, क्योंकि मैं ज्यादातर वेब विकास में काम कर रहा हूं, मेरा सवाल है:

एक सॉफ्टवेयर डेवलपर के रूप में, मुख्य रूप से वेब एप्लिकेशन पर काम करते हुए, क्या मुझे टीसीपी / आईपी का व्यापक ज्ञान होना चाहिए और कैसे राउटर अनुरोधों का प्रबंधन करते हैं या यह मेरे लिए सिर्फ ब्लैक बॉक्स ज्ञान है?


क्या वे इस बारे में अधिक जानना चाहते हैं कि टीसीपी / आईपी अनुरोधों को एक वैचारिक स्तर पर कैसे बनाया जाता है, या क्या वे विशिष्टताओं को जानना चाहते हैं? हर बार जब हम किसी नेटवर्क पर संचार करते हैं तो टीसीपी / आईपी का उपयोग हुड के तहत किया जाता है। मेरा व्यक्तिगत रूप से मानना ​​है कि यह समझना बहुत महत्वपूर्ण है कि कैसे चीजें कम से कम एक वैचारिक स्तर पर हुड के नीचे काम करती हैं। यह आपको समस्याओं का समाधान करने में मदद करेगा, और अक्सर बेहतर समाधान भी डिजाइन करता है।
पराग

जवाबों:


25

इस तरह का ज्ञान बहुत उपयोगी रूप से बहुत बार आता है ।

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

लेकिन मुझे वास्तव में समझ में नहीं आता है कि लोग इंटरव्यू में इस सामान पर इतना भार क्यों डालते हैं, खासकर जब यह एक जूनियर प्रोग्रामर के लिए हो। यह निश्चित रूप से एक टीम में सभी के लिए आवश्यक ज्ञान नहीं है और आपको सिखाया जा सकता है।


2
अच्छा बिंदु फिर से जूनियर प्रोग्रामर, लेकिन मुझे यकीन नहीं है कि किस स्तर की स्थिति @forgotmynick के लिए आवेदन कर रहा है :-)
डीन हार्डिंग

@ डीन - निष्पक्ष बिंदु। मैं यह मानकर चलता हूं कि जब वे छात्र थे तब लोग 5+ वर्षों में देव नहीं हुए थे। लेकिन आप सही हैं, हमेशा ऐसा नहीं होता।
पीडीआर p

1
कम से कम यह जानना कि क्या होता है जब राउटर चुपचाप कनेक्शन छोड़ देते हैं, वास्तव में उत्पादन सेटिंग में अच्छा होता है। एक से अधिक बार काट लिया गया।

@pdr - मैं असहमत हूं। इस प्रकार का ज्ञान तब उपयोगी होता है जब आप जानना चाहते हैं कि चीजें इतनी लंबी क्यों होती हैं या आपकी साइट पर किए गए अपडेट आपके उपयोगकर्ताओं के ब्राउज़र में क्यों नहीं दिखाई देते हैं। नेटवर्क नॉलेज वाले किसी व्यक्ति को इसका उत्तर पता होगा: कैशिंग। व्यक्तिगत रूप से, एक सलाहकार के रूप में, मैंने मूर्खतापूर्ण सरल (और कंपनी के लिए बहुत महंगा) चीजों को ठीक करने के लिए एक श * लोड बनाया है जो लोग इन चीजों को जानते थे तो लोग उनसे बचते थे। यह रॉकेट विज्ञान या क्वांटम यांत्रिकी की तरह नहीं है। मेरा मतलब है c'mon, jr dev के लिए कोई बहाना नहीं है इस बारे में पता नहीं है (विशेषकर यदि एक सीएस पृष्ठभूमि का)।
luis.espinal

@ luis.espinal - ईमानदारी से, मुझे नहीं लगता कि मैं एक ही श्रेणी में कैशिंग लंप कर रहा होता। यह नेटवर्किंग की चीज नहीं है, यह ब्राउजर की चीज है। मैं आपके साथ सहमत हूं कि कैशिंग (ब्राउज़र या सर्वर) कुछ ऐसा है जिसे हर किसी को समझने की आवश्यकता है क्योंकि यह सरल है लेकिन इसमें बहुत सारे गौचे हैं। लेकिन टीसीपी / आईपी?
पीडीआर

16

मेरी व्यक्तिगत राय है कि एक वेब डेवलपर को पता होना चाहिए कि निम्न-स्तर के प्रोटोकॉल कैसे काम करते हैं। टीसीपी / आईपी के विशेष रूप से HTTP, लेकिन यह भी (कम से कम मूल बातें)। आपकी साइट की जटिलता के आधार पर, आप अपने आप को HTTP ट्रेस डंप या यहां तक ​​कि tcpdumpलॉग को देखने के लिए पा सकते हैं जिस स्थिति में आपको कम से कम टीसीपी / आईपी के ज्ञान की आवश्यकता होगी।

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

यदि आप सभी पर काम कर रहे हैं तो कुछ इंट्रानेट साइट या कुछ काफी सरल है, तो ज्ञान इतना महत्वपूर्ण नहीं हो सकता है, लेकिन मुझे अभी भी लगता है कि निचले स्तर के सामान को जानना हमेशा मददगार होगा।


3
योग्य ... मैं http को निम्न स्तर का प्रोटोकॉल नहीं कहूंगा
Pemdas

2
@Permdas: यह सब सापेक्ष है। HTTP टीसीपी की तुलना में उच्च स्तर है, लेकिन SOAP की तुलना में निम्न स्तर है।
डीन हार्डिंग

1
प्रोटोकॉल की तुलना में SOAP अधिक कार्यान्वयन-विशिष्ट चीज है। दुर्भाग्य से इसके कार्यान्वयन एक-दूसरे के इतने करीब हैं, कि वे इसे "प्रोटोकॉल" कहते हैं
कगली-सान

HTTP: हाँ। टीसीपी / आईपी: कैसे और क्यों यह कुछ उच्च स्तर के संचालन करता है की एक अल्पविकसित समझ शायद ठीक है। मुझे संदेह है कि एक वेब विकास के माहौल में एक गहन ज्ञान की आवश्यकता होती है (या अक्सर उपयोगी होती है)
एंडी हंट

7

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

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

लेकिन भले ही यह विशेष रूप से व्यावहारिक नहीं है, मजबूत डेवलपर्स स्टैक की विभिन्न परतों के बारे में उत्सुक हैं और ऐसा करने के लिए कोई स्पष्ट लाभ नहीं होने पर भी उनके बारे में जानने की प्रवृत्ति है। मैं यह उम्मीद करना चाहूंगा कि एक वेब डेवलपर को इस बात की गहरी समझ थी कि रिलेशनल डेटाबेस कैसे काम करते हैं या नेटवर्किंग कैसे काम करते हैं, यह एक वेब डेवलपर से ज्यादा मजबूत होता है जो केवल वेब डेवलपमेंट टेक्नोलॉजी के बारे में जानने तक ही सीमित है। जाहिर है, यह एक सही सहसंबंध नहीं है, लेकिन यह पूछना उचित है।


+1 के लिए "यह भी अमूल्य हो सकता है जब आपको डेवलपर्स के साथ एक समस्या पर चर्चा करने वाले कमरे में रहने की आवश्यकता होती है, वेब सर्वर प्रवेश करता है, नेटवर्क प्रवेश करता है, और डेटाबेस को बोलने और भाषा को समझने में सक्षम होना चाहिए जो बाकी सब बोल रहा है और बुद्धिमान प्रश्न पूछने के लिए "
पराग

5

आपके द्वारा बनाई जा रही वेबसाइट पर निर्भर करता है। छोटी / मध्यम वेबसाइटों के लिए, टीसीपी / आईपी का मूल ज्ञान शायद ठीक है।

यदि आप एक शीर्ष वेबसाइट (यातायात के संदर्भ में) पर काम कर रहे हैं, तो अंतर्निहित नेटवर्किंग प्रोटोकॉल और बुनियादी ढांचे का विस्तृत ज्ञान बेहद महत्वपूर्ण है। यह आपको अच्छे डिजाइन निर्णय लेने में अक्सर मार्गदर्शन करेगा।


3

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


2

एक सॉफ्टवेयर डेवलपर के रूप में, मुख्य रूप से वेब एप्लिकेशन पर काम करते हुए, क्या मुझे टीसीपी / आईपी का व्यापक ज्ञान होना चाहिए और राउटर अनुरोधों का प्रबंधन कैसे करते हैं या यह मेरे लिए सिर्फ ब्लैक बॉक्स ज्ञान है?

IMO, तथ्य यह है कि आप एक सॉफ्टवेयर डेवलपर हैं (मुझे लगता है कि एक सीएस पृष्ठभूमि के साथ) इन चीजों के बारे में पता होना चाहिए। विशेष रूप से यदि आप वेब विकास करते हैं। जैसा कि मैंने अपनी एक टिप्पणी में उल्लेख किया है, मैंने परामर्श शुल्क में एक श * लोड किया है जो वास्तव में उन लोगों द्वारा किए गए बेवकूफ त्रुटियों को ठीक करता है जो नेटवर्क / इंटरनेट वास्तुकला की मूल बातें नहीं जानते हैं।

ZOMG, मैंने अपनी वेबसाइट में जो बदलाव किए हैं, वे नहीं दिख रहे हैं, plz teh help! * ZOMG, लोगों के प्रोफाइल को पार किया जा रहा है क्योंकि सत्रों को कहीं न कहीं कैश किया जा रहा है, plz teh help! * ZOMG, हमारे पास प्रमाणीकृत उपयोगकर्ताओं के लिए सुरक्षित सामग्री है, लेकिन लोग उन्हें बुकमार्क और खूनी प्रमाणीकरण स्क्रीन के साथ जोड़ सकते हैं, plz teh मदद! "

... और इतने पर ... दुख की बात है ...

आपके वेब ऐप और उपयोगकर्ता के ब्राउज़र के बीच एक टन सामान है: आपका ऐप, आपके ऐप का NIC, एक राउटर और संभवतः एक फ़ायरवॉल, फिर आपका http सर्वर आंतरिक NIC, फिर आपका http सर्वर, फिर आपका http सर्वर आउटबाउंड NIC, फिर दूसरा राउटर और सबसे निश्चित रूप से एक फ़ायरवॉल। फिर एक कैशिंग डिवाइस, और संभवतः एक एसएसएल डिवाइस। फिर अधिक राउटर और कैशिंग सर्वर के साथ इंटरनेट पर, फिर अंत में आपके उपयोगकर्ताओं के ब्राउज़र (और इसके आंतरिक कैश) पर।

एक zillion चीजें गलत हो सकती हैं, और यदि आपके पास नेटवर्किंग, नेटवर्क प्रोटोकॉल, ऑपरेटिंग सिस्टम / sysadmin, और इंटरनेट आर्किटेक्चर पर ज्ञान का एक कोटा नहीं है, तो आप अपने आईटी ओपी विभाग की दया पर (अधिकांश देवों से) खो जाएंगे न तो इन्फ्रास्ट्रक्चर तक पहुंच है और न ही पता है कि चीजों को समस्या निवारण के लिए कहां देखना है)। सबसे कम, यह आपको वास्तव में भद्दा वेब डेवलपर बना देगा।

वेब विकास का प्रोग्रामिंग पहलू सिर्फ एक पहलू है। इसका सफल क्रियान्वयन अन्य कौशल (विशेष रूप से नेटवर्किंग और सिस्टम प्रशासन) में शीर्ष पर बैठता है, जिसे न तो लिया जा सकता है और न ही नेत्रहीन रूप से आईटी संचालन के लिए प्रत्यायोजित किया जा सकता है। इसका मतलब यह नहीं है कि आपको नेटवर्क / OS समस्या निवारण के लिए जिम्मेदार होना चाहिए, लेकिन

ए। आपको पता होना चाहिए कि नेटवर्क / ओएस स्तर पर क्या गलत हो सकता है ताकि आप आईटी ओपीएस का सहयोग कर सकें और मार्गदर्शन कर सकें जिन्हें आपके आवेदन का कभी भी ज्ञान नहीं है। ख। इस तरह का ज्ञान आपको अपने सिस्टम को इंजीनियर करने की अनुमति देता है ताकि यह कम से कम हो, या इस तरह की त्रुटियों से सुशोभित हो।

प्रोग्रामिंग इंजीनियरिंग और विकास का सिर्फ एक पहलू है। यह आपका प्राथमिक कौशल नहीं हो सकता है, और वास्तव में सामान्य रूप से उद्यम विकास में लंबे समय में सफल हो सकता है, और विशेष रूप से वेब विकास में, ये ऐसी चीजें हैं जिन्हें आपको जानना आवश्यक है। और ईमानदारी से, ये ऐसी चीजें हैं जिन्हें (बहुत दृढ़ता से) स्कूल में या स्व-शिक्षा के माध्यम से स्नातक होने से पहले (या तुरंत नौकरी के बाजार में प्रवेश करने पर) सीखना चाहिए था।

सौभाग्य।


1

टीसीपी / आईपी को समझना महत्वपूर्ण है और राउटर अनुरोधों का प्रबंधन कैसे करते हैं। लेकिन आप नहीं जानते कि एक साक्षात्कार में उस पर व्यापक ज्ञान की जरूरत है । एक कम यह पहले व्यक्त किया गया था। अन्यथा आप दोनों ने समय बर्बाद किया। एक जाल की तरह लगता है।

लेकिन एक वास्तुकार की भूमिका के लिए मैं दृढ़ता से मानता हूं कि यह ज्ञान किसी भी उदाहरण पर महत्वपूर्ण है। आदमी समाधान प्रदान करेगा जो कि कस्टम समाधान में वास्तुकला का उपयोग करके या यहां तक ​​कि प्रतिकृति का लाभ उठा सकता है। Tanenbaum नेटवर्क के साथ एक सप्ताहांत है और आसान ले लो !!


1

यह एक पेचीदा सवाल है। हां, मुझे लगता है कि प्रत्येक डेवलपर को एक बुनियादी ज्ञान टीसीपी / आईपी होना चाहिए और उस प्रोटोकॉल पर आधारित नेटवर्क कैसे व्यवस्थित होते हैं। हालांकि, इस सवाल की ओर जाता है कि एक बुनियादी नॉलेज लॉज को कितना व्यापक माना जाता है।

मुझे लगता है कि किसी भी विशिष्ट समस्या का सामना किए बिना (और इसलिए यह जानने की आवश्यकता है कि चीजें वास्तव में "डाउन डाउन" कैसे आयोजित की जाती हैं) एक डेवलपर को पता होना चाहिए कि पैकेट क्या है और नेटवर्क के माध्यम से पैकेट कैसे वितरित किए जाते हैं (जिसमें यह जानना शामिल है कि पैकेट किस प्रकार की मशीनों में शामिल हैं) के साथ संपर्क में आता है)। हालाँकि मुझे लगता है कि यह जानना पर्याप्त है कि एक राउटर सभी रिसीवरों को पैकेट वितरित करता है और यह स्विच कुछ रिसीवरों को पैकेट वितरित करता है । मैं भी एक सब सबनेट सामान devloper की आवश्यकता नहीं होगी - मुझे यकीन है कि सभी विवरण अपने आप को पता नहीं है ;-) मैं पता होना चाहिए कि सबनेट अलग किया जा सकता है और पैकेट करने की आवश्यकता कराई शुद्ध एक से शुद्ध बी के लिए, लेकिन सभी विवरण एक विशिष्ट डेवलपर के लिए बहुत कुछ है।

मुझे लगता है कि यह कार चलाना थोड़ा पसंद है: आपको पता होना चाहिए कि आपको इंजन की आवश्यकता क्यों है और आपको ईंधन की आवश्यकता क्यों है लेकिन एक औसत चालक के रूप में आपको यह जानने की आवश्यकता नहीं है कि दहन प्रक्रिया के लिए ईंधन और हवा के सही मिश्रण की गणना कैसे करें।


0

कुछ चीजें उन लोगों की तुलना में अधिक निराशा होती हैं जो अपने आसपास चल रहे बुनियादी बातों को नहीं समझते हैं। यह बार-बार एक ही सवाल पूछने की ओर जाता है (थोड़ा अलग रूप में, निश्चित रूप से।)

जब आप अपने आप को दोहराए जाने वाले प्रश्न पूछते हैं, तो किताबों को हिट करने का समय आ गया है। मेरे द्वारा प्राप्त किए गए सवालों के हालिया उदाहरण:

  • "अगर मैं xyz नेटवर्क को कैसे कॉन्फ़िगर करूं?" ...
  • "अगर मैं एबीसी नेटवर्क को कैसे कॉन्फ़िगर करूं?" ...
  • दोहराएँ ...

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

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

अब, अगर यह सही मायने में इस दायरे से बाहर है कि आपको क्या पता होना चाहिए, तो ठीक है, इसके बारे में चिंता न करें। लेकिन अगर आप खुद को एक से अधिक बार प्रश्न पूछते हुए पाते हैं, तो इसे सीखें। आपको इसका पछतावा नहीं होगा।

सवाल पूछने के लिए ब्रावो। सीखना कभी भी बंद न करें।

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