Làm thế nào đến các trang web như Google / Facebook / vv. không nhận DDOS'd mặc dù họ nhận được rất nhiều yêu cầu?


14

Một cái gì đó tôi không hiểu:

(Hàng chục / hàng trăm?) Hàng ngàn người đồng thời cố gắng kết nối với một trang web như facebook.com hoặc google.com.

Theo những gì tôi hiểu, tất cả chúng nhất thiết phải kết nối với cùng một máy chủ ban đầu (vì DNS sẽ trả lại cùng một IP cho nhiều người trong số họ và vì vậy tất cả các yêu cầu đều đi đến cùng đích đích).

Vì vậy, một máy / bộ định tuyến duy nhất phải xử lý tất cả các yêu cầu ban đầu, ngay cả khi nó có kế hoạch chuyển tiếp chúng đến các máy khác.

Tại sao thiết bị đơn lẻ đó không bị quá tải khi điều này xảy ra?


8
Giả định của bạn về DNS là không chính xác: en.wikipedia.org/wiki/Round-robin_DNS
Der Hochstapler

@OliverSalzburg: Cảm ơn liên kết, điều đó hữu ích.
dùng541686

Câu trả lời:


20

Hiểu biết của bạn rằng tất cả chúng kết nối với cùng một máy chủ là sai, mặc dù chi tiết về cách bạn đạt được những kết quả đó rất phức tạp. http://highscalability.com/ có công việc tham khảo về cách một số giải pháp khả năng mở rộng được đưa vào chơi.

Họ có nhiều hơn một máy chủ "một" mà khách hàng kết nối, ngay cả khi địa chỉ IP công cộng trông giống nhau. Google, ví dụ, sử dụng nhiều địa chỉ anycast để chỉ dẫn mọi người và thông thường họ không chỉ có một địa chỉ IP cho mỗi khách hàng - ngay cả khi họ chỉ trả lại một địa chỉ khi bạn hỏi.


+1 cảm ơn vì đã chỉ ra lỗi. Tuy nhiên, tôi không thể tự hỏi: nếu các yêu cầu tiếp theo đến một máy chủ khác nhau, thì làm thế nào để một máy chủ tiếp tục phiên của một máy chủ khác? Hoặc là sự ngẫu nhiên trên cơ sở mỗi máy / mỗi phiên? (Tôi tưởng tượng rằng tất cả họ đều đồng bộ hóa tại phụ trợ, nhưng nó sẽ có vẻ rất chậm đến hàng ngàn đồng bộ hóa các máy chủ giữ thông tin về hàng triệu người dùng cùng một lúc.)
user541686

1
Câu trả lời rất phức tạp và phụ thuộc vào cách triển khai, nhưng một cách tiếp cận là có một nhóm máy không làm gì ngoài việc gửi các gói đến đúng đích mà không thực sự tạo kết nối TCP. Hãy tìm đến F5 và các nhà cung cấp cân bằng tải khác, để biết kết thúc nhỏ như thế nào. Google, tôi nghĩ rằng, sử dụng một cái gì đó họ tự xây dựng.
Daniel Pittman

Bạn cũng có thể sử dụng một phương pháp phân chia phiên. Có một phiên giữa người dùng và máy chủ mà họ kết nối trực tiếp và "phiên logic chính" giữa người dùng và dịch vụ logic. Nếu người dùng di chuyển đến một máy chủ khác, thì máy chủ đó sẽ nối lại cùng một phiên logic chính cho dịch vụ logic.
David Schwartz
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.