HTTP协议
1.URL预备知识
URL: http:// www.xuliangwei.com:80 /bgx/1360.html
协议 域名:端口(默认是80,不显示) 文件及其路径
协议:
域名:
端口:
文件路径
查询:
URL:就是用来标识互联网上某个服务上的某个资源.
Url Html Http 之间的关系是?
一个完整的HTML页面是由N多个Url地址资源组成的,而Http协议是用来传输这种Html文件的。
2.http工作原理
DNS-TCP-HTTP (面试必须的协议)
DNS解析 TCP 连接 HTTP请求
3.抓包分析工作原理,动手
4.http请求(客户端)
GET 获取数据, 朋友圈我只看, GET 获取别人的资源
POST 提交数据, 朋友圈我只发, POST 提交数据到服务器
DELETE 删除数据, 朋友圈清理所有历史发送过的文字\图片
http基本信息
1.基本信息
Request URL: http://10.0.0.7/ #请求的服务器地址
Request Method: GET #请求的方法 GET POST
Status Code: 200 OK #返回的状态码(三位数字组成的)
Remote Address: 10.0.0.7:80 #与服务器IP的哪个端口建立链接
2.Request Heads请求的头部信息
Accept: text/html #请求资源类型
Accept-Encoding: gzip, deflate #请求资源压缩
Accept-Language: zh-CN,zh;q=0.9 #请求资源语言
Cache-Control: no-cache #缓存控制-->no-cache没有缓存
Connection: keep-alive #保持链接,长链接
Host: 10.0.0.7 #请求的域名
Pragma: no-cache #请求的参数,没有缓存
Upgrade-Insecure-Requests: 1 #http和https之间起的一个过渡作用
User-Agent: Mozilla/5.0 #请求的设备
- "=== 请求一个空行 ==="
4.http协议
http1.0协议 短连接, 一次TCP连接,仅能发起一次请求, 建立35次tcp链接, http请求35次
http1.1协议 长链接, 一次TCP连接,可以发多次请求, 建立一次连接,然后发送35次http请求
http2.0协议 https会使用到
http3.0协议
5.http响应(服务端)
返回Heads
Connection: Keep-Alive #保持链接,长连接
Date: Mon, 27 May 2019 03:16:05 GMT # +8小时GMT
ETag: "a49-56b5ce607fe00" #忽略
Keep-Alive: timeout=5, max=100 #保持链接,超时时间5s,最大时间100s
Server: Apache/2.4.6 (CentOS) PHP/5.4.16 #服务器使用的WEB软件是
1.返回状态码 Status Code:
200 OK #页面返回正常
301 永久跳转 http->https
302 临时跳转 http->https
304 Not Modified 走本地缓存
400 bad request “错误的请求"
401 Authorization Required
403 Forbidden 找不到默认的主页,或没权限
404 Not Found 找不到页面
500 内部错误 程序-->mysql链接失败,或者权限
502 Bad Gateway 找不到后端的主机(出现的最多最多的)
503 服务器当前无法处理请求,但只是临时的
504 网关超时
返回空行
返回主体 (真实的内容)
2.http额外Heads信息
User-Agent: 浏览器标识 (操作系统标识; 加密等级标识; 浏览器语言) 渲染引擎标识 版本信息
Server:响应头包含处理请求的原始服务器的软件信息
Referer:浏览器向 WEB 服务器表明自己是从哪个 网页/URL 获得/点击 当前请求中的网址/URL。
Location:WEB服务器告诉浏览器,试图访问的对象已经被移到别的位置了,到该头部指定的位置去取
http术语
pv 页面浏览量 最大
uv 独立客户端设备 其次
ip 独立的公网IP 最小
并发 同时访问 (10s 500pv) --> 一天能有多少pv
500 * 6 * 60 * 24 = 4,320,000pv
500 * 6 * 60 * 24 = 1,440,000pv
10000000 /24 /60 /60 = 115s
2.举例:假设公司有一座大厦,大厦有100人,每个人有一台电脑和一部手机,上网都是通过NAT转换,每个人刷新网站10次,请问对应的 pv,uv,ip,并发 分别是多少。
pv: 100人 * 2设备 * 10次 = 2000pv
uv: 100人 * 2设备 = 200uv
ip: 100 -NAT = 1个公网IP
并发: 2000pv / 8 /60 / = 并发4/m分钟
100,000,000 亿PV
10,000,000 千UV
1,000,000 百IP
3.面试题1:上家公司的IP、PV、UV是如何统计的?
1.使用awk提取IP,sort排序、uniq统计去重统计IP。
2.第三方统计工具进行pv统计,比如: piwik、腾讯移动分析、百度统计、开发自研统计平台。
给一份js的代码,放入网站中,就会被记录. 在打开第三方后台管理就能看到pv ip uv
4.面试题2: 上家公司的IP、PV,UV是多少?
小说网站 1分钟并发 5000 * 60 * 24 = 720w (屌丝、通常一看一天)
教育网站 1分钟并发 10000* 60 * 24 = 1440w (努力青年、通常周末量大)
金融网站 1分钟并发 500 * 60 * 24 = 72w (有钱人、所以量不大、但交易额度高)
电商网站 1分钟并发 100000000000
游戏网站 ------在线用户、日活跃数、月活跃数
需要注意的是: 这仅仅是参考值,因为不同的业务他们的pv都不一样。
http整体访问流程
url->html->http协议传递
http工作原理
浏览器跳转
DNS解析
DNS返回
TCP链接
HTTP请求
请求的Headers信息
1.请求的域名
2.请求的路径
3.请求的方法 GET
4.请求的协议 http1.1 http1.0
5.请求的参数
缓存
压缩
语言
....
HTTP响应
响应的Headers信息
1.响应状态码
200,301,302,304,400,401,403.404,500,502,503,504
2.响应的参数
缓存
location 你应该访问重新去哪个url地址
server 服务端软件
3.响应的空行 ---
4.响应的主体 内容
TCP断开