一、HTTP协议概述

1.什么是HTTP?

HTTP 全称:Hyper Text Transfer Protocol

中文名:超文本传输协议

http就是将用户的请求发送到服务器,将服务器请求到的内容传输回给浏览器,浏览器进行解析,解析后变成便于观看的页面。

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

html文件 -> 包含各种各样的元素(URL链接)-> 形成WebPage简称web页面

3.什么是URL?
URL即统一资源定位符(Uniform Resource Locator),用来唯一地标识万维网中的某一个文件

当我们访问: baidu.com
实际上访问: http://www.baidu.com:80/index.html

URL由协议、主机和端口(默认为80)以及文件名三部分构成:
#URL: http://www.baidu.com:80/index.html
协议 域名 端口 请求的文件及路径
#协议:stf、ssh、tcp、http、file
#域名:访问的主机名字(有代表性,好记,唯一)
#端口:进入网站的门户
#文件:真实存在于服务器上的文件

HTTP URL HTML三者关系
一个完整html页面,是由很多URL组成的,而HTTP协议是用来传输和解析html页面的

二、HTTP协议原理

1.http协议原理概述

1.首先,当你在浏览器中输入一个网址的时候(https://www.baidu.com/index.html)浏览器会帮你分析,你输入的这个URL
2.其次,浏览器会向DNS服务器请求解析,该URL中的域名www.baidu.com,解析出百度服务器所在的IP地址
3.DNS服务器,会将解析出来的IP地址110.111.112.113并返回给浏览器。
4.浏览器接收到DNS返回的IP地址,立即与该IP所在的服务器建立TCP连接(80端口)。
5.浏览器请求文档,也就是咱们常说的html页面,GET /index.html,并发出HTTP请求报文。
6.服务器给出响应,将请求的index.html文档返回给浏览器,也就是响应HTTP请求的报文。
7.TCP连接响应完之后,释放TCP连接。
8.最后就能显示出,你请求的这个页面了

2.http数据报文

GET那一部分内容被称为:请求头信息
GET和HTTP之间有一个空行被称为:请求空行
HTTP中的信息被称为:回应信息
HTTP与faa之间也有个空行被称为:响应空行
faa部分被称为:主体

三、HTTP请求页面信息

1.基本信息

#请求的URL
Request URL: https://blog.driverzeng.com/zenglaoshi/2039.html
#请求的方式
Request Method: GET
#状态码
Status Code: 200
#远程主机和端口
Remote Address: 122.193.130.81:443
#表示从https协议降为http协议时不发送referrer给跳转网站的服务器
Referrer Policy: no-referrer-when-downgrade

2.请求头部信息

#请求的域名
:authority: blog.driverzeng.com
#请求的类型
:method: GET
#请求的文件路径
:path: /zenglaoshi/2039.html
#请求的协议
:scheme: https
#请求的资源类型
accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
#请求过程压缩
accept-encoding: gzip, deflate, br
#字符类型
accept-language: zh-CN,zh;q=0.9
#登录验证
authorization: Basic emxzX2FkbWluOjFxYXokUkZW
#缓存控制
cache-control: no-cache
#缓存验证
cookie: PHPSESSID=7155d8f835a6580a0fbe6c930c265a40
#缓存
pragma: no-cache

upgrade-insecure-requests: 1
#用户的客户端
user-agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.92 Safari/537.36

3.响应的头部信息

#阿里云信息存储时间
ali-swift-global-savetime: 1597742129
#缓存控制
cache-control: no-store, no-cache, must-revalidate
#压缩
content-encoding: gzip
#文件类型和字符集
content-type: text/html; charset=UTF-8
#时间
date: Tue, 18 Aug 2020 09:15:29 GMT
#加密id
eagleid: 9903e79615977421289024140e
#失效时间
expires: Thu, 19 Nov 1981 08:52:00 GMT
#软连接
link: <https://blog.driverzeng.com/wp-json/>; rel="https://api.w.org/"
link: <https://blog.driverzeng.com/?p=2039>; rel=shortlink
#缓存
pragma: no-cache
#web服务
server: Tengine
#状态码
status: 200
#跨域访问
timing-allow-origin: *
#渲染
vary: Accept-Encoding
#各级缓存
via: cache20.l2cn1817[275,200-0,M], cache4.l2cn1817[276,0], cache4.l2cn1817[276,0], kunlun9.cn206[283,200-0,M], kunlun2.cn206[284,0]

-----cdn服务器的参数-----
x-cache: MISS TCP_MISS dirn:-2:-2
x-pingback: https://blog.driverzeng.com/xmlrpc.php
x-powered-by: PHP/7.1.21
x-swift-cachetime: 0
x-swift-savetime: Tue, 18 Aug 2020 09:15:29 GMT

四、HTTP请求方法

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

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

五、HTTP响应方法

状态码(status-code)是响应报文状态行中包含的一个3位数字,指明特定的请求是否被满足,如果没有满足,原因是什么。
状态码分为以下五类:

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

六、HTTP请求头部信息

七、HTTP总结

1.原理

1.用户输入域名 - > 浏览器跳转 - > 浏览器缓存 - > Hosts文件 - > DNS解析(递归查询|迭代查询)
客户端向服务端发起查询 - > 递归查询
服务端向服务端发起查询 - > 迭代查询
2.由浏览器向服务器发起TCP连接(三0次握手)
客户端 -->请求包连接 -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 --> 服务端

2.HTTP协议

http1.0:短连接,一次TCP连接,仅发起一次请求
http1.1:长连接,一次TCP连接,发起多次请求
http2.0:HTTPS用
http3.0

3.用户访问集群架构的流程

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

八、http相关术语

1.PV、UV、IP

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

PV : 页面独立浏览量
UV : 独立设备
IP : 独立IP

那么上面的题:
PV: 100*2*2 = 400
UV: 100*2 = 200
IP: 1

日PV千万量级并不大

2.SOA松藕合架构

面向服务的架构(SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)进行拆分,并通过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种各样的系统中的服务可以以一种统一和通用的方式进行交互。

#一个电商公司,他的网站页面功能会有很多
注册
登录
首页
详情页
购物车
价格标签
留言
客服
支付中心
物流
仓储信息
订单相信
图片

第七章 HTTP协议原理的更多相关文章

  1. 2017.11.1 微型计算机原理与接口技术-----第七章 中断系统与8237A DMA控制器

    第七章 微型计算机原理与接口技术-----中断系统与8237A DMA控制器 (1)数据传送的两种方式:中断方式和直接存储器存取方式(DMA):中断是微处理器与外部设备交换信息的一种方式:DMA是存储 ...

  2. 数据库原理 第七章 数据库设计和ER模型

    第七章讲述一个E-R设计如何转换成一个关系模式的集合以及如何在该设计中找到某些约束. 1.概念设计定义了数据库中表示的实体.实体的属性.实体之间的联系,以及实体和联系上的约束 在设计一个数据库模型的时 ...

  3. 第七章移动互联网与移动IP

    第七章移动互联网与移动IP 本章延续前几章节,对该章节内容进行归纳总结. 文章中的Why表示产生的背景,也就是说为什么会产生该技术,What表示该技术是什么,How表示该技术是如何使用的.以下将用字母 ...

  4. Linux实战教学笔记26:http协议原理

    目录 第二十六节 http协议原理 第1章 Web服务基础 1.1 http服务重要基础 1.2 HTTP协议 1.3 HTTP资源 1.4 网站流量度量术语 1.5 www服务软件介绍 1.6 本章 ...

  5. 精通Web Analytics 2.0 (9) 第七章:失败更快:爆发测试与实验的能量

    精通Web Analytics 2.0 : 用户中心科学与在线统计艺术 第七章:失败更快:爆发测试与实验的能量 欢迎来到实验和测试这个棒极了的世界! 如果Web拥有一个超越所有其他渠道的巨大优势,它就 ...

  6. 《Entity Framework 6 Recipes》中文翻译系列 (38) ------ 第七章 使用对象服务之动态创建连接字符串和从数据库读取模型

    翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 第七章 使用对象服务 本章篇幅适中,对真实应用中的常见问题提供了切实可行的解决方案. ...

  7. 《Entity Framework 6 Recipes》中文翻译系列 (41) ------ 第七章 使用对象服务之标识关系中使用依赖实体与异步查询保存

    翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 7-7  标识关系中使用依赖实体 问题 你想在标识关系中插入,更新和删除一个依赖实体 ...

  8. 第七章 LED将为我们闪烁:控制发光二极管

     第七章 LED将为我们闪烁:控制发光二极管 本章我们将会看到一个完整的linux驱动程序,通过linux驱动程序控制LED的四个小灯,通俗的说就是通过向linux驱动程序来控制LED小灯的开关.用到 ...

  9. 第七章Bulk设备

    小川工作室编写,本书为LM3S的USB芯片编写,上传的均为草稿,还有没修改,可能还有很多地方不足,希望各位网友原谅! QQ:2609828265 TEL:15882446438 E-mail:paul ...

随机推荐

  1. Dos拒绝服务Syn-Flood泛洪攻击--Smurf 攻击(一)

    Dos拒绝服务利用程序漏洞或一对一资源耗尽的Denial of Service 拒绝服务DDos 分布式拒绝服务 多对一 Syn-Flood泛洪攻击 发送syn包欺骗服务器建立半连接 攻击代码,利用s ...

  2. 《C++深度解析》课程目录

    <C++深度解析>课程目录 第1课 - 学习 C++ 的意义 第2课 - C到C++的升级     第3课 - 进化后的const分析 第4课 - 布尔类型和引用 第5课 - 引用的本质分 ...

  3. js实现隔行变色

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  4. 学习 | jQuery移动端页面组件化开发(一)

    最近在学习移动端组件化开发web页面,其中有好多小细节,值的去思考. 主要介绍JS的思路,具体的代码就不贴了,主要是想表达出一种思路 总体来说 1.入口文件,在入口文件中导入插件,插件样式,jquer ...

  5. Vue Render自定义tabled单元格内容

    解决问题 只举一个例子(我正好需要用到的) 在写中后台时, 如果对 表格组件 再度封装了, 比如这样的 以element-ui 为例: <template> <el-table :d ...

  6. 【读书】Into The Air:进入空气稀薄地带

    珠穆朗玛峰,世界第一高峰,北部在中国境内,南部在尼泊尔境内.喜欢户外运动的人,曾经在20多岁的时候曾经"大言不惭"说这一辈子一定要去一次珠峰.<Into the Air> ...

  7. 搭建Linux服务器

    工欲善其事必先利其器, 虚拟机:百度云链接地址:https://pan.baidu.com/s/1_nWQh3WKF7xLs5-nmbZ8lA   (Vmware 12 ) Linux 7:百度云链接 ...

  8. GIT学习与GIEE(码云体验)

    GIT 是一个开源的分布式版本控制系统,可以有效.高速的处理从很小到非常大的项目版本管理.Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件 ...

  9. Helm部署和体验jenkins

    如何快速且简单的部署 通过helm可以快速且简单的部署多种应用,关于helm的安装和使用请参考 环境信息 本次实战的环境信息如下: kubernetes集群:三台CentOS7.7服务器 kubern ...

  10. XXE漏洞介绍 & XXE漏洞攻击 & 修复建议

    介绍XXE漏洞 XML外部实体注入(XML External Entity)简称XXE漏洞,XML用于标记电子文件使其具有结构性的标记语言,可以用来标记数据.定义数据类型,是-种允许用户对自己的标记语 ...