【笔记】HTTP协议:工作原理、访问网站分析、请求方法、相应、HTTP头部、访问流程、协议原理总结、相关术语

HTTP协议简介

什么是超文本(HyperText)?
    包含有超链接(Link)和各种多媒体元素标记(Markup)的文本。这些超文本文件彼此链接,形成网状(Web),因此又被称为网页(Web Page)。这些链接使用URL表示。最常见的超文本格式是超文本标记语言HTML。
HTML:由URL组成的网状的文本
什么是URL?
    URL即统一资源定位符(Uniform Resource Locator),用来唯一地标识万维网中的某一个文档。表示万维网上的唯一的地址。URL由协议、主机和端口(默认为80)以及文件名三部分构成。如:
在这里插入图片描述
访问www.baidu.com 默认在前面加上协议http https 默认的端口80 默认的后面会加上 index.html index.php
www.baidu.com >> http://www.baidu.com:80/index.html

什么是超文本传输协议HTTP?
    是一种按照URL指示,将超文本文档从一台主机(Web服务器)传输到另一台主机(浏览器)的应用层协议,以实现超链接的功能。
长连接: 浏览器和服务端如何传输数据
http协议版本:
http1.0 # 很多情况默认配置不修改情况下是1.0
http1.1 # 现在主流的协议版本 1.1
http2.0 # 还没有普及

传输数据过程:
http1.0 连接—>传输–>断开 在连接—>传输–>断开 每一个请求都要经过连接然后传输然后断开
每一个请求 表示 请求的每一个URL

http1.1 一次连接多次请求(建立一次三次握手 后面直接按照顺序请求所有的url)
http2.0 一次连接多次请求(并发请求)

HTTP工作原理

在用户点击URL为http://www.ahui.com/index.html的链接后,浏览器和Web服务器执行以下动作:
1.浏览器分析超链接中的URL
2.浏览器向DNS请求解析www.ahui.com的IP地址
3.DNS将解析出的IP地址222.222.222.80返回浏览器
4.浏览器与服务器建立TCP连接(80端口)
5.浏览器请求文档:GET /index.html
6.服务器给出响应,将文档 index.html发送给浏览器
7.释放TCP连接
8.浏览器显示index.html

请添加图片描述

访问网站分析

第一步:浏览器分析超链接中的URL

第二步DNS请求:PC向DNS服务器222.246.129.80发出DNS QUERY请求,请求www.qq.com的A记录
在这里插入图片描述

第三步DNS回复:DNS服务器222.246.129.80回复DNS response,解析出www.qq.com域名对应的三条A记录59.37.96.63、14.17.42.40/14.17.32.211
在这里插入图片描述
DNS的A记录:将主机名解析成对应的IP

第四步:PC向解析出的www.qq.com服务器地址发起tcp三次握手
在这里插入图片描述

第五步:PC向www.qq.com 服务器发出GET请求,请求主页
在这里插入图片描述

第六步:www.qq.com 服务器回应HTTP/1.1 200 OK,返回主页数据包
在这里插入图片描述

第七步:完成数据交互过程,四次挥手断开连接

HTTP请求方法

在这里插入图片描述

在这里插入图片描述

请求报文中的方法
     方法(Method)是对所请求对象所进行的操作,也就是一些命令。请求报文中的操作有:
在这里插入图片描述
POST请求方法
POST - 向指定的资源提交要被处理的数据
在这里插入图片描述

HTTP响应

在这里插入图片描述
响应头部信息:

Connection: keep-alive						# 响应长连接
Date: Tue, 14 Jun 2022 03:21:07 GMT			# 响应时间
ETag: "53762af0-12e1"					    # 和浏览器缓存相关
Last-Modified: Fri, 16 May 2014 15:12:48 GMT# 最后内容修改时间
Server: nginx/1.20.1					    # 服务器WEB版本信息

Request URL: http://10.0.0.7/			# 请求的URL  链接
Request Method: GET						# 请求方法
Status Code: 304 OK				        # 服务状态码
Remote Address: 10.0.0.7:80			    # 服务器的IP地址

响应报文中的状态码
状态码(Status-Code)是响应报文状态行中包含的一个3位数字,指明特定的请求是否被满足,如果没有满足,原因是什么。状态码分为以下五类:
在这里插入图片描述
通过状态码知道服务器状况:
200: 表示成功访问网站
301: 表示访问一个网站会跳转到另外一个网站 简称永久跳转
302: 表示访问一个网站会跳转到另外一个网站 简称临时跳转
304: 表示访问网站走的是浏览器的缓存
401: 表示访问网站会弹出让我们输入用户名和密码的对话框 权限认证
403: 访问页面 具体的资源不存在 但是存放资源的目录存在
404: 表示访问的内容页面不存在 用户访问了一个不存在的页面
500: 服务器内部错误 代码配置错误 服务端网络问题 无法访问到后端数据库
502: 有代理代理服务器不正常 或者 没有开启服务
503: 后端数据库服务器压力较大或者服务器暂时无法响应客户端请求的数据
504: 访问超时

2 开头表示 网站没问题
3 开头表示 网站跳转
4 开头表示 访问不了页面 服务器没有配置这个页面 用户访问了一个不存在的页面
5 表示服务器端问题 数据问题

HTTP头部

首部字段或消息头
在这里插入图片描述
请求头部信息:

Accept: text/html  						 # 请求类型
Accept-Encoding: gzip, deflate			 # 使用gzip压缩
Accept-Language: zh-CN,zh;q=0.9			 # 请求的语言 支持的语言
Cache-Control: no-cache					 # 没有缓存
Connection: keep-alive					 # 长连接
Host: 10.0.0.7							 # 主机 域名 www.baidu.com
Pragma: no-cache						 # 缓存
Upgrade-Insecure-Requests: 1			 # 浏览器相关
User-Agent: Mozilla/5.0 (Windows NT 6.1; # 告诉服务器我用的是什么设备及版本信息

服务器会根据客户端请求携带的客户端终端信息来确定我要返回什么页面给用户:
笔记本访问网站 则服务器返回的是根据笔记本PC电脑设计的页面
手机访问网站 则服务器返回的是根据手机设计的页面
平板电脑访问网站 则服务器返回的是根据平台设计的页面

UA字段

User-Agent: 浏览器标识 (操作系统标识; 加密等级标识; 浏览器语言) 渲染引擎标识 版本信息
在这里插入图片描述

SERVER字段

Server:响应头包含处理请求的原始服务器的软件信息
在这里插入图片描述

Referer字段

Referer:浏览器向 WEB 服务器表明自己是从哪个 网页/URL 获得/点击 当前请求中的网址/URL。
在这里插入图片描述
在这里插入图片描述

HTTP重定向

Location:WEB 服务器告诉浏览器,试图访问的对象已经被移到别的位置了,到该头部指定的位置去取。
在这里插入图片描述

HTTP访问流程

在这里插入图片描述

HTTP协议原理总结

1.用输入域名 - > 浏览器跳转 - > 浏览器缓存 - > Hosts文件 - > 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.oldboyedu.com
  3)请求的资源是什么: /index.html
  4)请求的端端口是什么: 默认http是80 https是443
  5)请求携带的参数是什么: 属性(请求类型、压缩、认证、浏览器信息、等等)
  6)请求最后的空行
4.服务端响应的内容是
  1)服务端响应使用WEB服务软件
  2)服务端响应请求文件类型
  3)服务端响应请求的文件是否进行压缩
  4)服务端响应请求的主机是否进行长连接
5.客户端向服务端发起TCP断开(四次挥手)
  客户端 --> 断开请求 fin=1 seq=x --> 服务端
  服务端 --> 响应断开 fin=1 ack=x+1 seq=y --> 客户端
  服务端 --> 断开连接 fin=1 ack=x+1 seq=z --> 客户端
  客户端 --> 确认断开 fin=1 ack=x+1 seq=sj --> 服务端

用户访问网站集群架构流程

1.客户端发起http请求,请求会先抵达前端的防火墙
2.防火墙识别用户身份,正常的请求通过内部交换机通过tcp连接后端的负载均衡,传递用户的http请求
3.负载接收到请求,会根据请求的内容进行下发任务,通过tcp连接后端的web,转发发用户的http请求
4.web接收到用户的http请求后,会根据用户请求的内容进行解析,解析分为如下:
  静态请求:web直接返回给负载均衡->防火墙->用户
  动态请求:web向后端的动态程序建立TCP连接,将用户的动态http请求传递至动态程序->由动态程序进行解析
5.动态程序在解析的过程中,如果碰到查询数据库请求,则优先与缓存建立tcp连接,并发起数据查询操作。
6.如果缓存没有对应的数据,动态程序再次向数据库建立tcp连接,并发起查询操作。
7.最后数据由, 数据库->动态程序->缓存->web服务->负载均衡->防火墙->用户。
在这里插入图片描述

HTTP相关术语

PV: 用户访问一个页面称为一个PV 刷新1次+1
UV: 表示用户真实独立的设备 笔记本算一个UV 手机算一个UV 平板算一个UV
IP: 表示公网IP 表示通过哪个公网IP访问的网站
家里一个IP 手机 平台 电视 通过路由器上网 NAT—>转换成了一个公网IP地址
公司算一个IP 所有员工通过NAT上网

并发: 在同一时刻 有多少人访问服务器

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

PV: 100*2*2=400
UV: 100*2=200
IP: 1

你们公司的业务每天的PV量是多少?
50万 80万 200万 500万PV 来计算UV和IP是多少
小说业务:
50万PV 平均每个人每天看多少页 1人平均100页=1个人100PV
UV: 50万/100PV=5000UV 5000人
IP: 500-1000公网IP
通过手机—>4G 5G 都会自动获取公网IP---------> 通过NAT转发网站 或者直接访问访问

购物网站:
50万PV 平均每个人访问多少个商品100个
50万/100=5000人

IP: 购物 上班族 一公司500人 50人访问购物网站 ----> 通过NAT转换 一个公网IP上网
学校 PC---->上万 上千人 ------->NAT 1个或者两个公网IP地址
500左右

第三方平台统计
开发人员嵌入代码进行统计
自己通过查看日志和CDN结合方式大概进行预算

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值