Heim  >  Artikel  >  php教程  >  Der Unterschied zwischen TCP/IP, HTTP und Socket

Der Unterschied zwischen TCP/IP, HTTP und Socket

高洛峰
高洛峰Original
2016-12-13 09:54:591809Durchsuche

Das Netzwerk ist von unten nach oben in

physikalische Schicht, Datenverbindungsschicht, Netzwerkschicht, Transportschicht, Sitzungsschicht, Präsentationsschicht und Anwendungsschicht unterteilt.

Durch vorläufiges Verständnis weiß ich, dass das IP-Protokoll der Netzwerkschicht, das TCP-Protokoll der Transportschicht und das HTTP-Protokoll der Anwendungsschicht entspricht.

Die drei sind Im Wesentlichen unvergleichlich. ,

Socket ist die Kapselung und Anwendung des TCP/IP-Protokolls (auf Programmiererebene).

Man kann auch sagen, dass das TPC/IP-Protokoll ein Transportschichtprotokoll ist, das hauptsächlich löst, wie Daten im Netzwerk übertragen werden.

Und HTTP ist ein Anwendungsschichtprotokoll, das hauptsächlich löst wie man Daten packt.

In Bezug auf die Beziehung zwischen TCP/IP- und HTTP-Protokollen gibt es im Netzwerk eine relativ leicht verständliche Einführung:

„Wenn wir Daten übertragen, können wir nur die (Transportschicht) verwenden“ Wenn jedoch keine Anwendungsschicht vorhanden ist, kann der Dateninhalt nicht identifiziert werden.

Wenn Sie die übertragenen Daten aussagekräftig machen möchten, müssen Sie Protokolle der Anwendungsschicht verwenden HTTP, FTP, TELNET usw. Sie können auch Ihr eigenes Anwendungsschichtprotokoll definieren

WEB verwendet das HTTP-Protokoll als Anwendungsschichtprotokoll, um HTTP-Textinformationen zu kapseln, und verwendet dann TCP/IP als Transportschicht Protokoll zum Senden. „

Über welchen Socket sprechen wir normalerweise? Tatsächlich ist Socket selbst kein Protokoll, sondern ein Aufruf Schnittstelle (API).

Über Socket können wir das TCP/IP-Protokoll verwenden.

Tatsächlich hat Socket nicht unbedingt mit dem TCP/IP-Protokoll zu tun.

Als die Socket-Programmierschnittstelle entworfen wurde, hoffte man, dass sie sich auch an andere Netzwerkprotokolle anpassen lässt.

Daher erleichtert das Aufkommen von Socket Programmierern nur die Verwendung des TCP/IP-Protokollstapels. Es handelt sich um eine Abstraktion des TCP/IP-Protokolls.

Daher bildet es einige davon die beliebtesten, die wir kennen. Grundlegende Funktionsschnittstellen wie Erstellen, Abhören, Verbinden, Akzeptieren, Senden, Lesen, Schreiben usw.

Im Internet gibt es eine Aussage über die Beziehung zwischen Socket und TCP/IP-Protokoll, die leichter zu verstehen ist:

„TCP/IP ist nur ein Protokollstapel, genau wie der Betriebsmechanismus.“ des Betriebssystems muss es spezifisch sein

Dies ist genau wie das Betriebssystem eine Standard-Programmierschnittstelle bereitstellt, z. B. die Win32-Programmierschnittstelle

TCP/IP stellt auch Programme zur Verfügung Von Netzwerkentwicklern verwendet wird die Socket-Programmierschnittstelle. „

Was die relevanten Informationen zum TCP/IP-Protokoll betrifft, kann ich nicht sagen, dass sie zu umfassend und tiefgreifend sind. Schauen Sie sich einfach die Informationen zu dieser Art von Informationen an Sie können es an der Anzahl der Materialien und Bücher erkennen.

Ich habe vor, einige klassische Bücher zu kaufen (z. B. „Detaillierte Erklärung von TCP/IP: Band 1, Band 2, Band 3“). Ich werde heute einige davon zusammenfassen, basierend auf dem Wissen über Anwendungen und Programmierschnittstellen, die auf dem TCP/IP-Protokoll basieren, also dem HTTP und Socket, über die ich gerade viel gesprochen habe.

Es gibt eine anschaulichere Beschreibung für CSDN: HTTP ist ein Auto, das eine bestimmte Form der Kapselung oder Anzeige von Daten bereitstellt; Socket ist eine Engine, die die Fähigkeit zur Netzwerkkommunikation bereitstellt.

Tatsächlich basiert das TCP der Transportschicht auf dem IP-Protokoll der Netzwerkschicht, und das HTTP-Protokoll der Anwendungsschicht basiert auf dem TCP-Protokoll der Transportschicht, Socket selbst jedoch nicht Wie oben erwähnt handelt es sich um ein Protokoll, das lediglich eine Schnittstelle für die TCP- oder UDP-Programmierung bereitstellt.

Im Folgenden sind einige wichtige Konzepte aufgeführt, die häufig in schriftlichen Prüfungen oder Vorstellungsgesprächen vorkommen. Sie sind hier auszugsweise aufgeführt und zusammengefasst.

1. Was ist der Drei-Wege-Handshake der TCP-Verbindung

Der erste Handshake: Der Client sendet ein Syn-Paket (syn=j) an den Server und wechselt in den SYN_SEND-Status und wartet zur Bestätigung vom Server;

Zweiter Handshake: Der Server empfängt das Syn-Paket und muss das SYN des Clients bestätigen (ack=j+1). Gleichzeitig sendet er auch ein SYN-Paket (syn=k). ), also SYN+ACK-Paket. Zu diesem Zeitpunkt tritt der Server in den SYN_RECV-Status ein.

Dritter Handshake: Der Client empfängt das SYN+ACK-Paket vom Server und sendet ein Bestätigungspaket ACK (ack=k +1) an den Server Nachdem das Paket gesendet wurde, gehen Client und Server in den ESTABLISHED-Status über, der Drei-Wege-Handshake ist abgeschlossen.

Das während des Handshake-Vorgangs übertragene Paket enthält keine Daten. Nach Abschluss des Drei-Wege-Handshakes beginnen Client und Server offiziell mit der Datenübertragung.

Sobald eine TCP-Verbindung hergestellt ist, wird die TCP-Verbindung im Idealfall aufrechterhalten, bis eine der Parteien die Verbindung aktiv schließt.

Beim Trennen können sowohl der Server als auch der Client aktiv eine Anfrage zum Trennen der TCP-Verbindung initiieren. Der Trennvorgang erfordert einen „Vier-Wege-Handshake“ (der Vorgang wird nicht detailliert beschrieben, es handelt sich um die Interaktion zwischen (Endgültige Entscheidung zum Trennen)

2. Schritte zum Herstellen einer Netzwerkverbindung mithilfe von Socket

Zum Herstellen einer Socket-Verbindung sind mindestens ein Paar Sockets erforderlich, von denen einer ausgeführt wird der Client und heißt ClientSocket, und der andere läuft auf der Serverseite und heißt ServerSocket.

Der Verbindungsprozess zwischen Sockets ist in drei Schritte unterteilt: Serverüberwachung, Clientanforderung und Verbindungsbestätigung.

1. Serverüberwachung: Der serverseitige Socket findet den spezifischen Client-Socket nicht, sondern wartet auf eine Verbindung, überwacht den Netzwerkstatus in Echtzeit und wartet auf die Verbindungsanforderung des Clients.

2. Client-Anfrage: Bezieht sich auf den Socket des Clients, der eine Verbindungsanforderung stellt, und das zu verbindende Ziel ist der Socket des Servers.

Dazu muss der Socket des Clients zunächst den Socket des Servers beschreiben, mit dem er eine Verbindung herstellen möchte, die Adresse und Portnummer des serverseitigen Sockets angeben und dann eine Verbindungsanfrage an den serverseitigen Socket stellen . .

3. Verbindungsbestätigung: Wenn der serverseitige Socket eine Verbindungsanforderung vom Client-Socket abhört oder empfängt, antwortet er auf die Anfrage des Client-Sockets, richtet einen neuen Thread ein und beschreibt den serverseitigen Socket Sobald der Kunde diese Beschreibung bestätigt, wird die Verbindung zwischen den beiden Parteien offiziell hergestellt.

Der serverseitige Socket befindet sich weiterhin im Überwachungsstatus und empfängt weiterhin Verbindungsanfragen von anderen Client-Sockets.

3. Eigenschaften von HTTP-Links

Das HTTP-Protokoll ist das Hypertext Transfer Protocol, das die Grundlage für Web-Netzwerke bildet und eines der am häufigsten verwendeten Protokolle für Mobiltelefon-Netzwerke ist die Grundlage für die Einrichtung einer Anwendung auf dem TCP-Protokoll.

Das wichtigste Merkmal von HTTP-Verbindungen ist, dass jede vom Client gesendete Anfrage eine Antwort vom Server erfordert. Nach Abschluss der Anfrage wird die Verbindung aktiv freigegeben. Der Vorgang vom Herstellen einer Verbindung bis zum Schließen der Verbindung wird als „Verbindung“ bezeichnet.

4. Der Unterschied zwischen TCP und UDP (am meisten getestet... Ich glaube, ich werde den Test bald nicht bestehen - -\)

1. TCP ist verbindungsorientiert, obwohl das Netzwerk ist nicht sicher Die instabilen Eigenschaften bestimmen, dass keine Menge an Handshakes die Zuverlässigkeit der Verbindung garantieren kann, aber der Drei-Wege-Handshake von TCP garantiert die Zuverlässigkeit der Verbindung auf ein Minimum (tatsächlich zu einem großen Teil); > Und UDP ist nicht verbindungsorientiert. UDP stellt vor der Datenübertragung keine Verbindung mit der anderen Partei her und sendet kein Bestätigungssignal für die empfangenen Daten. Das sendende Ende weiß nicht, ob die Daten korrekt empfangen werden Natürlich ist kein erneutes Senden erforderlich, daher ist UDP ein unzuverlässiges Datenübertragungsprotokoll.

2. Gerade aufgrund der in 1 genannten Eigenschaften weist UDP einen geringeren Overhead und eine höhere Datenübertragungsrate auf. Da keine Bestätigung der Sende- und Empfangsdaten erforderlich ist, weist UDP eine bessere Echtzeitleistung auf.

Wenn man den Unterschied zwischen TCP und UDP kennt, ist es nicht schwer zu verstehen, warum MSN, das das TCP-Übertragungsprotokoll verwendet, langsamer ist als QQ, das UDP zum Übertragen von Dateien verwendet, aber das bedeutet nicht, dass die QQ-Kommunikation unsicher ist,

 Da Programmierer die Übertragung und den Empfang von UDP-Daten manuell überprüfen können, nummeriert der Absender beispielsweise jedes Datenpaket und überprüft es dann durch den Empfänger usw.

 Trotzdem befindet sich UDP auf der untersten Ebene Die Kapselung des Protokolls verwendet keinen „Drei-Wege-Handshake“ ähnlich wie TCP, wodurch eine Übertragungseffizienz erreicht wird, die TCP nicht erreichen kann.

Stellungnahme:
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