IP地址
- 位(bit)
TCP/IP
:一些小的子网,通过路由器连接起来组成一个大的网络
定义:
- IP地址是一串32比特的数字,8比特一组,分成四组
- 网络号和主机号连起来总共是32比特,但这两部分的具体结构是不固定的
- “号”对应的号码是分配给整个子网的,而“室”对应的号码是分配给子网中的计算机的,这就是网络中的地址。“号”对应的号码称为网络号,“室”对应的号码称为主机号,这个地址的整体称为IP地址
例如:10.11.12.13
子网掩码:
- 32比特数字,其左边一半都是1(表示网络号),右边一半都是0(表示主机号)
- 每8比特为一组
- 子网掩码表示网络号与主机号之间的边界,正好划分在句点位置上,左边是网络号,右边是主机号
10.10.56.17/32
子网掩码有32个1 为255.255.255.255
,表示只有10.10.56.17
可以通过
192.168.10.0/24
子网掩码有24个1 为255.255.255.0
,表示192.168.10.*
的都可以通过
192.168.10.0/16
子网掩码有16个1 为255.255.0.0
, 表示192.168.*.*
的都可以通过
0.0.0.0/0
表示全网通- 子网和广播
域名和IP地址并用的理由
- IP地址的长度为32位,也就是4字节,使用IP地址只需要处理4字节的数字,而域名则需要处理几十个到255个字节的字符
操作系统的相关支持
Socket库
:可以让其他的应用程序调用操作系统的网络功能解析器
:是Socket
库中的一个组件
对于DNS服务器,我们的计算机上一定有相应的DNS客户端,而相当于DNS客户端的部分称为DNS解析器,或者简称解析器。通过DNS查询IP地址的操作称为域名解析,因此负责执行解析(resolution)这一操作的就叫解析器(resolver)了- 对解析器的调用:调用解析器向DNS服务器查询IP地址
DNS查询过程概述
- 流程控制转移:当到达需要调用解析器的部分时,对应的那一行程序就会被执行,应用程序本身的工作就会暂停
- 当到达需要调用解析器的部分时,对应的那一行程序就会被执行,应用程序本身的工作就会暂停,这种状态被称为"流程控制转移"
- 当控制流程转移到解析器后,解析器会生成要发送给DNS服务器的查询消息,发送消息这个操作并不是由解析器自身来执行,而是要委托给操作系统内部的协议栈来执行,解析器调用协议栈后,控制流程会再次转移
- 接下来,消息经过网络到达客户端,再经过协议栈被传递给解析器,然后解析器读取出消息取出IP地址,并将IP地址传递给应用程序
- DNS服务器的IP地址是作为TCP/IP的一个设置项目事先设置好的,不需要再去查询了
- 接下来,浏览器在向Web服务器发送消息时,只要从该内存地址取出IP地址,并将它与HTTP请求消息一起交给操作系统就可以了
DNS服务器
- 接收来自客户端的查询消息,然后根据消息的内容返回响应
来自客户端的查询消息包含:
域名
:服务器、邮件服务器(邮件地址中@后面的部分)的名称Class
:永远都是代表互联网的IN记录类型
:表示域名对应何种类型的记录(当类型为A时,表示域名对应的是IP地址;当类型为MX时,表示域名对应的是邮件服务器;根据IP地址反查域名的PTR类型;查询域名相关别名的CNAME类型;查询DNS服务器IP地址的NS类型;以及查询域名属性信息的SOA类型)
- 例:查询
www.lab.glasscom.com
这个域名对应的IP地址
向DNS服务器发送消息:
域名=www.lab.glasscom.com
Class =IN
记录类型=A
DNS服务器进行查询,发现有域名所对应的IP地址,所以将192.0.2.226
返回
域名的层次结构
- 在域名中,越靠右的位置表示其层级越高
www.nikkeibp.co.jp
域名
www
、nikkeibp
、co
、jp
都是域
最上层的jp
代表分配给日本这个国家的域;
下一层的co
是日本国内进行分类的域,代表公司;
再下层的nikkeibp
就是分配给某个公司的域;
最下层的www
就是服务器的名称- 一个域的信息是作为一个整体存放在DNS服务器中的,不能将一个域拆开来存放在多台DNS服务器中
- 一台DNS服务器中也可以存放多个域的信息
DNS服务器具有像域名一样的层次结构,每个域的信息都存放在相应层级的DNS服务器中
寻找相应的DNS服务器并获取IP地址
- 将负责管理下级域的DNS服务器的IP地址注册到它们的上级DNS服务器中,然后上级DNS服务器的IP地址再注册到更上一级的DNS服务器中
例:负责管理lab.glasscom.com这个域的DNS服务器的IP地址需要注册到glasscom.com域的DNS服务器中,而glasscom.com域的DNS服务器的IP地址又需要注册到com域的DNS服务器中 - 根域:没有名字,一般省略,如果要表示,可以在域名的最后加上一个点(www.lab.glasscom.com.)
储存着com、jp….的信息
将根域的DNS服务器信息保存在互联网中所有的DNS服务器中
通过缓存加快DNS服务器的响应
- 一台DNS服务器可以管理多个域的信息
- 如果要查询的域名和相关信息已经在缓存中,那么就可以直接返回响应,接下来的查询可以从缓存的位置开始向下进行
- 相关信息包括:不存在,如果下次查询这个不存在的域名时,也可以快速响应
- DNS服务器中保存的信息都设置有一个有效期,当缓存中的信息超过有效期后,数据就会从缓存中删除。而且,在对查询进行响应时,DNS服务器也会告知客户端这一响应的结果是来自缓存中还是来自负责管理该域名的DNS服务器。