实习日记07/27 day14 理解JavaWeb--理解Web请求过程
2021/7/28 17:36:23
本文主要是介绍实习日记07/27 day14 理解JavaWeb--理解Web请求过程,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
理解Web请求过程
首先是整体概念
以上就是发送一次HTTP请求所经历的所有的过程。
重点概念–两解析一机制
1. HTTP解析
HTTP的定义:
HTTP,超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法,HTTP是一种基于"请求与响应"模式的、无状态的应用层协议。HTTP协议采用URL作为定位网络资源的的标识符。
http://host[:post][path]
host:合法的Internet主机域名或ip地址
port:端口号,缺省为80
path:请求资源的路径
例如 :
以localhost:8899/download
我们在使用SpringBoot搭建项目的时候,设置的Conrtoller中使用@RequestMapping注解来规定初步的请求映射,并在方法中返回download页面。
想要理解HTTP,最重要的是要理解HTTP中的header,
可以在Chrome中F12查看Header信息
小知识点:当你遇到错误,或是想更新页面信息,这时候采用ctrl+f5刷新,其实通过在header中加入增加no-cache,避免了浏览器加载缓存,从而更新了浏览器的数据。
HTTP的各个版本
主要讲讲0.9、1.0、1.1和2.0的主要区别
首先是HTTP0.9,比较的简单仅支持请求方式GET,并且仅能请求访问HTML格式的资源。
其次是1.0,最早使用在1996年在0.9版本上做了进步,增加了请求方式POST和HEAD;不再局限于0.9版本的HTML格式,根据Content-Type可以支持多种数据格式,即MIME多用途互联网邮件扩展,例如text/html、image/jpeg等;同时也开始支持cache,就是当客户端在规定时间内访问统一网站,直接访问cache即可。再次,HTTP请求和回应的格式也变了。除了数据部分,每次通信都必须包括头信息(HTTP header),用来描述一些元数据。其他的新增功能还包括状态码(status code)、多字符集支持、多部分发送(multi-part type)、权限(authorization)、缓存(cache)、内容编码(content encoding)等。但是1.0版本的工作方式是每次TCP连接只能发送一个请求,当服务器响应后就会关闭这次连接,下一个请求需要再次建立TCP连接,就是不支持keepalive。TCP连接的新建成本很高,因为需要客户端和服务器三次握手,并且开始时发送速率较慢(slow start)。所以,HTTP 1.0版本的性能比较差。随着网页加载的外部资源越来越多,这个问题就愈发突出了。
相比于1.0,1.1在以下几点有区别:
- 缓存处理
- 带宽优化和网络连接的使用上做出改进
- 错误通知的管理
- Host头处理
- 长连接
而2.0的变化主要体现在:
- 新的二进制格式
- 多路复用
- header压缩
- 服务端推送等方面
2. DNS解析
将域名解析成IP地址才能与远程主机建立连接,如何将域名解析成IP地址就属于DNS解析的工作范畴。
DNS的解析过程
首先当我们输入www.baidu.com的时候,浏览区会检查浏览器缓存中是否存在该DNS解析,如果没有电脑的DNS会检查host文件中有无存储该DNS的解析,我们应该都遇到过GitHub连接缓慢的问题,修改的就是电脑上存储的DNS解析 etc/host。如果还是无法访问就要连接本区域的域名服务器去解决。我们把本地的DNS解析器称为LDNS,一般在小区附近,百分之八十的域名解析到这已经结束,但是如果还没有完成,就要到RootDNS解析器中去处理,最终在层层返回将域名解析结果发送给我们。
我们可以使用nslookup命令查看域名解析结果
几种域名解析方式
- A记录,A代表的是Address,用来指定域名对应的IP地址
- MX记录,表示的是Mail Exchange,就是可以将某个域名下的邮件服务器指向自己的Mail Server
- CNAME 全称是别名解析,所谓的别名解析就是可以将一个域名设置一个或者多个别名
- NS记录为某个为某个域名制定DNS解析服务器
- TXT记录,为某个主机名或域名设置说明
3. CDN工作机制
CDN也就是内容分布网络,它是构建在现有的Internet上的一种先进的流量分配网络。,可以使我们就近获取所需的内容,提高我们访问网站的速度。
CDN=镜像+缓存+整体负载均衡
CDN要达到下面的三个目标:
- 可扩展
- 安全性
- 可靠性
这篇关于实习日记07/27 day14 理解JavaWeb--理解Web请求过程的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-20RabbitMQ教程:新手入门指南
- 2024-11-20Redis教程:新手入门指南
- 2024-11-20SaToken教程:新手入门指南
- 2024-11-20SpringBoot教程:从入门到实践
- 2024-11-20Java全栈教程:从入门到实战
- 2024-11-20Java微服务系统教程:入门与实践指南
- 2024-11-20Less教程:初学者快速上手指南
- 2024-11-20MyBatis教程:新手快速入门指南
- 2024-11-20QLExpress教程:初学者快速入门指南
- 2024-11-20订单系统教程:从入门到实践的全面指南