回覆列表
  • 1 # 使用者1453253568009

    因為是虛擬主機,主機上放置了N個網站,而每個網站繫結1個或以上域名,所以用域名訪問主機可以解析到網站目錄,但用IP的話伺服器就不知道解析到哪個目錄了!

    因為http請求裡包含了域名資訊,所以用域名訪問,虛擬主機伺服器會根據域名來返回網站,直接用IP訪問是因為沒有域名資訊,所以伺服器不知道要訪問的是哪個網站目錄,只有共享IP的虛擬主機或者VPS才有這情況,像有邦定獨立IP功能或者獨立主機的伺服器就可以直接透過域名和ip都可以訪問。

    為什麼有些網站透過host可以訪問而直接輸入ip不能?

    第一種可能:

    假如是一次單純的http請求,指定host用域名訪問,和直接輸入ip訪問,效果應當是一樣的,但僅限於一次請求。現如今,當你開啟一個網頁,事情會變得複雜很多,網頁不光是一個html,還有許多css樣式、javascript指令碼、其他網頁元素(Flash等)需要下載,執行js指令碼或Flash外掛的時候,還會進行新的網路請求。

    html裡包含的css、js資源地址,以及js指令碼發出的網路請求地址,可能是用域名記錄的(而非IP地址)。假如是改host的方式,那麼你的系統知道,這個域名對應正確的IP地址,可順利訪問。如果是沒有host,輸入IP訪問,那麼對於網頁資源、指令碼中的域名地址,系統不知道這個域名就是你輸入的IP,仍需要透過DNS獲取IP地址,DNS有問題的話,就不能正確載入。

    牆最早只做DNS劫持、汙染,透過域名得不到正確的IP,如果你ping一個網址,實際ping的是假的IP地址,可能是超時無響應,可能是錯誤的伺服器的迴應,但你ping它的IP地址,結果是正確的,所以改host有效。後來牆高階了,可以阻攔、劫持你的請求,那麼怎麼ping都會出問題。值得注意的是,仍有很多網站只有DNS汙染,沒有針對IP地址的行為(或網站IP地址在不斷更新,牆的更新慢一拍),所以改host仍然有效。

    第二種可能:

    有些網站伺服器端程式需要透過你的URL來決定返回的內容(可能一個IP地址上的伺服器需要同時提供兩個網站的訪問),那麼你的URL中不包含正確的域名,伺服器程式就沒辦法迴應你(不知道你要訪問的到底是個啥),只好返回個錯誤。

  • 中秋節和大豐收的關聯?
  • 平板電腦適合玩魔獸世界嗎?