Tanıdık geldi mi? Kurumsal veya bulut proxy üzerinden REST istekleri hiçbir şey olmamış gibi uçup gider; ancak bir WebSocket açmaya veya bir gRPC metodu çağırmaya kalktığınızda bağlantı ya hiç kurulmaz ya da otuz saniye kadar yaşayıp sessizce ölür. Üstelik tarayıcıda veya uygulama günlüklerinde gizemli 101, 502, 504 ya da ansızın beliren connection reset görürsünüz. Bu mistisizm değil, kader de değil. Bu, proxy'nin kısa istek-yanıt işlemlerini nasıl ele aldığı ile uzun ömürlü çift yönlü akışlarda nasıl davranması gerektiği arasındaki temel farktır.

Bu makale, TCP üzerinde yaşayan protokollerin proxy üzerinden nasıl geçtiğine dair kapsamlı bir rehberdir: WebSocket, gRPC ve genel olarak protokol yükseltme veya uçtan uca tünel gerektiren her şey. Mekaniği son başlığına kadar inceleyecek, HTTP proxy üzerinden ws:// ile CONNECT yöntemiyle wss:// arasındaki farkı gösterecek, SOCKS5'in neden genellikle daha basit olduğunu açıklayacağız. Ayrıca HTTP/2 üzerinden gRPC ile ne yapılacağı, boşta kalma zaman aşımlarının nasıl aşılacağı ve en önemlisi hiçbir şey çalışmadığında tüm bunların nasıl hata ayıklanacağı da dahil. Sonunda Python ve Node için çalışan kod, kontrol listeleri ve SSS bulacaksınız.

Hemen bir kapsam notu düşelim: SOCKS5'teki UDP ASSOCIATE mekanizmasına burada bilinçli olarak dokunmuyoruz - bu veri birimleri (datagram) ile ilgili ayrı ve büyük bir konu ve kendisine ayrı bir içerik ayrılmış durumda. Burada yalnızca HTTP ve SOCKS üzerindeki TCP protokollerine odaklanıyoruz.