Come faccio a rendere il protocollo compatibile con il nome host?


10

Questa è una domanda canonica sulla consapevolezza del nome host e sul proxy.

So che alcuni protocolli sono compatibili con il nome host; vale a dire, quando mi collego al server HTTP su di www.example.comesso sa che voglio www.example.comil servizio HTTP, non quello www.example.net, anche se si trovano sullo stesso indirizzo IP. Come posso fare questo per protocollo pippo ?

(Nota temporanea: questa domanda appare in base a questa meta discussione .)

Risposte:


14

Per capire cosa sta succedendo, devi sapere un po 'di DNS.

Quando un client desidera connettersi a un servizio su un determinato host, cerca il nome host attraverso la sua infrastruttura DNS locale e riceve un indirizzo IP in risposta. Quindi si connette a quell'indirizzo IP e richiede il servizio nel modo prescritto dal procotol che è stato creato per implementare.

In alcuni casi, parte di quel procotol comporta un secondo invio del nome host originariamente cercato, che in questo caso viene inviato al server anziché all'infrastruttura DNS. Nel caso di HTTP, questo è stato aggiunto come parte di HTTP / 1.1, in RFC 2616 ; nel caso di HTTPS, questo è stato implementato come Server Name Indication (SNI) in RFC 4366 ; e nel caso di FTP, questo è stato aggiunto dal HOSTcomando, in RFC 7151 (ma vedi avvertimento più avanti). Se tale secondo invio non si verifica, il server non ha modo di sapere quale nome host il client ha inviato al proprio DNS locale per ottenere l'indirizzo IP del server.

Si noti che in tutti i casi è stata richiesta una modifica al protocollo per eseguire questo secondo invio e quindi rendere consapevole l'interazione client-server con nome host. Dopo aver modificato il protocollo, è stato necessario aggiornare il codice del server per implementarlo. E infine, i client dovevano essere aggiornati per comunicare il nuovo protocollo con i server. Quest'ultimo passo può essere particolarmente lento; nel caso di SNI, Internet Explorer su Windows XP non lo ha mai implementato, quindi non è stato possibile fare affidamento sul protocollo mentre c'era ancora un numero significativo di utenti IE-su-XP in giro, e ci sono voluti circa dieci anni per farne abbastanza morire e / o ottenere aggiornamenti che SNI è affidabile da implementare.

Quindi questo è quello che serve per rendere un protocollo non compatibile con hostname. E ' non è una semplice modifica delle impostazioni di bandiera o di configurazione. Abbiamo alcune risposte specifiche del protocollo che si occupano dello stato delle cose e possibili misure di mitigazione, in particolare per quel protocollo: per SSH (e quindi anche SFTP) e FTP (che sottolinea che il HOSTsupporto per FTP è attualmente irregolare -supporta la fase, e quindi non è ancora possibile fare affidamento).

La risposta breve è che se il tuo protocollo non implementa attualmente la consapevolezza del nome host, con un buon supporto sia tra client che server, dimenticalo: non è qualcosa che puoi fare.


6
Penso che tempererei questa risposta con il fatto che alcuni protocolli sono per prodotti nuovi di zecca o sono abbastanza locali da consentire a una società di controllare tutte le istanze di server e client. In questi casi, aggiungere semplicemente comandi o pacchetti di nomi host è molto semplice e molto facile da implementare. Descrivi la difficoltà di aggiungere nuove funzionalità a un protocollo esistente che è già ampiamente utilizzato da molti fornitori.
JPhi1618,

4
@ JPhi1618 Ti ascolto, ma secondo me qualsiasi "protocollo" creato e implementato da una singola azienda, e non incorporato in un RFC, non è affatto un protocollo; è solo una decisione di ingegneria interna e non ho alcun interesse per tali prodotti proprietari. Come sottolineato, il fornitore può cambiare immediatamente le cose per implementare la consapevolezza del nome host se lo desidera; ma dal momento che nessuno altro che il venditore può farlo, non vedo come sia di grande interesse per l'OP.
MadHatter,

Penso che la domanda rilevante sia se stai progettando un nuovo protocollo o stai chiedendo come modificare un protocollo esistente.
Barmar,

Un protocollo proprietario è ancora un protocollo.
Barmar,

@Barmar che probabilmente non è una buona discussione per entrare qui. Questa domanda riguarda la modifica dei protocolli esistenti e, come ho notato in precedenza, se la decisione / il protocollo di ingegneria proprietario bazpossono essere modificati solo dal suo proprietario e unico implementatore, l'unico modo per renderlo consapevole del nome host è fare appello al proprietario. Ciò non fornisce un'interessante risposta alla SF, e inoltre non è (a mio avviso) in argomento. " Come posso progettare un protocollo compatibile con il nome host " è un'altra domanda del tutto, e non una che mi interessa porre.
MadHatter,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.