2009-04-04 45 views
11

Tôi biết từ "kết nối" không thực sự phù hợp khi nói về UDP, nhưng ...UDP, NAT và thiết lập "kết nối"

Làm thế nào để một máy chủ (IP được biết đến) nhận được các gói UDP của nó thông qua Internet cho một máy khách phía sau NAT?

Ví dụ: giả sử khách hàng kết nối và xác thực với máy chủ bằng cách sử dụng một số thông báo qua TCP. Tại thời điểm này, máy chủ đã sẵn sàng để bắt đầu truyền dữ liệu đến máy khách trên UDP, nhưng làm thế nào để máy chủ biết được địa chỉ các gói UDP để họ tìm đường qua bất kỳ bộ định tuyến NAT nào tới máy khách?

Nếu nắm tay khách hàng gửi thông báo "Tôi sẵn sàng cho phát trực tuyến" qua UDP, các bộ định tuyến NAT sẽ giữ cổng mở để máy chủ có thể phản hồi với luồng dữ liệu UDP của nó?

Hoặc tôi có bỏ qua đường đi ở đây không?

+0

bạn đang thiết kế giao thức của riêng mình hay đang cố gắng làm cho giao thức hiện tại hoạt động? – Alnitak

+0

Tôi sẽ triển khai một cái gì đó mới. – chardy

Trả lời

1

Nói chung NAT ở phía trước máy khách ở cấp TCP sẽ có thể xác định rằng kết nối tại UDP đã được tạo. Có nói rằng, NAT ở phía khách hàng sẽ phải được cấu hình để chấp nhận các gói UDP từ cổng máy chủ SRC, và sau đó chuyển chúng đến đích IP đích (máy khách). Điều quan trọng cần nhớ nếu NAT là ai là người gọi và ai là người bình thường. Các NAT khác nhau trong việc triển khai thực hiện và khả năng thực thi để một giải pháp dễ thực hiện chung có lẽ là những gì bạn có thể muốn thực hiện, tùy thuộc vào nhu cầu của bạn.

Bạn đúng với giả định, tôi nghĩ rằng, trong trường hợp khách hàng của bạn sẽ không thể nhận luồng UDP trong thông tin. Trong trường hợp của bạn, khách hàng của bạn sẽ phải gửi IP WAN của nó đến máy chủ của bạn để bắt đầu kết nối UDP. Tìm kiếm khách hàng của bạn WAN IP có thể phức tạp nhưng có những trang web sẽ giúp bạn xác định IP WAN của bạn bằng cách trả lại nó trong một trang văn bản.

Nếu kết nối UDP được tạo sau khi kết nối TCP bởi máy chủ mở ổ cắm cho máy khách đến cổng UDP đã biết, thì UPnP có thể đáng xem xét nó sẽ cho phép bạn tự động thiết lập cổng chuyển tiếp trên NAT của bạn , đó là chỉ khi NAT của bạn hỗ trợ UPnP như trường hợp của các bộ định tuyến DSL.

Công việc vòng quanh sẽ là để khách hàng mở cả hai cổng TCP và UDP tới máy chủ. Vì client phía sau NAT khởi tạo kết nối, các trạng thái của cả hai kết nối TCP và UDP sẽ được thêm vào bảng kết nối của NAT.

+0

"Công việc vòng quanh sẽ là để khách hàng mở cả hai cổng TCP và UDP tới máy chủ." Đây có phải là cách thức chuẩn và đáng tin cậy để lấy lại các gói dữ liệu của máy chủ cho khách hàng không? Tôi đang tìm kiếm ít phiền toái nhất cho người đang sử dụng ứng dụng khách. – chardy

4

Bỏ qua việc cung cấp các dịch biết cổng (ví dụ: số liệu về cổng này đi vào địa chỉ này) trong router của bạn (cung cấp NAT), bạn có thể sử dụng UDP Hole Punching.

Giả sử bạn không nói về multicasting, trong đó mỗi peer tham gia một nhóm và thông báo rằng với các bên quan tâm (trong trường hợp này là bộ định tuyến), sau đó có thể thực hiện định tuyến thích hợp. Mặc dù thông thường được sử dụng để định tuyến lưu lượng truy cập hiệu quả cho nhiều máy chủ, cơ chế theo từng nhóm sẽ hoạt động để bạn mô tả ở trên.

+0

Cảm ơn Brian vì thông tin đó - Theo tôi hiểu, UDP Hole Punching sẽ được sử dụng trong một kịch bản ngang hàng mà cả hai đầu đều nằm sau tường lửa? Điều này vẫn cần thiết nếu máy chủ của tôi nằm trên một WAN IP? – chardy

+0

Tôi không nghĩ như vậy, nhưng tôi thú nhận tôi không phải là một chuyên gia. –

1

Nếu bạn đang nói về các giao thức truyền như SIP hoặc RTSP thì cách hoạt động là cổng UDP mà máy khách muốn máy chủ gửi đến được chỉ định trong yêu cầu thiết lập cuộc gọi.

Máy chủ sẽ gửi đến cổng đó và lưu lượng truy cập có thể hoặc không thể đi qua cho khách hàng tùy thuộc vào việc NAT đã dịch lựa chọn clien't của cổng thành một số khác hay không.

Khi máy chủ nhận gói UDP đầu tiên được phát trực tuyến từ máy khách và nếu máy chủ đang ở một cổng khác với gói được gửi thì máy sẽ chuyển sang nó. Điều này cho phép UDP từ máy chủ có được thông qua NAT vì máy khách đã tạo bản đồ NAT bằng cách gửi đến máy chủ.

Các vấn đề liên quan