01,http协议

http协议介绍

HTTP 全称:Hyper Text Transfer Protocol 中文名:超文本传输协议

什么是超文本?

包含有超链接(Link)和各种多媒体元素标记(Markup)的文本。这些超文本文件彼此链接,形成网状(Web),因此又被称为网页(Web Page)。这些链接使用URL表示。最常见的超文本格式是超文本标记语言HTML。

什么是URL?

URL即统一资源定位符(Uniform Resource Locator),用来唯一地标识万维网中的某一个文档。 URL由协议、主机和端口(默认为80)以及文件名三部分构成:

截屏2022-12-07 20.23.17

什么是超文本传输协议?

是一种按照URL指示,将超文本文档从一台主机(Web服务器)传输到另一台主机(浏览器)的应用层协议,以实现超链接的功能。

http工作原理

1168165-20190510101324052-778390150

1.首先,当你在浏览器中输入一个网址的时候(https://www.baidu.com)浏览器会帮你分析,你输入的这个URL

2.其次,浏览器会向DNS服务器请求解析,该URL中的域名www.baidu.com,解析出百度服务器所在的IP地址

3.DNS服务器,会将解析出来的IP地址110.111.112.113并返回给浏览器。

4.浏览器接收到DNS返回的IP地址,立即与该IP所在的服务器建立TCP连接(80端口)。

5.浏览器请求文档,也就是咱们常说的html页面,GET /index.html,并发出HTTP请求报文。

6.服务器给出响应,将请求的index.html文档返回给浏览器,也就是响应HTTP请求的报文。

7.TCP连接响应完之后,释放TCP连接。

8.最后就能显示出,你请求的这个页面了

http请求方法

请求头信息

在HTTP请求报文中的方法(Method),是对所请求对象所进行的操作,也就是一些命令。请求报文中的操作有:

方法(Method) 含义
GET 请求读取一个Web页面
POST 明文提交数据,读取页面
DELETE 调用后的接口删除功能的页面
CONNECT 用于代理服务器
HEAD 请求读取一个Web页面的头部
PUT 调用后端,储存、上传功能页面
TRACE 用于测试,要求服务器送回收到的请求
OPTION 查询特定选项

POST请求向指定的资源提交要被处理的数据

http响应方法

响应报文中的状态码

状态码(status-code)是响应报文状态行中包含的一个3位数字,指明特定的请求是否被满足,如果没有满足,原因是什么。状态码分为以下五类:

image-20220528213523553

状态码 含义
200 成功
301 永久重定向(跳转)
302 临时重定向(跳转)
304 本地缓存
307 内部重定向(跳转)
400 客户端错误
401 认证失败
403 找不到主页,权限不足
404 找不到页面
500 内部错误
502 找不到后端主机(哪台服务器日志出现,就查哪台机器)
503 服务器过载
504 后端主机超时

头部信息

头(header) 类型 说明
User-Agent 请求 关于浏览器和他平台的信息,如Mozilla5.0
Accept 请求 客户能处理的页面的类型,如text-html
Accept-Charset 请求 客户可以接受的字符集,如Uni'code-1-1
Accept-Encoding 请求 客户能处理的页面编码方法,如gzip
Accept-Language 请求 客户能处理的自然预言,如en,zh-cn
Host 请求 服务器的DNS名称,从URL中提取出来,必需
Referer 请求 用户从该URL代表的页面出发访问当前请求的页面
Cookie 请求 将以前设置的Cookie送回服务器,可用来作为会话信息
Date 双向 消息被发送时的日期和时间
Server 响应 关于服务器的信息,如Microsoft-IIS/6.0
Content-Encoding 响应 内容似乎如何被编码的,如gzip
Content-Language 响应 页面所使用的自然语言
Content-Length 响应 以字节计算的页面长度
Content-Type 响应 页面的MIME类型
Last-Modified 响应 页面最后被修改的时间和日期,在页面缓存机制中意义重大
Location 响应 指示客户将请求发送给别处,即重定向到另一个URL
Set-Cookie 响应 服务器希望客户保存一个Cookie

User-Agent

User-Agent:浏览器标识(操作系统标识;加密等级标识;浏览器语言)渲染引擎标识 版本信息

Server

Server:响应头包含处理请求的原始服务器的软件信息

Referer

Referer:浏览器向 WEB 服务器表明自己是从哪个 网页/URL 获得/点击 当前请求中的网址/URL

HTTP重定向

Location:WEB 服务器告诉浏览器,试图访问的对象已经被移到别的位置了,到该头部指定的位置去取

HTTP访问流程图

image-20220528223732645

image-20220528223102817

HTTP协议原理总结

#在浏览器中输入http://blog.driverzeng.com 
1.浏览器向local DNS发起域名解析请求,本地DNS(/etc/hosts)文件中没有 
2.浏览器向DNS根域服务器发起请求,解析域名blog.driverzeng.com 
3.DNS进行递归查询和迭代查询: 
	客户端向服务端发起查询 -> 递归查询 
	服务端向服务端发起查询 -> 迭代查询 
	
	.com根域服务器发起查询 
	.com根域服务器 -> .driverzeng.com 
	.driverzeng.com -> blog.driverzeng.com A记录 39.104.203.184 
	将A记录:39.104.203.184返回给浏览器 
4.浏览器和39.104.203.184所在服务器的80端口建立TCP/IP连接 
	防火墙的规则不允许你的IP地址访问该服务器的80端口,则拒绝连接,报错返回给用户 
	防火墙的规则允许你的IP地址访问该服务器的80端口,则放行 
	-建立连接(TCP/IP 三次握手) syn(建立连接信号) 
	客户端 ---------------------> 服务端 syn+ack(我收到建立连接的请求了) 
	服务端 ---------------------> 客户端 ack(告诉服务端,我知道你收到建立连接的请求了) 
	客户端 ---------------------> 服务端 
5.向服务端的web服务发起http请求(负载均衡) 
	-请求头部信息 
	1)请求的方法是什么: GET获取 
	2)请求的Host主机是: blog.driverzeng.com 
	3)请求的资源是什么: /index.html 
	4)请求的端口是什么: 默认http是80 https是443 
	5)请求携带的参数是什么: 属性(请求类型、压缩、认证、浏览器信息、等等) 
	6)请求最后的空行 
6.将请求根据调度算法(rr 轮询)将请求下发给后端的web服务器 
7.读取web服务器上的nginx配置文件,找到站点目录 
8.找到对应的代码文件
	- 静态请求:web服务器将静态求情下发到共享存储服务器上,找到对应的静态资源返回给用户 
	- 动态请求:
		1)将请求发送给后端代码,处理 
		2)先找数据库的缓存(Redis,memcache) 
		3)如果缓存中有数据,则直接将数据返回给用户 
		4)如果缓存没有数据,则找后端数据库 
		5)从数据库中取出数据后,先存入缓存一份,然后在返回给用户
9.返回对应的状态码和响应头部信息给浏览器 
10.断开TCP/IP连接
	-四次挥手
11.浏览器展示网站页面

CDN

CDN:分布式静态缓存服务器

静态资源:html,css,js,mp3,mp4,avi,jpg.png...

1.提升了网站访问速度

2.减少后端服务器的压力

HTTP相关术语

PV:独立页面浏览量(一条日志,一个请求) 
UV:独立设备 
IP:独立的IP地址

假设公司有一座大厦,大厦有100人,每个人有一台电脑和一部手机,上网都是通过nat转换出口,每个人点击网站2次, 请 问对应的pv,uv,ip分别是多少?
pv:100 * 2 * 2 = 400 
uv:100 * 2 
IP:1

SOA松耦合架构

开发网站为了解耦,做出SOA架构

image-20220529001030555

#一个电商公司,他的网站页面功能会有很多
注册
登录
首页
详情页
购物车
价格标签
留言
客服
支付中心
物流
仓储信息
订单相信
图片

HTTP及架构请求访问流程

image-20220512193446428

# 在浏览器中输入http://blog.driverzeng.com
1.浏览器向local DNS发起域名解析请求,本地DNS(/etc/hosts)文件中没有 
2.浏览器向DNS根域服务器发起请求,解析域名blog.driverzeng.com
3.DNS进行递归查询和迭代查询:
	客户端向服务端发起查询 - > 递归查询 
	服务端向服务端发起查询 - > 迭代查询
	.com根域服务器发起查询
	.com根域服务器 -> .driverzeng.com
	.driverzeng.com -> blog.driverzeng.com A记录 39.104.203.184 
	将 A记录:39.104.203.184返回给浏览器
4.浏览器和39.104.203.184所在服务器的80端口建立TCP/IP连接 
	防火墙的规则不允许你的IP地址访问该服务器的80端口,则拒绝连接,报错返回给用户 
	防火墙的规则允许你的IP地址访问该服务器的80端口,则放行
		- 建立连接(TCP/IP 三次握手) 
				syn(建立连接信号)
		客户端 ---------------------> 服务端 
			syn+ack(我收到建立连接的请求了) 
		服务端 ---------------------> 客户端
			ack(告诉服务端,我知道你收到建立连接的请求了) 
  	客户端 ---------------------> 服务端
5.向服务端的web服务发起http请求(负载均衡) 
	- 请求头部信息
	1)请求的方法是什么:GET获取
	2)请求的Host主机是:blog.driverzeng.com
	3)请求的资源是什么:/index.html
	4)请求的端端口是什么:默认http是80 https是443
	5)请求携带的参数是什么:属性(请求类型、压缩、认证、浏览器信息、等等)
	6)请求最后的空行
6.将请求根据调度算法(rr 轮询)将请求下发给后端的web服务器 
7.读取web服务器上的nginx配置文件,找到站点目录 
8.找到对应的代码文件
	- 静态请求:web服务器将静态求情下发到共享存储服务器上,找到对应的静态资源返回给用户
	- 动态请求:
		1)将请求发送给后端代码,处理 
		2)先找数据库的缓存(Redis,memcache) 
		3)如果缓存中有数据,则直接将数据返回给用户 
		4)如果缓存没有数据,则找后端数据库 
		5)从数据库中取出数据后,先存入缓存一份,然后在返回给用户
9.返回对应的状态码和响应头部信息给浏览器 
10.断开TCP/IP连接
	- 四次挥手 
11.浏览器展示网站页面

简单理解CDN

CDN:分布式静态缓存服务器

静态资源:html,css,js,mp3,mp4,avi,jpg.png...

1.提升了网站访问速度

2.减少后端服务器的压力

posted @ 2023-05-12 17:38  啃包子的中二青年  阅读(0)  评论(0)    收藏  举报