** 我們在瀏覽器地址欄, 輸入了 www.sina.com.cn 后回車, 網頁就顯示出來了. 那具體它為什么會顯示出來的? **
我們先來一個簡單版的解答
輸入網址, 回車后:
- 你的瀏覽器知道你要請求 www.sina.com.cn 這個網頁
- 瀏覽器把你的這個請求, 按照約定的格式封裝成一個數(shù)據(jù)包
- 瀏覽器把數(shù)據(jù)包通過網絡發(fā)給了服務器.
- 服務器接收到了這個包, 七轉八折告訴了服務器上運行的PHP程序
- PHP程序運行后, 再按照之前約定的格式封裝成數(shù)據(jù)包, 通過網絡給到了瀏覽器.
- 瀏覽器接收到這些數(shù)據(jù), 解析出來, 網頁就顯示出來啦.
嗯, 再問幾個問題?
我輸入了一個網址, 瀏覽器如何知道發(fā)到哪個服務器去?
每一個域名, 都可以解析出來一個IP, 這個過程叫DNS解析.
在瀏覽器輸入網址后, 其實瀏覽器先去DNS服務器問了這個域名的IP, 然后再發(fā)包. (IP就像門牌號, 可以定位到服務器)
BTW, 這時候如果查詢到的 IP 出錯了, 請求就發(fā)到別的服務器去啦. 想想看, 這種情況是不是很危險? 萬一別的服務器回了一個依然可用的頁面, 瀏覽網頁的人不知道, 輸入了用戶名密碼, 信息就會被盜取了.
怎么防止這種情況呢? 我們后面會專門抽出一個章節(jié), 關于網絡安全, 來講這部分.
** 我們經常說 Web服務要開80端口, 是個什么東東? **
服務器理解成房子, 端口就可以理解成家里的門.
兩臺機器通信, 需要互相打開一扇門, 然后通過門來傳遞信息.
服務器上有防火墻, 可以關掉所有門. 如果你的服務器提供 Web服務, 就打開80這扇門. 打開后, 瀏覽器發(fā)送數(shù)據(jù)到你服務器的這扇門(80端口), 完成正常通信.
當然, 80不是一定的, 你也可以在服務器開啟81, 82, 8080等端口來提供Web服務. 而這個時候你輸入的網址就必須是 xxx.com:81 yyy:com:82 zzz.com:8080 才能正常訪問.
如果開啟的是80就不必加后面的[:端口]的部分啦, 當然加上也沒問題. 對于瀏覽器而言 xxx.com:80 等于 xxx.com
聰明的菜菜同學有木有發(fā)現(xiàn), 服務器開了一扇門: 80端口, 為了通信, 瀏覽器是不是也應該開門呢? 其實瀏覽器已經偷偷開了, 他本地開了一個1024-65534的隨機端口來通信.
關于這部分的網絡通信細節(jié), 說來話長, 總之先有這樣一個概念在就好啦.