深入分析Java Web之 深入Web请求过程

1. 深入Web请求过程

1.1 B/S架构

1.1.1 B/S架构带来的好处

  1. 客户端使用统一的浏览器
    ① 浏览器具有统一性,不需要特殊的配置,有效的屏蔽了不同服务提供商提供给用户实现服务的差异,使用简单

  2. 服务的基于统一的HTTP
    ① 传统的C/S架构使用自定义的应用层协议,B/S使用统一的HTTP协议,为服务提供商简化了开发模式,使服务器开发者使用规范的开发模式;
    ② 对于服务开发者来说可以直接使用现有的基于HTTP的服务器(Apache,Nginx等),不用再单独开发,就连开发服务的通用框架都不需要单独开发,服务开发者只用关注服务的应用逻辑

1.1.2 B/S网络架构

前后端采用无状态的短连接通信,一次请求完成一次数据交互然后连接断开
这一点是为了同时服务更多用户

用户在浏览器输入www.taobao.com后到底发生了什么
在这里插入图片描述
① DNS将域名解析成相应的IP地址,然后根据IP地址寻找相应的服务器
② 向服务器发送get请求(对于别的请求也会是post等)
③ 服务器进行业务逻辑操作返回资源给访问的用户
④ 在服务器端可能还有很复杂的处理,比如多个服务器使,负载均衡设备指定处理这个请求的服务器
⑤ 浏览器解析数据的时候对于静态资源又会发起另外的HTTP请求,而这些静态资源可能会被存储在CDN上,CDN服务器再去处理这个请求

1.1.3 URL和URI

在这里插入图片描述

URL:统一资源定位符,表示是一个地址,包括协议,域名,端口号,资源文件名 http://www.google.com:80/index.html

URI:“A Uniform Resource Identifier (URI) 是一个紧凑的字符串用来标示抽象或物理资源。”

“A URI 可以进一步被分为定位符、名字或两者都是. 术语“Uniform Resource Locator” (URL) 是URI的子集, 除了确定一个资源,还提供一种定位该资源的主要访问机制(如其网络“位置”)

URL是URI的一种,URI是URL的抽象,URL具体化了URI的某一部分,也就是说URL不仅表示了要请求资源的名称,而且确定了要访问资源的地址

1.2 如何发起一个请求

发起一个请求实际上就是建立一个Socket连接,只不过对于浏览器来说,根据地址栏里的URL的域名DNS解析成IP地址,再根据IP地址和端口号与远程服务器建立Socket连接,再把相应的信息封装成HTTP请求,通过outputStream.write发送给目标服务器

自己实现这一过程

//todo

1.3 HTTP解析

HTTP协议

浏览器缓存机制 Ctrl+F5刷新到底做了什么
当浏览一个页面发现异常的时候通常会考虑是不是浏览器做了缓存,按下Ctrl+F5进行刷新会向目标URL重新发送请求,而且为了防止应用服务器的前端部署的缓存服务器的影响,在这次访问的HTTP的请求头上会增加一些请求头告诉服务端我们要获得的是最新数据而不是缓存
① Pragma:no-cache
在这里插入图片描述
② Cache-Control:no-cache
在这里插入图片描述
用于指定所有的缓存机制在整个响应/请求链中必须服从的指令,而且优先级耶比较高,当和其他的一些请求字段,比如Expire同时出现的时候,会覆盖其他字段

其他字段的简介
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值