[英]HTTP proxy connection sharing
我正在嘗試使用與Java瀏覽器使用Netty框架的Web瀏覽器用來模擬全雙工連接的技術類似的技術來實現HTTP隧道。 我希望以一種可以在真實的HTTP代理存在的情況下工作的方式來實現它。 我試圖在不使用servlet容器的情況下執行此操作,以避免在庫依賴方面造成不必要的開銷,並且因為servlet API不適合全雙工http隧道的使用模式。
我知道HTTP代理施加的一些限制會“破壞” HTTP協議的某些潛在用途:
但是,我不確定還有另一種可能性:現實中的HTTP代理是否還在多個客戶端之間共享與服務器的持久連接? 例如:
代理然后可能會打開與服務器X的單個連接並按以下順序發送消息:
A1,A2,B1,C1,B2,A3,C2,C3
或保留每個客戶的訂購但可能交錯的類似訂單? 甚至更糟的是,代理是否可以打開與服務器的多個連接,並在連接之間分散來自每個客戶端的消息,即
Connection 1: A1, C1, C2, C3
Connection 2: B1, B2, A2, A3
如果是這樣,我的方法需要更多的思考,因為我潛在地需要將這些消息多路分解到每個隧道的不同隊列中,並且不能簡單地依賴於將連接標識為用於特定客戶端。
是否有人知道任何描述常用HTTP代理和狀態檢查防火牆的怪癖的好資源?
HTTP 1.1規范將此段作為8.1.4實際考慮事項 :
使用持久連接的客戶端應該限制它們與給定服務器同時維護的連接數量。 單用戶客戶端不應與任何服務器或代理保持2個以上的連接。 代理最多應使用2 * N個連接到另一個服務器或代理的連接,其中N是同時活動用戶的數量。 這些准則旨在縮短HTTP響應時間並避免擁塞。
但是,我不知道現實世界中的代理實現會如何處理此要求。
也許您會在“ 緩存教程”中找到某些內容,即使它只是有用的鏈接。 最終的措施可能是向Mark Nottingham(mnot@pobox.com)發送郵件。 如果他不知道,沒人會。
我確實知道,可以將NetScaler配置為在它和服務器之間使用keepalive,而不管客戶端上的keepalive設置如何。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.