持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第33天,点击查看活动详情
大家好,我是bug郭,一名双非科班的在校大学生。对C/JAVA、数据结构、Spring系列框架、Linux及MySql、算法等领域感兴趣,喜欢将所学知识写成博客记录下来。 希望该文章对你有所帮助!如果有错误请大佬们指正!共同学习交流
作者简介:
- CSDN java领域新星创作者blog.csdn.net/bug..
- 掘金LV3用户 juejin.cn/user/bug..
- 阿里云社区专家博主,星级博主,developer.aliyun.com/bug..
- 华为云云享专家 bbs.huaweicloud.com/bug..
DNS
DNS:域名系统(
Domain Name System) 啥是域名呢? 我们知道每台主机设备都有自己的IP地址!通过这个IP地址我们就可以访问该主机! 联系我们实际上网过程,难道我们访问一个网站的服务器是通过IP地址访问的嘛? 显然不是我们那能记得住那些IP地址呀,如果访问一个服务器都要记下一个IP地址那谁还上网对吧! 域名系统就很好的解决了这个问题!我们的IP地址记不住就算了! DNS通过一串英文单词标记一个IP地址,这一串英文单词就是这个网站的域名,通过这个域名就可以找到这个网站服务器的IP从而访问到服务器!
DNS就是管理域名的
刚开始时这些域名和IP地址的映射关系,保存在我们主机的系统文件中,通过这个文件,主机就可以根据域名找到IP地址!
系统中的这个
hosts文件就保存着域名和IP地址的映射!
可以看到文件中这里IP
127.0.0.1 通过域名local.id.seewo.com和 activate.navicat.com就可以访问.不过现在这种方式已经不用了!
DNS系统管理服务器
现在有一个专门管理域名的机构,通过这个机构,就可以申请登记域名和IP地址的映射关系,然后这个机构将这个映射关系保存在他的服务器上,在你的主机需要访问一个域名时,通过访问这个域名服务器就可以拿到这个域名对应的IP地址从而访问到服务器!
我们又想到一个问题,全世界这么多设备需要上网,如果都访问这个域名服务器那这个服务器不得挂!
确实如此,所以这个机构的域名服务器为根域名服务器,不同的区域还有响应的镜像域名管理系统服务器,不同的地方通过访问这个镜像服务器就可以获取到域名对应的IP.
我们的域名解析服务器有很多,我们的主机可以自己设置选择通过那个域名解析服务器解析域名!
我们通过这个设置就可以对域名解析器服务器进行选择!
默认是自动获取DNS也就是从运营商哪里获取!
也可以手动更改其他的域名解析服务器!
当我们浏览器查询一次域名解析服务器后,就会将这个结果保存在浏览器一段时间,下次访问就不用通过域名解析访问,可以直接访问了!
传输层
虽然除了应用层其他四次都是由操作系统内核实现,但是传输层协议的学习有助于当我们代码出现bug更加精准的找bug定位问题,修改问题!
我们知道传输层协议很多,但是我们主要来学习TCP和UDP这两个协议!
端口号 范围: 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数据! - 校验和 校验和就是检验接收方接收到的数据是否正确! 如何校验呢? 数据内容参与校验! 例如: 你要去买饮料,寝室的人都叫你带,而且买的饮料都不一样,这时,你如何知道有没有买正确呢?我们可以根据人数就可以确定数量是否正确,然后更加每瓶饮料的首个字,保存下来,然后对照买的饮料看看是否一样! 通过这样的方法,就可以校验是否正确! 而这里的内容校验也是类似,可以保证绝大多数时间我们接收的数据都是正确的!