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

HTTP-Protokoll

Lassen Sie uns für die Quelle herausfinden, was das gemeinsame Protokoll ist. Das Protokoll ist eine bestimmte Reihe von Regeln von auch Schlüsselzeichen, die für die Kommunikation von Geräten untereinander gedacht sind. Es ist notwendig, damit Computer oder ihre Elemente vom Freund eines Freundes eindeutig verstanden werden können.

Protokoll - das Sprechen von Computern im Netzwerk.

In der Tat kann jeder Satz von Befehlen als ein Protokoll bezeichnet werden, aber in der Praxis wird das Konzept des Protokolls nur auf die sogenannten Netzwerkprotokolle angewendet - die Sprachen der Kommunikation von Computern im Netzwerk. Jedes Protokoll hat einen bestimmten Zweck und wird von spezialisierter Software unterstützt.

URL, IP auch DNS-Adressen, Domains

Die URL (Uniform Resource Locator) ist also die vollständige Dokumentenroute . URL ist die Adresse, unter der das Dokument (die Datei) im Internet eindeutig gefunden werden darf. Die Zeile, die Sie in das Feld "Adresse" Ihres Browsers eingeben, übernimmt auch die URL des Dokuments.

URL kann ein ziemlich anspruchsvolles Aussehen haben, auch von verschiedenen Teilen. Berücksichtigen 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 für die Übertragung dieses Dokuments verwendet wird, sowie den tatsächlichen Namen des Vorgangs selbst (Dateiname plus Erweiterung). Die Basis (und die einzige obligatorische Freigabe für das HTTP-Protokoll) der Adresse ist der Hostname. Sie bestimmt die Maschine, auf der sich der Act befindet (im Netzwerk werden einzelne Computer als Hosts bezeichnet ). Jeder Computer im Netzwerk ist ein Host und hat auch einen eindeutigen Namen (in diesem Netzwerk). In dem Beispiel ist rambler.ru der Name des Computers, auf dem wir das Dokument finden möchten.

Hostnamen können auf zweifache Weise angegeben werden: Verwenden von DNS auch unter Verwendung einer IP-Adresse. Die IP-Adresse besteht aus vier durch einen Punkt getrennten Zahlen. Jede Zahl kann im Bereich von 0 bis 255 liegen. Beispiel 192.168.2.1 .

In der Praxis ist es jedoch unbequem, IP-Adressen zu verwenden, da Zahlen schwer zu merken sind. Daher wurde das Domain Name System (DNS) eingeführt, bei dem jede IP-Adresse in eine Relation entweder als Name bestehend aus Buchstaben oder Ziffern gesetzt wird. So war zum Beispiel im obigen Beispiel der DNS-Name rambler.ru , er entspricht auch der IP-Adresse 217.73.192.109 .

Es ist zu beachten, dass unterschiedliche IP-Adressen immer unterschiedlichen DNS-Namen entsprechen, die gleichen IP-Adressen jedoch unterschiedlichen DNS-Namen entsprechen können. Zum Beispiel, so unterschiedliche DNS-Namen wie www.rambler.ru und rambler.ru haben auch diese blah blah IP-Adresse. URL-Adressen dürfen sowohl DNS-Namen als auch IP-Adressen verwenden. Daher sind auch zwei URLs http://rambler.ru/index.html http://217.73.192.109/index.html gleichwertig. Einige Möglichkeiten zur Angabe einer IP-Adresse sind hier beschrieben http://www.xakep.ru/post/11980/default.htm .

Beachten Sie auch, dass der Host im Prinzip keinen Domänennamen besitzen muss. Das heißt, einige Hosts dürfen nur auf die IP-Adresse zugreifen.

Sie haben wahrscheinlich schon darauf geachtet, dass jeder DNS-Name aus getrennten, durch Punkte getrennten Wörtern besteht. Jeder Name bezieht sich individuell auf die Domäne, zu der der Host gehört. Das gesamte DNS-System ist auf einer hierarchischen Basis aufgebaut. Alle Domänen der ersten Ebene (com, org, ru usw.) geben die Stammdomäne mit der Ebene 0 ein (die normalerweise nicht in DNS geschrieben ist, wie es implizit impliziert ist). Domains auf einer anderen Ebene (zB Rambler, Mail oder Kiev) betreten die Hauptebenen-Domains usw. Domänen in DNS werden von rechts nach links geschrieben, um das Level zu erhöhen.

Lassen Sie uns zwei wichtige Merkmale beachten: 1. Die Domäne ist eine reine Verwaltungseinheit und stellt in keiner Weise einen Host dar. 2. Die IP-Adresse hängt in keiner Weise von der Domäne ab, in der sich der Host befindet.

Somit wird das Domänensystem einfach eingeführt, um Websites nach geografischen oder objektiven Merkmalen zu klassifizieren, und hat auch keine Beziehung zu dem physischen Gerät des Internets.

In der URL-Beispiel-URL legen wir explizit den Namen der index.html fest, an der wir interessiert sind, aber auf jeder Site gibt es ein Standarddokument. Wenn die Position den Namen besitzt, befindet sich index.html oder default.html ebenfalls im Stammverzeichnis der Site. Wenn wir die URL der Site eingeben, ohne den Dateinamen anzugeben, wird das Standarddokument automatisch geöffnet. Somit entspricht die Adresse http://crackchat.h1.ru der Adresse http://crackchat.h1.ru/index.html . Ähnlich, blah blah wie es eine Standarddatei gibt, gibt es auch einen Standardordner. In den meisten Servern ist der WWW- Name der Standardordner für HTTP-Dokumente.

Nach dem DNS folgt auf die URL-Adresse der Name des Acts, für den wir uns bewerben. Es wird davon ausgegangen, dass sich diese Datei im Stammordner befindet. Wenn bla bla nicht so ist, können wir die gefüllte Route zum Akt angeben, indem wir die Unterordner über einen direkten Schrägstrich auflisten:

In diesem Beispiel greifen wir auf die Datei im Ordner cgi-bin / perl / zu . Dieser Pfad ist relativ zum Stammordner. Wenn beispielsweise der Pfad zum Stammordner f: / www lautet, verweisen wir in unserem Beispiel auf die Datei f: /www/cgi-bin/perl/search.pl . In diesem Fall können Sie Folgendes berücksichtigen: Da die meisten Webserver auf der Basis von UNIX-ähnlichen Systemen erstellt werden, müssen Sie bei der Angabe der Route zu der Datei den Unterschied der Kleinbuchstaben berücksichtigen. Wenn wir also auf die Datei unter der URL http://rambler.ru/CGI-BIN/perl/Search.pl zugreifen würden , würde der Server solch eine Datei nicht finden. Der Unterschied der beeindruckenden kleinen Buchstaben kommt auch nur auf dem Weg zur Datei, DNS ist case-insensitive (es ist äquivalent zu essen rambler.ru auch RAMBLER.RU ).

Wie bereits erwähnt, entspricht DNS einer streng definierten IP-Adresse, dies bedeutet jedoch nicht, dass der DNS-Name dem Host entspricht, den wir adressieren. Oft besitzt der Host selbst Domänen von bodenloseren Ebenen in sich. Zum Beispiel ist die Website h1.ru ein Host in einer Domäne einer anderen Ebene, aber sie selbst enthält Domänen der dritten Ebene, zum Beispiel crackchat.h1.ru oder crosswords.h1.ru . Daher gehören diese Site-Paare zum selben Host und haben auch die gleiche IP-Adresse! Physikalisch sehen die Domänen der dritten Ebene in diesem Fall genauso aus wie die Ordner auf der h1.ru-Hostfestplatte , und der Zugriff darauf könnte beispielsweise erfolgen: h1.ru/crackchat/ auch h1.ru/crosswords/ . Das Zugriffstool (über eine Domäne der dritten Ebene oder über einen Festplattenpfad) wird durch die Servereinstellungen bestimmt.

Der Stammordner wird als Domäne betrachtet, und daher können die meisten URLs in den folgenden Formaten angegeben werden: wie bei der www-Domäne (z. B. www.crackchat.h1.ru ) oder ohne ( crackchat.h1.ru ) - in diesem Fall ist der Server sowieso leitet Sie automatisch zum www-Ordner, weil es standardmäßig akzeptiert wird.

Protokolle, Ports, CGI-Protokoll

Wie wir gesehen haben, besteht die URL-Adresse aus drei Hauptelementen: dem DNS-Namen, der Dateiroute und dem Protokollnamen. Wenn das erste Elementelement das Dokument lokalisieren kann, bestimmt das Protokoll, wie auf das Dokument zugegriffen wird. Mit anderen Worten, zu welchem ​​Zeitpunkt der Kunde versucht, das Dokument zu bekommen, ist er gezwungen, dem Server mitzuteilen, wie er (der Server) gezwungen ist, diese Handlung an ihn (den Kunden) zu übertragen. Es gibt viele verschiedene Datenübertragungsprotokolle im Netzwerk, darunter das häufigste HTTP (Hypertext Transfer Protocol), ftp (Dateiübertragungsprotokoll), mailto (Präfix der Mailprotokollfamilie ), Datei (Dateizugriffsprotokoll) oder Ordner). Die Art des Protokolls bestimmt, welches Programm Daten im Format dieses Protokolls verarbeiten kann. So Internet Explorer kann mit Protokollen http , Datei auch ftp arbeiten , aber kann nicht mit mailto Protokoll in keiner Weise arbeiten. Wenn Sie also in der Adressleiste von mailto: microsoft.com Ihren Browser eingeben , wird ein spezielles Mailprogramm gestartet, das mit diesem Protokoll arbeiten kann (zB Outlook Express oder The Bat!). Der Name des Protokolls wird durch das wichtigste in der URL angegeben und muss mit einem Doppelpunkt enden. Das Register spielt keine Rolle.

Unter den Protokollen gibt es sehr bizarre zum Beispiel res oder über das Protokoll (für Interesse können Sie in der Adressleiste des Browsers die Adresse eingeben: <a href="mailto:bill@microsoft.com"> Grüße an Bill senden </a> auch sehen, was passieren wird :) . Ein anderes unterhaltsames Protokoll ist ldap (versuchen Sie zum Beispiel ldap: //microsoft.com ).

Als Protokoll für die URL können in keiner Weise alle Protokolle wirken. Die Protokolle über oder JavaScript haben also nichts mit der vollständigen Dokumentenroute zu tun, daher sind die "Adressen" mit diesen Protokollen keine URL-Adressen.

Das Protokollpräfix spezifiziert den Kunden in welcher "Sprache" mit dem Server kommunizieren wird. Und der Kunde weiß im Voraus, welches Programm diese Kommunikation durchführen soll, was über den Server nicht zu sagen ist. Damit der Server mit uns in der erforderlichen Protokollsprache "spricht", muss er (der Server) ein geeignetes Programm ausführen, das dieses Protokoll versteht. Ports werden verwendet, um dieses Problem zu lösen. Wenn also der DNS-Name oder die IP-Adresse die Maschine bestimmt , an die wir adressieren, bestimmt der Port das Programm, mit dem wir auf diesem Host arbeiten. Ports werden mit einer Ganzzahl im Bereich von 0 bis 65535 bezeichnet.

Jedem Protokoll ist 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 Blast-Host dasselbe FTP- Protokoll unterstützt, wartet ein anderes Serverprogramm auf Anforderungen an Port 21 (dieser Port ist für das FTP- Protokoll reserviert).

Der Port, an den wir uns wenden, wird automatisch bestimmt, je nachdem, welches Protokoll wir in der URL gewählt haben. Sie können den Port jedoch auch explizit angeben. Die Portnummer wird durch einen Doppelpunkt nach dem DNS-Namen oder der IP-Adresse angezeigt:

Im obigen Beispiel beziehen wir uns auf ein Programm, das auf Port 8080 "hängt", wir bitten sie auch, uns eine index.html- Datei über das HTTP- Protokoll zu geben. Wenn es kein solches Programm auf dem Server gibt (dann wird kein Programm die Anfragen für Port 8080 überwachen), dann wird der Browser uns eine Nachricht über die falsche URL geben.

Wie standardmäßig für HTTP- Server Port 80 akzeptiert wird, entspricht die Adresse http://rambler.ru:80 der Adresse http://rambler.ru . Im Prinzip müssen Hosts HTTP auf dem 80. Port nicht unterstützen. Der Server kann zum Beispiel auf Port 3128 konfiguriert werden, auch zu diesem Zeitpunkt, um mit diesem Host auf http zu kommunizieren, müssen Sie die Portnummer ohne Unterbrechung angeben: http://rambler.ru:3128

Beim Zugriff auf den Server müssen Sie manchmal zusätzlich zur Adresse des Zertifikats zusätzlich die ID des Benutzers angeben, der auf den Server zugreift (oder auf den wir auf dem Server zugreifen), aber das Zugriffspasswort ist ähnlich. Über die URL können Sie diese Informationen senden. Zu diesem Zweck wird dem Namen vor dem DNS ein @ -Zeichen vorangestellt, dem der Benutzername vorangestellt ist:

In der Regel erfordert das http- Protokoll keine Benutzeridentifikation, aber für solche Protokolle wie ftp oder mailto ist es obligatorisch. Neben dem Benutzernamen können Sie auch ein Zugangspasswort angeben. Das Passwort verschwindet im Namen eines Doppelpunkts. Zum Beispiel: ftp: // masha: kasha@yahoo.com . Diese URL-Adresse fordert das Stammverzeichnis des yahoo.com- Hosts auf dem ftp- Protokoll für den Benutzer masha mit dem kasha- Passwort an. Aber eine solche Adresse mailto: //masha@mail.ru wird verwendet, um auf das Postfach des Benutzers masha im Host mail.ru zuzugreifen .

Der Name des Benutzers kann dem der Domäne ähnlich sein, er besteht auch aus verschiedenen Elementen, die durch einen Punkt getrennt sind. Zum Beispiel mailto: //bill.geits@microsoft.com .

Wie bereits erwähnt, ist die URL eine gefüllte Dokumentenroute. Ein Akt meint jede Datei, die auch als Text existieren kann (zB HTML oder doc oder pdf Dateien), auch ein Bild (jpg oder gif), auch ein Programm. Das http-Protokoll impliziert, dass, wenn ein Text oder ein Bild in der URL angefordert wird, sie an den Benutzer gesendet werden müssen, um sie in seinem Browser anzuzeigen, aber wenn das Programm oder das Skript angefordert wird, muss es auf dem Server ausgeführt werden und das Ergebnis an den Benutzer senden. Das Ergebnis selbst kann entweder als Text oder als Bild existieren. Der Typ der resultierenden Handlung wird innerhalb des Programms selbst definiert, und der Benutzer weiß nicht im Voraus, welche Art von Dokument er erhält, indem er das Programm aufruft. Das Serverprogramm wird über die übliche URL des Programms oder Skripts selbst aufgerufen. Typischerweise verwendet das Netzwerk Skripte mit den Erweiterungen .pl .php.cgi (die ersten beiden bezeichnen Programme, die in Perl geschrieben sind, auch PHP, jedoch kann die letzte Erweiterung auf alle ausführbaren Module angewendet werden, einschließlich Perl auch PHP auch EXE). Zum Beispiel erfordert die URL URL http://www.rambler.ru/cgi-bin/top.cgi das Ausführen auf dem rambler.ru Host eine Anwendung top.cgi überträgt auch das Ergebnis der Arbeit dieser Anwendung (zB html Dokument oder Bild) an den Kunden.

Aber von Serveranwendungen würde es wenig nutzen, wenn sie Parameter nicht übergeben könnten. URL dies erlaubt. Um Parameter an Serveranwendungen (auch Gateways genannt ) zu übertragen, wird ein Datenübertragungsformat verwendet, das als CGI (Common Gateway Interface) bekannt ist. Mit diesem Format können Sie die Eingabedaten von Programmen in einer einzelnen Zeile angeben.

Im Beispiel können Sie sehen, dass die URL ein Server-Gateway namens search.pl aufruft und als Eingabe einen Parameter mit dem Namen user, also auch den Wert von masha, übergibt . Verschwindet der CGI-String vom Skriptnamen mit dem Task-Symbol ? . Wenn das Skript mehrere Parameter übergeben muss, werden diese nacheinander durch das Ampersand-Symbol & aufgelistet, zum Beispiel: http://rambler.ru/cgi-bin/perl/search.pl?user=masha&password=kasha .

Wir bemerken das folgende Merkmal: Da die meisten WEB-Technologien auf Textdatenformaten basieren, ist es zu früh oder zu spät, um Befehle von Daten zu unterscheiden. Wenn wir zum Beispiel einen bestimmten Ausdrucksparameter mit dem Wert C = A + B als CGI-Parameter übergeben wollen: http://site.com/script.cgi?expression=C=A+B, dann wird eine solche Anfrage von CGI wegen der anderen falsch verstanden Das Zeichen = wird als Trennzeichen zwischen dem Parameternamen und seinem Wert behandelt. Daher wird im CGI-Protokoll (wie auch in einer beliebigen Raum-URL) eine spezielle Zeichencodierung namens URL-Datenformat verwendet . Diese Kodierung zeigt die Buchstaben des lateinischen Alphabets, so wie sie sind, und die restlichen Zeichen in der Form % nn, wobei nn der hexadezimale Zeichencode ist. Das doppelte Anführungszeichen " wird beispielsweise wie % 22 aussehen, aber das Zeichen = als % 3D. Die Ausnahme ist das Leerzeichen, das zusätzlich zur Standardcodierung % 20 ähnlich codiert werden kann. Diese Beispiel-URL sollte wie folgt lauten: http: // site .com / script.cgi? Ausdruck = C% 3DA% 2BB .

HTTP-Protokoll

HTTP (Hypertext Transfer Protocol) - das Hauptprotokoll, das im Web verwendet wird. Obwohl das Protokoll als Hypertext-Transfer-Protokoll (dh HTML) bezeichnet wird, kann das HTTP-Protokoll in der Klasse selbst verwendet werden (und verwendet werden), um praktisch alle Daten im Netzwerk zu übertragen. Diese Übertragung von Text und Bildern auch Dateien. Die Popularität von HTTP ist meiner Meinung nach mit mehreren Faktoren verbunden: Es ist die Verwendung einer ausreichend universellen URL-Adressierung, die Möglichkeit, beliebige Daten zu übertragen (sowohl vom Kunden zum Server, also auch umgekehrt), als auch ähnliche Arbeiten im No-Line-Modus. der Kunde auch der Server, ohne Vermittler). Das HTTP-Protokoll darf als Dual bezeichnet werden, in dem Sinne, dass sich Daten in einem Client-Server-System paarweise bewegen können, ebenso wie vom Kunden zum Server, auch vom Server zum Client. Die HTTP-Syntax selbst zielt jedoch speziell darauf ab, Daten vom Kunden auf den Server zu übertragen.

Sehen wir uns die einfachste Beispiel-HTTP-Anfrage an. Wenn wir im Adressfenster des Browsers die Adresse http://yandex.ru eingeben , dann wird der Browser die IP-Adresse des Servers bestimmen. Yandex.ru wird auch eine solche HTTP-Anfrage an den 80. Port senden:

GET http://yandex.ru/ HTTP / 1.0
Übernehmen: image / gif, image / x-xbitmap, image / jpeg, image / pjpeg, applikation / vnd.ms-excel, application / msword, application / vnd.ms-powerpoint, * / *
Accept-Language: de
Cookie: yandexuid = 2464977781018373381
Benutzer-Agent: Mozilla / 4.0 (kompatibel; MSIE 5.5; Windows 98)
Gastgeber: yandex.ru
Referrer: narod.ru
Proxy-Verbindung: Keep-Alive

Die Anfrage wird im Klartext übertragen. Der allererste Teil der Anfrage befindet sich in der ersten Zeile: Dies ist der Anfragetyp ( GET ), die URL des angeforderten Dokuments ( http://yandex.ru ) ist ebenfalls eine Art HTTP-Protokoll ( HTTP / 1.0 ). Die Abfrageparameter sind unten aufgeführt. Jede Zeile entspricht einem Parameter. Der Name des Parameters wird in der Quelle der Zeichenfolge verschoben, dann ist der Doppelpunkt auch der Wert des Parameters. Die Bedeutung der Parameter ist intuitiv klar, aber wir werden die wichtigsten beschreiben: Akzeptieren - die Art der Daten, die der Browser akzeptieren kann (in MIME-Kodierung). Accept-Language ist die bevorzugte Sprache, in der der Browser Daten empfangen möchte. User-Agent - Der Typ des Programms, das die Anfrage gesendet hat. Host - DNS (oder IP) Hostname, an den die Anfrage gerichtet ist. Cookies sind Cookies (Daten, die beim letzten Besuch dieses Hosts vom Server auf der lokalen Festplatte des Clients gespeichert wurden). Referer - Host, von der Seite, von der wir die Anfrage senden. Wenn wir zum Beispiel auf der Seite http://narod.ru sind , klicken wir auch dort auf den Link http://yandex.ru , dann wird die Anfrage an den Host yandex.ru gesendet, jedoch wird das Referer- Abfragefeld den Namen des narod.ru-Hosts haben.

Der Abfrageparametersatz ist nicht festgelegt. Zusätzlich zu dem Obigen können andere Parameter vorhanden sein.

Am interessantesten sind solche Parameter wie Referer auch Cookie . Diese Parameter werden hauptsächlich verwendet, um den Benutzer auf dem Server zu identifizieren.

Eine GET-Anfrage kann Daten vom Kunden an den Server übertragen. Sie werden direkt über die URL-Adresse des CGI-Protokolls übertragen. Um zum Beispiel den Chat zu betreten, kann der Browser die folgende Anfrage an den Server senden:

GET http://chat.ru/ ? Anmeldung = Algol & pass = Algol HTTP / 1.0
Übernehmen: image / gif, image / x-xbitmap, image / jpeg, image / pjpeg, applikation / vnd.ms-excel, application / msword, application / vnd.ms-powerpoint, * / *
Accept-Language: de
Cookie: yandexuid = 2464977781018373381
Benutzer-Agent: Mozilla / 4.0 (kompatibel; MSIE 5.5; Windows 98)
Gastgeber: yandex.ru
Referrer: narod.ru
Proxy-Verbindung: Keep-Alive

Wenn wir sehen, dass die Abfragezeichenfolge die Anmeldung enthält, wird auch das Kennwort des Benutzers über die URL-Zeichenfolge übergeben. Diese Art der Datenübertragung zum Server ist praktisch, hat jedoch Kapazitätsbeschränkungen. Extrem beeindruckende Datenfelder können nicht über die URL übertragen werden. Für diese Zwecke gibt es einen anderen Abfragetyp: die POST- Anfrage. Die POST- Anfrage ist sehr ähnlich zu GET , mit dem einzigen Unterschied, dass die Daten in der POST- Anfrage getrennt von dem eigentlichen Anfrage-Header selbst übertragen werden. Also das obige Beispiel in der POST- Version hat die Form:

POST http://chat.ru/ HTTP / 1.0
Übernehmen: image / gif, image / x-xbitmap, image / jpeg, image / pjpeg, applikation / vnd.ms-excel, application / msword, application / vnd.ms-powerpoint, * / *
Accept-Language: de
Cookie: yandexuid = 2464977781018373381
Benutzer-Agent: Mozilla / 4.0 (kompatibel; MSIE 5.5; Windows 98)
Gastgeber: yandex.ru
Referrer: narod.ru
Proxy-Verbindung: Keep-Alive

login = Algol & pass = Algol

Während wir die Daten über den Login beobachten, wird das Passwort auch separat im Anfragetext übermittelt. Der Hauptteil der Anforderung muss aus dem Header durch eine leere Zeichenfolge gelöscht werden. Wenn der Server in der POST- Anfrage eine leere Zeichenfolge findet, wird alles, was sich weiterbewegt , vom Anfragetext berücksichtigt (zu sendende Daten). Beachten Sie Folgendes: Das Format der Daten im Hauptteil der POST- Anforderung ist willkürlich. Trotz der Tatsache, dass das am häufigsten verwendete CGI-Format, ist es optional. Zusätzlich zu POST erfordert die Anfrage nicht das Vorhandensein eines Anfragekörpers, sie kann auch Daten ähnlich über eine URL übertragen.

Zusätzlich zu dem CGI-Format, manchmal, um beeindruckende Mengen von Informationen (zum Beispiel Dateien) zu übertragen, verwenden Sie die sogenannte. mehrteiliges Format:

POST http://photo.bigmir.net/form.php HTTP / 1.0
Übernehmen: image / gif, image / x-xbitmap, image / jpeg, image / pjpeg, applikation / vnd.ms-excel, application / msword, application / vnd.ms-powerpoint, * / *
Referer: http://photo.bigmir.net/form.php
Accept-Language: de
Content-Type: Multipart / Formulardaten; Grenze = --------------------------- 7d20345dc
Accept-Encoding: gzip, deflate
Benutzer-Agent: Mozilla / 4.0 (kompatibel; MSIE 5.01; Windows 98)
Gastgeber: photo.bigmir.net
Proxy-Verbindung: Keep-Alive
Pragma: Kein Cache
Cookie: Ukrainisch = 2; BSX_TestCookie = Ja; reich_ad = 1; b = 1

----------------------------- 7d20345dc
Content-Disposition: Formulardaten; name = "id"

254353
----------------------------- 7d20345dc
Content-Disposition: Formulardaten; name = "d"

22
----------------------------- 7d20345dc
Content-Disposition: Formulardaten; name = "login"

Algol
----------------------------- 7d20345dc
Content-Disposition: Formulardaten; name = "passw"

Algol
----------------------------- 7d20345dc
Content-Disposition: Formulardaten; Name = "E-Mail"

tps99@mail.ru
----------------------------- 7d20345dc
Content-Disposition: Formulardaten; name = "absenden"

Hochladen
----------------------------- 7d20345dc-

Wenden wir uns nun der Kopfzeile Content-Type zu : multipart / form-data; Grenze = --------------------------- 7d20345dc . Dieser Parameter gibt dem Server an, dass der Kunde Daten im Multipart- Format mit einem Begrenzer --------------------------- 7d20345dc überträgt . Der Begrenzer wird vom Kunden auf zufällige Weise erzeugt und ist auch notwendig, damit das Silber die verschiedenen Elemente, die im Körper der Anfrage gesendet werden, trennen kann. Wie Sie sehen können, enthält der Body mehrere Elemente, die im ASCII- Format (und nicht wie CGI in Unicode ) übertragen werden. Sie werden auch durch die Zeile getrennt, die im Parameter Content-Type angegeben wurde. Jede Aktie enthält Informationen über die Art der übertragenen Daten und den Namen des Teils. Der Komfort des Multipart- Formats besteht darin, dass die übertragenen Daten einen unbegrenzten Wert haben und keine vorherige Codierung erfordern.

Zusätzlich zu GET- Anfragen gibt es noch weitere POSTs , wie TRACE , PUT . Aber sie werden selten benutzt, und wir werden in keiner Weise auf sie eingehen.

Ein weiteres Mal werde ich darauf achten, dass ALLE vom Kunden an den Server übermittelten Informationen im Header und Body der Anfrage enthalten sind. Auf eine andere Weise kann der Server keine Informationen vom Kunden über das HTTP-Protokoll in irgendeiner Weise erhalten.

Auf der anderen Seite kann der Server dem Kunden auch nur Informationen in dem Widerspruch zu der Anfrage geben. Ein Austausch von Daten in einem HTTP-Protokoll wird nur vom Client initiiert, der Server kann "nur so", jedoch nur auf Anforderung des Clients, nichts übertragen.

Wenn wir also die übertragenen Anforderungen kontrollieren können, kontrollieren wir vollständig die Informationen, die vom Server und vom Client empfangen werden. Dies ist praktisch, da zum Ändern der übertragenen / angeforderten Daten keine HTML-Seitendateien geändert werden müssen, Cookies usw. geändert werden müssen, nur Änderungen an der HTTP-Anforderung vorgenommen und diese an den Server gesendet werden müssen. Dies ist jedoch eine andere Chronik :) ...