Um zu verstehen, was los ist, müssen Sie ein wenig über DNS wissen.
Wenn ein Client eine Verbindung zu einem Dienst auf einem bestimmten Host herstellen möchte, sucht er den Hostnamen über seine lokale DNS-Infrastruktur und erhält als Antwort eine IP-Adresse. Es stellt dann eine Verbindung zu dieser IP-Adresse her und fordert den Dienst auf die Weise an, die von dem zu implementierenden Procotol vorgeschrieben ist.
In einigen Fällen beinhaltet ein Teil dieses Procotols ein zweites Senden des ursprünglich nachgeschlagenen Hostnamens, der in diesem Fall an den Server und nicht an die DNS-Infrastruktur gesendet wird. Im Fall von HTTP wurde dies als Teil von HTTP / 1.1 in RFC 2616 hinzugefügt . Im Fall von HTTPS wurde dies als Server Name Indication (SNI) in RFC 4366 implementiert . und im Fall von FTP wurde dies durch den HOST
Befehl in RFC 7151 hinzugefügt (siehe jedoch den späteren Vorbehalt). Wenn ein solches zweites Senden nicht erfolgt, kann der Server nicht wissen, welchen Hostnamen der Client seinem lokalen DNS zugeführt hat, um die IP-Adresse des Servers abzurufen.
Beachten Sie, dass in allen Fällen eine Änderung des Protokolls erforderlich war, um dieses zweite Senden durchzuführen, und somit die Hostname der Client-Server-Interaktion bekannt zu machen. Nachdem das Protokoll geändert wurde, musste der Servercode aktualisiert werden, um es zu implementieren. Und schließlich mussten die Clients aktualisiert werden, um das neue Protokoll mit den Servern zu kommunizieren. Dieser letzte Schritt kann besonders langsam sein; Im Fall von SNI hat Internet Explorer unter Windows XP es nie implementiert, sodass auf das Protokoll nicht vertraut werden konnte, solange noch eine erhebliche Anzahl von IE-on-XP-Benutzern vorhanden war, und es dauerte ungefähr zehn Jahre, bis genug von ihnen vorhanden waren Sterben Sie ab und / oder erhalten Sie Upgrades, die SNI zuverlässig bereitstellen kann.
Das ist es also, was nötig ist, um ein Protokoll ohne Hostnamen bekannt zu machen. Es ist keine einfache Flaggeneinstellung oder Konfigurationsänderung. Wir haben einige protokollspezifische Antworten, die sich mit dem Stand der Dinge und möglichen Minderungsmaßnahmen insbesondere für dieses Protokoll befassen: für
SSH (und damit auch für SFTP) und für
FTP (was darauf hinweist, dass die HOST
Unterstützung für FTP derzeit uneinheitlich ist -Unterstützungsphase, auf die man sich noch nicht verlassen kann).
Die kurze Antwort lautet: Wenn Ihr Protokoll derzeit keine Hostnamenerkennung mit guter Unterstützung sowohl für Clients als auch für Server implementiert, vergessen Sie dies: Sie können dies nicht tun.
baz
nur von seinem Eigentümer und alleinigen Implementierer geändert werden kann, besteht die einzige Möglichkeit, den Hostnamen bekannt zu machen, darin, den Eigentümer anzusprechen. Das ist keine interessante SF-Antwort und darüber hinaus (meiner Meinung nach) nicht thematisch. " Wie entwerfe ich ein Protokoll, das den Hostnamen berücksichtigt? " Ist insgesamt eine andere Frage, die ich nicht stellen möchte .