1.Http协议介绍
HTTP
全称HyperText Transfer Protocol
中文名为超文本传输协议
1.什么是超文本?
包含有超链接(Link)和各种多媒体元素标记的文本。这些超文本文件彼此链接,形成网状(Web),因此又被称为网页(Web Page)。这些链接使用URL
表示。最常见的超文本格式是超文本标记语言HTML。
2.什么是URL
3.什么是超文本传输协议HTTP?
是一种按照URL
指示,将超文本文档从一台主机(Web服务器)传输到另一台主机(浏览器)的应用层协议,以实现超链接的功能。
4.http协议总结
1.http是一个超文本传输协议
2.http建立在应用层协议基础之上
3.http默认端口80, https默认端口443
4.一次tcp的链接,可以包含多次http的请求
2.Http工作原理
1.本地redirect跳转
2.检查浏览器缓存
3.DNS解析
2.tcp的三次握手
3.http客户端的请求
4.http服务端的响应
5.tcp的四次挥手
3.Http请求报文
http
请求报文的方法
get # 获得请求文件信息的数据内容(获取)post # 用户提交数据至服务器端存储(提交)Request URL:http://10.0.0.7/index.html # 请求的URLRequest Method:GET # 请求的方法Status Code:200 OK # 当前的状态Remote Address:10.0.0.7:80 # 远程的主机
注意: 当发起
http
请求文件时, 没有指定请求的文件内容,默认请求的首页文件index.html
http
请求报文采用的协议版本
1.0:规定浏览器与服务器只保持短暂的连接(TCP短连接) 1.1:规定浏览器与服务器只保持长久的连接(TCP长连接)
4.Http响应报文
http响应(响应报文中的状态码)
状态码(Status-Code)是响应报文状态行中包含的一个3位数字,指明特定的请求是否被满足,如果没有满足,原因是什么。状态码分为以下五类:
200 ok # 访问正常301 redirect # 永久重定向302 redirect # 临时重定向304 Not Modified # 客户端缓存403 Forbidden # 服务端权限问题404 Not Found # 页面不存在500 Internal Server Error # 权限、代码、php服务502 Bad Gateway # 请求后端服务失败504 Gateway Timeout # 网关超时
http
响应示例
Accept-Ranges:bytes # 接受的字节Connection:keep-alive # 链接类型,keep_alive长链接Content-Length:2633 # Content-Type:text/html # 返回的页面类型Date:Thu, 02 Aug 2018 02:58:53 GMTETag:"5aec1638-a49"Last-Modified:Fri, 04 May 2018 08:13:44 GMTServer:nginx/1.12.2 # 提供页面返回的应用服务
5.Http相关术语
如果一栋大厦里所有工作人员通过1个IP公网接口上网, 总共100个设备, 当所有人同时请求一个网站, 并且刷新了5次, 那么请求pv、ip、uv
分别是多少
pv:页面浏览量 500
uv:唯一设备100
ip:唯一出口 1
并发
A种理解:网站服务器每秒能够接收的最大用户请求数。
B种理解:网站服务器每秒能够响应的最大用户请求数。
C种理解:网站服务器在单位时间内能够处理的最大连接数。(推荐)
6.网站访问流程
1.本地redirect跳转
2.检查本地浏览器缓存
3.DNS流程
递归 客户端向服务端发起DNS查询
迭代 服务端与服务端发起DNS查询
1.查询本地Hosts
2.请求本地localDNS
3.返回对应的IP
4.HTTP连接
1.如果仅仅是请求页面, 可能会经过Opcache缓存返回
2.如果请求页面需要查询数据库, 或者是往数据库插入内容
3.检查对应的操作是查询还是写入, 如果是查询数据库
4.检查查询的内容是否有被缓存, 如有缓存则返回
5.检查查询语句, 将查询结果返回
6.内存缓存Redis缓存对应的查询结果
7.返回对应客户端请求的内容至于WEB节点
8.WEB节点收到请求后返回内容至负载均衡
9.负载均衡返回客户端内容, TCP四次断开
1.建立TCP三次握手,发送请求内容, 请求头、请求的行、请求的主体
2.将请求传递给负载均衡, 负载均衡做对应的调度
3.如果请求的是静态页面, 那么调度至对应的静态集群组即可
4.如果请求的是动态页面, 将请求调度至动态集群组
5.HTTP断开连接
用户访问网站流程面试时需注意:
1.按照分层结构
CDN层->负载层->WEB层->存储层->缓存层->数据库层
同时需要注意, 每一层都有对应的缓存机制