This page has been robot translated, sorry for typos if any. Original content here.

HTTP-Protokoll

Lassen Sie uns für die Quelle selbst herausfinden, was das allgemeine Protokoll ist. Ein Protokoll ist ein bestimmter Satz von Regeln, auch von Schlüsselzeichen, die für die Kommunikation zwischen Geräten ausgelegt sind. Es ist notwendig, dass Computer oder deren Elemente von einem Freund eines Freundes eindeutig erkannt werden.

Protokoll - eine Rede von Computern im Netzwerk.

Tatsächlich kann jeder Befehlssatz als Protokoll bezeichnet werden. In der Praxis gilt das Konzept eines Protokolls jedoch nur für die sogenannten Netzwerkprotokolle - die Sprachen der Computer in einem Netzwerk. Jedes Protokoll hat einen bestimmten Zweck und wird von einer speziellen Software unterstützt.

URL, IP- und DNS-Adressen, Domains

Die URL (Uniform Resource Locator) ist also die vollständige Route des Dokuments . URL ist die Adresse, unter der ein Dokument (eine Datei) im Internet eindeutig gefunden werden kann. Die Zeile, die Sie in das Adressfeld Ihres Browsers eingeben, enthält auch die URL-Adresse des Dokuments.

Eine URL kann sehr anspruchsvoll aussehen und auch aus verschiedenen Teilen bestehen. Betrachten Sie zunächst die einfachste URL:

Diese URL enthält drei Bestandteile: den Namen des Hosts, auf dem sich das Dokument befindet, den Namen des Protokolls, das zur Übertragung dieses Dokuments verwendet wird, und den Namen des Vorgangs selbst (Dateiname plus Erweiterung). Die Basis (und die einzige erforderliche Freigabe für das http-Protokoll) der Adresse ist der Hostname. Es definiert die Maschine, auf der sich der Act befindet (in einem Netzwerk werden einzelne Computer als Hosts bezeichnet ). Jeder Computer im Netzwerk ist ein Host, hat auch einen eindeutigen Namen (in diesem Netzwerk). Im obigen Beispiel ist rambler.ru der Name des Computers, auf dem das Dokument gefunden werden soll.

Hostnamen können doppelt angegeben werden: über DNS und auch über eine IP-Adresse. Eine IP-Adresse besteht aus vier durch einen Punkt getrennten Zahlen. Jede Menge kann im Bereich von 0 bis 255 liegen. Zum Beispiel 192.168.2.1 .

In der Praxis ist die Verwendung von IP-Adressen jedoch unpraktisch, da sich Zahlen nur schwer merken lassen. Daher wurde ein Domain Name System (DNS) eingeführt, bei dem jeder IP-Adresse ein Verhältnis eines Namens aus Buchstaben oder Zahlen zugewiesen wird. Im obigen DNS-Beispiel lautete der Name beispielsweise " rambler.ru" , und auch die IP-Adresse 217.73.192.109 entspricht dem Namen.

Es ist zu beachten, dass unterschiedliche DNS-Namen fast immer unterschiedlichen IP-Adressen entsprechen, dieselben IP-Adressen jedoch auch unterschiedlichen DNS-Namen entsprechen können. Beispielsweise haben so unterschiedliche DNS-Namen wie www.rambler.ru und rambler.ru einen, der auch eine IP-Adresse hat. In URLs dürfen sowohl DNS-Namen als auch IP-Adressen verwendet werden. Somit sind die beiden URLs http://rambler.ru/index.html ebenfalls http://217.73.192.109/index.html äquivalent. Einige Methoden zum Festlegen der IP-Adresse sind hier beschrieben: http://www.xakep.ru/post/11980/default.htm .

Beachten Sie auch, dass ein Host im Prinzip keinen Domainnamen besitzen muss. Das heißt, einige Hosts dürfen nur über die IP-Adresse zugreifen.

Sie haben wahrscheinlich bereits darauf geachtet, dass ein DNS-Name aus durch Punkte getrennten Wörtern besteht. Jeder Name steht für die Domain, zu der der Host gehört. Das gesamte DNS-System ist hierarchisch aufgebaut. Alle Domänen der 1. Ebene (com, org, ru usw.) sind in der Stammdomäne der 0. Ebene enthalten (die normalerweise in keiner Weise in DNS geschrieben wird, wie dies standardmäßig impliziert ist). Domänen einer anderen Ebene (z. B. Rambler, Mail oder Kiev) geben auch Domänen der Hauptebene usw. ein. DNS-Domains werden in aufsteigender Reihenfolge von rechts nach links aufgezeichnet.

Wir stellen zwei wichtige Merkmale fest: 1. Eine Domain ist eine rein administrative Einheit und stellt keinen Host dar. 2. Die IP-Adresse hängt in keiner Weise von der Domäne ab, in der sich der Host befindet.

Daher wurde das Domänensystem lediglich zur Klassifizierung von Websites nach geografischer oder Zielbasis eingeführt und hat auch keinen Bezug zum physischen Gerät des Internets.

In der angegebenen Beispiel-URL legen wir explizit den Namen der index.html fest , an der wir interessiert sind. Auf jeder Site befindet sich jedoch ein Dokument, das standardmäßig geöffnet wird. Er besitzt als Position den Namen index.html oder default.html und befindet sich ebenfalls im Stammordner der Site. Wenn wir die URL der Website eingeben, ohne den von uns benötigten Dateinamen anzugeben, öffnet der Server automatisch den Standardakt für uns. Somit entspricht die Adresse http://crackchat.h1.ru der Adresse http://crackchat.h1.ru/index.html . So wie es eine standardmäßig geöffnete Datei gibt, gibt es auch einen Standardordner. Auf den meisten Servern enthält der Standardordner für HTTP-Dokumente den WWW- Namen.

Nach DNS folgt der Name der Handlung, auf die wir uns beziehen, in der URL-Adresse. Dies impliziert, dass sich diese Datei im Stammordner befindet. Wenn dies nicht der Fall ist, können wir den gefüllten Weg zum Vorgang angeben und die Unterordner durch einen direkten Schrägstrich auflisten:

In diesem Beispiel verweisen wir auf die Datei im Ordner cgi-bin / perl / . Dieser Pfad ist relativ zum Stammordner. Wenn der Pfad zum Stammverzeichnis beispielsweise f: / www lautet, verweisen wir in unserem Beispiel auf die Datei f: /www/cgi-bin/perl/search.pl . Gleichzeitig ist es stolz, Folgendes zu berücksichtigen: Da die meisten Webserver auf UNIX-ähnlichen Systemen basieren, muss bei der Angabe der Route zur Datei der Unterschied zwischen Klein- und Großbuchstaben berücksichtigt werden. Wenn wir also auf die Datei unter der URL http://rambler.ru/CGI-BIN/perl/Search.pl zugegriffen hätten, hätte der Server eine solche Datei nicht gefunden. Der Unterschied zwischen eindrucksvollen und Kleinbuchstaben tritt nur in der Route zur Datei auf, während bei DNS die Groß- und Kleinschreibung nicht berücksichtigt wird (dann entspricht RAMBLER.RU der Angabe der Adresse rambler.ru ).

Wie bereits erwähnt, entspricht DNS einer genau definierten IP-Adresse. Dies bedeutet jedoch nicht, dass der DNS-Name dem Host entspricht, auf den wir zugreifen. Häufig besitzt der Host selbst Domänen mit mehr bodenlosen Ebenen. Beispielsweise ist die Site h1.ru ein Host in einer Domäne einer anderen Ebene, sie enthält jedoch selbst Domänen der dritten Ebene, z. B. crackchat.h1.ru oder crosswords.h1.ru . Daher gehören diese Site-Paare demselben Host und haben natürlich dieselbe IP-Adresse! In diesem Fall sehen die Domänen der dritten Ebene physisch genauso aus wie Ordner auf der Host- Festplatte von h1.ru , und der Zugriff darauf könnte beispielsweise folgendermaßen erfolgen: h1.ru/crackchat/ also h1.ru/crosswords/ . Das Zugriffstool (über eine Domain der dritten Ebene oder über einen Festplattenpfad) wird von den Servereinstellungen bestimmt.

Der Root-Ordner wird ebenfalls als Domain betrachtet, weshalb die meisten URLs in verschiedenen Formaten angegeben werden dürfen: sowohl mit der www-Domain (zum Beispiel www.crackchat.h1.ru ) als auch ohne ( crackchat.h1.ru ) - in diesem Fall ist der Server sowieso leitet Sie automatisch zum Ordner www weiter, da dieser standardmäßig akzeptiert wird.

Protokolle, Ports, CGI-Protokoll

Wie wir bereits gesehen haben, besteht die URL-Adresse aus drei Hauptelementen: DNS-Name, Dateiroute und Protokollname. Wenn Sie das Dokument anhand der ersten beiden Elemente finden können, bestimmt das Protokoll, wie auf das Dokument zugegriffen werden soll. Mit anderen Worten, zu welchem ​​Zeitpunkt der Kunde versucht, das Dokument zu empfangen, ist er gezwungen, dem Server mitzuteilen, wie er (der Server) gezwungen ist, diese Handlung an ihn (den Client) zu übertragen. Es gibt viele verschiedene Datenübertragungsprotokolle im Netzwerk, darunter die gängigsten: http (Hypertext Transfer Protocol - ein Protokoll zum Übertragen von Hypertextdateien), ftp (File Transfer Protocol - ein Protokoll zum Übertragen von Dateien), mailto (ein Präfix für eine Familie von Mailprotokollen), file (ein Dateizugriffsprotokoll) oder Ordner). Der Protokolltyp bestimmt das Programm, das Daten im Format dieses Protokolls verarbeiten kann. Der Internet Explorer kann also mit http- Protokollen arbeiten, aber nicht mit dem mailto- Protokoll. Wenn Sie in Ihrem Browser in die Adresszeile mailto: microsoft.com eingeben , wird daher ein spezielles Mail-Programm gestartet, das mit diesem Protokoll arbeiten kann (z. B. Outlook Express oder The Bat!). Der Name des Protokolls wird angegeben, indem die wichtigste in der URL auch mit einem Doppelpunkt enden soll. Das Register spielt überhaupt keine Rolle.

Unter den Protokollen gibt es sehr bizarre, zum Beispiel das Protokoll res oder about (zum Spaß können Sie die Adresse <a href="mailto:bill@microsoft.com"> Grüße an Bill senden </a> in der Adressleiste des Browsers eingeben und sehen, was :) . Ein weiteres interessantes ldap- Protokoll (versuchen Sie es zum Beispiel mit ldap: //microsoft.com ).

Nicht alle Protokolle können als Protokoll für eine URL fungieren. Da die About- oder Javascript- Protokolle nichts mit der vollständigen Route des Dokuments zu tun haben, sind auch die URLs mit diesen Protokollen überhaupt keine URLs.

Das Protokollpräfix gibt dem Kunden an, in welcher "Sprache" die Kommunikation mit dem Server beginnen soll. Und der Kunde weiß im Voraus, welches Programm diese Kommunikation durchführen soll, was über den Server unmöglich zu sagen ist. Damit der Server mit uns in der erforderlichen Protokollsprache „spricht“, muss er (der Server) das entsprechende Programm ausführen, das dieses Protokoll versteht. Verwenden Sie Ports, um dieses Problem zu beheben. Wenn der DNS-Name oder die IP-Adresse den Computer bestimmt, auf den wir zugreifen, bestimmt der Port das Programm, auf das wir auf diesem Host zugreifen. Ports werden durch eine ganze Zahl von 0 bis 65535 angegeben.

Jedem Protokoll wird ein Standardport zugewiesen, über den das Serverprogramm auf Clientanforderungen wartet. Wenn der Server beispielsweise das http- Protokoll unterstützt, wartet das entsprechende Serverprogramm (z. B. Apache) auf Clientanforderungen an Port 80 (dieser Port wird standardmäßig für das http- Protokoll akzeptiert). Wenn dieser bla bla-Host auch das FTP- Protokoll unterstützt, wartet ein anderes Serverprogramm auf Anforderungen an Port 21 (dieser Port ist für das FTP- Protokoll reserviert).

Der Port, auf den wir zugreifen, wird automatisch bestimmt, je nachdem, welches Protokoll wir in der URL ausgewählt haben. Der Port darf aber auch explizit angegeben werden. Die Portnummer wird durch einen Doppelpunkt nach dem DNS-Namen oder der IP-Adresse angegeben:

In dem angegebenen Beispiel wenden wir uns an ein bestimmtes Programm, das an Port 8080 "aufgehängt" ist. Außerdem bitten wir sie, uns die Datei index.html über das http- Protokoll zu geben. Befindet sich kein solches Programm auf dem Server (dann verfolgt kein Programm Anforderungen für Port 8080 ), gibt der Browser eine Meldung über die falsche URL aus.

Da Port 80 für http- Server standardmäßig akzeptiert wird, entspricht die Adresse http://rambler.ru:80 der Adresse http://rambler.ru . Obwohl Hosts im Prinzip kein http auf dem 80. Port unterstützen müssen. Der Server kann zum Beispiel auf Port 3128 konfiguriert sein. Um auch zu diesem Zeitpunkt mit diesem Host auf http zu kommunizieren, müssen Sie die Portnummer nonstop explizit angeben: http://rambler.ru//128

Beim Zugriff auf den Server muss manchmal zusätzlich zur Adresse der Handlung die Benutzer-ID angegeben werden, die auf den Server zugreift (oder auf die wir auf dem Server zugreifen), das Zugriffspasswort ist jedoch ähnlich. Mit der URL können Sie solche Informationen übertragen. Dazu setzen Sie ein @ -Zeichen vor den DNS-Namen, vor dem der Benutzername angezeigt wird:

Für das http- Protokoll ist in der Regel keine Benutzerauthentifizierung erforderlich, für Protokolle wie ftp oder mailto jedoch. Zusätzlich zum Benutzernamen kann auch ein Zugangspasswort angegeben werden. Das Passwort ist kein Doppelpunkt mehr. Zum Beispiel: ftp: // masha: kasha@yahoo.com . Diese URL fordert das FTP- Protokoll für das Stammverzeichnis des yahoo.com- Hosts für Masha mit dem Kennwort kasha an . Eine solche mailto- Adresse : //masha@mail.ru wird verwendet, um auf die Mailbox des Benutzers masha im mail.ru- Host zuzugreifen .

Der Benutzername kann ebenfalls für ein Domain-Prinzip existieren und auch aus verschiedenen durch einen Punkt getrennten Elementen bestehen. Zum Beispiel mailto: //bill.geits@microsoft.com .

Wie bereits erwähnt, ist eine URL eine gefüllte Dokumentroute. Ein Akt ist eine beliebige Datei, die auch in Text (z. B. HTML- oder Doc- oder PDF-Dateien) sowie in einem Bild (JPG oder GIF) und einem Programm vorhanden sein kann. Gleichzeitig impliziert das http-Protokoll, dass, wenn ein Text oder ein Bild in der URL angefordert wird, diese an den Benutzer übertragen werden müssen, um sie in seinem Browser anzuzeigen. Wenn jedoch ein Programm oder Skript angefordert wird, muss es auf dem Server ausgeführt werden und das Ergebnis seiner Arbeit sollte auch an den Benutzer gesendet werden. Das Ergebnis selbst kann entweder in Text oder in einem Bild vorliegen. Die Art der resultierenden Handlung wird innerhalb des Programms selbst bestimmt, und der Benutzer weiß nicht im Voraus, welche Art von Dokument er durch Aufrufen des Programms erhalten wird. Das Serverprogramm wird mit der üblichen URL-Adresse des Programms oder Skripts aufgerufen. In der Regel werden im Netzwerk Skripte mit den Erweiterungen .pl .php .cgi verwendet (die ersten beiden sind in Perl und PHP geschriebene Programme, die letzte Erweiterung kann jedoch auf alle ausführbaren Module angewendet werden, einschließlich PHP und EXE sowie für Perl). Für die URL http://www.rambler.ru/cgi-bin/top.cgi muss beispielsweise eine bestimmte Anwendung top.cgi auf dem Host rambler.ru ausgeführt und das Ergebnis dieser Anwendung an den Kunden übertragen werden (z. B. ein HTML-Dokument oder ein Bild).

Serveranwendungen wären jedoch ein wenig nutzlos, wenn ihnen keine Parameter übergeben werden könnten. URL erlaubt es. Für die Übertragung von Parametern an Serveranwendungen (diese werden auch als Gateways bezeichnet ) wird ein Datenübertragungsformat verwendet, das als CGI (Common Gateway Interface) bezeichnet wird. In diesem Format können Sie die Eingabedaten von Programmen in einer einzigen Zeile angeben.

In dem obigen Beispiel ist zu sehen, dass die URL ein Server-Gateway namens search.pl aufruft und als Eingabe denselben Parameter mit dem Namen user übergibt , der auch masha endet. Wird der Skriptname durch eine CGI-Zeichenfolge als Vorgangszeichen entfernt ? . Wenn ein Skript mehrere Parameter übergeben muss, werden diese nacheinander durch das kaufmännische Und & -Symbol aufgelistet, zum Beispiel: http://rambler.ru/cgi-bin/perl/search.pl?user=masha&password=kasha .

Wir stellen folgendes Merkmal fest: Da die meisten WEB-Technologien auf Textdatenformaten basieren, tritt früher oder später das Problem auf, Befehle von Daten zu unterscheiden. Wenn wir beispielsweise einen Ausdrucksparameter mit dem Wert C = A + B als CGI-Parameter übergeben möchten: http://site.com/script.cgi?expression=C=A+B, wird eine solche Anforderung von CGI nach der anderen missverstanden Das Zeichen = wird als Trennzeichen zwischen dem Parameternamen und seinem Wert wahrgenommen. Daher wird im CGI-Protokoll (sowie in allen Prämissen einer URL) eine spezielle Zeichenkodierung mit der Bezeichnung URL-Datenformat verwendet. Diese Codierung zeigt die Buchstaben des lateinischen Alphabets wie sie sind und die verbleibenden Zeichen in Form von % nn an, wobei nn der Hexadezimalcode des Zeichens ist. Beispielsweise sieht das doppelte Anführungszeichen " wie % 22 aus , das Symbol jedoch wie % 3D . Die Ausnahme ist das Leerzeichen, das zusätzlich zur Standardcodierung % 20 ebenfalls als + codiert werden kann. Daher sollte die Beispiel-URL folgendermaßen geschrieben werden: http: // site .com / script.cgi? expression = C% 3DA% 2BB .

HTTP-Protokoll

HTTP (Hypertext Transfer Protocol) ist das im Web verwendete Hauptprotokoll. Trotz der Tatsache, dass das Protokoll als Hypertext-Übertragungsprotokoll (d. H. HTML) bezeichnet wird, kann (und wird) in der Lektion das HTTP-Protokoll verwendet, um nahezu alle Daten im Netzwerk zu übertragen. Dabei werden auch Texte und Bilder sowie Dateien übertragen. Die Popularität von HTTP hängt meiner Meinung nach mit mehreren Faktoren zusammen: Dies ist die Verwendung einer ziemlich universellen URL-Adressierung, die Fähigkeit, beliebige Daten (entweder vom Kunden zum Server oder umgekehrt) zu übertragen, jedoch ist die Arbeit im No-Line-Modus (d. H. Übertragung von Daten direkt zwischen) ähnlich Der Kunde ist auch ein Server (ohne Vermittler). Das HTTP-Protokoll kann als dual bezeichnet werden, in dem Sinne, dass in einem Client-Server-System Daten in zwei Richtungen übertragen werden können und auch von Server zu Server von Server zu Client umgekehrt werden kann. Trotzdem zielt die HTTP-Syntax speziell darauf ab, Daten vom Kunden zum Server zu übertragen.

Betrachten Sie also die einfachste HTTP-Beispielanforderung. Wenn wir im Adressfenster des Browsers die Adresse http://yandex.ru eingeben, ermittelt der Browser die IP-Adresse des Servers. Yandex.ru sendet ihm außerdem die folgende HTTP-Anfrage an Port 80:

GET http://yandex.ru/ HTTP / 1.0
Akzeptieren: image / gif, image / x-xbitmap, image / jpeg, image / pjpeg, application / vnd.ms-excel, application / msword, application / vnd.ms-powerpoint, * / *
Annahmesprache: ru
Cookie: yandexuid = 2464977781018373381
User-Agent: Mozilla / 4.0 (kompatibel; MSIE 5.5; Windows 98)
Host: yandex.ru
Referer: narod.ru
Proxy-Verbindung: Keep-Alive

Die Anfrage wird unverschlüsselt übertragen. Der allererste Teil der Anfrage befindet sich in der ersten Zeile: Dies ist die Art der Anfrage ( GET ), die URL des angeforderten Dokuments ( http://yandex.ru ) ist ebenfalls eine Art HTTP-Protokoll ( HTTP / 1.0 ). Im Folgenden sind die Abfrageparameter aufgeführt. Jede Zeile entspricht einem Parameter. Der Name des Parameters bewegt sich an der Quelle der Zeile, dann setzt der Doppelpunkt auch den Wert des Parameters. Die Bedeutung der Parameter ist intuitiv klar, die wichtigsten werden jedoch beschrieben: Accept - Der Datentyp, den der Browser akzeptieren kann (in MIME-Codierung). Accept-Language ist die bevorzugte Sprache, in der der Browser Daten empfangen möchte. User-Agent - Der Programmtyp, der die Anforderung gesendet hat. Host - DNS-Hostname (oder IP-Hostname), an den die Anforderung gerichtet ist. Cookies - Cookies (Daten, die beim letzten Besuch dieses Hosts vom Server auf der lokalen Festplatte des Clients gespeichert wurden). Referer - der Host, von dem wir die Anfrage senden. Wenn wir uns zum Beispiel auf der Seite http://narod.ru befinden und dort auch auf den Link http://yandex.ru klicken, wird die Anfrage an den Host von yandex.ru gesendet. Das Feld für die Referrer-Anfrage hat jedoch den Hostnamen narod.ru.

Der Satz von Abfrageparametern ist nicht festgelegt. Zusätzlich zu den obigen können auch andere Parameter vorhanden sein.

Die interessantesten Parameter sind Referer und Cookie . Diese Parameter werden hauptsächlich zur Benutzeridentifikation durch den Server verwendet.

Bei einer GET-Anforderung werden möglicherweise Daten vom Kunden an den Server übertragen. Sie werden direkt über die URL mit dem CGI-Protokoll übertragen. Um beispielsweise in den Chat zu gelangen, kann der Browser dem Server die folgende Anfrage senden:

Erhalten Sie http://chat.ru/ ? Login = Algol & pass = Algol HTTP / 1.0
Akzeptieren: image / gif, image / x-xbitmap, image / jpeg, image / pjpeg, application / vnd.ms-excel, application / msword, application / vnd.ms-powerpoint, * / *
Annahmesprache: ru
Cookie: yandexuid = 2464977781018373381
User-Agent: Mozilla / 4.0 (kompatibel; MSIE 5.5; Windows 98)
Host: yandex.ru
Referer: narod.ru
Proxy-Verbindung: Keep-Alive

Wie wir beobachten, enthält die Abfragezeichenfolge den Benutzernamen und das Kennwort des Benutzers, die über die URL-Zeichenfolge übergeben werden. Diese Art der Datenübertragung zum Server ist praktisch, hat jedoch Kapazitätsbeschränkungen. Sehr eindrucksvolle Datensätze können nicht über URLs weitergegeben werden. Zu diesem Zweck gibt es eine andere Art von Anforderung: eine POST- Anforderung. Die POST- Anforderung ist der GET sehr ähnlich, mit dem einzigen Unterschied, dass die Daten in der POST- Anforderung getrennt vom Anforderungsheader selbst übertragen werden. Das obige Beispiel in der POST- Version hat also die Form:

POST http://chat.ru/ HTTP / 1.0
Akzeptieren: image / gif, image / x-xbitmap, image / jpeg, image / pjpeg, application / vnd.ms-excel, application / msword, application / vnd.ms-powerpoint, * / *
Annahmesprache: ru
Cookie: yandexuid = 2464977781018373381
User-Agent: Mozilla / 4.0 (kompatibel; MSIE 5.5; Windows 98)
Host: yandex.ru
Referer: narod.ru
Proxy-Verbindung: Keep-Alive

login = Algol & pass = Algol

Da wir die Anmeldeinformationen beachten, wird auch das Passwort separat im Anforderungskörper übertragen. Der Anforderungshauptteil sollte von der leeren Headerzeichenfolge abweichen. Wenn der Server in einer POST- Anforderung auf eine leere Zeichenfolge stößt, wird bei allen weiteren Schritten der Hauptteil der Anforderung (übertragene Daten) berücksichtigt. Beachten Sie Folgendes: Das Format der Daten im Hauptteil der POST- Anforderung ist beliebig. Obwohl es sich um das am häufigsten verwendete CGI-Format handelt, ist es nicht erforderlich. Zusätzlich zur POST- Anforderung muss kein Anforderungshauptteil vorhanden sein, und es können auch Daten auf ähnliche Weise über eine URL übertragen werden.

Neben dem CGI-Format wird manchmal das sogenannte mehrteiliges Format:

POST http://photo.bigmir.net/form.php HTTP / 1.0
Akzeptieren: image / gif, image / x-xbitmap, image / jpeg, image / pjpeg, application / vnd.ms-excel, application / msword, application / vnd.ms-powerpoint, * / *
Referer: http://photo.bigmir.net/form.php
Annahmesprache: ru
Inhaltstyp: mehrteilig / Formulardaten; Grenze = --------------------------- 7d20345dc
Accept-Encoding: gzip, deflate
User-Agent: Mozilla / 4.0 (kompatibel; MSIE 5.01; Windows 98)
Host: photo.bigmir.net
Proxy-Verbindung: Keep-Alive
Pragma: kein Cache
Plätzchen: Ukrainisch = 2; BSX_TestCookie = Ja; rich_ad = 1; b = 1

----------------------------- 7d20345dc
Inhaltsdisposition: Formulardaten; name = "id"

254353
----------------------------- 7d20345dc
Inhaltsdisposition: Formulardaten; name = "d"

22
----------------------------- 7d20345dc
Inhaltsdisposition: Formulardaten; name = "login"

Algol
----------------------------- 7d20345dc
Inhaltsdisposition: Formulardaten; name = "passw"

Algol
----------------------------- 7d20345dc
Inhaltsdisposition: Formulardaten; name = "email"

tps99@mail.ru
----------------------------- 7d20345dc
Inhaltsdisposition: Formulardaten; name = "submit"

Hinzufügen
----------------------------- 7d20345dc--

Kümmern wir uns um die Content-Type- Kopfzeile : multipart / form-data; Grenze = --------------------------- 7d20345dc . Dieser Parameter teilt dem Server mit, dass der Kunde Daten im mehrteiligen Format mit einem Trennzeichen --------------------------- 7d20345dc überträgt . Ein vom Kunden zufällig generierter Begrenzer ist ebenfalls erforderlich, damit der Server die verschiedenen Elemente, die im Anforderungshauptteil gesendet werden, trennen kann. Wie Sie sehen, enthält der Body mehrere Elemente, die im ASCII- Format (und nicht wie für CGI erforderlich in Unicode ) übertragen werden und durch die im Parameter Content-Type angegebene Zeile getrennt sind. Jede Freigabe enthält Informationen über die Art der übertragenen Daten sowie den Namen dieses Teils. Der Komfort des mehrteiligen Formats besteht darin, dass die übertragenen Daten unbegrenzt sind und auch keine vorläufige Codierung erfordern.

Neben GET- Anforderungen gibt es auch POST- Anforderungen wie TRACE , PUT . Sie werden jedoch nur selten verwendet, und wir werden uns in keiner Weise mit ihnen befassen.

Ich werde mich noch einmal darauf konzentrieren, dass ALLE vom Kunden an den Server übermittelten Informationen in der Kopfzeile und im Hauptteil der Anfrage enthalten sind. Auf andere Weise kann der Server keine Informationen vom Kunden über das HTTP-Protokoll empfangen.

Zum anderen kann der Server dem Kunden auch nur entgegen der Anfrage Informationen übermitteln. Ein etwaiger Datenaustausch im HTTP-Protokoll wird nur vom Client initiiert, der Server kann jedoch nur auf Wunsch des Clients "einfach so" nichts übertragen.

Wenn wir also in der Lage sind, die übertragenen Anforderungen zu steuern, steuern wir die vom Server und vom Client empfangenen Informationen vollständig. Dies ist praktisch, da zum Ändern der übertragenen / angeforderten Daten keinesfalls die HTML-Dateien der Seiten, die Cookies usw. geändert werden müssen, sondern lediglich die HTTP-Anfrage geändert und an den Server gesendet werden muss. Dies ist jedoch eine andere Chronik :) ...