Tôi đang cố gắng hiểu cách Iphone quyết định sử dụng địa chỉ IP nào từ 2 địa chỉ IP được trả về trong phản hồi dns trong tình huống cụ thể bên dưới.
Kịch bản là như thế này:
1- Iphone gửi truy vấn dns cho Arecord như "bsf.mncxx.mccxx.pub.3gppnetwork.org" và nhận được 2 địa chỉ IP trong phản hồi.
2- Iphone gửi yêu cầu GET đến 1 trong các địa chỉ IP để tự xác thực (không quan trọng chọn IP BSF nào ở bước này)
3- BSF trả về 401 Trái phép với thử thách xác thực
4- Iphone tính toán phản hồi và gửi nó trong yêu cầu NHẬN thứ 2.
Vấn đề bắt đầu từ đây. Iphone chọn BSF ngẫu nhiên ở đây. Kỳ vọng là gửi GET thứ 2 này (với phản hồi được tính toán) tới cùng một BSF trong bước 2. Tất cả các điện thoại khác (Samsung, Huawei, Sony, v.v.) sẽ gửi nó tới BSF ở bước 2. Nhưng có vẻ như Iphone chỉ chọn ngẫu nhiên.
Nếu BSF khác được chọn, xác thực không thành công.
Như một giải pháp thay thế, chúng tôi đã định cấu hình BSF để gửi Kết nối: giữ nguyên trong phản hồi http 401, nhưng tiếc là điều đó không hữu ích. Iphone vẫn chọn nó một cách ngẫu nhiên.
Ở đây trong thiết lập của chúng tôi, các địa chỉ IP BSF nằm trong các mạng con gần nhau (BSF1 = 172.31.59.165, BSF2 = 172.31.59.181)
Điều rất lạ là, trong một thiết lập khác (không hoàn toàn giống BSF với của chúng tôi nhưng yêu cầu http và phản hồi tương tự nhau) cùng một Iphone luôn chọn cùng một BSF ở bước 2 và bước 4 (BSF1=10.216.138.78, BSF2= 10.210.149.79). Nếu nó chọn BSF1 ở bước 2, hãy tiếp tục với BSF1 ở bước 4. Tương tự cho BSF2.
Có thể Iphone kiểm tra mạng con trong khi quyết định?
Bất kỳ dự đoán hoặc gợi ý nào khác sẽ được đánh giá cao.
Cảm ơn
Trắng