Wie unterscheidet das TCP/IP-Protokoll zwischen Clients?

Wie unterscheidet das TCP/IP-Protokoll zwischen Clients?

Wenn wir einen Listening-Socket erstellen, gibt er uns einen Deskriptor zurück (sagen wir Root-Deskriptor) und wir binden diesen Deskriptor an eine Adresse. Immer wenn eine neue Client-Verbindung verfügbar ist, informiert uns der Root-Deskriptor und wir akzeptieren diese neue Verbindung und erhalten für jeden Client einen eindeutigen Deskriptor (sagen wir Client-Deskriptor). Von nun an können wir mit diesem Client über diesen Deskriptor kommunizieren. Client-Informationen werden in dem separaten Inode gespeichert, auf den der Client-Deskriptor verweist. Dadurch konnte Linux die jeweiligen Client-Daten an einen jeweiligen Deskriptor übermitteln.

Wenn das oben Gesagte richtig ist (korrigieren Sie mich bitte, wenn ich es falsch verstanden habe), dann habe ich Zweifel. Welche Client-Informationen werden im Inode gespeichert? Wie wird der Client von Linux eindeutig identifiziert?

Antwort1

Die Protokolle TCP/IP und UDP/IP kennen eine "Sitzung", die durch lokale und entfernte IP-Adressen sowie Ports definiert ist [1]. Ein TCP/IP-Paket enthält beispielsweise Quell- und Ziel-IP-Adressen sowie Ports [2]. Ein Server oder Client (zum Beispiel Firefox), der mehr als eine Verbindung offen hat, unterscheidet auf der OSI-Sitzungsschicht [3] nach Adresse und Port.

Bitte öffnen Sie eine Shell und führen Sie sie als Root aus, während Sie einen Webbrowser verwenden

netstat -tulpan

um aktuelle und aktive Verbindungen anzuzeigen [4].

Beispielausgabe:

# netstat -tulpan
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1966/sshd           
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      1902/cupsd          
tcp        0      0 192.168.1.16:57374      172.217.23.165:443      ESTABLISHED 4730/firefox-bin     
tcp        0      0 192.168.1.16:55478      104.26.11.30:443        ESTABLISHED 4730/firefox-bin     
udp        0      0 127.0.0.1:53            0.0.0.0:*                           1996/named          

Die Zeilen zeigen „HERGESTELLTE“ Verbindungen von Firefox mit unterschiedlichen lokalen Ports, sodass Firefox erkennen kann, welches Paket die Antwort auf welche Anfrage ist.

Andere Zeilen mit dem Status LISTEN sind lokale Programme, die als Serverprozess ausgeführt werden, darunter sshd(Secure Shell Server), cupsd(Drucker-Daemon) und named(Bind-Nameserver). Diese akzeptieren eingehende Verbindungen.

Referenzen für weitere Informationen:

[1]https://en.wikipedia.org/wiki/Port_(Computernetzwerk)

[2]https://en.wikipedia.org/wiki/Transmission_Control_Protocol#TCP_segment_structuresowiehttps://en.wikipedia.org/wiki/IPv4_header#Header

[3]https://en.wikipedia.org/wiki/OSI-Modell

[4]https://en.wikipedia.org/wiki/Netstat

Antwort2

Wenn Sie dies tun, listengeben Sie einen Port an, da der Port bekannt sein muss. Dieses Ende hat eine IP (oder mehrere) und einen Port.

Wenn Sie dies tun, connectgeben Sie die IP und den Port des Remote- listenServers an. Die lokale IP wird vom Betriebssystem bestimmt und ein Port wird zugewiesen (es kann eine beliebige Nummer sein).

Die Verbindung kann wie folgt identifiziert werden: ( (remote IP, remote port), (local IP, local port) )Dadurch wird eine Obergrenze von 64.000 Verbindungen zu jedem Remote-Port von einer beliebigen IP-Adresse aus festgelegt.

verwandte Informationen