Lập trình mạng Python: giao thức UDP (phần 13)

Kết nối UDP sockets (tiếp tục)

Sau đó có 2 cách để viết các UDP clients cái quan tâm về các địa chỉ trả về của các
gói dữ liệu quay trở lại.
+ Bạn có thể sử dụng sendto() và điều hướng gói dữ liệu đi ra tới một đích cụ thể, sau
đó sử dụng recvfrom() để nhận các trả lời và kiểm tra cẩn thận mỗi địa chỉ trả về so với
danh sách các server tới nó bạn vừa thực hiện các requests nổi bật.
+ Bạn có thể thay vào đó connect() socket của bạn ngay sau khi tạo nó và trao đổi thông tin
với send() và recv(). Hệ điều hành sẽ lọc ra các gói dữ liệu không mong muốn cho bạn. Cái này
làm việc chỉ cho nói chuyện với một server vào một thời điểm vì chạy connect() một lần nữa
trên cùng socket không thêm một địa chỉ đích thứ hai. Thay vào đó, nó quét ra địa chỉ đầu tiên
hoàn toàn để rằng không các trả lời nữa từ địa chỉ trước được phân phát tới chương trình của
bạn.
Sau khi bạn đã kết nối một UDP socket sử dụng connect(), bạn có thể sử dụng phương thức getpeername()
của socket để nhớ địa chỉ tới nó bạn đã kết nối nó. Cẩn thận về gọi cái này trên một socket cái chưa
kết nối. Hơn là trả về 0.0.0.0 hay một vài trả lời đại diện khác, lời gọi sẽ dấy socket.error thay vào
đó.
Hai điểm cuối nên được tạo về lời gọi connect().
Trước tiên, thực hiện một connect() trên một UDP socket không gửi bất cứ thông tin gì qua mạng hay làm
bất cứ thứ gì để cảnh báo server rằng các gói dữ liệu có thể đến. Nó đơn giản viết địa chỉ vào bộ nhớ hệ
điều hành cho sử dụng khi bạn sau này gọi send() và recv().
Thứ hai, xin nhớ rằng thực hiện một connect() – hay thậm chí lọc ra các gói dữ liệu không mong muốn bản
thân bạn sử dụng địa chỉ trả về – không phải là dạng của an ninh! Nếu có ai đó trên mạng người thực sự độc
hại, nó thường là đủ dễ cho máy tính của họ giả mạo các gói dữ liệu với địa chỉ trả về của server để rằng
các trả lời giả của họ sẽ làm nó pass qua cái lọc địa chỉ của bạn
Gửi các gói dữ liệu với địa chỉ trả về của máy khác được gọi là spoofing và nó là một trong những thứ đầu tiên
cái các nhà thiết kế giao thức phải nghĩ về khi thiết kế các giao thức cái được hỗ trợ an toàn với can thiệp.

Chia sẻ