跳到主要内容

[toc]

http简要记录

1.http(超文本传输协议)

由html文件 ->包含各种各样的元素(URL链接)->web页面

2.URL结构

http:// www.qq.com:80 /news/index.html

协议 域名: 端口 具体的文件名下面的某个页面

3.http的工作原理

1.客户端发起dns请求

2.获取到域名对应的IP地址

3.浏览器发起TCP的连接

4.基于TCP的连接,传输http的请求(一次TCP的连接,可以建立多次的http请求)

5.浏览器请求/index.html

6.服务器响应/index.html至浏览器

7.浏览器翻译index.html中的内容为人类可读

8.断开TCP连接-->四次挥手

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

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

4.http的请求方法

方法描述请求响应
GET用来请求访问已被URI识别的资源 指定的资源经服务器端解析后返回响应内容GET /index.html HTTP/1.1 Host: www.baidu.com返回index.html的页面资源
POST用来传输实体的主体 虽然用GET方法也可以传输实体的主体,但一般不用GET方法进行传输,而是用POST方法 虽说POST的功能与GET相似,但POST的主要目的并不是获取响应的主体内容POST /submit.cgi HTTP/1.1 Host: www.baidu.com Content-Length: 1500(1500字节的数据)返回submit.cgi接收数据的处理结果
PUT用来传输文件 就像FTP协议的文件上传一样,要求在请求报文的主体中包含文件的内容,然后保存到请求URI指定的位置PUT /example.html HTTP/1.1 Host: www.baidu.com Content-Type: text/html Content-Length: 1560(1560字节的数据)响应返回状态吗 204 No Content(比如:该html已存在于服务器上)
HEAD用于确认URI的有效性及资源更新的日期时间等,和GET方法一样,只是不返回报文主体部分HEAD /index.html HTTP/1.1 Host: www.baidu.com返回index.html有关的响应头部
DELETE用来删除文件,是与PUT 相反的方法 按请求URI删除指定的资源DELETE /example.html HTTP/1.1 Host: www.baidu.com响应返回状态吗 204 No Content(比如:该html已存在于服务器上)
OPTIONS用来查询针对请求URI指定的资源支持的方法OPTIONS * HTTP/1.1 Host: www.baidu.comHTTP/1.1 200 OK Allow: GET,POST,HEAD,OPTIONS(返回服务器支持的方法)
TRACE让web服务器端将之前的请求通信环回给客户端的方法 发送请求时,在Max-Forwards首部字段中填入数值,每经过一个服务端就将该数字减1,当数值刚好剑到0时就停止持续传输,最后接收到请求的服务端则返回状态码 200 OK 的响应TRACE /HTTP/1.1 Host: www.baidu.com Max-Forwards: 2HTTP/1.1 200 Ok Content-Type: message/http Content-Length: 1024 TRACE / HTTP/1.1 Host: www.baidu.com Max-Forwards: 2(返回响应包含请求内容)
CONNECT要求在与代理服务器通信时建立隧道,实现用隧道协议进行TCP通信,主要使用SSL和TLS协议把通信内容加密后经网络隧道传输CONNECT proxy.sample.com:8000 HTTP/1.1 Host: proxy.sample.comHTTP/1.1 200 OK(之后进入网络隧道)

5.常见http的响应状态码(以3位数字组成)

状态码说明
200成功
301永久重定向
302临时重定向
304浏览器缓存
401权限认证失败
403请求不到首页,权限被拒绝
404资源找不到
500服务器内部错误
502错误的网关,找不到后端资源
504请求超时

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

概况

字段说明
Request URL: http://www.abc.com/index.html请求的URL地址
Request Method: GET请求的方法(获取)
Status Code: 304 Not Modified返回的状态
Remote Address: www.abc.com:80请求的地址

客户端请求的头部信息

字段说明
Accept: text/html请求的类型
Accept-Encoding: gzip, deflate是否进行压缩
Accept-Language: zh-CN,zh;q=0.9请求的语言
Cache-Control: max-age=0缓存
Connection: keep-aliveTCP长连接
Host: www.abc.com请求的域名
If-Modified-Since: Fri, 05 May 2019 09:33:22 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, 15 Sep 2018 09:15:28 GMT返回服务器的时间
Server: Apache/2.4.6 (CentOS) PHP/5.4.16返回服务器使用的软件(Apache php)
Connection: Keep-AliveTCP长连接
Keep-Alive: timeout=5, max=100长连接的超时时间
ETag: "a49-56b5ce607fe00"验证客户端标记
返回一个空行
xxx返回页面内容

7.PV、UV、IP

PV:页面浏览量

UV:独立的客户

IP:独立IP

示例说明

公司有100人,每个人有一台电脑一个手机,上网都是通过nat转换出口,每个人点击网站2次(假设点击一次返回的pv是1)

PV:400

UV:200

IP:1个

8.用户访问网站的大体流程

1.客户端输入域名以及请求的页面

2.解析域名对应的dns

3.最终客户端浏览器获取到dns的IP地址

4.客户端会与服务端发起TCP的三次握手(长连接)

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

6.防火墙识别用户身份,正常的请求通过内部交换机通过TCP连接前端的负载均衡,然后传递用户的http请求

7.负载接收到请求,会根据请求的内容进行下发任务,通过TCP连接后端的web,然后下发用户的http请求

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

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

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

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

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

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