Inhaltsverzeichnis
1. Einführung in das HTTP-Protokoll
2.http-Protokollanalyse
1. Browser-Anfrage
2. Serverantwort
3. Browser-Analyseprozess
3. Zusammenfassung
1. HTTP-Anfrageprozess
Schritt 1: Der Browser sendet zuerst eine HTTP-Anfrage an den Server. Die Anfrage umfasst:
Antwortcode: 200 bedeutet Erfolg, 3xx bedeutet Umleitung, 4xx bedeutet, dass in der vom Client gesendeten Anfrage ein Fehler vorliegt, und 5xx bedeutet ein Fehler ist während der serverseitigen Verarbeitung aufgetreten;
Das HTTP-Protokoll auch verfügt über eine starke Skalierbarkeit. Obwohl der Browser die Homepage anfordert, kann Sina Ressourcen von anderen Servern in HTML verknüpfen, z -orient/strip%7CimageView2/2/w/1240), wodurch der Anforderungsdruck auf verschiedene Server verteilt wird und eine Site mit anderen Sites verknüpft werden kann und unzählige Sites miteinander verknüpft werden und so das sogenannte World Wide Web bilden WWW.
Heim Web-Frontend HTML-Tutorial Detaillierte Einführung in den Webserver

Detaillierte Einführung in den Webserver

Jun 21, 2017 am 10:58 AM
web 服务器

1. Einführung in das HTTP-Protokoll

HTTP ist die Abkürzung für Hyper Text Transfer Protocol. Seine Entwicklung ist das Ergebnis der Zusammenarbeit zwischen dem World Wide Web Consortium und der Internet Engineering Task Force (IETF), die schließlich eine Reihe von RFCs 1945 veröffentlichte, die die HTTP/1.0-Version definieren. Das bekannteste davon ist RFC 2616. RFC 2616 definiert eine heute häufig verwendete Version – HTTP 1.1.

HTTP-Protokoll (HyperText Transfer Protocol, Hypertext Transfer Protocol) ist ein Übertragungsprotokoll, das zur Übertragung von Hypertext vom WWW-Server an den lokalen Browser verwendet wird. Es kann den Browser effizienter machen und die Netzwerkübertragung reduzieren. Es stellt nicht nur sicher, dass der Computer Hypertextdokumente korrekt und schnell überträgt, sondern bestimmt auch, welcher Teil des Dokuments übertragen wird und welcher Teil des Inhalts zuerst angezeigt wird (z. B. Text vor Grafiken) usw.

  • HTTP ist ein auf TCP/IP basierendes Kommunikationsprotokoll zur Übertragung von Daten (HTML-Dateien, Bilddateien, Abfrageergebnisse usw.).

  • HTTP ist ein Protokoll der Anwendungsschicht, das aus Anfragen und Antworten besteht und ein Standard-Client-Server-Modell ist.

  • HTTP ist ein zustandsloses Protokoll.

![Das Hochladen von Deep Understanding of HTTP Protocol.jpg ist fehlgeschlagen. Bitte versuchen Sie es erneut.]


HTTP-Protokoll ist immer der Client Initiieren Sie eine Anfrage und der Server sendet eine Antwort zurück.


Dies schränkt die Verwendung des HTTP-Protokolls ein und es ist für den Server unmöglich, Nachrichten an den Client zu senden, wenn der Client keine Anfrage initiiert.
Das HTTP-Protokoll ist ein zustandsloses Protokoll. Es gibt keine Übereinstimmung zwischen dieser Anfrage und der letzten Anfrage desselben Clients.

2.http-Protokollanalyse

1. Browser-Anfrage


http-Anfragemethode


Wir können den CRUD-Hinzufügungs-, Lösch-, Änderungs- und Abfragevorgängen der Datenbank entsprechen:

  1. CREATE: PUT

  2. READ: GET

  3. UPDATE: POST

  4. LÖSCHEN: LÖSCHEN

2. Serverantwort

HTTP-Antwortpunkte Für die beiden Teile: Header und Body (Body ist optional), lauten die wichtigsten Zeilen des Headers, die wir im Netzwerk sehen, wie folgt:
HTTP/1.1 200 OK
200 zeigt eine erfolgreiche Antwort an , und das folgende OK wird veranschaulicht.
Wenn 200 nicht zurückgegeben wird, gibt es oft andere Funktionen, wie zum Beispiel

  • Die fehlgeschlagene Antwort lautet 404 Nicht gefunden: Die Webseite existiert nicht

  • 500 Interner Serverfehler: Interner Serverfehler

  • ...etc...


HTTP-Statuscode.jpg


Content-Type: text/html
Content-Type gibt den Inhalt der Antwort an, hier stellt text/html eine HTML-Webseite dar.

3. Browser-Analyseprozess

Wenn der Browser den HTML-Quellcode von Sinas Homepage liest, analysiert er den HTML-Code, zeigt die Seite an und basiert dann auf den verschiedenen Links im HTML , Senden Sie eine HTTP-Anfrage an den Sina-Server, rufen Sie die entsprechenden Bilder, Videos, Flash, JavaScript-Skripte, CSS und andere Ressourcen ab und zeigen Sie schließlich eine vollständige Seite an.

3. Zusammenfassung

1. HTTP-Anfrageprozess

Folgen wir Sinas Homepage, fassen wir den HTTP-Anfrageprozess zusammen:

Schritt 1: Der Browser sendet zuerst eine HTTP-Anfrage an den Server. Die Anfrage umfasst:

Methode: GET oder POST, GET fordert nur Ressourcen an, POST wird von Benutzerdaten begleitet; Domänenname: Wird durch den Host-Header angegeben: Host: www.sina.com
und andere verwandte Header
Wenn es sich um POST handelt, enthält die Anfrage auch einen Text, einschließlich Benutzerdaten

Schritt 2: Server Gibt eine HTTP-Antwort an den Browser zurück. Die Antwort enthält:

Antwortcode: 200 bedeutet Erfolg, 3xx bedeutet Umleitung, 4xx bedeutet, dass in der vom Client gesendeten Anfrage ein Fehler vorliegt, und 5xx bedeutet ein Fehler ist während der serverseitigen Verarbeitung aufgetreten;
Antworttyp: angegeben durch Content-Type;

Normalerweise enthält die HTTP-Antwort den Inhalt Der Inhalt der Antwort und der HTML-Quellcode der Webseite befinden sich im Body .

Schritt 3: Wenn der Browser weiterhin andere Ressourcen vom Server anfordern muss, z. B. Bilder, stellen Sie eine weitere HTTP-Anfrage und wiederholen Sie die Schritte 1 und 2.

Das vom Web übernommene HTTP-Protokoll verwendet ein sehr einfaches Anforderungs-Antwort-Modell, was die Entwicklung erheblich vereinfacht. Wenn wir eine Seite schreiben, müssen wir nur den HTML-Code in der HTTP-Anfrage senden und müssen nicht darüber nachdenken, wie Bilder, Videos usw. angehängt werden. Wenn der Browser Bilder und Videos anfordern muss, sendet er eine weitere HTTP-Anfrage. Daher verarbeitet eine HTTP-Anfrage nur eine Ressource (dies kann im TCP-Protokoll als kurze Verbindung verstanden werden. Jeder Link erhält nur eine Ressource. Wenn Sie mehr benötigen, müssen Sie mehrere Links einrichten)
Das HTTP-Protokoll auch verfügt über eine starke Skalierbarkeit. Obwohl der Browser die Homepage anfordert, kann Sina Ressourcen von anderen Servern in HTML verknüpfen, z -orient/strip%7CimageView2/2/w/1240), wodurch der Anforderungsdruck auf verschiedene Server verteilt wird und eine Site mit anderen Sites verknüpft werden kann und unzählige Sites miteinander verknüpft werden und so das sogenannte World Wide Web bilden WWW.

2.HTTP-Format

Client-Anfrageinformationen
Server-Antwortnachricht
Jede HTTP-Anfrage und -Antwort folgt demselben Format: Header und Body, wobei der Body optional ist.
  • Das HTTP-Protokoll ist ein Textprotokoll, daher ist auch sein Format sehr einfach.
  • HTTP GET-Anforderungsformat:
  • GET /path HTTP/1.1

    Header1: Wert1
    Header2: Wert2
    Header3: Wert3
    Jeder Header besteht aus einer Zeile und das Zeilenumbruchzeichen ist rn oder Das Format der HTTP-POST-Anfrage mit os.linesep
    :
    POST /path HTTP/1.1
    Header1: Value1
    Header2: Value2
    Header3: Value3

    Body-Daten geht hier ...
    Wenn zwei aufeinanderfolgende RNS angetroffen werden, endet der Header-Teil und alle nachfolgenden Daten sind Body.

    HTTP-Antwortformat:

    200 OK
    Header1: Wert1
    Header2: Wert2
    Header3: Wert3

    Körperdaten kommen hierher...
    HTTP-Antwort, falls inklusive Körper, ebenfalls durch rnrn getrennt.

    Bitte beachten Sie noch einmal, dass der Datentyp des Body durch den Content-Type-Header bestimmt wird. Wenn es sich um eine Webseite handelt, handelt es sich beim Body um einen Text. Wenn es sich um ein Bild handelt, handelt es sich beim Body um die Binärdaten des Bildes.

    Wenn Content-Encoding vorhanden ist, werden die Body-Daten komprimiert. Die gebräuchlichste Komprimierungsmethode ist gzip. Wenn Sie Content-Encoding: gzip sehen, müssen Sie daher zuerst die Body-Daten dekomprimieren. Der Zweck der Komprimierung besteht darin, die Größe des Körpers zu reduzieren und die Netzwerkübertragung zu beschleunigen.

    4Web statischer Server

    1. Feste Seite anzeigen

import socketimport multiprocessingimport osimport timedef serverHandler(clientSocket, clientAddr):'与请求的客户端进行交互'# 接收客户端发来的消息
    recvData = clientSocket.recv(1024).decode('utf-8')
    print(recvData)# 服务端向客户端发消息,作为响应
    responseLine = 'HTTP/1.1 200 OK' + os.linesep
    responseHeader = 'Server: laowang' + os.linesep
    responseHeader += 'Date: %s' % time.ctime() + os.linesep
    responseBody = '差一点一米八'
    sendData = (responseLine + responseHeader + os.linesep + responseBody).encode('gbk')

    clientSocket.send(sendData)# 关闭
    clientSocket.close()def main():'程序入口'# socket对象
    serverSocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)# 绑定的端口号,可以重复使用端口号#serverSocket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)# 绑定
    serverSocket.bind(('', 8000))# 监听
    serverSocket.listen()while True:# 接收
        clientSocket, clientAddr = serverSocket.accept()
        print(clientSocket)# 开一个新的进程,执行交互
        multiprocessing.Process(target=serverHandler, args=(clientSocket, clientAddr)).start()# 关闭客户端对象
        clientSocket.close()if __name__ == '__main__':
    main()
Nach dem Login kopieren
Client-Browserseite
2. Zeigen Sie die gewünschte Seite an

import time,multiprocessing,socket,os,re

G_PATH = './html'

def serveHandler(clientSocket,clientAddr):
    recvData = clientSocket.recv(1024).decode('gbk')
    lineFirst = recvData.splitlines()[0]
    strFirst = re.split(r' +',lineFirst)
    fileName = strFirst[1]

    filePath = G_PATHif '/'== fileName:
        filePath += './index.html'else:
        filePath += fileNametry:file = Nonefile =open(filePath,'r',encoding='gbk')
        responseBody = file.read()

        responseLine = 'HTTP/1.1 200 OK' + os.linesep
        responseHeader = 'Server: ererbai' + os.linesep
        responseHeader += 'Date:%s' % time.ctime() + os.linesep
    except FileNotFoundError:
        responseLine = 'HTTP/1.1 404 NOT FOUND' + os.linesep
        responseHeader = 'Server: ererbai' + os.linesep
        responseHeader += 'Date:%s' % time.ctime() + os.linesep
        responseBody = '很抱歉,服务器中找不到你想要的内容'
    except Exception:
        responseLine = 'HTTP/1.1 500 ERROR' + os.linesep
        responseHeader = 'Server: ererbai' + os.linesep
        responseHeader += 'Date: %s' % time.ctime() + os.linesep
        responseBody = '服务器正在维护中,请稍后再试。'finally:if file!=None and not file.closed:file.close()

        senData = (responseLine + responseHeader + os.linesep + responseBody).encode('gbk')
        clientSocket.send(senData)
        clientSocket.close()


def main():
    serveSocket=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    serveSocket.bind(('',8000))
    serveSocket.listen()while True:
        clientSocket,clientAddr = serveSocket.accept()
        print(clientSocket)
        multiprocessing.Process(target=serveHandler,args=(clientSocket,clientAddr)).start()
        clientSocket.close()if __name__ == '__main__':
    main()
Nach dem Login kopieren
Client-Browser-Homepage
Client-Browser biye.html-Seite


Wenn Sie während des Lernprozesses auf Probleme stoßen oder Lernressourcen erhalten möchten, können Sie gerne der Lernaustauschgruppe beitreten
343599877, lasst uns gemeinsam Frontend lernen!

Das obige ist der detaillierte Inhalt vonDetaillierte Einführung in den Webserver. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Repo: Wie man Teamkollegen wiederbelebt
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So lösen Sie das Problem, dass die eMule-Suche keine Verbindung zum Server herstellen kann So lösen Sie das Problem, dass die eMule-Suche keine Verbindung zum Server herstellen kann Jan 25, 2024 pm 02:45 PM

Lösung: 1. Überprüfen Sie die eMule-Einstellungen, um sicherzustellen, dass Sie die richtige Serveradresse und Portnummer eingegeben haben. 2. Überprüfen Sie die Netzwerkverbindung, stellen Sie sicher, dass der Computer mit dem Internet verbunden ist, und setzen Sie den Router zurück Wenn Ihre Einstellungen kein Problem mit der Netzwerkverbindung sind, müssen Sie überprüfen, ob der Server online ist. 4. Aktualisieren Sie die eMule-Version, besuchen Sie die offizielle Website von eMule und laden Sie die neueste Version der eMule-Software herunter. 5. Suchen Sie Hilfe.

Detaillierte Erläuterung der CentOS-Installationssicherung und des CentOS-Installationsservers Detaillierte Erläuterung der CentOS-Installationssicherung und des CentOS-Installationsservers Feb 13, 2024 pm 08:40 PM

Als LINUX-Benutzer müssen wir häufig verschiedene Software und Server unter CentOS installieren. In diesem Artikel wird detailliert beschrieben, wie Sie Fuse installieren und einen Server unter CentOS einrichten, damit Sie die entsprechenden Vorgänge reibungslos abschließen können. Die Installation von FuseFuse unter CentOS ist ein User-Space-Dateisystem-Framework, mit dem unprivilegierte Benutzer über ein benutzerdefiniertes Dateisystem auf das Dateisystem zugreifen und es bedienen können. Die Installation von Fuse unter CentOS ist sehr einfach. Befolgen Sie einfach die folgenden Schritte: 1. Öffnen Sie das Terminal und melden Sie sich an Root-Benutzer. 2. Verwenden Sie den folgenden Befehl, um das Sicherungspaket zu installieren: „yuminstallfuse3“. Bestätigen Sie die Eingabeaufforderungen während des Installationsvorgangs und geben Sie „y“ ein, um fortzufahren. 4. Installation abgeschlossen

Lösung für die Unfähigkeit, eine Verbindung zum RPC-Server herzustellen und den Desktop nicht aufzurufen Lösung für die Unfähigkeit, eine Verbindung zum RPC-Server herzustellen und den Desktop nicht aufzurufen Feb 18, 2024 am 10:34 AM

Was soll ich tun, wenn der RPC-Server nicht verfügbar ist und auf dem Desktop nicht darauf zugegriffen werden kann? In den letzten Jahren sind Computer und das Internet in jeden Winkel unseres Lebens vorgedrungen. Als Technologie für zentralisierte Datenverarbeitung und gemeinsame Nutzung von Ressourcen spielt Remote Procedure Call (RPC) eine entscheidende Rolle in der Netzwerkkommunikation. Manchmal kann es jedoch vorkommen, dass der RPC-Server nicht verfügbar ist und der Desktop nicht aufgerufen werden kann. In diesem Artikel werden einige mögliche Ursachen für dieses Problem beschrieben und Lösungen bereitgestellt. Zuerst müssen wir verstehen, warum der RPC-Server nicht verfügbar ist. RPC-Server ist ein

Best-Practice-Leitfaden zum Erstellen von IP-Proxyservern mit PHP Best-Practice-Leitfaden zum Erstellen von IP-Proxyservern mit PHP Mar 11, 2024 am 08:36 AM

Bei der Netzwerkdatenübertragung spielen IP-Proxyserver eine wichtige Rolle. Sie helfen Benutzern dabei, ihre echten IP-Adressen zu verbergen, ihre Privatsphäre zu schützen und die Zugriffsgeschwindigkeit zu verbessern. In diesem Artikel stellen wir den Best-Practice-Leitfaden zum Aufbau eines IP-Proxyservers mit PHP vor und stellen spezifische Codebeispiele bereit. Was ist ein IP-Proxyserver? Ein IP-Proxyserver ist ein Zwischenserver zwischen dem Benutzer und dem Zielserver. Er fungiert als Übertragungsstation zwischen dem Benutzer und dem Zielserver und leitet die Anforderungen und Antworten des Benutzers weiter. Durch die Verwendung eines IP-Proxyservers

So konfigurieren Sie Dnsmasq als DHCP-Relay-Server So konfigurieren Sie Dnsmasq als DHCP-Relay-Server Mar 21, 2024 am 08:50 AM

Die Rolle eines DHCP-Relays besteht darin, empfangene DHCP-Pakete an einen anderen DHCP-Server im Netzwerk weiterzuleiten, auch wenn sich die beiden Server in unterschiedlichen Subnetzen befinden. Durch die Verwendung eines DHCP-Relays können Sie einen zentralen DHCP-Server im Netzwerkzentrum bereitstellen und ihn verwenden, um allen Netzwerksubnetzen/VLANs dynamisch IP-Adressen zuzuweisen. Dnsmasq ist ein häufig verwendeter DNS- und DHCP-Protokollserver, der als DHCP-Relay-Server konfiguriert werden kann, um die Verwaltung dynamischer Hostkonfigurationen im Netzwerk zu unterstützen. In diesem Artikel zeigen wir Ihnen, wie Sie dnsmasq als DHCP-Relay-Server konfigurieren. Inhaltsthemen: Netzwerktopologie Konfigurieren statischer IP-Adressen auf einem DHCP-Relay D auf einem zentralen DHCP-Server

Was soll ich tun, wenn ich das Spiel nicht betreten kann, während der Epic-Server offline ist? Lösung, warum Epic das Spiel nicht offline betreten kann Was soll ich tun, wenn ich das Spiel nicht betreten kann, während der Epic-Server offline ist? Lösung, warum Epic das Spiel nicht offline betreten kann Mar 13, 2024 pm 04:40 PM

Was soll ich tun, wenn ich das Spiel nicht betreten kann, während der Epic-Server offline ist? Dieses Problem muss bei vielen Freunden aufgetreten sein. Wenn diese Meldung angezeigt wird, kann das Problem normalerweise durch Störungen durch das Netzwerk und die Sicherheitssoftware verursacht werden Ich möchte die Lösung mit Ihnen teilen und hoffe, dass das heutige Software-Tutorial Ihnen bei der Lösung des Problems helfen kann. Was ist zu tun, wenn der Epic-Server nicht auf das Spiel zugreifen kann, wenn er offline ist: 1. Möglicherweise wird er durch Sicherheitssoftware gestört. Schließen Sie die Spielplattform und die Sicherheitssoftware und starten Sie sie dann neu. 2. Der zweite Grund ist, dass das Netzwerk zu stark schwankt. Versuchen Sie, den Router neu zu starten, um zu sehen, ob er funktioniert. Wenn die Bedingungen in Ordnung sind, können Sie versuchen, das 5g-Mobilfunknetz für den Betrieb zu verwenden. 3. Dann könnten es noch mehr sein

Wie installiere ich die PHP-FFmpeg-Erweiterung auf dem Server? Wie installiere ich die PHP-FFmpeg-Erweiterung auf dem Server? Mar 28, 2024 pm 02:39 PM

Wie installiere ich die PHPFFmpeg-Erweiterung auf dem Server? Die Installation der PHPFFmpeg-Erweiterung auf dem Server kann uns dabei helfen, Audio- und Videodateien in PHP-Projekten zu verarbeiten und Funktionen wie Kodierung, Dekodierung, Bearbeitung und Verarbeitung von Audio- und Videodateien zu implementieren. In diesem Artikel erfahren Sie, wie Sie die PHPFFmpeg-Erweiterung auf dem Server installieren, sowie spezifische Codebeispiele. Zunächst müssen wir sicherstellen, dass PHP und FFmpeg auf dem Server installiert sind. Wenn FFmpeg nicht installiert ist, können Sie die folgenden Schritte ausführen, um FFmpe zu installieren

Was tun, wenn beim Herstellen der Verbindung zum Apple-ID-Server ein Fehler auftritt? Was tun, wenn beim Herstellen der Verbindung zum Apple-ID-Server ein Fehler auftritt? Feb 20, 2024 pm 03:30 PM

Beim Herstellen der Verbindung zum AppleID-Server ist ein Fehler aufgetreten. Was soll ich tun? Mit der Popularität von Smartphones und dem Internet sind Apple-Produkte aus dem Leben vieler Menschen nicht mehr wegzudenken. Als wichtige Schnittstelle zur Verbindung von Apple-Geräten und -Diensten bietet die Apple ID den Nutzern nicht nur eine bequeme und schnelle Anmeldemethode, sondern synchronisiert und sichert auch Nutzerdaten und -einstellungen. Während der Nutzung können jedoch manchmal Fehler beim Herstellen einer Verbindung zum AppleID-Server auftreten. Wie also mit diesem Problem umgehen? Kopf

See all articles