1.2.1 IP地址的基本知识
- 生成http请求消息后,下一步就是根据域名查询IP地址。
- TCP/IP的结构就是由茫茫多的子网通过路由器连接起来组成一个大的网络,在网络中每个设备都会被分配一个地址,地址包括子网号和主机号,网络号可以理解为子网号,主机号可以理解为设备在子网内的编号,整个地址的整体称为IP地址。
- IP地址是一串32比特的数字,8比特为一组分成4组,分别用十进制表示然后再用圆点隔开。
- 区分IP地址网络号和主机号的附加信息称为子网掩码,子网掩码为1的部分表示网络号,为0的部分表示主机号。
10.11.12.13/255.255.255.0 与IP地址主题相同格式的子网掩码
10.11.12.13/24 采用网络号比特数表示子网掩码的方法
10.11.12.0/24 主机号部分比特全部为0,表示的不是单台设备,而是整个子网
10.11.12.255/24 主机号部分全部为1,表示对整个子网进行广播
1.2.2 域名和IP地址并用的理由
- TCP/IP网络是通过IP地址来确定通信对象的,因此必须知道IP地址才能发消息。
- 网络中使用域名是因为域名比IP地址容易记住。
- 传送数据时用IP地址,是因为IP地址一共只占用4个字节,相比域名的几十甚至几百个字节,减少了路由器的负担,也提高了传送数据的效率。再者,域名不是定长数据,而处理长度不定的数据要比处理长度固定的数据复杂。
- DNS:Domain Name System,域名服务系统。最重要的功能是通过名称查询IP地址,通过IP地址查询名称。
1.2.3 Socket库提供查询IP地址的功能
- 计算机向DNS服务器发出查询需要有DNS客户端,又称为DNS解析器或解析器,通过DNS查询IP地址的操作称为域名解析。
- 解析器实际上是一段程序,包含在操作系统的Socket库中。库就是一堆通用程序组件的集合
- Socket库包含的程序组件可以让其他应用程序调用操作系统的网络功能,解析器就是苦衷的其中一种程序组件。
1.2.4 通过解析器向DNS服务器发出查询
- 只需要在应用程序中调用解析器提供的域名解析方法,即可完成IP地址查询。
例如:<内存地址> = gethostbyname("www.lab.glasscom.com"); - 根据域名查询IP地址时,浏览器会使用Socket库中的解析器。
1.2.5 解析器的内部原理
- 网络应用程序调用解析器时,程序的控制流程转移到解析器内部,解析器得到IP地址并写入应用程序指定的内存地址后,控制流程回到应用程序。
- http消息是用文本编写,DNS消息是二进制数据。
- DNS服务器的IP地址是作为TCP/IP的一个设置项目事先设置好的。