文章目录
- Web基础-HTTP
- 1、什么是项目
- 2、什么是架构?
- 3、架构所需关键词
- 4、什么是集群?
- 5、什么是负载均衡?
- 6、http概述
- 6.1、Web状态访问码
- 6.2、Web的结构组成
- 6.3、有哪些Web资源?
- 6.4、HTTP的工作原理
- 6.5、HTTP请求响应
- 6.6、HTTP相关术语
- 6.7、HTTP协议的原理
- 用户访问网站整体的流程
Web基础-HTTP
1、什么是项目
项目是人们通过努力,运用新的方法,将人力的、材料的和财务的资源组织起来,在给定的费用和时间约束规范内,具有明确目标的一次性工作任务,以期达到由数量和质量指标所限定的目标,类似于手机的app,每一个app都可以算做一个项目
2、什么是架构?
- 根据要解决的问题,对目标系统的边界进行界定。
- 并对目标系统按某个原则的进行切分。切分的原则,要便于不同的角色,对切分出来的部分,并行或串行开展工作,一般并行才能减少时间
- 并对这些切分出来的部分,设立沟通机制
- 使得这些部分之间能够进行有机的联系,合并组装成为一个整体,完成目标系统的所有工作
3、架构所需关键词
- 可靠性(Reliable) - 安全性(Secure) - 可扩展性(Scalable) - 可定制化(Customizable) - 可伸缩 (Extensible) - 可维护性(Maintainable) - 客户体验(Customer Experience) - 市场时机(Time to Market)4、什么是集群?
一组相互独立的、通过高速网络互联的计算机,它们构成了一个组,并以单一系统的模式加以管理。
5、什么是负载均衡?
将用户的请求,分摊到多个操作单元上执行,保证服务器的稳定性。
6、http概述
http:超文本传输协议
URL:统一资源定位【https://www.baidu.com:80/文件路径】
http的访问流程
web资源:当前主流的所有资源都可以识别
6.1、Web状态访问码
200直接成功301永久重定向(redirect)302临时重定向(redirect)304浏览器缓存307内部重定向(redirect)400客户端错误401认证失败403请求不到首页,权限被拒绝404资源找不到413访问的文件太大,不支持500服务器内部错误,程序代码错误502找不到后端的资源 bad gateway503服务器过载504请求超时6.2、Web的结构组成
C/S:客户端和服务端 B/S:浏览器和服务端 - 代理 - 位于客户端和服务器之间的HTTP中间实体 - 缓存 - HTTP的仓库,使常用页面的副本可以保存在离客户端更近的地方 - 网关 - 连接其他应用程序的特殊Web服务器 - 隧道 - 对HTTP通信报文进行盲转发的特殊代理 - Agent代理 - 发起自动HTTP请求的半智能Web客户端6.3、有哪些Web资源?
text/html,html格式的文本文档 text/plain,普通的ASCII文本文档 image/jpeg,JPEG格式图片 image/gif,GIF格式图片 video/quicktime,Apple的QuickTime电影 application/vnd.ms-powerpoint,微软的PowerPoint演示文件6.4、HTTP的工作原理
1.用户输入域名->浏览器跳转->DNS解析( 递归查询 | 迭代查询 ) 客户端向服务端发起查询->递归查询 服务端向服务端发起查询->迭代查询 2.由浏览器向服务端发起TCP连接(三次握手) 客户端 -->请求包连接-syn=1 seq=x 服务端 服务端 -->向应客户端syn=1 ack=x+1 seq=y 客户端 客户端 -->建立连接 ack=y+1 seq=x+1 服务端 3.客户端发起HTTP请求: 1.请求的方法是什么: Get 获取 2.请求的Host主机是: www.aliyun.com 3.请求的资源是什么: /index.html 4.请求的端口是什么: 默认HTTP是80 HTTPs 443 5.请求携带的参数是: 属性(请求的类型、压缩、认证、等等) 6.请求最后的空行 4.服务端响应的内容是 1.服务端响应使用的WEB服务软件 2.服务端响应请求文件的类型 3.服务端响应请求的文件是否进行压缩 4.服务端响应请求的主机是否进行长连接 5.客户端向服务端发起TCP断开(四次挥手) 客户端 --> 断开请求 fin=1 seq=x --> 服务端 服务端 --> 响应断开 ack=x+1 seq=y --> 客户端 服务端 --> 断开连接 fin=1 ack=x+1 seq=z --> 客户端 客户端 --> 确认断开 ack=z+1 seq=n --> 服务端6.5、HTTP请求响应
1、请求报文的方法
get# 获得请求文件信息的数据内容(下载)post# 用户提交数据至服务器端存储(上传,增资源)put# 用户提交数据至服务器端存储(上传,改资源)Request URL:HTTP://10.0.0.7/index.html# 请求的URLRequest Method:GET# 请求的方法Status Code:200 OK# 当前的状态Remote Address:10.0.0.7:80# 远程的主机2、用户访问网站携带的参数,以及服务端返回的参数
General:基本信息
Response Headers:响应的头部信息
Request Headers:请求的头部信息
基本信息:General
#请求的urlRequest URL:#请求方式Request Method:#状态码Status Code#远程主机IPRemote Address#控制请求头内容Referrer Policy请求头部信息
#请求资源类型accept:#压缩accept-encoding:#语言accept-language: zh-CN,zh;q=0.9#缓存控制(没有做缓存)cache-control:#保持连接:长连接Connetection:keep-alive HTTP/1.1版本#长连接,一次TCP的连接可以发起多次HTTP请求HTTP/1.0版本#短连接,一次TCP的连接只能发起一次HTTP请求还有HTTP/2.0和HTTP/3.0#请求的域名Host:#登录信息cookie:#谷歌自带的(不属于请求头的内容)upgrade-insecure-requests:1#客户端(用户设备)user-agent:响应报文包头
#缓存控制cache-control: no-cache, must-revalidate, max-age=0#压缩content-encoding:gzip#内容长度content-length:9410#返回内容类型及字符集content-type: text/html;charset=UTF-8#返回服务器时间date: Wed,14Aug201923:16:43 GMT#加密ideagleid: 2dfd119815648138332064260e#失效时间expires: Thu,19Nov198108:52:00 GMT#软链接link:<HTTPs://www.tfantastic.com/wp-json/>;rel="HTTPs://api.w.org/"#参数:没有缓存pragma: no-cache#使用的web软件server: Nginx#状态码status:200#指定特定站点允许访问timing-allow-origin: *#渲染vary: Accept-Encoding#经过各级缓存via: cache14.l2cm12[99,200-0,M], cache1.l2cm12[101,0], cache13.cn1300[122,200-0,M], cache4.cn1300[123,0]------------- 以下都是CDN厂商带的 ----------------#CDN缓存是否命中x-cache: MISS TCP_MISS dirn:-2:-2#缓存版本号x-powered-by: PHP/7.1.22#缓存时间x-swift-cachetime:0#保存时间x-swift-savetime: Sat, 03 Aug201906:30:33 GMT6.6、HTTP相关术语
PV : 页面独立浏览量
UV : 独立设备
IP : 独立IP
假设公司有一座大厦,大厦有100人,每个人有一台电脑和一部手机,上网都是通过nat转换出口,每个 人点击网站2次, 请问对应的pv,uv,ip分别是多少?
那么上面的题: PV: 100_2_2 = 400
UV: 100*2 = 200 IP: 1日PV千万量级并不大
6.7、HTTP协议的原理
1.用户输入域名->浏览器跳转->DNS解析(递归查询|迭代查询)客户端向服务端发起查询->递归查询 服务端向服务端发起查询->迭代查询2.由浏览器向服务端发起TCP连接(三次握手) 客户端 -->请求包连接-syn=1seq=x 服务端 服务端 -->向应客户端syn=1ack=x+1seq=y 客户端 客户端 -->建立连接ack=y+1seq=x+1 服务端3.客户端发起HTTP请求:1.请求的方法是什么: Get 获取2.请求的Host主机是: www.aliyun.com3.请求的资源是什么: /index.html4.请求的端口是什么: 默认HTTP是80 HTTPs4435.请求携带的参数是: 属性(请求的类型、压缩、认证、等等)6.请求最后的空行4.服务端响应的内容是1.服务端响应使用的WEB服务软件2.服务端响应请求文件的类型3.服务端响应请求的文件是否进行压缩4.服务端响应请求的主机是否进行长连接5.客户端向服务端发起TCP断开(四次挥手) 客户端 -->断开请求fin=1seq=x -->服务端 服务端 -->响应断开ack=x+1seq=y -->客户端 服务端 -->断开连接fin=1ack=x+1seq=z -->客户端 客户端 -->确认断开ack=z+1seq=n -->服务端用户访问网站整体的流程
1.客户端发起HTTP请求,请求会先抵达前端的防火墙
2.防火墙识别用户身份,通过内部交换机将正常的请求通过tcp连接负载均衡,传递用户的HTTP请求
3.负载接收到请求,会根据请求的内容进行下发任务,通过tcp连接web服务器,发送用户的HTTP请求
4.web接收到用户的HTTP请求后,会根据用户请求的内容进行解析,解析分为如下:
静态请求:由web服务器向nfs建立tcp连接,获取对应的图片,最后返回给负衡(负载均衡->防火墙->
用户)
动态请求:有web向后端的动态程序建立TCP连接,将用户的动态HTTP请求传递态程序->由动态程序进行解析
5.动态程序在解析的过程中,如果碰到查询数据库的请求,则优先和缓存建立tcp接,然后缓存服务发起HTTP 的查询
6.如果缓存没有对应的数据,动态程序再次向数据库建立tcp的连接,然后发起查询。
7.由数据库返回->动态程序->缓存->web服务->负载均衡->防火墙->用户。