使用DNS查询Web服务器IP地址

浏览器并不具备访问网络的功能,其最终是通过操作系统 实现的,委托操作系统访问服务器时提供的并不是浏览器里面输入的域名而是ip地址,因此第一步需要将域名转换为对应的ip地址

域名:www.baidu.com

ip地址是一串数字

tcp/ip的网络结构:

计算机通过集线器连接在一起构成一个个子网,子网间再通过路由器连接起来(有些路由器中已经集成了集线器)

每个计算机都会被分配一个ip地址,定位规则:

先通过ip地址中的主机号查找到服务器所在的子网接着在利用网络号在定位到的子网中找到服务器

定位到服务器的ip地址就可以向服务器发送数据了


发送网络请求的大致流程:

先到达子网中的路由器,路由器根据服务器的ip查找到下一个路由器的地址(处于同一个子网中),在到达路由器所属子网的路由器中,接着重复一级一级往上转发最终到达服务器

ip地址中的 主机号&网络号

ip地址是包含了网络号和主机号的32个比特的数字

切割ip地址

如何区分哪部分是网络号,哪部分是主机号,是通过附加信息来体现的也就是掩码; 掩码位于IP地址后面通过/分割。将掩码转换为二进制后进行和IP地址的&操作


掩码可以采用同样的32个字节的数字表示(1的部分为网络号,0为主机号 和IP地址与运算得出,比如B);也可只记录网络号的长度(比如C)。

IP和域名各自优缺点

IP:TCP/IP协议是通过IP地址通信的,但是人们很难记住IP地址,相反使用域名人们只要知道这个服务器网站的名字就可以,很方便也很好记忆

域名 :域名虽然相对好记,但是如果使用域名代替IP地址的话也是可以的(Windows网络原型PC-Networks就是使用域名代替的ip通信的);那么为什么这种方式不用了呢? 这是因为域名的长度不固定需要处理大量的字符,但是IP地址的话就是固定的4个字节的数据,路由器在中转传输的时候压力就会小很多。

结合各自优势来看的话,各有各的好处,但是也有缺点。域名相对于人来说更好记忆,相对路由器来说IP地址处理的效率会更高 。那么就需要一个转换的机制来做映射,通过域名查找IP给路由器使用,这个转换器就是DNS服务器

域名解析

DNS客户端(使用域名访问的机器)也叫作DNS解析器,使用DNS查找域名对应的IP地址叫做域名解析,那么浏览器如何向DNS服务器发起查询的呢?

答案是使用Socket程序库

大致流程

浏览器会调用socket库中的getHostByname程序并把对应域名填写到参数中,之后发起请求,DNS服务器会返回具体的IP地址,操作系统把这个IP地址写入到浏览器指定的内存地址中。当浏览器访问的时候从这块内存中取出IP地址并和请求信息一并交给操作系统处理。

原文链接:使用DNS查询Web服务器IP地址 - 掘金 (juejin.cn)

相关推荐
碎梦归途4 小时前
思科网络设备配置命令大全,涵盖从交换机到路由器的核心配置命令
linux·运维·服务器·网络·网络协议·路由器·交换机
七维大脑虚拟机5 小时前
飞牛NAS公网IPv6+DDNS远程访问零延迟教程
运维·服务器·网络
fanruitian5 小时前
uniapp android开发 测试板本与发行版本
前端·javascript·uni-app
rayufo5 小时前
【工具】列出指定文件夹下所有的目录和文件
开发语言·前端·python
RANCE_atttackkk5 小时前
[Java]实现使用邮箱找回密码的功能
java·开发语言·前端·spring boot·intellij-idea·idea
小天源5 小时前
nginx在centos7上热升级步骤
linux·服务器·nginx
2501_944525546 小时前
Flutter for OpenHarmony 个人理财管理App实战 - 支出分析页面
android·开发语言·前端·javascript·flutter
李白你好7 小时前
Burp Suite插件用于自动检测Web应用程序中的未授权访问漏洞
前端
宴之敖者、7 小时前
Linux——\r,\n和缓冲区
linux·运维·服务器
LuDvei7 小时前
LINUX错误提示函数
linux·运维·服务器