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

HTTP-Protokoll

Für die Quelle werden wir uns herausfinden, was das gemeinsame Protokoll ist. Das Protokoll ist ein bestimmter Satz von Regeln von auch Schlüsselzeichen, die für die Kommunikation von Geräten untereinander bestimmt sind. Es ist notwendig zu stellen, dass Computer oder ihre Elemente eindeutig von einem Freund eines Freundes verstanden werden können.

Ein Protokoll ist eine Konversation zwischen Computern in einem Netzwerk.

In der Tat kann jeder Satz von Befehlen ein Protokoll genannt 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

So ist die URL (Uniform Resource Locator) die komplette Dokumentenroute . URL ist die Adresse, mit der es erlaubt ist, ein Dokument (Datei) im Internet einzeln zu lokalisieren. Die Zeile, die Sie in das Feld "Adresse" Ihres Browsers eingeben, isst auch die URL des Dokuments.

Die URL kann einen ziemlich anspruchsvollen Look haben, auch aus verschiedenen Teilen. Zuerst betrachte die einfachste URL:

Diese URL enthält drei Bestandteile: den Namen des Hosts, in dem sich das Dokument befindet, den Namen des Protokolls, das für die Übermittlung dieses Dokuments verwendet wird, sowie den tatsächlichen Namen der Handlung selbst (Dateiname plus Erweiterung). Die Basis (und die einzige obligatorische Aktie für das http-Protokoll) der Adresse ist der Hostname. Es bestimmt die Maschine, auf der sich die Handlung befindet (im Netzwerk werden einzelne Rechner als Hosts bezeichnet ). Jeder Computer im Netzwerk ist ein Host, hat auch einen einzigartigen (in diesem Netzwerk) Namen. In der Probe ist rambler.ru der Name des Rechners, auf dem wir das Dokument finden wollen.

Hostnamen können auf doppelte Weise angegeben werden: mit DNS auch mit einer IP-Adresse. Die IP-Adresse besteht aus vier Zahlen, die durch einen Zeitraum getrennt sind. Jede Zahl kann im Bereich von 0 bis 255 existieren. Zum Beispiel 192.168.2.1 .

Allerdings ist es in der Praxis unpraktisch, IP-Adressen zu verwenden, da sich die Zahlen schwer zu merken sind. Daher wurde ein Domain Name System (DNS) eingeführt, in dem jede IP-Adresse in eine Relation gesetzt wird, entweder als ein Name, der aus Buchstaben oder Ziffern besteht. Zum Beispiel, im obigen Beispiel, der DNS-Name war rambler.ru , entspricht es auch der IP-Adresse 217.73.192.109 .

Es sollte beachtet werden, dass verschiedene IP-Adressen immer unterschiedlichen DNS-Namen entsprechen, aber die gleichen IP-Adressen können verschiedenen DNS-Namen entsprechen. Zum Beispiel, solche verschiedenen DNS-Namen wie www.rambler.ru und rambler.ru haben auch eine blah blah IP-Adresse. URL-Adressen dürfen sowohl DNS-Namen als auch IP-Adressen verwenden. So sind zwei URLs http://rambler.ru/index.html auch http://217.73.192.109/index.html gleichwertig. Einige Möglichkeiten zur Angabe einer IP-Adresse finden Sie hier http://www.xakep.ru/post/11980/default.htm .

Beachten Sie auch, dass der Host grundsätzlich keinen Domainnamen 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 separaten Wörtern besteht, die durch Punkte getrennt sind. Jeder Name bezieht sich einzeln auf die Domäne, zu der der Gastgeber gehört. Das gesamte DNS-System wird hierarchisch aufgebaut. Alle Domänen der 1. Ebene (com, org, ru, etc.) geben die 0-Level-Root-Domain ein (die normalerweise nicht in DNS geschrieben wird, wie es standardmäßig impliziert wird). Domains einer anderen Ebene (zB Rampler, Mail oder Kiev) geben die Hauptniveau Domains, etc. Domains in DNS werden von rechts nach links geschrieben, um das Level zu erhöhen.

Beachten Sie zwei wichtige Features: 1. Die Domain ist eine rein administrative Einheit ist auch nicht ein Host. 2. Die IP-Adresse hängt in keiner Weise von der Domäne ab, in der sich der Host befindet.

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

In der URL-Beispiel-URL setzen wir explizit den Namen der index.html ein, für die wir interessiert sind, aber es gibt ein Standarddokument auf jeder Seite. Da die Position den Namen index.html oder default.html besitzt, befindet sich auch der Stammverzeichnis der Website. Wenn wir die URL-Adresse der Website eingeben, ohne den Dateinamen anzugeben, den wir benötigen, wird der Server automatisch das Standarddokument öffnen. So ist die Adresse http://crackchat.h1.ru gleich der Adresse http://crackchat.h1.ru/index.html . Ähnlich, blah blah da gibt es eine Standarddatei, dann gibt es auch einen Standardordner. In den meisten Servern ist der Standardordner für HTTP-Dokumente der WWW- Name.

Nach DNS folgt der URL-Adresse der Name der Handlung, auf die wir anwenden. Es wird davon ausgegangen, dass sich diese Datei im Stammordner befindet. Wenn blah blah nicht so ist, dann können wir die gefüllte Route zur Handlung angeben und 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 also der Pfad zum Stammordner f: / www ist , dann verweisen wir in unserem Beispiel auf die Datei f: /www/cgi-bin/perl/search.pl . In diesem Fall ist es stolz darauf, Folgendes zu berücksichtigen: Da die meisten Web-Server auf der Basis von UNIX-ähnlichen Systemen aufgebaut werden, müssen Sie bei der Festlegung der Route zur Datei die Differenz der Kleinbuchstaben berücksichtigen. Also, wenn wir die Datei auf http://rambler.ru/CGI-BIN/perl/Search.pl erreichten , dann würde der Server keine solche Datei finden. Der Unterschied der beeindruckenden Kleinbuchstaben ergibt sich auch nur auf dem Weg zur Datei, DNS ist Groß -und Kleinschreibung (es ist gleichbedeutend mit rambler.ru auch RAMBLER.RU ).

Wie bereits erwähnt, entspricht DNS einer streng definierten IP-Adresse, aber das bedeutet nicht, dass der DNS-Name dem Host entspricht, den wir adressieren. Oft besitzt der Wirt selbst Domänen von mehr bodenlosen Ebenen in sich. Zum Beispiel ist die Website h1.ru ein Host in einer Domäne einer anderen Ebene, aber es selbst enthält Dritt-Level-Domains, zum Beispiel crackchat.h1.ru oder crosswords.h1.ru . Daher gehören diese Seitenpaare zum selben Host und haben auch die gleiche IP-Adresse! Physisch in diesem Fall sehen die Domains der dritten Ebene genau wie Ordner auf der h1.ru Hostdiskette , und der Zugriff auf sie könnte beispielsweise durchgeführt werden: h1.ru/crackchat/ auch h1.ru/crosswords/ . Das Zugriffstool (über eine Domain der dritten Ebene oder über einen Festplattenweg) wird durch die Servereinstellungen bestimmt.

Der Root-Ordner gilt als Domain, und daher können die meisten URLs in den folgenden Formaten angegeben werden: wie bei der www-Domain (zB www.crackchat.h1.ru ), also auch ohne sie ( crackchat.h1.ru ) - in diesem Fall ist der Server sowieso Automatisiert Sie direkt in den Ordner www, da es standardmäßig akzeptiert wird.

Protokolle, Ports, CGI-Protokoll

Wie wir gesehen haben, besteht die URL-Adresse aus drei Hauptelementen: dem DNS-Namen, dem Dateipfad und dem Protokollnamen. Wenn das erste Paar des Elements Ihnen erlaubt, das Dokument zu lokalisieren, bestimmt das Protokoll, wie auf das Dokument zugegriffen wird. Mit anderen Worten, zu welcher Zeit der Kunde versucht, das Dokument zu bekommen, dann ist er gezwungen, dem Server zu sagen, wie er (der Server) gezwungen ist, diese Handlung an ihn zu übertragen (der Client). Es gibt viele verschiedene Datenübertragungsprotokolle im Netzwerk, darunter die gängigsten http (Hypertext Transfer Protocol), FTP (File Transfer Protocol), Mailto (Präfix der Mail-Protokoll-Familie), Datei (Dateizugriffsprotokoll) Oder Ordner). Die Art des Protokolls bestimmt das Programm, das Daten im Format dieses Protokolls verarbeiten kann. Also Internet Explorer kann mit Protokollen http , Datei auch ftp arbeiten , kann aber nicht mit Mailto- Protokoll in irgendeiner Weise arbeiten. Wenn Sie also Ihren Browser eingeben , in der Adressleiste von mailto: microsoft.com , dann wird ein spezielles Mailprogramm starten, das mit diesem Protokoll arbeiten kann (zB Outlook Express oder The Bat!). Der Name des Protokolls wird durch das wichtigste in der URL angezeigt und muss auch mit einem Doppelpunkt enden. Das Register hat keine Bedeutung.

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

Als Protokoll für die URL kann in keiner Weise alle Protokolle handeln. Also die Protokolle über oder Javascript haben nichts mit der vollständigen Dokumentenroute zu tun, also die "Adressen" mit diesen Protokollen sind keine URL-Adressen.

Das Protokollpräfix zeigt dem Kunden an, in welcher "Sprache" Kommunikation mit dem Server resultieren wird. Und der Kunde weiß im Voraus, welches Programm diese Kommunikation durchführen soll, was unmöglich über den Server zu sagen ist. Damit der Server mit uns in der erforderlichen Protokollsprache "sprechen" kann, ist es (der Server) gezwungen, ein entsprechendes Programm auszuführen, das dieses Protokoll verstehen wird. Ports werden verwendet, um dieses Problem zu lösen. Wenn also der DNS-Name oder die IP-Adresse die Maschine bestimmt, auf die wir zugreifen, bestimmt der Port das Programm, auf das wir auf diesem Host adressieren. Ports werden durch eine Ganzzahl im Bereich von 0 bis 65535 angezeigt.

Jedem Protokoll wird ein Default-Port zugewiesen, mit dem das Server-Programm auf Client-Anfragen warten wird. Wenn zum Beispiel der Server das HTTP- Protokoll unterstützt, wartet das entsprechende Serverprogramm (z. B. Apache) auf Clientanforderungen auf Port 80 (dieser Port wird standardmäßig für das HTTP- Protokoll akzeptiert). Wenn dieser Host auch das FTP- Protokoll unterstützt, dann wartet ein anderes Server-Programm auf Anfragen auf 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 gewählt haben. Sie können aber auch den Port explizit angeben. Die Portnummer wird durch einen Doppelpunkt nach dem DNS-Namen oder der IP-Adresse angegeben:

In der obigen Probe beziehen wir uns auf ein bestimmtes Programm "hing" auf Port 8080 , auch wir bitten es, uns die index.html Datei über http Protokoll zu geben. Wenn es kein solches Programm im Hintergrund gibt (das Programm wird nicht in der Lage sein, die Anfragen für Port 8080 zu überwachen), wird der Browser uns eine Nachricht über die fehlerhafte URL-Adresse geben.

Als Standard für HTTP- Server wird Port 80 akzeptiert, die Adresse http://rambler.ru:80 entspricht der Adresse http://rambler.ru . Obwohl im Prinzip Hosts nicht erforderlich sind, um http auf dem 80. Hafen zu unterstützen. Der Server kann zB auf Port 3128 existieren , 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 zusätzlich 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. URL können Sie diese Informationen senden. Um dies zu tun, vor dem DNS wird dem Namen 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 zwingend erforderlich. Zusätzlich zum Benutzernamen können Sie auch ein Zugriffspasswort angeben. Das Passwort verschwindet im Auftrag eines Doppelpunkts. Zum Beispiel: ftp: // masha: kasha@yahoo.com . Diese URL-Adresse fordert das FTP- Protokoll an das Stammverzeichnis des yahoo.com- Hosts für den Benutzer masha mit dem Kasha- Passwort an. Aber eine solche Adresse mailto: //masha@mail.ru wird verwendet, um auf die Mailbox des Benutzers masha im Mail.ru Host zuzugreifen .

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

Wie bereits erwähnt, ist URL eine gefüllte Dokumentenroute. Eine Handlung bedeutet jede Datei, die auch als Text existieren kann (zB html oder doc oder pdf-Dateien), sowie ein Bild (jpg oder gif), auch ein Programm. In diesem Fall bedeutet das http-Protokoll, dass, wenn ein Text oder ein Bild in der URL angefordert wird, dann müssen sie an den Benutzer gesendet werden, um sie in seinem Browser anzuzeigen, aber wenn das Programm oder Skript angefordert wird, dann muss es auf dem Server ausgeführt werden, und senden Sie dem Benutzer das Ergebnis seiner Operation. Das Ergebnis selbst kann entweder als Text oder als Bild existieren. Die Art der resultierenden Handlung ist innerhalb des Programms selbst definiert, und der Benutzer weiß nicht im Voraus, welche Art von Dokument er erhalten wird, indem er das Programm anruft. Das Server-Programm wird von der üblichen URL des Programms oder Skripts selbst aufgerufen. In der Regel verwendet das Netzwerk Skripte mit den Erweiterungen .pl .php. Cgi (die ersten beiden bezeichnen Programme, die in Perl auch PHP geschrieben sind, aber die letzte Erweiterung kann für alle ausführbaren Module verwendet werden, einschließlich Perl auch PHP auch EXE). Zum Beispiel, die URL-Adresse http://www.rambler.ru/cgi-bin/top.cgi erfordert das Ausführen auf der rambler.ru Host einige Anwendung top.cgi auch auf den Kunden das Ergebnis der Arbeit dieser Anwendung (z. B. HTML-Dokument oder Bild).

Aber von Server-Anwendungen wäre es wenig sinnvoll, wenn sie keine Parameter übergeben konnten. URL das erlaubt. Um Parameter auf Server-Applikationen zu übertragen (auch Gateways genannt ) wird ein Datenübertragungsformat namens CGI (Common Gateway Interface) verwendet. Mit diesem Format können Sie die Eingabedaten von Programmen in einer Zeile angeben.

Im Beispiel können Sie sehen, dass die URL ein Server-Gateway namens search.pl anruft und es als Eingabe einen Parameter mit dem Namenbenutzer übergibt , auch den Wert von masha . Ist der CGI-String aus dem Skriptnamen mit dem Task-Symbol verschwinden ? . Wenn das Skript mehrere Parameter übergeben muss, dann werden sie sequentiell durch das Und-Zeichen-Symbol aufgeführt und zum Beispiel: http://rambler.ru/cgi-bin/perl/search.pl?user=masha&password=kasha .

Wir bemerken folgendes Merkmal: Da die meisten WEB-Technologien auf Textdatenformaten basieren, ist es zu früh oder zu spät, um Befehle von Daten zu unterscheiden. Also zum Beispiel, wenn wir einen bestimmten Ausdrucksparameter mit C = A + B als CGI-Parameter übergeben wollen: http://site.com/script.cgi?expression=C=A+B dann wird ein solcher Antrag von CGI missverstanden werden, weil der andere Das Zeichen wird als Trennzeichen zwischen dem Parameternamen und seinem Wert behandelt. Daher wird im CGI-Protokoll (wie auch jede andere URL) eine spezielle Zeichenkodierung namens URL Data Format verwendet . Diese Kodierung zeigt die Buchstaben des lateinischen Alphabets wie sie sind und die übrigen Zeichen in der Form % nn wobei nn der hexadezimale Zeichencode ist. Zum Beispiel wird das doppelte Zitatzeichen " wie % 22 aussehen, aber das Zeichen = als % 3D. Die Ausnahme ist das Leerzeichen, das neben der Standardcodierung % 20 auch codiert werden kann. So soll das URL-Beispiel wie folgt geschrieben werden: 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 in der Klasse selbst das HTTP-Protokoll verwendet 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 hinreichend universellen URL-Adressierung, die Fähigkeit, alle Daten (sowohl vom Kunden zum Server als auch umgekehrt) zu übertragen, aber ähnliche Arbeiten im No-Line-Modus (dh, Der Kunde ist auch ein Server, ohne Vermittler). Das HTTP-Protokoll darf dual genannt werden, in dem Sinne, dass sich im Client-Server-System Daten sowohl paarweise als auch vom Kunden zum Server bewegen können, auch vom Server zum Client. Die HTTP-Syntax selbst zielt jedoch speziell darauf ab, Daten vom Kunden auf den Server zu übertragen.

Also, schauen wir uns die einfachste Beispiel-HTTP-Anfrage an. Wenn im Adressfenster des Browsers die Adresse http://yandex.ru eingeben , bestimmt der Browser die IP-Adresse des Servers yandex.ru sendet ihn auch an den 80. Port wie eine HTTP-Anfrage:

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, * / *
Akzeptieren-Sprache: en
Plätzchen: yandexuid = 2464977781018373381
User-Agent: Mozilla / 4.0 (kompatibel; MSIE 5.5; Windows 98)
Gastgeber: yandex.ru
Verweis: narod.ru
Proxy-Verbindung: Keep-Alive

Die Anfrage wird im Klartext übertragen. Der erste Teil der Abfrage befindet sich in der ersten Zeile: Dies ist der Anfragetyp ( GET ), die URL des angeforderten Dokuments ( http://yandex.ru ) ist auch eine Art HTTP-Protokoll ( HTTP / 1.0 ). Die Abfrageparameter sind unten aufgelistet. Jede Zeile entspricht einem Parameter. Der Name des Parameters bewegt sich in der Quelle des Strings, 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 (bei der MIME-Codierung). Accept-Language ist die bevorzugte Sprache, in der der Browser Daten empfangen möchte. User-Agent - die Art des Programms, das die Anfrage gesendet hat. Host - DNS (oder IP) Hostname, an den die Anforderung adressiert wird. Cookies sind Cookies (Daten, die vom Server auf dem lokalen Datenträger des Clients gespeichert wurden, beim Besuch dieses Hosts letztes Mal). Referer - Host, von der Seite, von der wir die Anfrage senden. Also zum Beispiel, wenn wir auf der Seite http://narod.ru sind , klicken wir auch dort den Link http://yandex.ru , dann wird die Anfrage an den Host yandex.ru gesendet werden, aber das Referer Abfrage-Feld wird den Namen der narod.ru Host haben.

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

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

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

GET 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, * / *
Akzeptieren-Sprache: en
Plätzchen: yandexuid = 2464977781018373381
User-Agent: Mozilla / 4.0 (kompatibel; MSIE 5.5; Windows 98)
Gastgeber: yandex.ru
Verweis: narod.ru
Proxy-Verbindung: Keep-Alive

Wie wir sehen, die Abfragezeichenfolge enthält die Anmeldung auch das Kennwort des Benutzers über die URL-Zeichenfolge. Diese Art der Datenübertragung auf den Server ist bequem, aber es hat Einschränkungen auf Kapazität. Äußerst beeindruckende Arrays von Daten können nicht über die URL übertragen werden. Für solche Zwecke gibt es eine andere Art von Abfrage: die POST- Anfrage. Die POST- Anforderung ist sehr ähnlich zu GET , wobei der einzige Unterschied darin besteht, dass die Daten in der POST- Anforderung getrennt vom eigentlichen Anforderungs-Header selbst übertragen werden. Also die obige Probe in POST- Version hat 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, * / *
Akzeptieren-Sprache: en
Plätzchen: yandexuid = 2464977781018373381
User-Agent: Mozilla / 4.0 (kompatibel; MSIE 5.5; Windows 98)
Gastgeber: yandex.ru
Verweis: narod.ru
Proxy-Verbindung: Keep-Alive

Login = Algol & Pass = Algol

Wenn wir die Anmeldedaten beachten, wird das Passwort auch separat im Anforderungskörper übertragen. Der Anforderungskörper muss aus dem Header durch einen leeren String gelöscht werden. Wenn der Server in der POST- Anforderung auf einen leeren String trifft, wird alles, was sich weiter bewegt, vom Anforderungskörper berücksichtigt (zu sendende Daten). Beachten Sie folgendes: Das Format der Daten im Körper der POST- Anforderung ist beliebig. Trotz der Tatsache, dass das am häufigsten verwendete CGI-Format, ist es nicht erforderlich. Zusätzlich zu POST erfordert die Anforderung nicht das Vorhandensein eines Anforderungskörpers, sondern kann auch Daten über eine URL übertragen.

Zusätzlich zum CGI-Format, um manchmal eindrucksvolle Informationen zu übermitteln (zB Dateien), verwenden Sie die so genannte. Multipart- 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
Akzeptieren-Sprache: en
Inhalt-Typ: multipart / form-data; Boundary = --------------------------- 7d20345dc
Accept-Encoding: gzip, deflate
User-Agent: Mozilla / 4.0 (kompatibel; MSIE 5.01; Windows 98)
Gastgeber: photo.bigmir.net
Proxy-Verbindung: Keep-Alive
Pragma: kein Cache
Plätzchen: Ukrainisch = 2; BSX_TestCookie = Ja; Rich_ad = 1; B = 1

----------------------------- 7d20345dc
Inhalt-Disposition: Formulardaten; Name = "id"

254353
----------------------------- 7d20345dc
Inhalt-Disposition: Formulardaten; Name = "d"

22
----------------------------- 7d20345dc
Inhalt-Disposition: Formulardaten; Name = "Login"

Algol
----------------------------- 7d20345dc
Inhalt-Disposition: Formulardaten; Name = "Passw"

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

Tps99@mail.ru
----------------------------- 7d20345dc
Inhalt-Disposition: Formulardaten; Name = "submit"

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

Lass uns auf die Kopfzeile kümmern Content-Type: multipart / form-data; Boundary = --------------------------- 7d20345dc . Dieser Parameter drückt dem Server aus, dass der Kunde Daten im Multipart- Format mit dem Limiter --------------------------- 7d20345dc überträgt . Der Limiter wird vom Kunden zufällig 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 Körper mehrere Elemente, die im ASCII- Format übertragen werden (und nicht in Unicode wie für CGI benötigt), werden auch durch die Zeile getrennt, die im Parameter Content-Type angegeben wurde. Jede Freigabe enthält Informationen über die Art der übermittelten Daten und den Namen dieses Teils. Der Komfort des Multipart- Formats ist, dass die übertragenen Daten einen unbegrenzten Wert haben und keine vorherige Codierung erfordert.

Zusätzlich zu GET- Anfragen gibt es auch andere POSTs wie TRACE , PUT . Aber sie werden selten benutzt, und wir werden nicht in irgendeiner Weise auf sie wohnen.

Ein weiteres Mal werde ich darauf achten, dass ALLE Informationen, die der Kunde an den Server übermittelt, in der Kopfzeile und dem Körper der Anfrage enthalten ist. Eine andere Möglichkeit, dass der Server keine Informationen vom Kunden über das HTTP-Protokoll erhalten kann.

Auf der anderen Seite kann der Server auch die Kundeninformationen nur auf den Einwand der Anfrage übertragen. Jeder Austausch von Daten im HTTP-Protokoll wird nur vom Client initiiert, der Server kann nichts "genau so" übertragen, allerdings nur auf Wunsch des Kunden.

Wenn wir also die gesendeten Anfragen kontrollieren können, kontrollieren wir die vom Server und dem Client empfangenen Informationen vollständig. Dies ist praktisch, da es um die Änderung der gesendeten / angeforderten Daten geht, gibt es keine Notwendigkeit, HTML-Seiten-Dateien zu ändern, Cookies zu ändern usw., einfach nur Änderungen an der HTTP-Anforderung vornehmen und an den Server senden. Dies ist jedoch eine weitere Chronik :) ...