Http概述

文章目录

Web基础-HTTP

1、什么是项目

项目是人们通过努力,运用新的方法,将人力的、材料的和财务的资源组织起来,在给定的费用和时间约束规范内,具有明确目标的一次性工作任务,以期达到由数量和质量指标所限定的目标,类似于手机的app,每一个app都可以算做一个项目

2、什么是架构?

  1. 根据要解决的问题,对目标系统的边界进行界定。
  2. 并对目标系统按某个原则的进行切分。切分的原则,要便于不同的角色,对切分出来的部分,并行或串行开展工作,一般并行才能减少时间
  3. 并对这些切分出来的部分,设立沟通机制
  4. 使得这些部分之间能够进行有机的联系,合并组装成为一个整体,完成目标系统的所有工作

3、架构所需关键词

plain 复制代码
- 可靠性(Reliable)
- 安全性(Secure)
- 可扩展性(Scalable)
- 可定制化(Customizable)
- 可伸缩 (Extensible)
- 可维护性(Maintainable)
- 客户体验(Customer Experience)
- 市场时机(Time to Market)

4、什么是集群?

一组相互独立的、通过高速网络互联的计算机,它们构成了一个组,并以单一系统的模式加以管理。

5、什么是负载均衡?

将用户的请求,分摊到多个操作单元上执行,保证服务器的稳定性。

6、http概述

http:超文本传输协议

URL:统一资源定位【https://www.baidu.com:80/文件路径】

http的访问流程

web资源:当前主流的所有资源都可以识别

6.1、Web状态访问码
shell 复制代码
200     直接成功
301     永久重定向(redirect) 
302     临时重定向(redirect) 
304     浏览器缓存
307     内部重定向(redirect)
400		客户端错误
401	    认证失败
403     请求不到首页,权限被拒绝
404     资源找不到
413     访问的文件太大,不支持
500     服务器内部错误,程序代码错误
502     找不到后端的资源 bad gateway
503		服务器过载
504     请求超时
6.2、Web的结构组成
shell 复制代码
C/S:客户端和服务端
B/S:浏览器和服务端

- 代理
  - 位于客户端和服务器之间的HTTP中间实体
- 缓存
  - HTTP的仓库,使常用页面的副本可以保存在离客户端更近的地方
- 网关
  - 连接其他应用程序的特殊Web服务器
- 隧道
  - 对HTTP通信报文进行盲转发的特殊代理
- Agent代理
  - 发起自动HTTP请求的半智能Web客户端
6.3、有哪些Web资源?
shell 复制代码
text/html,html格式的文本文档                       
text/plain,普通的ASCII文本文档 
image/jpeg,JPEG格式图片 
image/gif,GIF格式图片 
video/quicktime,Apple的QuickTime电影 
application/vnd.ms-powerpoint,微软的PowerPoint演示文件
6.4、HTTP的工作原理
plain 复制代码
1.用户输入域名->浏览器跳转->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.aliyun.com
 3.请求的资源是什么: /index.html
 4.请求的端口是什么: 默认HTTP是80 HTTPs 443
 5.请求携带的参数是: 属性(请求的类型、压缩、认证、等等)
 6.请求最后的空行
4.服务端响应的内容是
 1.服务端响应使用的WEB服务软件
 2.服务端响应请求文件的类型
 3.服务端响应请求的文件是否进行压缩
 4.服务端响应请求的主机是否进行长连接
5.客户端向服务端发起TCP断开(四次挥手)
 客户端 --> 断开请求 fin=1 seq=x --> 服务端
 服务端 --> 响应断开 ack=x+1 seq=y --> 客户端
 服务端 --> 断开连接 fin=1 ack=x+1 seq=z --> 客户端
 客户端 --> 确认断开 ack=z+1 seq=n --> 服务端
6.5、HTTP请求响应

1、请求报文的方法

shell 复制代码
get   # 获得请求文件信息的数据内容(下载) 
post  # 用户提交数据至服务器端存储(上传,增资源) 
put   # 用户提交数据至服务器端存储(上传,改资源)

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、用户访问网站携带的参数,以及服务端返回的参数

General:基本信息

Response Headers:响应的头部信息

Request Headers:请求的头部信息

基本信息:General

shell 复制代码
#请求的url
Request URL: 

#请求方式
Request Method:

#状态码
Status Code

#远程主机IP
Remote Address

#控制请求头内容
Referrer Policy

请求头部信息

shell 复制代码
#请求资源类型
accept: 

#压缩
accept-encoding: 

#语言
accept-language: zh-CN,zh;q=0.9

#缓存控制(没有做缓存)
cache-control: 

#保持连接:长连接
Connetection:keep-alive
   HTTP/1.1版本 #长连接,一次TCP的连接可以发起多次HTTP请求
   HTTP/1.0版本 #短连接,一次TCP的连接只能发起一次HTTP请求
   还有HTTP/2.0和HTTP/3.0
   
#请求的域名
Host:

#登录信息
cookie:

#谷歌自带的(不属于请求头的内容)
upgrade-insecure-requests: 1

#客户端(用户设备)
user-agent:

响应报文包头

shell 复制代码
#缓存控制
cache-control: no-cache, must-revalidate, max-age=0

#压缩
content-encoding: gzip

#内容长度
content-length: 9410

#返回内容类型及字符集
content-type: text/html; charset=UTF-8

#返回服务器时间
date: Wed, 14 Aug 2019 23:16:43 GMT

#加密id
eagleid: 2dfd119815648138332064260e

#失效时间
expires: Thu, 19 Nov 1981 08:52:00 GMT

#软链接
link: <HTTPs://www.tfantastic.com/wp-json/>; rel="HTTPs://api.w.org/"

#参数:没有缓存
pragma: no-cache

#使用的web软件
server: Nginx

#状态码
status: 200

#指定特定站点允许访问
timing-allow-origin: *

#渲染
vary: Accept-Encoding

#经过各级缓存
via: cache14.l2cm12[99,200-0,M], cache1.l2cm12[101,0], cache13.cn1300[122,200-
0,M], cache4.cn1300[123,0]

------------- 以下都是CDN厂商带的 ----------------
#CDN缓存是否命中
x-cache: MISS TCP_MISS dirn:-2:-2

#缓存版本号
x-powered-by: PHP/7.1.22

#缓存时间
x-swift-cachetime: 0

#保存时间
x-swift-savetime: Sat, 03 Aug 2019 06:30:33 GMT
6.6、HTTP相关术语

PV : 页面独立浏览量

UV : 独立设备

IP : 独立IP

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

那么上面的题: PV: 100_2_2 = 400

复制代码
                        UV: 100*2 = 200 IP: 1

日PV千万量级并不大

6.7、HTTP协议的原理
shell 复制代码
1.用户输入域名->浏览器跳转->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.aliyun.com
   3.请求的资源是什么: /index.html
   4.请求的端口是什么: 默认HTTP是80  HTTPs 443
   5.请求携带的参数是: 属性(请求的类型、压缩、认证、等等)
   6.请求最后的空行
4.服务端响应的内容是
   1.服务端响应使用的WEB服务软件
   2.服务端响应请求文件的类型
   3.服务端响应请求的文件是否进行压缩
   4.服务端响应请求的主机是否进行长连接
5.客户端向服务端发起TCP断开(四次挥手)
   客户端  --> 断开请求 fin=1 seq=x          -->    服务端
   服务端  --> 响应断开 ack=x+1 seq=y        -->    客户端
   服务端  --> 断开连接 fin=1 ack=x+1 seq=z  -->    客户端
   客户端  --> 确认断开 ack=z+1 seq=n        -->    服务端
用户访问网站整体的流程

1.客户端发起HTTP请求,请求会先抵达前端的防火墙

2.防火墙识别用户身份,通过内部交换机将正常的请求通过tcp连接负载均衡,传递用户的HTTP请求

3.负载接收到请求,会根据请求的内容进行下发任务,通过tcp连接web服务器,发送用户的HTTP请求

4.web接收到用户的HTTP请求后,会根据用户请求的内容进行解析,解析分为如下:

静态请求:由web服务器向nfs建立tcp连接,获取对应的图片,最后返回给负衡(负载均衡->防火墙->

用户)

动态请求:有web向后端的动态程序建立TCP连接,将用户的动态HTTP请求传递态程序->由动态程序进行解析

5.动态程序在解析的过程中,如果碰到查询数据库的请求,则优先和缓存建立tcp接,然后缓存服务发起HTTP 的查询

6.如果缓存没有对应的数据,动态程序再次向数据库建立tcp的连接,然后发起查询。

7.由数据库返回->动态程序->缓存->web服务->负载均衡->防火墙->用户。

相关推荐
DARLING Zero two♡5 小时前
【计算机网络】简学深悟启示录:网络基础
网络·计算机网络·智能路由器
北冥有渔jy5 小时前
BT6.0常见的BUG
网络·安全·bug·蓝牙
油丶酸萝卜别吃5 小时前
如何使用http-server --cors启动页面?
网络·网络协议·http
想不明白的过度思考者5 小时前
Java网络聊天室——OverThinker-ChatRoom
java·开发语言·网络
sdszoe49225 小时前
思科设备密码与远程telnet管理
网络·智能路由器·telnet·思科网络设备远程管理
Biteagle5 小时前
P2PK:比特币的「原始密码锁」与比特鹰的技术考古
网络·网络协议·p2p
杰瑞不懂代码5 小时前
基于 MATLAB 的 BPSK 在 AWGN 信道下误码率仿真与性能分析
开发语言·网络·matlab
gaize12136 小时前
如何确保服务器的安全性
网络·安全·web安全
鲨莎分不晴15 小时前
强化学习第五课 —— A2C & A3C:并行化是如何杀死经验回放
网络·算法·机器学习