DNS域名解析

190 阅读5分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第33天,点击查看活动详情

大家好,我是bug郭,一名双非科班的在校大学生。对C/JAVA、数据结构、Spring系列框架、Linux及MySql、算法等领域感兴趣,喜欢将所学知识写成博客记录下来。 希望该文章对你有所帮助!如果有错误请大佬们指正!共同学习交流

作者简介:

DNS

DNS:域名系统(Domain Name System) 啥是域名呢? 我们知道每台主机设备都有自己的IP地址!通过这个IP地址我们就可以访问该主机! 联系我们实际上网过程,难道我们访问一个网站的服务器是通过IP地址访问的嘛? 显然不是我们那能记得住那些IP地址呀,如果访问一个服务器都要记下一个IP地址那谁还上网对吧! 域名系统就很好的解决了这个问题!我们的IP地址记不住就算了! DNS通过一串英文单词标记一个IP地址,这一串英文单词就是这个网站的域名,通过这个域名就可以找到这个网站服务器的IP从而访问到服务器!

DNS就是管理域名的 刚开始时这些域名和IP地址的映射关系,保存在我们主机的系统文件中,通过这个文件,主机就可以根据域名找到IP地址! 在这里插入图片描述 系统中的这个hosts文件就保存着域名和IP地址的映射!

在这里插入图片描述 可以看到文件中这里IP127.0.0.1 通过域名local.id.seewo.comactivate.navicat.com就可以访问.不过现在这种方式已经不用了! DNS系统管理服务器 现在有一个专门管理域名的机构,通过这个机构,就可以申请登记域名和IP地址的映射关系,然后这个机构将这个映射关系保存在他的服务器上,在你的主机需要访问一个域名时,通过访问这个域名服务器就可以拿到这个域名对应的IP地址从而访问到服务器!

我们又想到一个问题,全世界这么多设备需要上网,如果都访问这个域名服务器那这个服务器不得挂! 确实如此,所以这个机构的域名服务器为根域名服务器,不同的区域还有响应的镜像域名管理系统服务器,不同的地方通过访问这个镜像服务器就可以获取到域名对应的IP. 我们的域名解析服务器有很多,我们的主机可以自己设置选择通过那个域名解析服务器解析域名! 在这里插入图片描述 我们通过这个设置就可以对域名解析器服务器进行选择! 默认是自动获取DNS也就是从运营商哪里获取! 也可以手动更改其他的域名解析服务器!

当我们浏览器查询一次域名解析服务器后,就会将这个结果保存在浏览器一段时间,下次访问就不用通过域名解析访问,可以直接访问了!

传输层

虽然除了应用层其他四次都是由操作系统内核实现,但是传输层协议的学习有助于当我们代码出现bug更加精准的找bug定位问题,修改问题! 我们知道传输层协议很多,但是我们主要来学习TCPUDP这两个协议!

端口号 范围: 2个字节大小; 0-65535之间的整数 知名端口号:把0-1024这些端口号划分为一些具体的作用 很多网络服务器是非常常用的 未来方便管理,及将这些服务分配了一些专门的端口号 这里并不是强制要求,而是建议! 例如: 80 http服务器 443 https服务器 22 ssh 23 ftp .... 我们自己部署http端口也可以绑定其他的端口,就像java中的tomcat就没有将http绑定在80端口,而是绑定在了8080端口!

UDP

学习一个协议很多时候就是研究他的报文格式

在这里插入图片描述 这里的报文格式排版并不之前,只是因为美观所以这样,实际上的报文格式如下所示:

在这里插入图片描述 就是我们之前分装的数据格式!

  • 源端口 源端口就是保存该主机程序的端口号
  • 目的端口 目的端口就是接收方主机程序服务器的端口号
  • 报文长度 这里的报文长度范围是2个字节大小,也是就0-65535,单位是字节! 也就是最大的报文长度64k一次传输的UDP传输层协议报文只能保存64k数据!
  • 校验和 校验和就是检验接收方接收到的数据是否正确! 如何校验呢? 数据内容参与校验! 例如: 你要去买饮料,寝室的人都叫你带,而且买的饮料都不一样,这时,你如何知道有没有买正确呢?我们可以根据人数就可以确定数量是否正确,然后更加每瓶饮料的首个字,保存下来,然后对照买的饮料看看是否一样! 通过这样的方法,就可以校验是否正确! 而这里的内容校验也是类似,可以保证绝大多数时间我们接收的数据都是正确的!