nginx基础http协议

Nginx基础Http

Http协议介绍

http全称HyperText Transfer Protocol中文名为超文本传输协议

1.什么是超文本?

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

2.什么是URL

nginx基础http协议

3.什么是超文本传输协议HTTP?

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

4.http协议总结

1.http是一个超文本传输协议
2.http建立在应用层协议基础之上
3.http默认端口80, https默认端口443
4.一次tcp的链接,可以包含多次http的请求

Http工作原理

nginx基础http协议

1.本地会进行一次redirect跳转
2.先查看本地缓存如果没有再发起dns请求
3.获取到域名对应的IP地址
4.浏览器发起tcp的连接
5.基于tcp的连接,传输http的请求(一次tcp的连接,可以建立多次的http请求)
6.浏览器请求/index.html
7.服务器响应/index.html至浏览器
8.浏览器翻译index.html中的内容为人类可读
9.断开TCP的四次挥手

Http请求报文

1.http请求报文的方法

get     # 获得请求文件信息的数据内容(获取)
post    # 用户提交数据至服务器端存储(提交)

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.客户端请求报文的头部信息示例
Accept: text/html,                                  # 请求的类型
Accept-Encoding: gzip, deflate                      # 是否进行压缩
Accept-Language: zh-CN,zh;q=0.9                     # 请求的语言
Cache-Control: max-age=0                            # 缓存
Connection: keep-alive                              # TCP长连接
Host: www.oldboyedu.com                              # 请求的域名
If-Modified-Since: Fri, 04 May 2018 08:13:44 GMT    # 修改的时间
If-None-Match: "a49-56b5ce607fe00"                  # 标记
Upgrade-Insecure-Requests:1                         # 在http和https之间起的一个过渡作用
User-Agent: Mozilla/5.0                             # 用户的浏览器
===========请求一个空行=========================

Http响应报文

http响应(响应报文中的状态码)

1.状态码(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            # 网关超时

2.服务端响应报文的头部信息示例

HTTP/1.1 304 Not Modified                 # 返回服务器的http 协议,状态码
Date: Fri, 14 Sep 2018 09:14:28 GMT       # 返回服务器的时间
Server: Apache/2.4.6 (CentOS) PHP/5.4.16  # 返回服务器使用的软件(Apache php)
Connection: Keep-Alive                              # TCP长连接
Keep-Alive: timeout=5, max=100                      # 长连接的超时时间
ETag: "a49-56b5ce607fe00"                           # 验证客户端标记
===========返回一个空行=========================
===========返回内容页面=========================

Http相关术语

环境: 如果一栋大厦里所有工作人员通过1个IP公网接口上网, 每个人有一个电脑和一部手机, 当所有人同时请求一个网站, 并且刷新了2次, 那么请求pv、ip、uv分别是多少

pv:页面浏览量 400      PV:页面浏览量
uv:唯一设备 200        uv:独立的客户
ip:唯一出口 1          ip:独立IP           
并发

A种理解:网站服务器每秒能够接收的最大用户请求数。
B种理解:网站服务器每秒能够响应的最大用户请求数。
C种理解:网站服务器在单位时间内能够处理的最大连接数。(推荐)

网站访问流程

    1.客户端输入域名以及请求的页面
    2.本地会进行一次redirect跳转
    3.解析域名对应的dns
    4.最终客户端浏览器获取到dns的IP地址
    5.客户端会与服务端发起TCP的三次握手(长连接)
    6.客户端发起http请求,请求会先抵达前端的防火墙
    7.防火墙识别用户身份,正常的请求通过内部交换机通过tcp连接后端的负载均衡,然后           传递用户的http请求
    8.负载接收到请求,会根据请求的内容进行下发任务,通过tcp连接后端的web,然后下           发用户的http请求
    9.web接收到用户的http请求后,会根据用户请求的内容进行解析,解析分为如下两             步:
    静态请求:由web服务器向nfs建立tcp连接,获取对应的图片,最后返回给负载均衡(负                载均衡->防火墙->用户)
    动态请求:有web向后端的动态程序建立TCP连接,将用户的动态http请求传递给动态程                序->由动态程序进行解析 
    10.动态程序在解析的过程中,如果碰到查询数据库的请求,则优先和缓存建立tcp的连            接,然后缓存服务发起http的查询
    11.如果缓存没有对应的数据,动态程序再次向数据库建立tcp的连接,然后发起查询操            作。
    12.由数据库返回->动态程序->缓存->web服务->负载均衡->防火墙->用户。

综合架构图:

猜你喜欢

转载自blog.51cto.com/13528471/2175606
今日推荐