HTTP详解

HTTP协议

一、HTTP协议

什么是HTTP?
HTTP 全称:Hyper Text Transfer Protocol 中文名:超文本传输协议。HTTP协议就是将用户的请求发送给服务器,再将服务器返回的内容发送给浏览器,浏览器进行解析,解析成便于人类读取的页面

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

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

什么是URL?
URL即统一资源定位符(Uniform Resource Locator),用来唯一地标识万维网中的某一个文档。URL由协议、主机和端口(默认为80)以及文件名三部分构成:
#URL: http://www.baidu.com:80/index.html
#协议: http:// https:// ftp:// ssh:// file://
#域名: www.baidu.com
#端口: :80 web服务的端口
#请求的文件: /index.html / 指的不是根目录,而是站点目录,我们可以自己指定

http和url和html的关系
一个完整的html是由很多个URL组成的,而http是将html的内容进行传输和解析的
在这里插入图片描述

二、HTTP请求方法

在HTTP请求报文中的方法(Method),是对所请求对象所进行的操作,也就是一些命令。请求报文中的操作有

方法(Method)含义
GET请求读取一个Web页面
POST上传一个文件(如Web页面)
DELETE删除Web页面
CONNECT用于代理服务器
HEAD请求读取一个Web页面的头部
PUT请求存储一个Web页面
TRACE用于测试,要求服务器送回收到的请求
OPTION查询特定选项

HTTP协议版本
HTTP/1.0 #短连接
HTTP/1.1 #长连接
HTTP/2.0 #长连接(并发多)
HTTP/3.0 #未启用

五、HTTP响应方法
状态码(status-code)是响应报文状态行中包含的一个3位数字,指明特定的请求是否被满足,如果没有满足,原因是什么。状态码分为以下五类
在这里插入图片描述
在这里插入图片描述
下列是我针对状态码找的图解,若引起大家不适,请联系博主(联系了也不一定删除)
在这里插入图片描述
301—永久移动。被请求的资源已被永久移动位置;
302—请求的资源现在临时从不同的 URI 响应请求;
305—使用代理。被请求的资源必须通过指定的代理才能被访问;
307—临时跳转。被请求的资源在临时从不同的URL响应请求;
400—错误请求;
402—需要付款。该状态码是为了将来可能的需求而预留的,用于一些数字货币或者是微支付;
403—禁止访问。服务器已经理解请求,但是拒绝执行它;
404—找不到对象。请求失败,资源不存在;
406—不可接受的。请求的资源的内容特性无法满足请求头中的条件,因而无法生成响应实体;
在这里插入图片描述

408—请求超时;
409—冲突。由于和被请求的资源的当前状态之间存在冲突,请求无法完成;
410—遗失的。被请求的资源在服务器上已经不再可用,而且没有任何已知的转发地址;
413—响应实体太大。服务器拒绝处理当前请求,请求超过服务器所能处理和允许的最大值。
417—期望失败。在请求头 Expect 中指定的预期内容无法被服务器满足;
418—我是一个茶壶。超文本咖啡罐控制协议,但是并没有被实际的HTTP服务器实现;
420—方法失效。
422—不可处理的实体。请求格式正确,但是由于含有语义错误,无法响应;
500—服务器内部错误。服务器遇到了一个未曾预料的状况,导致了它无法完成对请求的处理;

三、网站请求分析

1.基本信息(General)

Request URL: http://10.0.0.7/index.html			#请求的URL
Request Method: GET							   #请求方式
Status Code: 304 Not Modified				#状态码
Remote Address: 10.0.0.7:80					#远程主机IP和端口
Referrer Policy: no-referrer-when-downgrade	 #控制请求头信息

2.头部信息(Request Header)
在这里插入图片描述

----------------CDN服务器的参数-----------------------
#CDN缓存是否命中
x-cache: MISS TCP_MISS dirn:-2:-2
#缓存版本号
x-powered-by: PHP/7.1.21
#缓存时间
x-swift-cachetime: 0
#保存时间
x-swift-savetime: Sat, 03 Aug 2019 06:30:33 GMT

四、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主机是: 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服务->负载均衡->防火墙->用户。在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值