http

Http协议介绍

什么是HTTP协议

HTTP协议,全称HyperText Transfer Protocol,中文名为超文本传输协议
是互联网中最常用的一种网络协议。HTTP的重要应用之一是 WWW服务。
设计 HTTP协议最初的目的就是提供一种发布和接收HTML (一种页面标记语言)页面的方法。
HTTP协议是互联网上常用的通信协议之一。它有很多的应用,但最流行的就是用于Web浏览器和Web服务器之间的通信,即WWW应用或称Web应用。
www ,全称World Wide Web ,常称为Web ,中文译为"万维网
www是目前互联网上最受用户欢迎的信息服务形式。HTTP协议的 WWW服务应用的默认端口为80,另外一个加密的WWW服务应用https的默认端口为443,主要用于网银、支付等和钱相关的业务。当今,HTTP服务、WWW服务、Web服务三者的概念已经混淆了,都是指当下最常见的网站服务应用。

HTTP协议版本

HTTP/1.0 规定浏览器和服务器只保持短暂的连接(TCP短链接)
HTTP/1.1 支持持久连接,在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和时间延迟(TCP长连接)

什么是超文本

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

什么是URL


超文本传输协议HTTP

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

HTTP协议总结

http是一个超文本传输协议
http建立在应用层协议基础之上
http默认端口80, https默认端口443
一次tcp的链接,可以包含多次http的请求

Http工作原理


网站访问流程

1.本地redirect跳转
2.检查本地浏览器缓存
3.DNS流程
递归 客户端向服务端发起DNS查询
迭代 服务端与服务端发起DNS查询
1.查询本地Hosts
2.请求本地localDNS
3.返回对应的IP
4.HTTP连接
1.建立TCP三次握手,发送请求内容, 请求头、请求的行、请求的主体
2.将请求传递给负载均衡, 负载均衡做对应的调度
3.如果请求的是静态页面, 那么调度至对应的静态集群组即可
4.如果请求的是动态页面, 将请求调度至动态集群组
1.如果仅仅是请求页面, 可能会经过Opcache缓存返回
2.如果请求页面需要查询数据库, 或者是往数据库插入内容
3.检查对应的操作是查询还是写入, 如果是查询数据库
4.检查查询的内容是否有被缓存, 如有缓存则返回
5.检查查询语句, 将查询结果返回
6.内存缓存Redis缓存对应的查询结果
7.返回对应客户端请求的内容至于WEB节点
8.WEB节点收到请求后返回内容至负载均衡
9.负载均衡返回客户端内容, TCP四次断开
5.HTTP断开连接

http的工作原理

1.发起dns请求
2.获取到域名对应的IP地址
3.浏览器发起tcp的连接
4.基于tcp的连接,传输http的请求(一次tcp的连接,可以建立多次的http请求)
5.浏览器请求/index.html
6.服务器响应/index.html至浏览器
7.浏览器翻译index.html中的内容为人类可读
8.断开TCP的四次挥手

DNS解析原理

1. 查看本地主机缓存和hosts文件有没有域名与IP对应记录
2. 本地主机向local DNS服务器(网卡上指定配置的DNS服务器)发出请求(递归查询)
3. LOCAL DNS服务器接收到客户端主机请求,查询本地缓存信息
4. LOCAL DNS服务向根域名服务器请求,向顶级域名服务器请求,向二级域名服务器请求(迭代查询)
5. 获取到域名与IP地址的对应关系,是通过授权DNS服务中获取得到(得到的信息称为A记录)
       LOCAL DNS服务进行缓存A记录信息,将A记录信息发送给客户端主机
6. 客户端主机接收到A记录信息,进行本地缓存,根据A记录中记录IP地址信息,进行网络访问

http请求报文

http请求报文的方法

HTTP方法 作用描述
GET 客户端请求指定资源信悤,服务器返回指定资源
HEAD 只请求响应报文中的 HTTP首部
POST 将客户端的数据提交到服务器,例:注册表单
PUT 用从客户端向服务器传送的数据取代指定的文档内容。
DELETE 请求服务器删除 Request-URI所表示的资源。
MOVE 请求服务器将指定的页面移至另一个网络地址。
get     # 获得请求文件信息的数据内容(获取)
post    # 用户提交数据至服务器端存储(提交)

Request URL:http://10.0.0.7/index.html # 请求的URL
Request Method:GET                     # 请求的方法
Status Code:200 OK                     # 当前的状态
Remote Address:10.0.0.7:80             # 远程的主机

HTTP请求报文格式

请求报文格式 报文信息 说明
请求行 GET / HTTP/1.1 请求的起始行(请求什么信息;协议版本)
请求头 User-Agent: curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.27.1 zlib/1.2.3 libidn/1.18 libssh2/1.4.2
Host: www.baidu.com
Accept: /
请求的头部信息(客户端有关信息说明)
空行 空行信息(隔离上下文,说明请求结束)
请求报文主体 请求主体内容(只有POST 方法可以提交主体)

请求头信息说明

请求头内容 说明
**Host   ** 接受请求的服务器地址,可以是IP:端口号,也可以是域名
**User-Agent     ** 发送请求的应用程序名称
**Connection ** 指定与连接相关的属性,如Connection:Keep-Alive
**Accept-Charset ** 通知服务端可以发送的编码格式
Accept-Encoding 通知服务端可以发送的数据压缩格式

短连接与长连接

http的短连接:建立一次tcp的连接,发起一次http的请求,结束,tcp断开。
http的长连接:建立一次tcp的连接,发起多次http的请求,结束,tcp端口。

Http响应报文

http的响应状态码

(以3位数字组成)
200     成功
301     永久重定向(redirect) 
302     临时重定向(redirect) 
304     浏览器缓存
403     请求不到首页,权限被拒绝
404     资源找不到
500     服务器内部错误,程序代码错误
502     找不到后端的资源
504     请求超时

http响应示例

Accept-Ranges:bytes          # 接受的字节
Connection:keep-alive        # 链接类型,keep_alive长链接
Content-Length:2633         
Content-Type:text/html       # 返回的页面类型
Date:Thu, 02 Aug 2018 02:58:53 GMT
ETag:"5aec1638-a49"
Last-Modified:Fri, 04 May 2018 08:13:44 GMT
Server:nginx/1.12.2         # 提供页面返回的应用服务

网站流量度量术语

独立IP数度量值

独立IP数是指不同IP地址的计算机访问网站时被计算的总次数
在一个局域网内多个主机进行访问相同的网站地址时,独立IP数记为多少?
一般一天内(00:00-24:00)相同IP地址的客户端访问网站页面只会被计一次
记录独立IP的时间可为一天或一个月,目前通用的标准为"一天"。

页面浏览次数PV

页面浏览量或点击量 

独立访客数UV

根据http请求报文:浏览器版本,OS
根据http响应报文:cookie(id)    
cookie(id)  将服务端的信息保存到客户端
session     将客户端信息保存到服务器

cookie和session区别

cookie介绍说明

cookie 存放在浏览器缓存中---浏览器进行查看(谷歌)
【设置里面】---【显示高级设置】---【隐私设置】---【内容设置】---【所有cookie和内容设置】
PS:cookie的格式信息是由开发人员进行定义,所以不同的网站所生成的cookie信息内容不太一致
cookie 数据存放在客户的浏览器上
cookie 不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗
cookie 不占用服务器端资源,提升了服务器性能
cookie 保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。

session介绍说明

session 存放在服务器的内存中     
session 数据放在服务器上
session 从数据库的安全应用方面会更安全些
session 会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能

建议性说明:

将登陆信息等重要信息存放为SESSION
其他信息如果需要保留,可以放在COOKIE中

Http相关术语题目

如果一栋大厦里所有工作人员通过1个IP公网接口上网, 总共100个设备, 当所有人同时请求一个网站, 并且刷新了5次, 那么请求pv、ip、uv分别是多少
pv:页面浏览量 500
uv:唯一设备100
ip:唯一出口 1
并发
A种理解:网站服务器每秒能够接收的最大用户请求数。
B种理解:网站服务器每秒能够响应的最大用户请求数。
C种理解:网站服务器在单位时间内能够处理的最大连接数。(推荐)

访问网站参数说明

用户访问网站携带的参数,以及服务端返回的参数

概况

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                     # 请求的地址

客户端请求的头部信息

Accept: text/html,                                  # 请求的类型
Accept-Encoding: gzip, deflate                      # 是否进行压缩
Accept-Language: zh-CN,zh;q=0.9                     # 请求的语言
Cache-Control: max-age=0                            # 缓存
Connection: keep-alive                              # TCP长连接
Host: www.nfsnobody.com                             # 请求的域名
If-Modified-Since: Fri, 04 May 2018 08:13:44 GMT    # 修改的时间
If-None-Match: "a49-56b5ce607fe00"                  # 标记
Upgrade-Insecure-Requests:1                         # 在http和https之间起的一个过渡作用
User-Agent: Mozilla/5.0                             # 用户的浏览器
===========请求一个空行=========================

服务端响应的头部信息

HTTP/1.1 304 Not Modified                           # 返回服务器的http协议,状态码
Date: Fri, 14 Sep 2018 09:14:28 GMT                 # 返回服务器的时间
Server: Apache/2.4.6 (CentOS) PHP/5.4.16            # 返回服务器使用的软件(Apache php)
Connection: Keep-Alive                              # TCP长连接
Keep-Alive: timeout=5, max=100                      # 长连接的超时时间
ETag: "a49-56b5ce607fe00"                           # 验证客户端标记
===========返回一个空行=========================
===========返回内容页面=========================
posted on 2019-12-20 09:58  合衬-nfsnobody.com  阅读(478)  评论(0编辑  收藏  举报