【网络是怎么连接的】—— 1.2 向 DNS 服务器查询 Web 服务器的 IP 地址

目录

1.2 向 DNS 服务器查询 Web 服务器的 IP 地址

1.2.1 IP地址基础知识

1.2.2 域名和 IP 地址并用的理由

1.2.3 Socket 库提供查询 IP 地址的功能

1.2.4 通过解析器向 DNS 服务器发出查询

1.2.5 解析器的内部原理


1.2 向 DNS 服务器查询 Web 服务器的 IP 地址

1.2.1 IP地址基础知识

浏览器能解析网址并生成 HTTP 消息,但将消息发送到网络当中则需要委托操作系统实现。但无法将域名直接丢给操作系统,需要先根据域名查询ip地址。

互联网和公司内部的局域网基于 TCP/IP 的思路设计。

TCP:Transmission Control Protocol,传输控制协议。

IP:Internet Protocol,网际互连协议

在网络中,所有的设备都会被分配一个地址。这个地址就相当于现实中某条路上的“×× 号 ×× 室”。其中“号”(网络号)对应的号码是分配给整个子网的,而“室”(主机号)对应的号码是分配给子网中的计算机的,这就是网络中的地址。

IP地址=网络号+主机号,32bit,共4组,8bit(1字节)为一组,形式为10进制。至于网络号和主机号各多少位不固定,因此还需要子网掩码表示IP地址内部结构。

这种写法太长,可以直接写成: 10.1.2.3/24 (24表示前24位是网络号) 

主机号部分全0代表整个子网(0000 0000),主机号部分全1,即255(1111 1111)代表对整个子网进行广播。


1.2.2 域名和 IP 地址并用的理由

TCP/IP 网络通过 IP 地址确定通信对象。用 IP地址代替服务器名称也能正常工作,只是因为难记,所以用名称。

为什么有服务器名称还需要IP地址?

因为只用名称确定通信对象效率低。域名从几十字节到一两百字节(书中说最长为255字节,这里存在疑问)不等,ip地址只需要4字节,另外域名长度不固定也会造成处理效率低。因此名称给人使用,ip给路由器使用。而这两者之间互相查询则需要DNS。

DNS:Domain Name System,域名系统。它作为将域名IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS使用UDP端口53。当前,对于每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符。(来源:百度百科)


1.2.3 Socket 库提供查询 IP 地址的功能

查询ip地址只需要询问最近的DNS服务器,例如:

preview

向 DNS 服务器发出查询,也就是向 DNS 服务器发送查询消息,并接收服务器返回的响应消息。

通过 DNS 查询 IP 地址的操作称为域名解析,负责执行解析(resolution)操作的叫解析器(resolver)。解析器是一段程序,包含在操作系统的Socket 库里。


1.2.4 通过解析器向 DNS 服务器发出查询

解析器的函数名为 gethostbyname,调用很简单,如下所示:

 gethostbyname("www.blog.csdn.net");

DNS服务器返回相应消息后,解析器取出ip地址,写入浏览器指定的内存地址中。当浏览器向web服务器发消息时从内存地址中取出ip地址。


1.2.5 解析器的内部原理

解析器生成要发送给 DNS 服务器的查询消息,然后委托操作系统内部的协议栈(“协议驱动”“TCP/IP 驱动”)发送消息,通过网卡将消息发出。

如果 Web 服务器已经在 DNS 服务器上注册,DNS查询后就会把IP 地址写入响应消息并返回给客户端,再次经协议栈返回解析器,解析器读取消息取出ip地址写入应用程序(浏览器)的内存地址中。

另外,DNS服务器的ip地址事先设置好,不需要查询,我们平时电脑上就已经设置了,像360安全中心之类的软件也有DNS优选功能。


本节完。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值