Rozumiem, jak działa HTTP . Rozumiem, że klient (przeglądarka internetowa) wysyła żądanie, a serwer odpowiada na żądanie. Jednak nie rozumiem, skąd serwer internetowy wie, kiedy klient wysyła żądanie?
Jeśli ktoś do mnie zadzwoni, mój telefon zadzwoni, a ja otrzymam powiadomienie. Podobnie, w jaki sposób serwer WWW jest powiadamiany o żądaniu?
Odpowiedzi:
Jest w tym wiele warstw. Co ważne, wiele z nich jest wymiennych.
Na przykład możesz mieć sieć koncentryczną, Ethernet lub Wi-Fi na poziomie fizycznym. HTTP działa na wszystkich, ale każdy z nich ma nieco inną obsługę wysyłanego ładunku.
HTTP działa na innym protokole, zwanym TCP, który z kolei mniej więcej działa na innym protokole, zwanym IP (obecnie głównie w dwóch wariantach - IPv4 i IPv6).
Tak więc serwer HTTP rejestruje w systemie operacyjnym adres IP (jak
184.38.45.1
, lub najczęściej „dowolny”) wraz z portem TCP (80
domyślnym dla HTTP, ale ogólnie od czegoś1
do65535
). Teraz serwer HTTP informuje system operacyjny, aby wysłał polecenie ping, gdy pojawią się dane (lub inna wiadomość). System operacyjny wie, kiedy to nastąpi, ponieważ sterownik karty sieciowej tak mówi. A sterownik karty sieciowej jest informowany przez samą kartę sieciową, która faktycznie ma własne oprogramowanie do interpretacji sygnałów elektrycznych na kablu sieciowym (lub sygnałów bezprzewodowych w powietrzu itp., Masz pomysł).Uwaga dodatkowa :
Jeśli chcesz dowiedzieć się więcej o tym, jak karta sieciowa może zainicjować komunikację ze sterownikiem / systemem operacyjnym, możesz poszukać podstawowych informacji o przerwaniach sprzętowych - w zasadzie to, co aktualnie wykonuje procesor, jest zatrzymywane, a przepływ programu przechodzi w przerwanie procedura obsługi - niezwykle prosty fragment kodu, który zajmuje się powiadamianiem systemu, a następnie natychmiast przywraca kontrolę do pierwotnej czynności wykonywanej przez procesor. W rzeczywistości może odpowiedzieć na wiele pytań na temat wewnętrznego działania systemu operacyjnego i samego komputera - na przykład, w jaki sposób system operacyjny może „ukraść” procesor z uruchomionych aplikacji i przetasować zasoby procesora między różnymi aplikacjami działającymi w tym samym czasie, nawet jeśli nie współpracują.
Powrót do biznesu:
W analogii ręcznego telefonu wyobraź sobie, że telefon tak naprawdę nie dzwoni. Aby wiedzieć, czy próbujesz zadzwonić, musisz okresowo patrzeć na ekran i sprawdzać. Aby ułatwić zarządzanie serwerem HTTP (ponieważ istnieje już kilka warstw, które wykonują tę kontrolę okresową), możesz faktycznie zablokować próbę sprawdzenia.
Zamiast więc sprawdzać, widzieć, że nic tam nie ma i sprawdzać ponownie, w zasadzie cały czas patrzysz na ekran. Jednak w zasadzie masz do czynienia z całym oddzielnym systemem (w twoim przypadku centrum słuchu, które sprawdza wibracje powietrza pod kątem przydatnych informacji, pierścień), więc tak naprawdę nie wymaga twojej uwagi (czasu procesora).
Jest to dodatkowo ulepszone przez techniki, które pozwalają monitorować wiele połączeń jednocześnie (IOCP). Zbliża się to coraz bardziej do systemu dzwonienia telefonu - masz pokój z dziesięcioma tysiącami telefonów, ale dbasz tylko o te, które w tej chwili dzwonią, a inni nie zwracają na ciebie uwagi.
źródło
Komputery używają koncepcji zwanej „portami”, analogicznej do „rozszerzeń” dla centrali telefonicznej: Klient nie tylko „dzwoni” do adresu IP serwera, ale także wysyła żądanie do określonego portu na tym serwerze.
Istnieją tysiące portów ( lista wikipedia ), np. Port 80 jest domyślny dla HTTP.
Sztuka polega na tym, że program, np. Serwer WWW, może się zarejestrować, aby nasłuchiwać na określonym porcie. Następnie system operacyjny przekaże wszelkie żądania przychodzące przez ten port do tego programu.
Istotą posiadania kilku portów jest to, że możesz mieć wiele usług działających na tym samym serwerze w tym samym czasie, używając różnych portów, które nie będą ze sobą kolidować.
źródło
Serwer sieciowy powiadomił o następującym procesie
Powiedzmy, że serwer nasłuchuje na porcie 80, gdy żądanie klienta pojawi się na porcie 80, zaakceptuje połączenie z wywołaniem systemowym accept (). To połączenie zwykle blokuje się, dopóki klient nie połączy się z serwerem.
Następnie nasłuchuj połączeń z wywołaniem systemowym listen () i powiąż gniazdo z adresem za pomocą wywołania systemowego bind ().
Atlast tworzy gniazdo za pomocą wywołania systemowego socket ().
Mam nadzieję że to pomoże!
źródło
Masz katalog / var / log / apache2 z następującym katalogiem:
Jest to związane z tym, że chcesz od klienta i jak powiadamiać, sms, e-mail i tak dalej.
Moja sugestia:
Możesz utworzyć serwer dziennika i wysłać każdy dziennik, taki jak serwer poczty, serwer DNS, serwer WWW itd., Następnie możesz go przeanalizować, Nawet ten sam serwer używa bazy danych i możesz uruchomić zapytanie.
źródło
Wydaje mi się, że serwer WWW rejestruje funkcje oddzwaniania na porcie.
Tak więc za każdym razem, gdy cokolwiek jest odbierane na tym konkretnym porcie, system wywołuje tę funkcję zwrotną zarejestrowaną wcześniej. Wewnątrz tego wywołania może ustawić zdarzenie lub coś takiego, a wtedy serwer WWW będzie miał dedykowany wątek czekający na to zdarzenie. Wątek ten uruchomi się i ustawi w kolejce to żądanie na głównej liście żądań, które serwer WWW już przetwarza.
To, co tu podałem, jest bardzo powierzchownym i makroopowiedzią tego, co się dzieje. Aby uzyskać bardziej precyzyjne odpowiedzi, poczekajmy na przybycie ekspertów.
źródło