1
A
回答
0
這取決於協議的一些光,這取決於代理,它依賴於透明度是否是一個目標。詳盡地解決所有這些問題將會花費很長時間,所以讓我們考慮一個簡單的案例。
網絡連接是軟件通常由某種句柄(無論是文件描述符還是其他資源)來表示。在POSIX系統上的C程序中,我們可以簡單地保持相互關聯的兩個文件描述符:
struct proxy_session {
int client_fd;
int server_fd;
}
這是裸最低要求。
當客戶端連接時,我們分配其中一個結構。可能有一個協議讓我們知道我們應該使用什麼後端,或者我們可能會做負載平衡和自己挑選後端。
一旦我們選擇了一個後端(無論是通過解析協議還是通過做出一些表單路由決定),我們都會啓動一個連接。簡單地說,代理(作爲中介)只是在客戶端和服務器之間轉發數據包。
我們可以使用任意數量的接口將這兩件事綁在一起。例如,在Linux上,epoll(2)
允許我們將指針關聯到文件描述符上的事件。我們可以爲它提供一個指向我們的proxy_session
結構的指針,用於客戶端和服務器端。當數據進入這些文件描述符時,我們知道在哪裏映射它。我們必須有一種區分連接句柄的手段(不管它們是文件描述符,指針還是其他表示形式),因此缺少這樣的接口是不夠的。然後,我們可以使用像散列表這樣的結構來查找句柄的目的地。通過簡單地區分彼此之間的連接,並保持一些將兩個連接「粘合」在一起的狀態,就可以找到解決方案。
相關問題
- 1. 會話對象包含哪些內容?
- 2. Chrome中的會話詳細信息
- 3. IE8失去會話詳細信息
- 4. 新會話登錄詳細信息
- 5. JPA persistence.xml文件內容詳細信息
- 6. 哪個msi數據庫包含產品類型詳細信息?
- 7. Crystal Reports詳細信息詳細信息
- 8. Android主詳細信息詳細信息
- 9. 在MVC視圖中訪問一些會話詳細信息
- 10. 示例主詳細信息視圖 - 詳細信息片段更改內容
- 11. PartCover代碼詳細信息
- 12. PushViewController詳細信息?
- 13. 詳細信息sql
- 14. UITableView詳細信息
- 15. IMAP_AirSeatMapService詳細信息
- 16. 「關於」對話框中包含哪些重要信息?
- 17. 檢索從露天休息API的內容詳細信息API
- 18. NSIS在顯示詳細信息後隱藏詳細信息
- 19. 哪個表格包含課程的鏈接媒體詳細信息?
- 20. 存儲庫應包含哪些內容?
- 21. OSGI庫中可包含哪些內容
- 22. 主要功能包含哪些內容?
- 23. CanExecute中應該包含哪些內容?
- 24. MEF 2包含哪些內容?
- 25. 哪裏可以保存EmberJS應用程序的詳細用戶會話信息?
- 26. magento保存管理詳細信息
- 27. Google地點詳細信息不包含任何活動
- 28. 拆分頁的詳細信息包含許多數據
- 29. Cruise Control.NET電子郵件不包含錯誤的詳細信息
- 30. 環內循環(更多詳細信息)
感謝您的詳細信息。所以基本上這意味着,對於每個傳入客戶端連接代理,它將打開一個到後端服務器的新連接並保持一對一映射。如果它打開到後端的單個連接,那麼除了檢查數據包本身外,沒有辦法區分。 – Sammy
如果您多路複用,代理協議必須提供一些區分手段。請求序列化就是這樣的一種方法。 – dho