JavaRush /Java-Blog /Random-DE /Teil 3. HTTP/HTTPS-Protokolle

Teil 3. HTTP/HTTPS-Protokolle

Veröffentlicht in der Gruppe Random-DE
Dieses Material ist Teil der Reihe „Einführung in die Unternehmensentwicklung“. Vorherige Artikel: Hallo! Heute werden wir die Protokolle HTTP und HTTPS verstehen. Aber lassen Sie uns zunächst einen Punkt klarstellen: Wir sprechen über Datenübertragungsprotokolle über das Netzwerk auf der Anwendungsebene des OSI-Modells. Wie Sie sich erinnern, haben wir das OSI-Modell in einem der vorherigen Artikel besprochen. Und wenn Sie sich nicht erinnern, hier ist es . Teil 3. HTTP/HTTPS-Protokolle – 1

Was ist ein Datenübertragungsprotokoll?

Dies ist die Bezeichnung für die allgemein akzeptierte Vereinbarung, dank der Entwickler verschiedener Dienste Informationen in einer einzigen Form senden. Mit Google Chrome können Sie beispielsweise Informationen sowohl von Facebook als auch von Twitter abrufen, da die Entwickler diese über das Standard-HTTP-Protokoll übertragen und Ihr Browser damit umgehen kann. Die einheitlichen Regeln sind auch für die serverseitigen Entwickler selbst sehr praktisch: Es gibt viele Bibliotheken, die Informationen für Sie konvertieren und über das erforderliche Protokoll versenden können. HTTP wurde ursprünglich als Protokoll zur Übertragung von HTML-Seiten konzipiert. Dies war lange Zeit der Fall, doch mittlerweile übertragen Programmierer häufig sowohl Strings als auch Mediendateien darüber. Insgesamt ist dieses Protokoll vielseitig und flexibel und wirklich einfach zu verwenden. Lassen Sie uns nun herausfinden, wie das geht.

HTTP-Struktur

Es ist sofort erwähnenswert, dass das HTTP-Protokoll nur aus Text besteht. Nun, uns interessiert vor allem die Struktur, in der sich dieser Text befindet. Jede Nachricht besteht aus drei Teilen:
  1. Startlinie – definiert Servicedaten.
  2. Header – Beschreibung der Nachrichtenparameter.
  3. Nachrichtentext (Body) – Nachrichtendaten. Muss durch eine Leerzeile von Überschriften getrennt werden.
Mithilfe des HTTP-Protokolls können Sie eine Anfrage an den Server senden (Request) und eine Antwort vom Server erhalten (Response). Anfragen und Antworten haben leicht unterschiedliche Parameter.

So sieht eine einfache HTTP-Anfrage aus

GET / HTTP/1.1
Host: javarush.com
User-Agent: firefox/5.0 (Linux; Debian 5.0.8; en-US; rv:1.8.1.7)
Die Startlinie enthält:
  • GET – Anforderungsmethode;
  • / – Anforderungspfad (Pfad);
  • HTTP/1.1 – Version des Datenübertragungsprotokolls.
Folgen Sie dann den Überschriften:
  • Host – der Host, an den die Anfrage gerichtet ist;
  • User-Agent ist der Client, der die Anfrage sendet.
Es gibt keinen Nachrichtentext. Bei einer HTTP-Anfrage sind nur die Startzeile und der Host-Header erforderlich. Schauen wir uns nun alles der Reihe nach an. Eine HTTP-Anfrage muss eine Methode enthalten. Insgesamt gibt es neun davon: GET, POST, PUT, OPTIONS, HEAD, PATCH, DELETE, TRACE, CONNECT. Am häufigsten sind GET und POST. Diese beiden Methoden werden zunächst ausreichen. GET – fordert Inhalte vom Server an. Daher haben Anfragen mit der GET-Methode keinen Nachrichtentext. Bei Bedarf können Sie Parameter jedoch über den Pfad in diesem Format senden: https://cdn.javarush.com/images/article/155cea79-acfd-4968-9361-ad585e939b82/original.pngsend?name1=value1&name2=value2 Hier: javarush .com – Host, /send – Anforderungspfad, ? – ein Trennzeichen, das angibt, dass die Anforderungsparameter folgen. Am Ende werden die Parameter im Schlüssel=Wert-Format aufgelistet, getrennt durch ein kaufmännisches Und. POST – veröffentlicht Informationen auf dem Server. Eine POST-Anfrage kann verschiedene Informationen übertragen: Parameter im Schlüssel=Wert-Format, JSON, HTML-Code oder auch Dateien. Alle Informationen werden im Nachrichtentext übermittelt. Zum Beispiel:
POST /user/create/json HTTP/1.1
Accept: application/json
Content-Type: application/json
Content-Length: 28
Host: javarush.com

{
  "Id": 12345,
  "User": "John"
}
Die Anfrage wird an javarush.com/user/create/json gesendet, Protokollversion ist HTTP/1.1. Accept gibt an, welches Antwortformat der Client erwartet. Content-Type gibt an, in welchem ​​Format der Nachrichtentext gesendet wird. Inhaltslänge – die Anzahl der Zeichen im Textkörper. Eine HTTP-Anfrage kann viele verschiedene Header enthalten. Weitere Details finden Sie in der Protokollspezifikation .

HTTP-Antworten

Nach Erhalt der Anfrage verarbeitet der Server diese und sendet eine Antwort an den Client:
HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
Content-Length: 98

<html>
  <head>
    <title>An Example Page</title>
  </head>
  <body>
    <p>Hello World</p>
  </body>
</html>
Die Startzeile in der Antwort enthält die Protokollversion (HTTP/1.1), den Statuscode (200) und die Statusbeschreibung (OK). Überschriften geben die Art und Länge des Inhalts an. Der Hauptteil der Antwort enthält den HTML-Code, den der Browser in die HTML-Seite zeichnet.

Antwortstatuscodes

Mit dem Nachrichtentext und den Kopfzeilen ist alles klar, aber es lohnt sich, ein paar Worte zu den Statuscodes zu sagen. Antwortstatuscodes sind immer dreistellig und die erste Ziffer des Codes gibt die Kategorie der Antwort an:
  • 1xx - informativ. Die Anfrage wurde empfangen, der Server ist bereit zum Fortfahren;
  • 2xx - erfolgreich. Die Anfrage wurde eingegangen, verstanden und bearbeitet;
  • 3xx - Umleitung. Zur Bearbeitung der Anfrage müssen folgende Schritte durchgeführt werden:
  • 4xx – Clientfehler. Die Anfrage enthält Fehler oder entspricht nicht dem Protokoll;
  • 5xx – Serverfehler. Der Server konnte die Anfrage nicht verarbeiten, obwohl sie korrekt verfasst war;
Die zweite und dritte Ziffer im Code geben die Antwort detailliert an. Zum Beispiel:
  • 200 OK – die Anfrage wurde empfangen und erfolgreich verarbeitet;
  • 201 Erstellt – die Anfrage wurde empfangen und erfolgreich verarbeitet, was zur Erstellung einer neuen Ressource oder ihrer Instanz führte;
  • 301 Permanent verschoben – die angeforderte Ressource wurde dauerhaft verschoben und nachfolgende Anfragen müssen an der neuen Adresse erfolgen;
  • 307 Temporäre Umleitung – die Ressource wurde vorübergehend verschoben. Im Moment können Sie über die automatische Umleitung darauf zugreifen;
  • 403 Verboten – die Anfrage ist klar, aber eine Autorisierung ist erforderlich;
  • 404 Nicht gefunden – der Server hat die Ressource an dieser Adresse nicht gefunden;
  • 501 Nicht implementiert – der Server unterstützt keine Funktionalität zur Beantwortung dieser Anfrage;
  • 505 HTTP-Version nicht unterstützt – Der Server unterstützt die angegebene Version des HTTP-Protokolls nicht.
Zusätzlich zum Antwortstatuscode wird auch eine Statusbeschreibung gesendet, sodass Sie intuitiv verstehen können, was ein bestimmter Status bedeutet. Das HTTP-Protokoll ist sehr praktisch: Es stellt eine große Anzahl von Headern zur Verfügung, mit denen Sie eine flexible Kommunikation zwischen Client und Server einrichten können. Alle Anfrage- und Antwortheader, Anfragemethoden und Antwortstatuscodes können nicht in einem Artikel berücksichtigt werden. Bei Bedarf können Sie die offizielle Protokollspezifikation lesen , die alle Nuancen beschreibt. Das HTTP-Protokoll wird normalerweise auf Port 80 verwendet. Wenn Sie also eine Adresse sehen, die auf Port 80 endet, können Sie sicher sein, dass der Zugriff über HTTP erfolgen sollte. Mit der Entwicklung der Technologie und der aktiven Bewegung personenbezogener Daten im Internet mussten wir darüber nachdenken, wie wir die Informationen, die der Client an den Server übermittelt, zusätzlich schützen können. Das Ergebnis war das HTTPS-Protokoll.

Was ist der Unterschied zwischen HTTPS und HTTP?

HTTPS ist syntaktisch identisch mit dem HTTP-Protokoll, das heißt, es verwendet dieselben Startzeilen und Header. Die einzigen Unterschiede sind die zusätzliche Verschlüsselung und der Standardport (443) . HTTPS wird zwischen HTTP und TCP verschlüsselt, also zwischen der Anwendungs- und der Transportschicht. Wenn Sie vergessen haben, was es ist, schauen Sie sich den Artikel über das OSI-Modell an . Der moderne Verschlüsselungsstandard ist TLS. Wir werden dieses Thema nicht zu sehr vertiefen, aber denken Sie daran, dass die Verschlüsselung erfolgt, bevor die Informationen die Transportschicht erreichen . HTTPS verschlüsselt absolut alle Informationen außer dem Host und dem Port, an den die Anfrage gesendet wird. Um den Server auf die Verwendung des HTTPS-Protokolls anstelle von HTTP umzustellen, müssen wir den Servercode nicht ändern. Diese Funktion ist in Servlet-Containern aktiviert, worüber wir in den folgenden Artikeln sprechen werden. Das ist alles für heute. Warten Sie jedoch. Um HTTP-Anfragen zu erkennen, öffnen Sie Google Chrome, drücken Sie F12 und wählen Sie die Registerkarte „Netzwerk“. Alle von Ihrem Browser gesendeten/empfangenen Anfragen und Antworten werden hier angezeigt. Teil 4. Maven-Grundlagen Teil 5. Servlets. Schreiben einer einfachen Webanwendung Teil 6. Servlet-Container Teil 7. Einführung in das MVC-Muster (Model-View-Controller) Teil 8. Schreiben einer kleinen Spring-Boot-Anwendung
Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION