计算机网络-应用层的DNS与HTTP

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

继续开坑,后面慢慢填吧,越学习,越会发现系统化的构建知识的重要性,以及深入的了解,才能更加的自由的去使用。也注意到自己以前没有留意的地方,其实对于前端开发,计算机网络的重要性是挺重要的,在这一部分还包括浏览器,HTTP,网络安全,优化等方面。为了一步一步有递进和条理,我打算先从计算机网络开始,再深入HTTP,到浏览器,最后再来梳理见解其他一些杂项,才学浅疏,希望路过大佬不吝赐教,路漫漫其修远兮,吾将上下而求索!

一、计算机网络

  • 概论
    奈何当年不知勤学好,错把外包当成宝,觉得做出东西就很不错了,现在才明白,基础的东西才是最关键的,技术一直在变,框架,语言,但它们核心的原理是共通的。掌握核心知识才能不变应万变~~
  • 回想大学学习计算机网络的时候,是从物理层开始往上讲解的,但我个人比较喜欢从开始到结尾,那么我们在发起一个请求的过程中就是从应用层一层层往下的,所以我打算就根据一个请求的经过路径来介绍计算机网络
    下面为就是整个计算机网络的概要图,整个的核心就是围绕着七个层级(七层协议)进行探索,而这七层其实的就是协议,每一层所使用的协议也就是规则,协议相当于约定吧,是两个对等实体间进行通信的规则的集合,只有按照双方约定的规则才合法。另外协议是水平的,但服务是垂直的,是由下层通过层间接口向上提供服务的。(这破图太难化画了,有没有啥好用免费的画流程图的工具推荐~~)

在这里插入图片描述

二、应用层

  • 概论
    • 在这里我们把应用层看做第一层,它的主要作用就是通过应用进程间的交互完成特定的网络应用。应用层定义的协议就是应用进程间的通信和规则。简单来说就是我们的软件要做什么需要遵守的,为解决某个应用问题的。如寻找ip的域名系统DNS,或者发送邮件的SMTP,发送万维网的协议HTML。
    • 在这里我们将两个最为重要的协议DNS和HTML

DNS

定义

  • DNS是域名系统 (Domain Name System) 的缩写,它是由解析器和域名服务器组成的,又名“域名解析服务器”.,把机器名称转换为IP地址的系统,靠它把你要访问的网址找到然后把信息送到你电脑上

解析过程

  • 某个应用进程需要把主机名解析为ip ,就会调用解析程序,并成为DNS的一个用户。
  • 把待解析的域名放到DNS请求报文中,以UDP用户数据报方式发送给本体域名,如果在本地域名找得到,就放到回答报文返回,进程获取后就用这个ip进行通信。
  • 如果没有找到,就会向其它域名服务器发送请求。
  • 为了提高效率,减低消耗,会有缓存机制。
  • 下面我们深入讨论一下这个过程。

域名查询

  • 主机向本地域名服务器查询
    • 一般是递归查询
    • 当在本地的域名服务器没有找到时,本地服务器就会以DNS的身份向其它的根域名服务器继续向其它根域名发出查询请求报文,没找到时,其它的根域名服务器会以DNS的身份向其它的根域名服务器继续向其它根域名发出查询请求报文,直到找到或报错。
    • 比如:你要找一本书,去到图书馆,你问图书馆管理员A书在哪,管理员A找到了给你,没找到管理员A就会向管理员B问这本书,管理员B就会去找,找到了给管理员A,管理员A再给你。找到最后没找到就很遗憾告诉你,没有这本书。
  • 本地域名服务器向根域名服务器发送请求
    • 一般是迭代查询
    • 一般是本地的域名服务器向其它根域名服务器发送请求,要么返回所找的ip,要么返回告诉本地的域名服务器去哪找。
    • 比如:你要找一本书,去到图书馆,你问图书馆管理员A书在哪,管理员A找到了给你,没找就告诉你可能在管理员B那,你得自己去问管理员B,管理员B找到了给你,没找到的话就告诉你可能在管理员C那…找到最后没找到就很遗憾告诉你,没有这本书。

那么其实本地的查询方式,取决于最初查询请求报文的设置是哪一种方式

在这里插入图片描述
具体的过程查询

  • 首先会向本地hosts查询有没有这个域名的映射,查询没有
  • 就会去本地域名解析器缓存查询有没有,查询没有
  • 就会去本地域名服务器查询,首先先看是否在本地域名服务器的配置区域资源中,在的话返回,不在的话看看缓存有没有,查询没有
  • 就会去根域名服务器查询(根域名服务器有13个),判断这个域名归谁管,返回该顶级域名服务器的ip
  • 本地域名服务器向顶级域名服务器进行查询。
  • 顶级域名服务器告诉本地域名服务器,下一步查询权限服务器的IP地址
  • 本地域名服务器向权限服务器进行查询
  • 权限服务器告诉本地域名服务器所查询的主机的IP地址
  • 本地域名服务器最后把查询结果告诉主机

缓存

  • 提高DNS查询效率,减轻根服务器的负担和减少DNS的查询报文会使用高速缓存
    在这里插入图片描述

  • 1.浏览器缓存

    • 浏览器会先检查是否在缓存中,没有则调用系统库函数进行查询。
  • 2 操作系统缓存

    • 操作系统也有自己的 DNS缓存,但在这之前,会向检查域名是否存在本地的 Hosts 文件里,没有则向 DNS 服务器发送查询请求。
  • 3.路由器缓存

    • 路由器也有自己的缓存。
  • 4.ISP DNS 缓存

    • ISP DNS 就是在客户端电脑上设置的首选 DNS 服务器,它们在大多数情况下都会有缓存。

问答区

CDN 是什么?和DNS有关系吗?

解答

这两者平没有任何关系哦,不要以为他们感觉起来像有啥关系的~~
CDN也就是 内容分发网络
CDN是构建在现有网络基础之上的智能虚拟网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。CDN的关键技术主要有内容存储和分发技术。
这篇文章介绍不错到底什么是CDN?

HTML概括

定义

  • 浏览器如何万维网服务器请求万维网文档,以及服务器如何把文档发送给浏览器
  • 超文本传输协议,基于请求与响应,无状态的,应用层的协议,常基于TCP/IP协议传输数据,互联网上应用最为广泛的一种网络协议,所有的WWW文件都必须遵守这个标准。设计HTTP的初衷是为了提供一种发布和接收HTML页面的方法。
  • 默认为80端口

URI

  • URI用来定位互联网上的资源。正是因为URI的唯一性,在互联网上任意位置的资源都能访问到。

HTTP0.9/1.0/1.1/2.0

  • HTTP0.9
    • 仅支持GET请求,不支持请求头, 只能传输纯文本内容, 典型的无状态连接
  • HTTP1.0
    • 默认短连接(一次请求建议一次TCP连接,请求完就断开),但是增加了keep-alive关键字来由短链接变成长连接,就是请求报文里的字段指定Connection:keep-alive;支持GET、POST、 HEAD请求。
    • 无法复用,每次都得经历三次握手和慢启动
  • HTTP1.1
    • 默认长连接(非流水和流水方式)等
  • HTTP2.0
    • 多路复用等

HTTP报文结构

响应报文
在这里插入图片描述

请求报文
在这里插入图片描述

  • 请求行
    • 区分响应和请求报文,包含请求方法,请求URL,HTTP版本
  • 响应行
    • 区分响应和请求报文,包含响应结果状态码,原因短语,HTTP版本
  • 首部行
    • 包含表示请求和响应的各种条件和属性的各类首部。一般有4种首部,分别是:通用首部、请求首部、响应首部和实体首部。
  • 实体内容

请求方法

  • OPTION
  • GET
  • HEAD
  • POST
  • PUT
  • DELETE
  • TRACE
  • CONNECT

状态码

  • 1XXX:表示通知请求
  • 2XXX:表示成功
  • 3XXX:表示重定向
  • 4XXX:表示客户端错误
  • 5XXX:表示服务端错误

cookie

定义

  • 当用户浏览某个使用cookie的网站时,该网站就会为他产生一个唯一的识别码。

总结

这一章讲到应用层,在这一层DNS和HTTP都很重要,但这里没有对HTTP深入介绍,因为HTTP还有很多的知识,这里我们只是介绍HTTP框架知识,后面会针对写一篇详细的介绍。理解这一层的协议也是非常重要的,是后面很多的基础。在这里也参考了很多的书籍,也建议多大家看看《图解HTTP》和《计算机网络》,Yes,go go go!!

提问环节

1.为什么机器用IP地址不用域名?

答:域名的长度不是固定的,机器处理起来会麻烦

2.DNS使用UDP还是TCP?

答:DNS区域传输的时候使用TCP协议,域名解析时使用UDP协议

3.DNS中为什么有递归查询和迭代查询两种方式?

答:递归查询:本机(客户端)向本地域名服务器是使用递归查询,一去一回得到域名结果的过程,
迭代查询:本地域名服务器一步一步,历经千辛万苦获得域名的过程。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

文默

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值