Tôi đang cố gắng hiểu các kết nối tcp giữa trình duyệt và máy chủ web. Tôi có một máy chủ web chạy trên máy địa phương của tôi, và có thể duyệt đến nó tốt, như mong đợi, bằng cách sử dụng localhost: 3000 hoặc 127.0.0.1:3000. (Tôi đang chạy "đường ray s" và WEBrick.)Tại sao "ngã ba" cần thiết bởi socat khi kết nối với một máy chủ web?
Tôi muốn đặt phần mềm trung gian giữa trình duyệt và máy chủ web, và bắt đầu thử nghiệm với socat. Các công trình sau đây chỉ hoạt động tốt:
socat TCP-LISTEN:8080,fork TCP:localhost:3000
Tôi có thể duyệt đến localhost: 8080 và mọi thứ hoạt động như mong đợi. Tuy nhiên, nếu tôi bỏ qua đối số ", ngã ba" như vậy,
socat TCP-LISTEN:8080 TCP:localhost:3000
trang web đường ray cục bộ bị tắt trong trình duyệt.
Tại sao đối số ngã ba đó lại cần thiết? Tại sao không phải trình duyệt < -> kết nối máy chủ web hoạt động mà không có nó?
Cảm ơn rất nhiều Celada. Điều đó có ý nghĩa tốt. – user691307
Điều tôi thực sự cố gắng làm là viết chương trình "ở giữa" của riêng tôi giữa trình duyệt và máy chủ web. Nó sẽ mở một kết nối TCP máy khách đến máy chủ web và một máy chủ TCP "nghe" trên một cổng khác. Trình duyệt sẽ mở một kết nối máy khách đến cổng nghe. Vì vậy, ở phía bên trình duyệt, có một chuỗi các phiên TCP mở và đóng. Nhưng ở phía máy chủ web, chỉ có một kết nối TCP được thiết lập. Điều đó không thành công. Tôi nghĩ rằng trung gian homebrew của tôi có thể đóng và mở lại kết nối máy chủ web mỗi khi khách hàng bắt đầu và dừng kết nối tcp. âm thanh ok? – user691307
Âm thanh OK, và cũng là điều đơn giản nhất để làm. Mã của bạn sẽ mở một kết nối mới đến máy chủ mỗi khi tác nhân người dùng HTTP thực hiện và đóng chúng cùng một lúc. Đó là công việc ít hơn nhiều so với việc giải thích nội dung của các yêu cầu HTTP để tìm ra khi nào bạn có thể hoặc không thể tinh chỉnh nội dung để tổng hợp một số kết nối tạo thành máy khách trên một kết nối tới máy chủ. Bằng cách đó, việc thực hiện một máy chủ proxy HTTP chính thức! – Celada