Kann SATA zum Anschließen von Computern verwendet werden?

9

Kann SATA verwendet werden, um zwei Computer miteinander zu verbinden, genau wie es ein Crossover-Ethernet-Kabel tun würde?

Ich weiß, dass SATA keine "Netzwerk" -Funktionen hat und obwohl ein Controller möglicherweise mehrere Ports hat, "sehen" sich die Laufwerke nicht, und in SATA fungiert ein Gerät als Host (der Computer) und das andere Gerät ist eines Art von "Client" (das Speicherlaufwerk).

Hat dennoch jemand versucht, ein Kernelmodul zu erstellen, das einen Computer als "Client" erscheinen lässt (so dass der SATA-Controller des Hosts ihn als Standardfestplatte erkennt) und dann wie eine Pseudo-Ethernet-Verbindung oder eine sehr feste Einrichtung eingerichtet serielle Hochgeschwindigkeitsverbindung (und dann darauf laufen pppdund vernetzen)?

Hinweis: Ich weiß, dass dies eine unprofessionelle und völlig dumme Idee ist. Ich frage nur aus Neugier.

Keltari
quelle
Interessant. Ist der Controller dazu in der Lage?
Kimmax
@Kimmax nicht sicher, würde ich wahrscheinlich sagen ... Deshalb habe ich diese Frage gestellt.
1
Soweit ich weiß, wurde dies nicht getan. Ich kann nicht darüber sprechen, ob es möglich ist oder nicht, aber wenn ich sagen kann, dass das Erreichen eines solchen Ziels einen immensen Aufwand und Code erfordert. Der Host-Client von SATA ist nur für die Speicherung eingerichtet, nicht für das Netzwerk. Sie müssten also entweder die Netzwerktreiber selbst schreiben, eine Möglichkeit finden, bereits vorhandene Treiber für die neue Schnittstelle zu verpacken, oder das herkömmliche Netzwerk aufgeben und stattdessen einen Treiber schreiben, der den Speicher des Clients spiegelt, damit der Host ihn sehen kann. Alle drei Alleen haben große Fallstricke. Es ist jedoch eine lustige Idee.
HalosGhost

Antworten:

3

Nachdem ich mir die SATA-Spezifikation kurz angesehen hatte, war ich zunächst zuversichtlich, dass SATA nicht nur mit Festplattengeräten, sondern auch mit Laufwerksgehäusen kommunizieren kann.

Es sieht jedoch so aus, als ob es nicht möglich ist, mit SATA zwei Computer miteinander zu verbinden, hauptsächlich weil es sich um eine Host- / Gerätetopologie handelt. Dies bedeutet, dass der Host einen speziellen "Host-to-Device" -Befehl sendet und das Gerät verschiedene "Device-to-Host" -Befehle zurücksendet.

Es gibt generische bidirektionale "Daten" -Befehle, die zum Austauschen von Paketen verwendet werden könnten. Ich vermute jedoch, dass diesen die richtige "Host-zu-Gerät" -Anforderung und eine entsprechende "Gerät-zu-Host" -Antwort vorausgehen müssten. Ich vermute, dass PCs keine "Geräte-zu-Host" -Nachrichten senden können (da sie der Host sind), was dies erfordern würde, aber ich könnte mich in diesem Punkt irren. Wenn ein PC einen Geräte-zu-Host-Befehl senden kann, können Sie eine Host-zu-Host-Verbindung über SATA herstellen.

Selbst wenn Sie dies tun könnten, würden Sie zweifellos benutzerdefinierte Kabel benötigen, da die Verwendung von Standard-SATA-Kabeln bedeuten würde, dass beide PCs auf demselben Kabelpaar senden und beide auf demselben Kabelpaar empfangen (wo also niemand sendet) Sie erhalten niemals Daten!) Sie müssten das SATA-Äquivalent eines Ethernet-Crossover-Kabels hacken, das die TX- und RX-Leitungen vertauscht.

Ich denke, dieses Problem spiegelt das von USB sehr gut wider. Sie können zwei Computer nicht mit einem bloßen USB-Kabel miteinander verbinden, da beide Hosts keine Geräte sind, mit denen Sie kommunizieren können. Es gibt jedoch USB-Geräte, die Daten von beiden Hosts empfangen und weitergeben, sodass der USB-Controller jedes Hosts denkt, dass er mit einem Gerät spricht (was technisch gesehen der Fall ist), was die Kommunikation von Host zu Host über USB ermöglicht.

Dasselbe wäre für SATA möglich, wenn Sie ein Gerät haben, mit dem beide Host-Controller verbunden sind, und jeder denkt, dass er mit einem Gerät spricht. Sie benötigen weiterhin benutzerdefinierte Treiber, damit das SATA-Gerät als Netzwerkgerät angezeigt wird, aber es ist funktionsfähig.

Dies wäre jedoch nur für Verbindungen mit sehr kurzer Reichweite nützlich, da SATA eine maximale Kabellänge von einem Meter hat. Wenn sich Ihr spezielles SATA-Übersetzungsgerät in der Mitte befindet, müssen Ihre beiden SATA-Anschlüsse weniger als zwei Meter voneinander entfernt sein (einschließlich des Abstands zwischen Motherboard oder Erweiterungskarte und der Außenseite des Gehäuses).

Malvineous
quelle
1

Soweit ich weiß, wurde dies nicht getan. Ich kann nicht darüber sprechen, ob es möglich ist oder nicht, aber ich kann sagen, dass das Erreichen eines solchen Ziels einen immensen Aufwand und Code erfordern würde.

Das Host-Client-Setup von SATA dient nur zur Speicherung, nicht zum Netzwerk. Also müssten Sie entweder

  1. Schreiben Sie die Netzwerktreiber selbst
  2. Finden Sie heraus, wie Sie bereits vorhandene Treiber für die neue Schnittstelle umschließen können, oder
  3. Geben Sie das herkömmliche Netzwerk auf und schreiben Sie stattdessen einen Treiber, um den Speicher des Clients zu spiegeln, damit der Host ihn sehen kann.

Alle drei Wege haben große Fallstricke, obwohl ich theoretisch denke, dass dies machbar wäre - das Endergebnis wäre wahrscheinlich immer noch nicht so schnell, wie Sie es sich vorstellen. Es ist jedoch eine lustige Idee.

HalosGhost
quelle