01.Nginx基础Http

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层->存储层->缓存层->数据库层
同时需要注意, 每一层都有对应的缓存机制


本文 暂无 评论

Top