Để trả lời câu hỏi của bạn về cách nó biết , nó phải làm với những gì trình duyệt của bạn gửi cho máy chủ.
Bạn đúng rằng hệ thống luôn phân giải nó thành địa chỉ IP, nhưng trình duyệt sẽ gửi URL mà bạn đã cố truy cập trong tiêu đề HTTP.
Đây là một tiêu đề mẫu mà tôi tìm thấy trực tuyến, được sửa đổi để trông giống như bạn đã sử dụng Firefox trên Windows và nhập apple.com
vào thanh địa chỉ:
GET / HTTP/1.1
Host: apple.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5 (.NET CLR 3.5.30729)
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache
Đây là tiêu đề sẽ như thế nào nếu bạn sử dụng địa chỉ IP của nó:
GET / HTTP/1.1
Host: 17.142.160.59
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5 (.NET CLR 3.5.30729)
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache
Cả hai thứ này sẽ được gửi đến cùng một địa chỉ IP qua một ổ cắm, nhưng trình duyệt sẽ cho máy chủ biết những gì nó truy cập.
Tại sao? Bởi vì các máy chủ web có cùng địa chỉ IP có thể lưu trữ nhiều trang web và cung cấp các trang khác nhau cho mỗi trang. Nó không thể phân biệt ai muốn trang nào theo địa chỉ IP bởi vì tất cả chúng đều có cùng một trang - nhưng nó có thể phân biệt chúng bằng tiêu đề HTTP.