Un socket .NET necessita un handshake SOCKS
Explica què ha de fer un socket TCP .NET cru abans que els bytes de l'aplicació viatgin per un proxy SOCKS.
Apuntar Socket.Connect() a un servidor SOCKS obre una connexió TCP amb aquest servidor. Els bytes següents encara han de parlar SOCKS. Enviar immediatament el protocol de la vostra aplicació deixa el servidor esperant una conversa diferent.
Amb SOCKS5, l'establiment de la connexió inclou la negociació del mètode, qualsevol intercanvi d'autenticació seleccionat i una petició que nomena la destinació. Només una resposta correcta obre el camí per als bytes de l'aplicació. Aquestes etapes es defineixen a RFC 1928.
Mantingueu la negociació a la capa de connexió
Una aplicació amb el seu propi protocol TCP pot utilitzar un connector conscient del proxy que retorni un flux establert. La resta de l'aplicació llavors llegeix i escriu a través d'aquest flux. Un connector ha de tenir en compte lectures parcials, adreces de longitud variable, fallades d'autenticació i un termini per a la negociació.
Una implementació escrita a mà que llegeix un sol buffer de mida fixa i assumeix èxit és fràgil. TCP no preserva els límits dels missatges SOCKS. Llegiu la resposta completa descrita pel seu tipus d'adreça abans d'iniciar el protocol de l'aplicació. un lector de respostes CONNECT de .NET 7+ il·lustra aquest pas.
Si una biblioteca mantinguda ja proporciona aquesta capa de connexió, comproveu les versions de SOCKS admeses, els mètodes d'autenticació i el framework de destinació. Un enllaç de fòrum de fa una dècada és un punt de partida per a la investigació, no una prova de compatibilitat actual.
La configuració del client HTTP té un abast a part
El paràmetre de proxy d'un client HTTP configura aquest client HTTP. No modifica cada socket cru del procés. L'API Socket accepta un punt final de xarxa i deixa la negociació de nivell superior a qui la crida.
Per a un protocol d'aplicació xifrat, feu el seu handshake TLS després d'establir el túnel de proxy. Valideu la identitat de destinació prevista en aquesta etapa. L'autenticació del proxy i l'autenticació de la destinació continuen separades encara que facin servir el mateix flux subjacent.