HTTP अनुरोध के बारे में एक सर्वर को कैसे सूचित किया जाता है?


8

मुझे इस बात की बुनियादी समझ है कि HTTP कैसे काम करता है। मैं समझता हूं कि क्लाइंट (वेब ​​ब्राउज़र) एक अनुरोध करता है और सर्वर अनुरोध पर वापस जाता है। हालाँकि, मुझे समझ में नहीं आता है कि जब ग्राहक अनुरोध करता है तो वेब सर्वर को कैसे पता चलता है?

अगर कोई मुझे अपने फोन की घंटी बजाता है और मुझे सूचित किया जाता है। इसी तरह एक वेबसर्वर को अनुरोध के बारे में कैसे सूचित किया जाता है?


2
सुपर यूजर द्वारा लॉन्च किए जाने के 5 साल बाद तक यह कैसे नहीं है?
पीटर मोर्टेंसन

जवाबों:


28

इसके लिए बहुत सारी परतें हैं। और महत्वपूर्ण बात, उनमें से कई विनिमेय हैं।

उदाहरण के लिए, आपके पास एक को-केबल नेटवर्क, एक ईथरनेट, या भौतिक स्तर पर एक वाई-फाई हो सकता है। HTTP उन सभी के शीर्ष पर काम करता है, लेकिन उनमें से प्रत्येक के पास भेजे जाने वाले पेलोड की थोड़ी अलग हैंडलिंग है।

HTTP एक अन्य प्रोटोकॉल के शीर्ष पर काम करता है, जिसे टीसीपी कहा जाता है, जो कमोबेश किसी अन्य प्रोटोकॉल के शीर्ष पर चलता है, जिसे आईपी कहा जाता है (आजकल ज्यादातर दो वेरिएंट्स में - आईपीवी 4 और आईपीवी 6)।

तो HTTP सर्वर कोई IP पता (जैसे पंजीकृत करता है 184.38.45.1, या सबसे अधिक बार "किसी भी"), एक TCP पोर्ट के साथ ( 80HTTP के लिए डिफ़ॉल्ट किया जा रहा है, लेकिन से सामान्य कुछ भी में 1करने के लिए 65535), ऑपरेटिंग सिस्टम के साथ। अब, HTTP सर्वर ओएस को डेटा (या कोई अन्य संदेश) आने पर इसे पिंग करने के लिए कहता है। ओएस जानता है कि ऐसा कब होता है, क्योंकि नेटवर्क इंटरफ़ेस कार्ड ड्राइवर यह बताता है। और एनआईसी ड्राइवर को एनआईसी द्वारा ही बताया जाता है, जिसके पास वास्तव में नेटवर्क केबल पर विद्युत संकेतों (या हवा में वायरलेस सिग्नल आदि) की व्याख्या करने के लिए अपना स्वयं का सॉफ़्टवेयर है, आपको यह विचार मिलता है)।

साइड नोट :

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

व्यवसाय पर वापस:

अपने मैनुअल टेलीफोन सादृश्य में, कल्पना करें कि आपका फोन वास्तव में बजता नहीं है। यह जानने के लिए कि क्या आपके पास फ़ोन कॉल का प्रयास है, आपको समय-समय पर स्क्रीन को देखना होगा और जाँच करनी होगी। HTTP सर्वर के लिए प्रबंधन करना आसान बनाने के लिए (क्योंकि पहले से ही कुछ परतें हैं जो समय-समय पर जांच करते हैं), आप वास्तव में चेक प्रयास पर ब्लॉक कर सकते हैं ।

इसलिए जाँच करने के बजाय, वहाँ कुछ भी नहीं है और फिर से जाँच कर रहा है, आप मूल रूप से स्क्रीन पर हर समय देख रहे हैं। हालाँकि, आपको मूल रूप से इसे (आपके मामले में, श्रवण केंद्र, जो उपयोगी जानकारी, रिंग के लिए वायु कंपन की जाँच करता है) को संभालने के लिए एक पूरी अलग प्रणाली मिल गई है, इसलिए इसे वास्तव में आपके ध्यान (CPU समय) की आवश्यकता नहीं है।

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


सावधान, "पिंग" का नेटवर्किंग में एक पूरी तरह से असंबंधित अर्थ है। इसके अलावा, किसी ने "हार्डवेयर इंटरप्ट" का उल्लेख क्यों नहीं किया है?
रयान

1
@LieRyan खैर, हाँ, यह उस हिस्से में है जहाँ एनआईसी एनआईसी ड्राइवर को बताता है। ऐसा लगता है कि इसमें शामिल होने वाले अमूर्त लोगों की विशाल सूची में एक छोटे से छोटे स्पेक की तरह है, और वास्तव में, पुराने-स्कूल के आर्किटेक्चर, एम्बेडेड डिवाइस या ड्राइवर डेवलपर्स के साथ खेलने वाले लोगों के बाहर, यह बहुत अस्पष्ट ज्ञान है, दुख की बात है। लेकिन ठीक है, मुझे लगता है कि मैं एक त्वरित उल्लेख जोड़ूंगा।
लुआॅन

1
क्या पोर्ट्स सिर्फ नंबर हैं? या वे एनआईसी कार्ड पर भौतिक पिन हैं? मुझे यह कल्पना करना मुश्किल है कि 65536 बंदरगाह हो सकते हैं
धीवर रविकुमार

2
@ दिवाकररविकुमार: हां, नंबर सिर्फ नंबर हैं। वे एक प्रोग्राम या ऑपरेटिंग सिस्टम द्वारा बनाए गए हैं, वे हार्डवेयर में किसी भी चीज के अनुरूप नहीं हैं।
१२:१२ पर साल्के

1
@DhiwakarRavikumar पोर्ट्स केवल संख्याएँ हैं, लेकिन हार्डवेयर इंटरप्ट वास्तव में सीपीयू पर हार्डवेयर पिन हुआ करते थे (इसलिए आपके पास "शून्य से डिवाइड मिला!" के लिए एक अलग पिन था और "अलार्म घड़ी बज रही है" के लिए एक और। तो आपके पास केवल तीन या सात अलग-अलग अंतराल या ऐसे अधिकांश समय थे। यह पुराने फोन स्टेशनों के लिए तुलनीय है - वे वास्तव में आपके द्वारा कॉल करने के लिए कनेक्ट किए गए भौतिक पिन होते थे, लेकिन वे आजकल टीसीपी पोर्ट की तरह सॉफ्टवेयर में स्विच किए जाते हैं।
लुआएन

9

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

हजारों पोर्ट ( विकिपीडिया सूची ) हैं, उदाहरण के लिए पोर्ट 80 HTTP के लिए डिफ़ॉल्ट है।

चाल यह है कि एक कार्यक्रम, उदाहरण के लिए एक वेबसर्वर, एक विशेष पोर्ट पर सुनने के लिए खुद को पंजीकृत कर सकता है। फिर OS उस पोर्ट पर आने वाले किसी भी अनुरोध को उस प्रोग्राम में पास करेगा।

कई पोर्ट होने की बात यह है कि आप एक ही सर्वर पर एक ही समय में कई सेवाएं चला सकते हैं, विभिन्न पोर्ट का उपयोग करके वे एक दूसरे के साथ हस्तक्षेप नहीं करेंगे।


65,535 पोर्ट सटीक होना
ub3rst4r

3

वेबसर्वर को निम्नलिखित प्रक्रिया से सूचित किया गया

Accept ()
Liseten()
bind()
socket()

मान लें कि वेबसर्वर पोर्ट 80 पर सुनता है, जब क्लाइंट से अनुरोध पोर्ट 80 पर आता है, तो यह स्वीकार () सिस्टम कॉल के साथ एक कनेक्शन स्वीकार करेगा। यह कॉल आम तौर पर तब तक ब्लॉक होती है जब तक कोई क्लाइंट सर्वर से कनेक्ट नहीं होता है।

फिर सुनो () सिस्टम कॉल के साथ कनेक्शन के लिए सुनो और बाइंड () सिस्टम कॉल का उपयोग करके सॉकेट को एक पते पर बांधें।

एटलस सॉकेट () सिस्टम कॉल के साथ एक सॉकेट बनाता है।

उम्मीद है की यह मदद करेगा!


0

आपके पास निम्नलिखित निर्देशिका के साथ / var / log / apache2 निर्देशिका है:

access.log
error.log
other_vhosts_access.log

यह ग्राहक से आप चाहते हैं, और कैसे, एसएमएस, ईमेल और इतने पर सूचित करने के लिए संबंधित है।

मेरी शक्कर

आप एक लॉग सर्वर बना सकते हैं और अपना हर लॉग जैसे मेल सर्वर, डीएनएस सर्वर, वेब सर्वर वगैरह भेज सकते हैं, फिर आप इसे पार्स कर सकते हैं, यहां तक ​​कि एक ही सर्वर डीबी का उपयोग करता है और आप क्वेरी चला सकते हैं।


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

0

मुझे लगता है कि वेब सर्वर रजिस्टर पोर्ट के साथ कॉल बैक फ़ंक्शन करता है।

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

यहाँ जो मैंने दिया वह बहुत ही सतही और स्थूल दृश्य है। अधिक सटीक उत्तरों के लिए, विशेषज्ञों के आने तक प्रतीक्षा करें।

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