想要討論JavaScript這門語(yǔ)言,就不得不從互聯(lián)網(wǎng)開(kāi)始,因?yàn)镴avaScript是為互聯(lián)網(wǎng)而生的?;ヂ?lián)網(wǎng)中的每臺(tái)計(jì)算機(jī)都有一個(gè)只屬于自己的IP地址。計(jì)算機(jī)之間可以通過(guò)IP地址互相訪問(wèn)。有的計(jì)算機(jī)中存放著一些網(wǎng)頁(yè)文件,專門供其他計(jì)算機(jī)查詢?yōu)g覽。我們把前者稱為Web服務(wù)器,把后者稱為客戶機(jī)。Web服務(wù)器24小時(shí)連續(xù)工作,它里邊始終運(yùn)行著一個(gè)程序。這個(gè)程序監(jiān)聽(tīng)著服務(wù)器的一個(gè)端口,一般是編號(hào)為80的端口。一旦有客戶機(jī)發(fā)送請(qǐng)求到這個(gè)端口上,程序就馬上把對(duì)方請(qǐng)求的網(wǎng)頁(yè)發(fā)送過(guò)去。為了方便跟服務(wù)器打交道,客戶機(jī)會(huì)借助Web瀏覽器這種軟件實(shí)現(xiàn)上述操作。而網(wǎng)頁(yè)文件都是用文本編寫成的,它們本質(zhì)上只是一種文本文檔。服務(wù)器要做的就是把這些文本發(fā)送給客戶機(jī)的瀏覽器。于是工程師們?cè)趦烧咧g建立起一種主要用于傳輸文本的規(guī)則,也就是我們經(jīng)常提到的HTTP協(xié)議。下面是一個(gè)寫在瀏覽器地址欄中的網(wǎng)頁(yè)文件的地址(URL):
```
http://220.181.38.150:80/index.htm
```
其中,“http://”告知瀏覽器通信協(xié)議的類型?!?20.181.38.150”是服務(wù)器的IP地址?!?80”表示要與對(duì)方的80號(hào)端口通信,“/index.htm”表示瀏覽器要請(qǐng)求的文件。不過(guò),目前這個(gè)IP地址毫無(wú)邏輯,難以記憶。于是我們編排一組文字來(lái)代替數(shù)字,這串文字叫做**域名**。我們用“www.baidu.com”代替原來(lái)的IP地址,就可以把剛才的網(wǎng)頁(yè)地址改寫成下面的樣子:
```
http://www.baidu.com:80/index.htm
```
遺憾的是,瀏覽器只能通過(guò)IP地址找到服務(wù)器。域名雖然方便記憶,但不能直接使用。我們把各種域名和對(duì)應(yīng)的IP地址存放在一種特殊的服務(wù)器中。這種服務(wù)器就是域名解析服務(wù)器(DNS)。在訪問(wèn)網(wǎng)站之前,瀏覽器先把域名發(fā)送給DNS,DNS查到對(duì)應(yīng)的IP地址再發(fā)回瀏覽器,這樣就完成了從域名到IP地址的轉(zhuǎn)換。你可能曾經(jīng)遇到這樣的狀況,電腦無(wú)法訪問(wèn)網(wǎng)站,但是QQ和微信卻正常通信。這就是DNS連接失敗造成的,導(dǎo)致域名不能被轉(zhuǎn)換成IP地址。而像QQ或者微信這類軟件,它們直接使用IP地址交換數(shù)據(jù),故不受影響。
書歸正傳,Web服務(wù)一般都使用80號(hào)端口,約定成俗。如果我們不寫端口號(hào),瀏覽器默認(rèn)把請(qǐng)求發(fā)送到80號(hào)端口上。還有,大多數(shù)服務(wù)器程序都設(shè)置了默認(rèn)的頁(yè)面,如果我們不寫明請(qǐng)求的文件,服務(wù)器程序會(huì)把默認(rèn)的頁(yè)面發(fā)送過(guò)來(lái)。所以,在瀏覽器的地址欄里,我們完全可以省略端口和請(qǐng)求的文件:
```
http://www.baidu.com
```
在現(xiàn)代的瀏覽器中,你甚至可以不寫協(xié)議類型,也就是說(shuō)可以省略“http://”,由服務(wù)器決定使用哪種協(xié)議進(jìn)行通信。
- 序言
- 第01章 網(wǎng)頁(yè)從哪里來(lái)
- 第02章 JavaScript的由來(lái)
- 第03章 JavaScript與Java的區(qū)別
- 第04章 網(wǎng)頁(yè)文件長(zhǎng)什么樣
- 第05章 寫一個(gè)Hello World程序
- 第06章 基本類型與變量
- 第07章 函數(shù)
- 第08章 對(duì)象與引用類型
- 第09章 函數(shù)的上下文
- 第10章 對(duì)象的構(gòu)造函數(shù)
- 第11章 包裝類
- 第12章 自動(dòng)類型轉(zhuǎn)換
- 第13章 控制結(jié)構(gòu)
- 第14章 Array類型
- 第15章 外部JS文件
- 第16章 重要的DOM
- 第17章 Node.js一撇
- 第18章 JS正在觸及的領(lǐng)域