1.2.1 IP地址的基本知識(shí)
- 生成http請(qǐng)求消息后,下一步就是根據(jù)域名查詢IP地址。
- TCP/IP的結(jié)構(gòu)就是由茫茫多的子網(wǎng)通過路由器連接起來(lái)組成一個(gè)大的網(wǎng)絡(luò),在網(wǎng)絡(luò)中每個(gè)設(shè)備都會(huì)被分配一個(gè)地址,地址包括子網(wǎng)號(hào)和主機(jī)號(hào),網(wǎng)絡(luò)號(hào)可以理解為子網(wǎng)號(hào),主機(jī)號(hào)可以理解為設(shè)備在子網(wǎng)內(nèi)的編號(hào),整個(gè)地址的整體稱為IP地址。
- IP地址是一串32比特的數(shù)字,8比特為一組分成4組,分別用十進(jìn)制表示然后再用圓點(diǎn)隔開。
- 區(qū)分IP地址網(wǎng)絡(luò)號(hào)和主機(jī)號(hào)的附加信息稱為子網(wǎng)掩碼,子網(wǎng)掩碼為1的部分表示網(wǎng)絡(luò)號(hào),為0的部分表示主機(jī)號(hào)。
10.11.12.13/255.255.255.0 與IP地址主題相同格式的子網(wǎng)掩碼
10.11.12.13/24 采用網(wǎng)絡(luò)號(hào)比特?cái)?shù)表示子網(wǎng)掩碼的方法
10.11.12.0/24 主機(jī)號(hào)部分比特全部為0,表示的不是單臺(tái)設(shè)備,而是整個(gè)子網(wǎng)
10.11.12.255/24 主機(jī)號(hào)部分全部為1,表示對(duì)整個(gè)子網(wǎng)進(jìn)行廣播
1.2.2 域名和IP地址并用的理由
- TCP/IP網(wǎng)絡(luò)是通過IP地址來(lái)確定通信對(duì)象的,因此必須知道IP地址才能發(fā)消息。
- 網(wǎng)絡(luò)中使用域名是因?yàn)橛蛎菼P地址容易記住。
- 傳送數(shù)據(jù)時(shí)用IP地址,是因?yàn)镮P地址一共只占用4個(gè)字節(jié),相比域名的幾十甚至幾百個(gè)字節(jié),減少了路由器的負(fù)擔(dān),也提高了傳送數(shù)據(jù)的效率。再者,域名不是定長(zhǎng)數(shù)據(jù),而處理長(zhǎng)度不定的數(shù)據(jù)要比處理長(zhǎng)度固定的數(shù)據(jù)復(fù)雜。
- DNS:Domain Name System,域名服務(wù)系統(tǒng)。最重要的功能是通過名稱查詢IP地址,通過IP地址查詢名稱。
1.2.3 Socket庫(kù)提供查詢IP地址的功能
- 計(jì)算機(jī)向DNS服務(wù)器發(fā)出查詢需要有DNS客戶端,又稱為DNS解析器或解析器,通過DNS查詢IP地址的操作稱為域名解析。
- 解析器實(shí)際上是一段程序,包含在操作系統(tǒng)的Socket庫(kù)中。庫(kù)就是一堆通用程序組件的集合
- Socket庫(kù)包含的程序組件可以讓其他應(yīng)用程序調(diào)用操作系統(tǒng)的網(wǎng)絡(luò)功能,解析器就是苦衷的其中一種程序組件。
1.2.4 通過解析器向DNS服務(wù)器發(fā)出查詢
- 只需要在應(yīng)用程序中調(diào)用解析器提供的域名解析方法,即可完成IP地址查詢。
例如:<內(nèi)存地址> = gethostbyname("www.lab.glasscom.com"); - 根據(jù)域名查詢IP地址時(shí),瀏覽器會(huì)使用Socket庫(kù)中的解析器。
1.2.5 解析器的內(nèi)部原理
- 網(wǎng)絡(luò)應(yīng)用程序調(diào)用解析器時(shí),程序的控制流程轉(zhuǎn)移到解析器內(nèi)部,解析器得到IP地址并寫入應(yīng)用程序指定的內(nèi)存地址后,控制流程回到應(yīng)用程序。
- http消息是用文本編寫,DNS消息是二進(jìn)制數(shù)據(jù)。
- DNS服務(wù)器的IP地址是作為TCP/IP的一個(gè)設(shè)置項(xiàng)目事先設(shè)置好的。