Detaillierte Einführung in den Webserver
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.]

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

Wir können den CRUD-Hinzufügungs-, Lösch-, Änderungs- und Abfragevorgängen der Datenbank entsprechen:
CREATE: PUT
READ: GET
UPDATE: POST
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...

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 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


- Das HTTP-Protokoll ist ein Textprotokoll, daher ist auch sein Format sehr einfach. HTTP GET-Anforderungsformat:
- GET /path HTTP/1.1
Header1: Wert1
HTTP-Antwortformat:
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.200 OK
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.
Header1: Wert1
Header2: Wert2
Header3: Wert3
Körperdaten kommen hierher...
HTTP-Antwort, falls inklusive Körper, ebenfalls durch rnrn getrennt.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.
1. Feste Seite anzeigen
4Web statischer Server
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()

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()



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!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

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.

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

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

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

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? 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 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

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
