使用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)

相关推荐
用户2181697049304 分钟前
Flutter(九)StatelessWidget StatefullWidget
前端
paopaokaka_luck5 分钟前
基于springboot3+vue3的乡村医生诊疗管理系统(AI助手、协同过滤算法、webSocket实时聊天、Echarts图形化分析)
前端·网络·人工智能·spring boot·websocket·网络协议·echarts
编程风暴6 分钟前
3类人群的数据分析实习类型选择+4条选错红线
java·前端·数据分析
其美杰布-富贵-李6 分钟前
Vue 3 模块导入教程:import、export 与文件组织
前端·javascript·vue.js
Bigger17 分钟前
堆了 20 套主题、10+ 组件,用户还是用不出来?我给设计 Skill 加了「自动驾驶」
前端·ai编程·视觉设计
贾天佑忆月 迷失的昵33 分钟前
.NET Web开发技术简单整理
前端·.net
小π军35 分钟前
计算机网络
服务器·计算机网络
Cobyte1 小时前
Vite & Rollup 插件开发实践
前端·javascript·vue.js
朝阳391 小时前
react19【系列实用教程】实用组件封装
开发语言·前端·javascript
IT_陈寒1 小时前
React的useEffect依赖数组把我坑惨了,原来这样写才靠谱
前端·人工智能·后端