文章目录
Web基础-HTTP
1、什么是项目
项目是人们通过努力,运用新的方法,将人力的、材料的和财务的资源组织起来,在给定的费用和时间约束规范内,具有明确目标的一次性工作任务,以期达到由数量和质量指标所限定的目标,类似于手机的app,每一个app都可以算做一个项目
2、什么是架构?
- 根据要解决的问题,对目标系统的边界进行界定。
- 并对目标系统按某个原则的进行切分。切分的原则,要便于不同的角色,对切分出来的部分,并行或串行开展工作,一般并行才能减少时间
- 并对这些切分出来的部分,设立沟通机制
- 使得这些部分之间能够进行有机的联系,合并组装成为一个整体,完成目标系统的所有工作
3、架构所需关键词
plain
- 可靠性(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状态访问码
shell
200 直接成功
301 永久重定向(redirect)
302 临时重定向(redirect)
304 浏览器缓存
307 内部重定向(redirect)
400 客户端错误
401 认证失败
403 请求不到首页,权限被拒绝
404 资源找不到
413 访问的文件太大,不支持
500 服务器内部错误,程序代码错误
502 找不到后端的资源 bad gateway
503 服务器过载
504 请求超时
6.2、Web的结构组成
shell
C/S:客户端和服务端
B/S:浏览器和服务端
- 代理
- 位于客户端和服务器之间的HTTP中间实体
- 缓存
- HTTP的仓库,使常用页面的副本可以保存在离客户端更近的地方
- 网关
- 连接其他应用程序的特殊Web服务器
- 隧道
- 对HTTP通信报文进行盲转发的特殊代理
- Agent代理
- 发起自动HTTP请求的半智能Web客户端
6.3、有哪些Web资源?
shell
text/html,html格式的文本文档
text/plain,普通的ASCII文本文档
image/jpeg,JPEG格式图片
image/gif,GIF格式图片
video/quicktime,Apple的QuickTime电影
application/vnd.ms-powerpoint,微软的PowerPoint演示文件
6.4、HTTP的工作原理
plain
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、请求报文的方法
shell
get # 获得请求文件信息的数据内容(下载)
post # 用户提交数据至服务器端存储(上传,增资源)
put # 用户提交数据至服务器端存储(上传,改资源)
Request URL:HTTP://10.0.0.7/index.html # 请求的URL
Request Method:GET # 请求的方法
Status Code:200 OK # 当前的状态
Remote Address:10.0.0.7:80 # 远程的主机
2、用户访问网站携带的参数,以及服务端返回的参数

General:基本信息
Response Headers:响应的头部信息
Request Headers:请求的头部信息
基本信息:General
shell
#请求的url
Request URL:
#请求方式
Request Method:
#状态码
Status Code
#远程主机IP
Remote Address
#控制请求头内容
Referrer Policy
请求头部信息
shell
#请求资源类型
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:
响应报文包头
shell
#缓存控制
cache-control: no-cache, must-revalidate, max-age=0
#压缩
content-encoding: gzip
#内容长度
content-length: 9410
#返回内容类型及字符集
content-type: text/html; charset=UTF-8
#返回服务器时间
date: Wed, 14 Aug 2019 23:16:43 GMT
#加密id
eagleid: 2dfd119815648138332064260e
#失效时间
expires: Thu, 19 Nov 1981 08: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 Aug 2019 06:30:33 GMT
6.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协议的原理
shell
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 --> 服务端
用户访问网站整体的流程
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服务->负载均衡->防火墙->用户。
