HTTP协议
一、http协议详解
1.什么是HTTP
HTTP 全称:Hyper Text Transfer Protocol
中文名:超文本传输协议
HTTP协议简单的说,将用户请求的页面从服务器传输到客户的浏览器,浏览器进行解析,解析以后变成一个我们人类可以理解的方便观看的页面
2.什么是超文本
包含有超链接(Link)和各种多媒体元素标记(Markup)的文本。
超文本文件(Hypertext)就是指具有超链接功能的文件,它可以将文件中已经定义好的关键字(Keyword),经过鼠标的点取(Click),便可以得到该关键字的相关解释
3.什么是URL
统一资源定位符
当我们访问:baidu.com
其实他访问的是:http://www.baidu.com:80/index.html
URL: http:// www.baidu.com :80 /index.html
协议:协议还有很多,ftp、file、ssh、ws
域名:代表我们访问的主机,域名好记
端口:进入我们服务器的门
文件路径:服务器上的资源,实际路径有web服务决定
html文件->包含各种各样的元素(URL链接)->形成WebPage简称web页面
URL HTML HTTP 之间的关系
一个完整的HTML页面是由很多个URL地址资源组成的,而HTTP协议是来传输和解析HTML页面的
二、HTTP工作原理
1、基本信息
Request URL: http://192.168.15.7/bg.jpg URL
Request Method: GET 请求类型
Status Code: 200 OK 请求状态
Remote Address: 192.168.15.7:80 访问后端主机和端口
Referrer Policy: strict-origin-when-cross-origin
Accept: text/html,ap 访问的文本类型
Accept-Encoding: gzip, deflate 指定文本压缩方法
Accept-Language: zh-CN,zh;q=0.9 指定语言
Cache-Control: no-cache 缓存
Connection: keep-alive
Host: www.abc.com 网址
Pragma: no-cache
Upgrade-Insecure-Requests: 1 升级
User-Agent: Mozilla/5.0 (Win 浏览器agent
Accept-Ranges: bytes
Connection: Keep-Alive
Content-Length: 2633 资源大小
Content-Type: text/html; charset=UTF-8 返回的类型
Date: Sun, 25 Apr 2021 08:03:40 GMT 时间
ETag: "a49-56b5ce607fe00"
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 服务器Server端
2、请求类型
在HTTP请求报文中的方法(Method),是对所请求对象所进行的操作,也就是一些命令。
方法(Method) | 含义 |
---|
GET | 请求读取一个Web页面 |
POST | 附加一个命名资源(如Web页面) |
DELETE | 删除Web页面 |
CONNECT | 用于代理服务器 |
HEAD | 请求读取一个Web页面的头部 |
PUT | 请求存储一个Web页面 |
TRACE | 用于测试,要求服务器送回收到的请求 |
OPTION | 查询特定选项 |
GET :请求数据
POST :写数据
PUT : 修改数据
DELETE:删除数据
POST请求比GET请求要更安全
3、HTTP请求状态码
状态码 | 含义 |
---|
200 | 成功 |
301 | 永久重定向(跳转) |
302 | 临时重定向(跳转) |
304 | 本地缓存 |
307 | 内部重定向(跳转) |
400 | 客户端错误 |
401 | 认证失败 |
403 | 找不到主页,权限不足 |
404 | 找不到页面 |
500 | 内部错误 |
502 | 找不到后端主机 |
503 | 服务器过载 |
504 | 后端主机超时 |
200 成功
301
302
304
404 返回不存在的页面
403 没有访问权限
500 服务器端错误
501
4、http 和 https 之间的区别
http: 无证书, 容易被网络DNS劫持
https: 有证书 相对安全
5、http 1.0 和 http 1.1
http 1.0 : 短链接
http 1.1 : 长链接
http1.0:短连接,一次TCP连接,仅能发起一次请求
http1.1:长连接,一次TCP连接,可以多次请求
http2.0: HTTPS
http3.0
6、常用的web服务器
Apache、Nginx、tomcat
7、http名词
假设公司有一座大厦,大厦有100人,每个人有一台电脑和一部手机,上网都是通过nat转换出口,每个人点击网站2次, 请问对应的pv,uv,ip分别是多少?
pv 100人 * 2设备 * 2次 = 400 pv
uv 100人 * 2设备 = 200 uv
ip 100人 2设备 2次 1 nat 1 ip
面试题:商家公司的IP、PV、UV是怎么统计的
1.nginx日志,分析筛选
2.第三方统计工具:腾讯移动分析、百度统计、piwik
面试题:你们上家公司PV是多少
小说网站 1分钟请求 5000 平均日pv = 720万
教育网站 1分钟请求 10000 平均日pv = 1440万
在线人数,日活跃,月活跃
8、静态请求和动态请求
web直接返回给负载均衡->防火墙->用户
web向后端的动态程序建立TCP连接,将用户的动态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主机是: www.driverzeng.com
3)请求的端端口是什么: 默认http是80 https是443
4)请求的资源是什么: /index.html
5)请求携带的参数是什么: 属性(请求类型、压缩、认证、浏览器信息、等等)
6)请求最后的空行
4.服务端响应的内容是
1)服务端响应使用WEB服务软件
2)服务端响应请求文件类型
3)服务端响应请求的文件是否进行压缩
4)服务端响应请求的主机是否进行长连接
5)服务端将数据放回给浏览器
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 --> 服务端