Interviewer: Wie trennt Socket TCP die Verbindung?
Aug 17, 2023 pm 04:10 PMVorwort: Was ist Socket? Socket TCP stellt eine Verbindung her
- dreimal In welchen Funktionen des Sockets findet der Handshake statt?
- Wie trennt sich Socket TCP?
- Was ist Socket?
Socket ist eigentlich ein Socket, dass es eine einfache Netzwerkkommunikation implementieren kann, aber welche praktischen Auswirkungen hat es? Erscheinen? Socket ist ein Werkzeug zur Entwicklung der Portkommunikation und liegt auf einer niedrigeren Ebene.
- Eine vollst?ndige Netzwerkkommunikation muss über das Netzwerkkabel und die Netzwerkkarte der physischen Transportschicht erfolgen. Das IP-Protokoll der Netzwerktransportschicht kann wissen, an welchen Computer die Daten übertragen werden sollen, es l?uft jedoch anders ab Computersystemprozess: Wie kann festgestellt werden, für welchen Prozess die Netzwerkdaten auf der Netzwerkkarte bestimmt sind? Dies ist eigentlich das, wofür Socket entwickelt wurde.
Socket ist ?eine Kapselung des TCP/IP- oder UDP/IP-Protokolls“ Socket selbst ist eigentlich eine aufrufende Schnittstelle. Durch diese Schnittstelle müssen wir uns bei der Entwicklung von Netzwerkanwendungen keine Gedanken darüber machen, wie die zugrunde liegende Schicht implementiert wird, wodurch die Schwierigkeit der Entwicklung verringert wird.
Socket -laufer Prozess (auf TCP
server
socket () basiert: bedeutet, einen Socket zu erstellen, und die untere Ebene generiert einen Dateideskriptor, um die darzustellen socket
bind(): Der Port und die Adresse, die zum Binden des Dienstes verwendet werden, sind hier im Allgemeinen festgelegt, da sie angegeben werden müssen, wenn der Client eine Verbindung herstellt. listen(): Nachdem die Bindung abgeschlossen ist, überwacht listen die Datenpakete dieses Ports accept(): entspricht einem Schalter und zeigt an, dass ich bereit bin, die Anfrage anzunehmen, sie wird jedoch blockiert, bis die Clientverbindung erfolgreich ist read(): Lies den Inhalt vom Client gesendet write(): Der Client schreibt die zurückzugebenden Daten -
close(): Verbindung trennen, "viermal winken"
socket(): bedeutet, dass ein Socket erstellt wird, und die unterste Ebene generiert einen Dateideskriptor, der den Socket darstellt.
-
connet(): bedeutet, dass eine Verbindung zur angegebenen Adresse hergestellt wird. Davor wird zuf?llig ein eigener Port, TCP, erstellt ?Der Drei-Wege-Handshake beginnt hier.“ : trennen, ?Viermal winken“ , Trennungsinformationen an den Client senden
Basierend auf UDP
Tats?chlich sind sie ?hnlich, wie Sie dem Flussdiagramm entnehmen k?nnen. Da UDP zustandslos ist, gibt es keine Verbindung für Der Server empf?ngt die Anfrage des Clients, nachdem er die Recvfrom()-Methode aufgerufen hat. Wie stellt TCP eine Verbindung her? berühmter Dreier-Handschlag
Erster Handshake: Der TCP-Prozess von A erstellt einen übertragungssteuerblock TCB und sendet dann ein Verbindungsanforderungssegment an B. Setzen Sie dann das Synchronisationsbit SYN auf 1 und w?hlen Sie eine anf?ngliche Sequenznummer seq=x. Zu diesem Zeitpunkt wechselt Client A in den Status SYN-SENT (Synchronisation gesendet). Zweiter Handshake: B empf?ngt das Verbindungsanforderungssegment. Wenn es dem Verbindungsaufbau zustimmt, sendet es eine Best?tigung an A. Im Best?tigungsnachrichtensegment werden auch das Synchronisationsbit SYN = 1, das Best?tigungsbit ACK = 1, die Best?tigungsnummer ack = x + 1 und eine anf?ngliche Sequenznummer seq = y ausgew?hlt. Zu diesem Zeitpunkt tritt Server B ein den SYN-RCVID-Status. Der dritte Handschlag: Nachdem A die Best?tigung von B erhalten hat, sendet er eine Best?tigung an B. Best?tigungsnachricht ACK=1, Best?tigungsnummer ack=y+1. Zu diesem Zeitpunkt tritt A in den Status ESTAB-LISHED ein. Wenn B die Best?tigung von A erh?lt, wechselt es ebenfalls in den Status ESTAB-LISHED. Die Verbindung wird hergestellt
In welchen Funktionen des Sockets findet der Drei-Wege-Handshake statt?
Wenn der Client connect aufruft, wird eine Verbindungsanfrage ausgel?st und ein SYN-Signal gesendet Zum Server. Zu diesem Zeitpunkt wechselt die Verbindung in den Blockierungsstatus. Der Server überwacht die Verbindungsanforderung, ruft die Akzeptanzfunktion auf und wechselt in den Blockierungsstatus Am besten verwenden Sie die Socket-, Bind- und Listen-Funktionen und geben dann die relevanten Syn- und ack-Signale zurück. - Der Client empf?ngt die Informationen vom Server. Zu diesem Zeitpunkt ist die Verbindung abgeschlossen und der Blockierungsstatus wird freigegeben. und das Best?tigungssignal wird an den Server gesendet.
- Der Server empf?ngt die Sperrung und stellt die Verbindung her. Danach wurde connect() ausgeführt Der Server kann Daten an den Client senden.
Wie trennt Socket TCP die Verbindung?
Die erste Welle: A sendet zuerst das Verbindungsfreigabenachrichtensegment, das Beendigungssteuerbit FIN=1 im Segmentheader und die Sequenznummer seq=u (gleich vor A. Die letzte Sequenznummer der gesendeten Daten wird um 1 erh?ht. Anschlie?end wechselt A in den Status FIN-WAIT-1 (Beenden des Wartens 1) und wartet auf die Best?tigung von B. Die zweite Welle: Nachdem B das Verbindungsfreigabe-Nachrichtensegment von A empfangen hat, sendet es sofort ein Best?tigungsnachrichtensegment, die Best?tigungsnummer ack=u+1, die Sequenznummer seq=v (gleich der letzten Sequenznummer der Daten). von B vor Add 1 gesendet); dann wechselt B in den CLOSE-WAIT-Zustand (Close Wait). Die dritte Welle: A tritt in den FIN-WAIT-2-Zustand (Beendigungswartezeit 2) ein, nachdem er das Best?tigungsnachrichtensegment von B erhalten hat, und wartet weiterhin darauf, dass B ein Verbindungsfreigabenachrichtensegment sendet Wenn keine Daten mehr gesendet werden müssen, sendet B ein Nachrichtensegment zur Verbindungsfreigabe an A. Das Beendigungssteuerbit FIN = 1 im Segmentheader und die Sequenznummer seq = w (einige Daten werden m?glicherweise im halbgeschlossenen Zustand gesendet ) und die Best?tigungsnummer ack=u+ 1. Zu diesem Zeitpunkt wechselt B in den Status LAST-ACK (letzte Best?tigung) und wartet auf die Best?tigung von A. Die vierte Welle: A empf?ngt das Verbindungsfreigabe-Nachrichtensegment von B und sendet eine Best?tigung. Das Best?tigungsbit im Best?tigungssegment ist ACK=1, die Best?tigungsnummer ack=w+1 und die Sequenznummer seq=u+ 1; dann A Geben Sie den TIME-WAIT-Status (Zeitwartezeit) ein. Wenn B das Best?tigungssegment erneut empf?ngt, wechselt B in den GESCHLOSSEN-Zustand. - Warum nach der vierten Welle auf 2MSL warten?
-
Nach der letzten Welle wei? A nicht, ob B seine Nachricht erhalten hat. Einschlie?lich ACK muss A auf beide oben genannten Situationen warten, um den maximalen Wert der Wartezeit der beiden Situationen zu nutzen, um das Worst-Case-Szenario zu bew?ltigen. Das Worst-Case-Szenario ist: die maximale überlebenszeit der Ziel-ACK-Nachricht . (MSL) + Maximale überlebenszeit (MSL) eingehender FIN-Nachrichten. Das sind genau 2MSL, was ausreichend Zeit ist, um das ursprünglich verbundene Datenpaket im Netzwerk verschwinden zu lassen. 2. Stellen Sie sicher, dass die ACK vom Server empfangen werden kann, um die Verbindung korrekt zu schlie?en.
Denn diese ACK kann verloren gehen, was dazu führt, dass der Server die FIN-ACK-Best?tigungsnachricht nicht empf?ngt. Angenommen, der Client wartet nicht auf 2MSL, sondern gibt das Schlie?en direkt nach dem Senden des ACK frei. Sobald das ACK verloren geht, kann der Server nicht normal in den geschlossenen Verbindungsstatus wechseln.
- Wenn es um das Internet geht, denkt jeder sicher an TCP, UDP, HTTP, Three-Handle-Four -wave usw. Aber wenn es um Socket geht, sind alle vielleicht etwas verwirrt. Sie wissen nur, dass es im Netzwerk verwendet wird, aber was genau ist ein Socket? Warum ist das Netzwerk untrennbar mit Sockets verbunden?
Das obige ist der detaillierte Inhalt vonInterviewer: Wie trennt Socket TCP die Verbindung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Hei?e KI -Werkzeuge

Undress AI Tool
Ausziehbilder kostenlos

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem v?llig kostenlosen KI-Gesichtstausch-Tool aus!

Hei?er Artikel

Hei?e Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)