7.HTTP协议

HTTP协议介绍

什么是超文本

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

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

什么是URL

URL即统一资源定位符(Uniform Resource Locator),用来唯一地标识万维网中的某一个文档。

URL由协议、主机和端口(默认为80)以及文件名三部分构成:

image-20210713100005012

HTTP的工作原理

访问:http://zuoye.driverzeng.com:8888/pic/1_oldboy_lnmp.jpg

1.浏览器去请求DNS服务器

1.请求local DNS(本地DNS),zuoye.driverzeng.com 绑定的IP
2.请求223.5.5.5,13个根域 迭代查询.com .driverzeng.com zuoye.driverzeng.com 192.168.3.250

2.浏览器与192.168.3.250服务器的8888端口建立TCP连接

3.三次握手

1.浏览器向服务器发送SYN
2.服务器向浏览器返回ACK,并且发送SYN
3.浏览器最后向服务器发送一次ACK

4.开始数据交流,浏览器使用GET方式请求/pic/1_oldboy_lnmp.jpg

5.服务器在站点目录下 的/pic/里面找到到 1_oldboy_lnmp.jpg 返回给浏览器

6.四次挥手,浏览器向服务器断开连接

1.浏览器向服务器发送FIN
2.服务器向浏览器返回ACK
3.服务器向浏览器发送FIN
4.浏览器向服务器发送ACK

7.浏览器显示URL中的图片

HTTP数据包分析(开发者工具network)

General:基本信息

# 请求的URL
Request URL: https://query.aliyun.com/rest/ablab.experiment.hsf.getById?id=173
# 请求的方法 GET	
Request Method: GET
# 状态码 200
Status Code: 200 
# 远程主机地址
Remote Address: 203.119.207.242:443
# 从哪里跳转过来(推荐人) referrer的策略
Referrer Policy: strict-origin-when-cross-origin

Response Headers:响应头

# 响应大小
Accept-Ranges: bytes
# 长连接
Connection: Keep-Alive
# 内容编码格式
Content-Encoding: gzip
# 响应的内容长度
Content-Length: 139
# 响应的内容类型;字符集
Content-Type: text/plain;charset=UTF-8
# GMT格林威治时间
Date: Tue, 13 Jul 2021 09:47:48 GMT
# 长连接的超时时间,最大范围 
Keep-Alive: timeout=5, max=100 
# 代码返回:记录上一次的修改时间 
Last-Modified: Fri, 04 May 2018 08:13:44 GMT
# 该网页部署在服务器的系统版本,以及服务版本
Server: Apache/2.4.6 (CentOS) PHP/5.4.16

Request Headers:请求头

# 允许服务端给浏览器传递哪些文本类型 
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng ,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9 
# 压缩 
Accept-Encoding: gzip, deflate 
# 语言 
Accept-Language: zh-CN,zh;q=0.9 
# 是否设置缓存 
Cache-Control: no-cache 
# 长连接 
Connection: keep-alive 
# 请求的主机(域名) 
Host: zuoye.driverzeng.com:8888
# 请求参数(没有缓存) 
Pragma: no-cache 
# 谷歌浏览器自带 
Upgrade-Insecure-Requests: 1 
# 客户端的信息 
User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1

HTTP的请求方法

方法(Method) 含义
GET 请求读取一个Web页面(传递参数,在浏览器中可以看见)
POST 请求读取一个Web页面(传递参数,在浏览器中不可以看见)
DELETE 删除
CONNECT 用于代理服务器
HEAD 请求读取一个Web页面的头部
PUT 一般用于上传
TRACE 用于测试,要求服务器送回收到的请求
OPTION 查询特定选项

HTTP的响应方法

状态码

image-20210808095048189

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

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主机是:     blog.driverzeng.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服务->负载均衡->防火墙->用户。

image-20210808095112416

HTTP相关术语

LAMP:Linux Apache Mysql PHP 
LNMP:Linux Nginx Mysql PHP 
LAMT:Linux Apache Mysql Tomcat 
LNMT:Linux Nginx Mysql Tomcat 
PV:页面独立的浏览量
UV:独立设备
IP:独立IP 

SOA松耦合架构

image-20210713161832764

posted @ 2022-09-29 13:00  此昵称已被占用  阅读(170)  评论(0编辑  收藏  举报