Heim Backend-Entwicklung PHP-Tutorial Der Interviewer fragte: Wie viele HTTP-Anfragen kann eine TCP-Verbindung senden?

Der Interviewer fragte: Wie viele HTTP-Anfragen kann eine TCP-Verbindung senden?

Feb 22, 2023 pm 12:00 PM
http tcp

Es gab einmal so eine klassische Interviewfrage: Was passiert im Prozess von der Eingabe der URL im Browser bis zur Anzeige der Seite?

Ich glaube, dass die meisten Studenten, die sich vorbereitet haben, darauf antworten können, aber wenn Sie weiterhin fragen: Wenn der empfangene HTML-Code Dutzende von Bild-Tags enthält, auf welche Weise, in welcher Reihenfolge, wie viele Verbindungen hergestellt werden und welches Protokoll verwendet wird verwendet? Was ist mit den heruntergeladenen?

Der Interviewer fragte: Wie viele HTTP-Anfragen kann eine TCP-Verbindung senden?

Um dieses Problem zu verstehen, müssen wir zunächst die folgenden fünf Fragen lösen:

1 Trennen moderne Browser die Verbindung, nachdem eine HTTP-Anfrage abgeschlossen ist, nachdem eine TCP-Verbindung mit dem Server hergestellt wurde? Unter welchen Umständen wird die Verbindung getrennt?

2. Wie vielen HTTP-Anfragen kann eine TCP-Verbindung entsprechen?

3. Können HTTP-Anfragen zusammen in einer TCP-Verbindung gesendet werden (z. B. werden drei Anfragen zusammen gesendet und drei Antworten zusammen empfangen)?

4. Warum erfordert das Aktualisieren der Seite manchmal keinen erneuten Aufbau der SSL-Verbindung?

5. Ist die Anzahl der vom selben Host hergestellten TCP-Verbindungen im Browser begrenzt?

Erste Frage

Werden moderne Browser die Verbindung trennen, nachdem eine HTTP-Anfrage abgeschlossen ist, nachdem eine TCP-Verbindung mit dem Server hergestellt wurde? Unter welchen Umständen wird die Verbindung getrennt?

In HTTP/1.0 trennt ein Server die TCP-Verbindung, nachdem er eine HTTP-Antwort gesendet hat. Allerdings wird bei jeder Anfrage die TCP-Verbindung neu aufgebaut und getrennt, was zu kostspielig ist. Obwohl es im Standard nicht festgelegt ist, unterstützen einige Server den Keep-Alive-Header Connection:. Das bedeutet, dass Sie nach Abschluss dieser HTTP-Anfrage die von der HTTP-Anfrage verwendete TCP-Verbindung nicht trennen dürfen. Dies hat den Vorteil, dass die Verbindung wiederverwendet werden kann und beim späteren Senden von HTTP-Anfragen kein erneuter Aufbau der TCP-Verbindung erforderlich ist. Wenn die Verbindung aufrechterhalten wird, kann auch der Overhead von SSL vermieden werden Meine zwei Besuche auf www.github in kurzer Zeit. Statistik:

Der Interviewer fragte: Wie viele HTTP-Anfragen kann eine TCP-Verbindung senden?

Beim ersten Besuch sind die anfängliche Verbindung und der SSL-Overhead verschwunden Es wird die gleiche TCP-Verbindung verwendet.

Persistente Verbindung: Da TCP beibehalten wird, hat HTTP/1.1 den Connection-Header in den Standard geschrieben und ermöglicht standardmäßig persistente Verbindungen Die TCP-Verbindung zwischen dem Browser und dem Server wird für einen bestimmten Zeitraum aufrechterhalten, nicht für einen Zeitraum. Sie wird getrennt, wenn die Anfrage abgeschlossen ist. Der Interviewer fragte: Wie viele HTTP-Anfragen kann eine TCP-Verbindung senden?

Die Antwort auf die erste Frage lautet also: Standardmäßig wird eine TCP-Verbindung hergestellt und nicht getrennt. Nur die Deklaration von Connection: close im Anforderungsheader schließt die Verbindung, nachdem die Anforderung abgeschlossen ist.

Zweite Frage

Wie vielen HTTP-Anfragen kann eine TCP-Verbindung entsprechen?

Nachdem Sie die erste Frage verstanden haben, gibt es auf diese Frage bereits eine Antwort. Wenn die Verbindung aufrechterhalten wird, kann eine TCP-Verbindung mehrere HTTP-Anfragen senden.

Die dritte Frage

Können HTTP-Anfragen zusammen in einer TCP-Verbindung gesendet werden (z. B. werden drei Anfragen zusammen gesendet und drei Antworten zusammen empfangen)?

HTTP/1.1 Es gibt ein Problem. Eine einzelne TCP-Verbindung kann nur eine Anfrage gleichzeitig verarbeiten. Das bedeutet: Der Lebenszyklus von zwei Anfragen kann sich nicht vom Anfang bis zum Ende überschneiden TCP-Verbindung darf sich nicht überschneiden.

Obwohl die HTTP/1.1-Spezifikation Pipelining vorsieht, um dieses Problem zu lösen, ist diese Funktion in Browsern standardmäßig deaktiviert.

Werfen wir zunächst einen Blick darauf, was Pipelining vorschreibt:

A client that supports persistent connections MAY "pipeline" its requests (i.e., send multiple requests without waiting for each response). A server MUST send its responses to those requests in the same order that the requests were received. 一个支持持久连接的客户端可以在一个连接中发送多个请求(不需要等待任意请求的响应)。收到请求的服务器必须按照请求收到的顺序发送响应。
Nach dem Login kopieren

Warum der Standard so festgelegt ist, können wir grob über einen Grund spekulieren: Da es sich bei HTTP/1.1 um ein Textprotokoll handelt, kann dies bei den zurückgegebenen Inhalten nicht der Fall sein Es muss unterschieden werden, welche Anfrage gesendet wird, daher muss die Reihenfolge konsistent sein. Wenn Sie beispielsweise zwei Anfragen an den Server senden, GET/query?q=A und GET/query?q=B, und der Server zwei Ergebnisse zurückgibt, kann der Browser nicht ermitteln, welcher Anfrage die Antwort entspricht die Antwortergebnisse.

Pipelining Diese Idee sieht gut aus, aber in der Praxis gibt es viele Probleme:

Einige Proxyserver können HTTP-Pipelining nicht richtig verarbeiten.

  • Die korrekte Pipeline-Implementierung ist komplex.

  • Head-of-Line-Blockierung: Gehen Sie nach dem Aufbau einer TCP-Verbindung davon aus, dass der Client während dieser Verbindung kontinuierlich mehrere Anfragen an den Server sendet. Gemäß dem Standard sollte der Server Ergebnisse in der Reihenfolge zurückgeben, in der die Anfragen eingehen. Unter der Annahme, dass der Server viel Zeit mit der Verarbeitung der ersten Anfrage verbringt, müssen alle nachfolgenden Anfragen warten, bis die erste Anfrage abgeschlossen ist, bevor sie antworten .

  • Moderne Browser aktivieren also standardmäßig kein HTTP-Pipelining.

    HTTP2 bietet jedoch die Multiplexing-Funktion, mit der mehrere HTTP-Anfragen gleichzeitig in einer TCP-Verbindung ausgeführt werden können. Wie genau Multiplexing umgesetzt wird, ist eine andere Frage. Wir können einen Blick auf die Auswirkung der Verwendung von HTTP2 werfen.

    Der Interviewer fragte: Wie viele HTTP-Anfragen kann eine TCP-Verbindung senden?

    Grün ist die Wartezeit vom Einleiten der Anfrage bis zur Rückgabeanforderung und Blau ist die Downloadzeit der Antwort. Sie können sehen, dass sie alle in derselben Verbindung parallel abgeschlossen werden

    Diese Frage hat also auch eine Antwort: In HTTP/1.1 gibt es eine Pipelining-Technologie, die das Senden mehrerer Anfragen gleichzeitig abschließen kann. Da der Browser jedoch standardmäßig deaktiviert ist, kann dies als nicht machbar angesehen werden. Aufgrund der Multiplexing-Funktion in HTTP2 können mehrere HTTP-Anfragen parallel auf derselben TCP-Verbindung verarbeitet werden.

    Wie verbessert der Browser im Zeitalter von HTTP/1.1 die Effizienz beim Laden von Seiten? Es gibt zwei Hauptpunkte:

    • Behalten Sie die TCP-Verbindung bei, die mit dem Server hergestellt wurde, und verarbeiten Sie mehrere Anforderungen nacheinander über dieselbe Verbindung.

    • Stellen Sie mehrere TCP-Verbindungen mit dem Server her.

    Die vierte Frage

    Warum erfordert das Aktualisieren der Seite manchmal nicht die Wiederherstellung der SSL-Verbindung?

    Die Antwort finden Sie bereits in der Diskussion der ersten Frage. TCP-Verbindungen werden manchmal für einen bestimmten Zeitraum vom Browser und Server aufrechterhalten. TCP muss nicht neu eingerichtet werden und SSL verwendet natürlich das vorherige.

    Die fünfte Frage

    Hat der Browser eine Begrenzung für die Anzahl der TCP-Verbindungen, die vom selben Host hergestellt werden?

    Angenommen, wir befinden uns noch in der HTTP/1.1-Ära. Damals gab es noch kein Multiplexing. Was sollte der Browser tun, wenn er eine Webseite mit Dutzenden von Bildern erhält? Sie können definitiv nicht einfach eine TCP-Verbindung öffnen, um nacheinander herunterzuladen, da der Benutzer sonst auf jeden Fall warten muss, bis für jedes Bild eine TCP-Verbindung geöffnet wird, um HTTP-Anfragen zu senden, kann der Computer oder Server diese möglicherweise nicht verarbeiten . Wenn 1.000 Bilder vorhanden sind, können keine 1.000 TCP-Verbindungen geöffnet werden, selbst wenn Ihr Computer NAT zustimmt.

    Die Antwort lautet also: Ja. Chrome ermöglicht bis zu sechs TCP-Verbindungen zum selben Host. Es gibt einige Unterschiede zwischen verschiedenen Browsern.

    developers.google.com/web/tools/ch...

    Also zurück zur ursprünglichen Frage: Wenn der empfangene HTML-Code Dutzende von Bild-Tags enthält, auf welche Weise und in welcher Reihenfolge sind diese Bilder? Welche Verbindungen wurden hergestellt und mit welchen Protokollen wurden sie heruntergeladen?

    Wenn es sich bei den Bildern ausschließlich um HTTPS-Verbindungen und unter demselben Domänennamen handelt, bespricht der Browser nach dem SSL-Handshake mit dem Server, ob HTTP2 verwendet werden kann, und verwendet in diesem Fall die Multiplexing-Funktion, um Multiplexing für diese Verbindung durchzuführen. Es ist jedoch nicht unbedingt so, dass alle in diesem Domänennamen aufgeführten Ressourcen über eine TCP-Verbindung abgerufen werden, es ist jedoch sicher, dass wahrscheinlich Multiplexing verwendet wird.

    Was ist, wenn Sie feststellen, dass Sie HTTP2 nicht verwenden können? Oder HTTPS kann nicht verwendet werden (in Wirklichkeit ist HTTP2 auf HTTPS implementiert, sodass nur HTTP/1.1 verwendet werden kann). Der Browser stellt mehrere TCP-Verbindungen auf einem HOST her. Die maximale Anzahl der Verbindungen hängt von den Browsereinstellungen ab. Diese Verbindungen werden vom Browser verwendet, um neue Anfragen zu senden. Dann müssen andere Anfragen warten.                                                                                               PHP

Das obige ist der detaillierte Inhalt vonDer Interviewer fragte: Wie viele HTTP-Anfragen kann eine TCP-Verbindung senden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Repo: Wie man Teamkollegen wiederbelebt
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Was bedeutet der http-Statuscode 520? Was bedeutet der http-Statuscode 520? Oct 13, 2023 pm 03:11 PM

Der HTTP-Statuscode 520 bedeutet, dass der Server bei der Verarbeitung der Anfrage einen unbekannten Fehler festgestellt hat und keine genaueren Informationen bereitstellen kann. Wird verwendet, um darauf hinzuweisen, dass bei der Verarbeitung der Anforderung durch den Server ein unbekannter Fehler aufgetreten ist, der durch Serverkonfigurationsprobleme, Netzwerkprobleme oder andere unbekannte Gründe verursacht werden kann. Dies wird normalerweise durch Serverkonfigurationsprobleme, Netzwerkprobleme, Serverüberlastung oder Codierungsfehler verursacht. Wenn Sie auf einen Fehler mit dem Statuscode 520 stoßen, wenden Sie sich am besten an den Website-Administrator oder das technische Support-Team, um weitere Informationen und Unterstützung zu erhalten.

Wie setze ich das TCP/IP-Protokoll in Win10 zurück? So setzen Sie den TCP/IP-Protokollstapel in Windows 10 zurück Wie setze ich das TCP/IP-Protokoll in Win10 zurück? So setzen Sie den TCP/IP-Protokollstapel in Windows 10 zurück Mar 16, 2024 am 11:07 AM

Wie setze ich das TCP/IP-Protokoll in Win10 zurück? Tatsächlich ist die Methode sehr einfach. Benutzer können die Eingabeaufforderung direkt eingeben und dann die Tastenkombination Strg + Umschalt + Eingabetaste drücken, um den Vorgang auszuführen, oder den Reset-Befehl zum Einrichten direkt ausführen Benutzern eine detaillierte Einführung zum Zurücksetzen des TCP/IP-Protokollstapels in Windows 10. Methode 1 zum Zurücksetzen des TCP/IP-Protokollstapels in Windows 10. Administratorrechte 1. Wir verwenden die Tastenkombination Win+R, um das Ausführungsfenster direkt zu öffnen, geben dann cmd ein und halten die Tastenkombination Strg+Umschalt+Eingabe gedrückt. 2. Oder wir können direkt im Startmenü nach der Eingabeaufforderung suchen und mit der rechten Maustaste klicken

Verstehen Sie gängige Anwendungsszenarien der Webseitenumleitung und verstehen Sie den HTTP-301-Statuscode Verstehen Sie gängige Anwendungsszenarien der Webseitenumleitung und verstehen Sie den HTTP-301-Statuscode Feb 18, 2024 pm 08:41 PM

Verstehen Sie die Bedeutung des HTTP 301-Statuscodes: Häufige Anwendungsszenarien der Webseitenumleitung. Mit der rasanten Entwicklung des Internets werden die Anforderungen der Menschen an die Webseiteninteraktion immer höher. Im Bereich Webdesign ist die Webseitenumleitung eine gängige und wichtige Technologie, die über den HTTP-301-Statuscode implementiert wird. In diesem Artikel werden die Bedeutung des HTTP 301-Statuscodes und häufige Anwendungsszenarien bei der Webseitenumleitung untersucht. Der HTTP-Statuscode 301 bezieht sich auf eine permanente Weiterleitung (PermanentRedirect). Wenn der Server die des Clients empfängt

So verwenden Sie Nginx Proxy Manager, um einen automatischen Sprung von HTTP zu HTTPS zu implementieren So verwenden Sie Nginx Proxy Manager, um einen automatischen Sprung von HTTP zu HTTPS zu implementieren Sep 26, 2023 am 11:19 AM

So implementieren Sie den automatischen Sprung von HTTP zu HTTPS mit NginxProxyManager Mit der Entwicklung des Internets beginnen immer mehr Websites, das HTTPS-Protokoll zur Verschlüsselung der Datenübertragung zu verwenden, um die Datensicherheit und den Schutz der Privatsphäre der Benutzer zu verbessern. Da das HTTPS-Protokoll die Unterstützung eines SSL-Zertifikats erfordert, ist bei der Bereitstellung des HTTPS-Protokolls eine gewisse technische Unterstützung erforderlich. Nginx ist ein leistungsstarker und häufig verwendeter HTTP-Server und Reverse-Proxy-Server sowie NginxProxy

Was ist der HTTP-Statuscode 403? Was ist der HTTP-Statuscode 403? Oct 07, 2023 pm 02:04 PM

Der HTTP-Statuscode 403 bedeutet, dass der Server die Anfrage des Clients abgelehnt hat. Die Lösung für den HTTP-Statuscode 403 ist: 1. Überprüfen Sie die Authentifizierungsdaten. Wenn der Server eine Authentifizierung erfordert, stellen Sie sicher, dass die richtigen Anmeldedaten angegeben werden. 2. Überprüfen Sie die IP-Adresseinschränkungen Die IP-Adresse des Clients ist eingeschränkt oder nicht auf der Blacklist. Wenn der Statuscode 403 mit den Berechtigungseinstellungen der Datei oder des Verzeichnisses zusammenhängt, stellen Sie sicher, dass der Client über ausreichende Berechtigungen zum Zugriff auf diese Dateien oder Verzeichnisse verfügt. usw.

http-Anfrage 415-Fehlerlösung http-Anfrage 415-Fehlerlösung Nov 14, 2023 am 10:49 AM

Lösung: 1. Überprüfen Sie den Inhaltstyp im Anforderungsheader. 3. Verwenden Sie das entsprechende Codierungsformat. 5. Überprüfen Sie die serverseitige Unterstützung.

Schnelle Anwendung: Praktische Entwicklungsfallanalyse des asynchronen HTTP-Downloads mehrerer PHP-Dateien Schnelle Anwendung: Praktische Entwicklungsfallanalyse des asynchronen HTTP-Downloads mehrerer PHP-Dateien Sep 12, 2023 pm 01:15 PM

Schnelle Anwendung: Praktische Entwicklungsfallanalyse von PHP Asynchroner HTTP-Download mehrerer Dateien Mit der Entwicklung des Internets ist die Funktion zum Herunterladen von Dateien zu einem der Grundbedürfnisse vieler Websites und Anwendungen geworden. In Szenarien, in denen mehrere Dateien gleichzeitig heruntergeladen werden müssen, ist die herkömmliche synchrone Download-Methode oft ineffizient und zeitaufwändig. Aus diesem Grund ist die Verwendung von PHP zum asynchronen Herunterladen mehrerer Dateien über HTTP eine zunehmend verbreitete Lösung. In diesem Artikel wird anhand eines tatsächlichen Entwicklungsfalls detailliert analysiert, wie PHP asynchrones HTTP verwendet.

Häufige Netzwerkkommunikations- und Sicherheitsprobleme und Lösungen in C# Häufige Netzwerkkommunikations- und Sicherheitsprobleme und Lösungen in C# Oct 09, 2023 pm 09:21 PM

Häufige Netzwerkkommunikations- und Sicherheitsprobleme und Lösungen in C# Im heutigen Internetzeitalter ist Netzwerkkommunikation zu einem unverzichtbaren Bestandteil der Softwareentwicklung geworden. In C# treten normalerweise einige Netzwerkkommunikationsprobleme auf, z. B. die Sicherheit der Datenübertragung, die Stabilität der Netzwerkverbindung usw. In diesem Artikel werden häufig auftretende Netzwerkkommunikations- und Sicherheitsprobleme in C# ausführlich erläutert und entsprechende Lösungen und Codebeispiele bereitgestellt. 1. Netzwerkkommunikationsprobleme Unterbrechung der Netzwerkverbindung: Während des Netzwerkkommunikationsprozesses kann die Netzwerkverbindung unterbrochen werden, was zu Problemen führen kann

See all articles